@substrate-system/simple-aes
v0.0.32
Published
An easy way to use symmetric keys in browsers or node
Downloads
193
Maintainers
Readme
simple AES
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 @substrate-system/simple-aesUse
Bundler
Just import
import {
decryptMessage,
encryptMessage,
type Message
} from '@substrate-system/simple-aes'
// } from '@substtrate-system/simple-aes/compat' // for older browserspre-bundled
This exposes pre-bundled & minified JS files.
copy
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.jslink
<body>
<!-- ... -->
<script type="module" src="./compat.min.js"></script>
<!-- or webcrypto version -->
<script type="module" src="./simple-aes.min.js"></script>
</body>API
@substrate-system/simple-aes
Use the webcrypto API.
import {
decryptMessage,
encryptMessage,
type Message
} from '@substrate-system/simple-aes'@substrate-system/simple-aes/compat
Use a user-land module, @noble/ciphers. This will work in browsers of all ages.
import {
encryptMessage,
decryptMessage
} from '@substrate-system/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.
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 }]>encrypt example
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...' }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 '@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')
})