Skip to content

Commit

Permalink
Add utilities to encrypt text.
Browse files Browse the repository at this point in the history
  • Loading branch information
FireMasterK committed Feb 3, 2023
1 parent 15004f1 commit 690daff
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions src/utils/encryptionUtils.js
Original file line number Diff line number Diff line change
@@ -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;
}

0 comments on commit 690daff

Please sign in to comment.