You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
1018 B

3 years ago
import * as nacl from 'tweetnacl'
const newKey = nacl.randomBytes(nacl.secretbox.keyLength)
console.log(newKey)
function encryptMessage(message: string, key: Uint8Array) {
const nonce = nacl.randomBytes(nacl.secretbox.nonceLength)
const messageUint8 = new TextEncoder().encode(message)
const box = nacl.secretbox(messageUint8, nonce, key)
return { nonce, box }
}
function decryptMessage(nonce: Uint8Array, box: Uint8Array, key: Uint8Array) {
const decryptedMessage = nacl.secretbox.open(box, nonce, key)
if (!decryptedMessage) {
return null
}
return new TextDecoder().decode(decryptedMessage)
}
const encrypted = encryptMessage('hallo zipfl', newKey)
const decrypted = decryptMessage(encrypted.nonce, encrypted.box, newKey)
console.log(decrypted)
const myKeyPair = nacl.box.keyPair()
console.log(myKeyPair)
const createRoom = (roomName: string) => {
const roomKey = nacl.randomBytes(nacl.secretbox.keyLength)
const room = {
name: roomName,
key: roomKey,
users: [
/* TODO self */
],
}
}