This package consolidates some common cryptographic utilities used across our applications, particularly primitives related to keys, encryption, and decryption in a pure JS implementation. For react-native you will need to polyfill our random byte generation by importing react-native-get-random-valuesExample usage (Hpke E2E):
Copy
Ask AI
const senderKeyPair = generateP256KeyPair();const receiverKeyPair = generateP256KeyPair();const receiverPublicKeyUncompressed = uncompressRawPublicKey( uint8ArrayFromHexString(receiverKeyPair.publicKey),);const plainText = "Hello, this is a secure message!";const plainTextBuf = textEncoder.encode(plainText);const encryptedData = hpkeEncrypt({ plainTextBuf: plainTextBuf, encappedKeyBuf: receiverPublicKeyUncompressed, senderPriv: senderKeyPair.privateKey,});// Extract the encapsulated key buffer and the ciphertextconst encappedKeyBuf = encryptedData.slice(0, 33);const ciphertextBuf = encryptedData.slice(33);const decryptedData = hpkeDecrypt({ ciphertextBuf, encappedKeyBuf: uncompressRawPublicKey(encappedKeyBuf), receiverPriv: receiverKeyPair.privateKey,});// Convert decrypted data back to stringconst decryptedText = new TextDecoder().decode(decryptedData);