0.0.27 • Published 9 months ago

@bicycle-codes/simple-aes v0.0.27

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

simple AES

tests module types semantic versioning license

Cryptography used by vanishing.page. Works in browsers and node.

This is generally useful as a dead simple way of working with symmetric keys in a browser or node.

Thanks to Fission, the original author for much of this code.

install

npm i -S @bicycle-codes/simple-aes

use

bundler

Just import

import {
    decryptMessage,
    encryptMessage,
    type Message
} from '@bicycle-codes/simple-aes'
// } from '@bicycle-codes/simple-aes/compat'  // for older browsers

pre-bundled

This exposes pre-bundled & minified JS files.

copy

cp ./node_modules/@bicycle-codes/simple-aes/dist/compat.min.js ./public
cp ./node_modules/@bicycle-codes/simple-aes/dist/index.min.js ./public/simple-aes.min.js

link

<body>
    <!-- ... -->

    <script type="module" src="./compat.min.js"></script>
    <!-- or webcrypto version -->
    <script type="module" src="./simple-aes.min.js"></script>
</body>

API

@bicycle-codes/simple-aes

Use the webcrypto API. This will only work in newer browsers.

import {
    decryptMessage,
    encryptMessage,
    type Message
} from '@bicycle-codes/simple-aes'

@bicycle-codes/simple-aes/compat

Use a user-land module, @noble/ciphers. This will work in browsers of all ages.

import {
    encryptMessage,
    decryptMessage
} from '@bicycle-codes/simple-aes/compat'

encryptMessage

Generate a new AES key and encrypt the given message object. Return an array of [ encryptedMessage, { key }], where key is a new AES key, encoded as base64url.

async function encryptMessage (
    msg:{ content:string }
):Promise<[{ content:string }, { key }]>

encrypt example

import { encryptMessage } from '@bicycle-codes/simple-aes'

const [encryptedMsg, { key }] = await encryptMessage({
    content: 'hello world'
})

console.log(encryptedMessage)
// =>  { content: '5eAcA6+jnBfbuCx8L...' }

decryptMessage

Decrypt the given message with the given key. Suitable for decrypting a message that was encrypted by this library. Key is an AES key, base64url encoded.

async function decryptMessage (
    msg:{ content:string },
    keyString:string  // <-- base64url
):Promise<{ content:string }>

decrypt example

import { test } from '@bicycle-codes/tapzero'
import { decryptMessage } from '@bicycle-codes/simple-aes'

test('decrypt the message', async t => {
    const decrypted = await decryptMessage(message, key)
    t.equal(decrypted.content, 'hello world',
        'should decrypt to the right text')
})
0.0.27

9 months ago

0.0.25

10 months ago

0.0.20

11 months ago

0.0.21

11 months ago

0.0.22

11 months ago

0.0.16

11 months ago

0.0.18

11 months ago

0.0.19

11 months ago

0.0.14

1 year ago

0.0.15

1 year ago

0.0.13

1 year ago

0.0.12

1 year ago

0.0.11

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.5

1 year ago