aes에 aad
This commit is contained in:
+6
-4
@@ -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 iv = webcrypto.getRandomValues(new Uint8Array(12));
|
||||||
const keyObj = await subtle.importKey("raw", key, {
|
const keyObj = await subtle.importKey("raw", key, {
|
||||||
name: "AES-GCM",
|
name: "AES-GCM",
|
||||||
@@ -16,7 +16,8 @@ export async function AES_GCM_Encrypt(key: ArrayBuffer, msg: ArrayBuffer): Promi
|
|||||||
|
|
||||||
const ciphertext = await subtle.encrypt({
|
const ciphertext = await subtle.encrypt({
|
||||||
name: "AES-GCM",
|
name: "AES-GCM",
|
||||||
iv
|
iv,
|
||||||
|
additionalData: aad
|
||||||
}, keyObj, msg);
|
}, keyObj, msg);
|
||||||
|
|
||||||
return {
|
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, {
|
const keyObj = await subtle.importKey("raw", key, {
|
||||||
name: "AES-GCM",
|
name: "AES-GCM",
|
||||||
}, false, ["decrypt"]);
|
}, false, ["decrypt"]);
|
||||||
|
|
||||||
const plaintext = await subtle.decrypt({
|
const plaintext = await subtle.decrypt({
|
||||||
name: "AES-GCM",
|
name: "AES-GCM",
|
||||||
iv: data.iv
|
iv: data.iv,
|
||||||
|
additionalData: aad
|
||||||
}, keyObj, data.ciphertext);
|
}, keyObj, data.ciphertext);
|
||||||
//아마도 tag 검증 실패시 예외가 발생할 것으로 예상
|
//아마도 tag 검증 실패시 예외가 발생할 것으로 예상
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user