aes에 aad

This commit is contained in:
2023-08-19 04:49:12 +00:00
parent ad4ac9dfb2
commit 72c6f5ae64
+6 -4
View File
@@ -8,7 +8,7 @@ type EncryptedData = {
}
export async function AES_GCM_Encrypt(key: ArrayBuffer, msg: ArrayBuffer): Promise<EncryptedData> {
export async function AES_GCM_Encrypt(key: ArrayBuffer, msg: ArrayBuffer, aad?: ArrayBuffer): Promise<EncryptedData> {
const iv = webcrypto.getRandomValues(new Uint8Array(12));
const keyObj = await subtle.importKey("raw", key, {
name: "AES-GCM",
@@ -16,7 +16,8 @@ export async function AES_GCM_Encrypt(key: ArrayBuffer, msg: ArrayBuffer): Promi
const ciphertext = await subtle.encrypt({
name: "AES-GCM",
iv
iv,
additionalData: aad
}, keyObj, msg);
return {
@@ -26,14 +27,15 @@ export async function AES_GCM_Encrypt(key: ArrayBuffer, msg: ArrayBuffer): Promi
}
export async function AES_GCM_Decrypt(key: ArrayBuffer, data: EncryptedData): Promise<ArrayBuffer> {
export async function AES_GCM_Decrypt(key: ArrayBuffer, data: EncryptedData, aad?: ArrayBuffer): Promise<ArrayBuffer> {
const keyObj = await subtle.importKey("raw", key, {
name: "AES-GCM",
}, false, ["decrypt"]);
const plaintext = await subtle.decrypt({
name: "AES-GCM",
iv: data.iv
iv: data.iv,
additionalData: aad
}, keyObj, data.ciphertext);
//아마도 tag 검증 실패시 예외가 발생할 것으로 예상