0.0.5 • Published 2 years ago
@bicycle-codes/ephemeral-crypto v0.0.5
ephemeral crypto
Cryptography used by ephemeral.page. Works in browsers and node.
This is generally useful as a dead simple way of using symmetric keys in a browser or node.
Thanks to Fission, the original author for much of this code.
install
npm i -S @bicycle-codes/ephemeral-cryptoAPI
encryptMessage
Encrypt the given message object, and 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/ephemeral-crypto'
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 '@nichoth/tapzero'
import { decryptMessage } from '@bicycle-codes/ephemeral-crypto'
test('decrypt the message', async t => {
const decrypted = await decryptMessage(message, key)
t.equal(decrypted.content, 'hello world',
'should decrypt to the right text')
})!NOTE
This uses forks ofone-webcryptoanduint8arraysso that we own the entire dependency graph.