From 72c6f5ae6488313ab26528e79160b3a8d671b94c Mon Sep 17 00:00:00 2001 From: Hide_D Date: Sat, 19 Aug 2023 04:49:12 +0000 Subject: [PATCH] =?UTF-8?q?aes=EC=97=90=20aad?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/util/aes.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/server/util/aes.ts b/server/util/aes.ts index f6b1ace..340d974 100644 --- a/server/util/aes.ts +++ b/server/util/aes.ts @@ -8,7 +8,7 @@ type EncryptedData = { } -export async function AES_GCM_Encrypt(key: ArrayBuffer, msg: ArrayBuffer): Promise { +export async function AES_GCM_Encrypt(key: ArrayBuffer, msg: ArrayBuffer, aad?: ArrayBuffer): Promise { 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 { +export async function AES_GCM_Decrypt(key: ArrayBuffer, data: EncryptedData, aad?: ArrayBuffer): Promise { 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 검증 실패시 예외가 발생할 것으로 예상