Add utilities to encrypt text.

This commit is contained in:
Kavin 2023-02-03 18:18:53 +00:00
parent e79ebc2429
commit bd7de9f94e
No known key found for this signature in database
GPG Key ID: 6E4598CA5C92C41F

View File

@ -0,0 +1,19 @@
// These functions accept and return Uint8Arrays
export async function encryptAESGCM(plaintext, key) {
const iv = crypto.getRandomValues(new Uint8Array(12));
const algorithm = { name: "AES-GCM", iv: iv };
const keyMaterial = await crypto.subtle.importKey("raw", key, algorithm, false, ["encrypt"]);
const ciphertext = await crypto.subtle.encrypt(algorithm, keyMaterial, plaintext);
return new Uint8Array([...iv, ...new Uint8Array(ciphertext)]);
}
export async function decryptAESGCM(ciphertextArray, key) {
const iv = new Uint8Array(ciphertextArray.slice(0, 12));
const algorithm = { name: "AES-GCM", iv: iv };
const keyMaterial = await crypto.subtle.importKey("raw", key, algorithm, false, ["decrypt"]);
const decrypted = await crypto.subtle.decrypt(algorithm, keyMaterial, new Uint8Array(ciphertextArray.slice(12)));
return decrypted;
}