@substrate-system/simple-aes
    Preparing search index...

    @substrate-system/simple-aes

    simple AES

    tests module types semantic versioning install size GZip size 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.

    npm i -S @substrate-system/simple-aes
    

    Just import

    import {
    decryptMessage,
    encryptMessage,
    type Message
    } from '@substrate-system/simple-aes'
    // } from '@substtrate-system/simple-aes/compat' // for older browsers

    This exposes pre-bundled & minified JS files.

    cp ./node_modules/@substrate-system/simple-aes/dist/compat.min.js ./public
    cp ./node_modules/@substrate-system/simple-aes/dist/index.min.js ./public/simple-aes.min.js
    <body>
    <!-- ... -->

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

    Use the webcrypto API.

    import {
    decryptMessage,
    encryptMessage,
    type Message
    } from '@substrate-system/simple-aes'

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

    import {
    encryptMessage,
    decryptMessage
    } from '@substrate-system/simple-aes/compat'

    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.

    Can pass in a size for the key. By default it uses 256 bits.

    async function encryptMessage (
    msg:{ content:string },
    opts:{ length:SymmKeyLength } = { length: DEFAULT_SYMM_LEN }
    ):Promise<[{ content:string }, { key:string }]>
    import { SymmKeyLength, encryptMessage } from '@substrate-system/simple-aes'

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

    // or pass in a key size
    await encryptMessage({
    content: 'hello'
    }, {
    length: SymmKeyLength.B128
    })

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

    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 }>
    import { test } from '@substrate-system/tapzero'
    import { decryptMessage } from '@substrate-system/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')
    })