암호 관련 모듈 리팩토링

This commit is contained in:
static
2025-01-08 20:05:50 +09:00
parent 1307783de1
commit db900d8038
5 changed files with 15 additions and 17 deletions

View File

@@ -27,14 +27,10 @@ export const generateDataKey = async () => {
};
};
const exportAESKey = async (key: CryptoKey) => {
return await window.crypto.subtle.exportKey("raw", key);
};
export const makeAESKeyNonextractable = async (key: CryptoKey) => {
return await window.crypto.subtle.importKey(
"raw",
await exportAESKey(key),
await window.crypto.subtle.exportKey("raw", key),
key.algorithm,
false,
key.usages,
@@ -53,7 +49,7 @@ export const unwrapDataKey = async (dataKeyWrapped: string, masterKey: CryptoKey
masterKey,
"AES-KW",
"AES-GCM",
false, // Non-extractable
false, // Nonextractable
["encrypt", "decrypt"],
),
};

View File

@@ -1,4 +1,4 @@
import { encodeToBase64, decodeFromBase64 } from "./util";
import { encodeString, encodeToBase64, decodeFromBase64 } from "./util";
export const generateEncryptionKeyPair = async () => {
const keyPair = await window.crypto.subtle.generateKey(
@@ -123,21 +123,20 @@ export const verifySignature = async (
};
export const signMasterKeyWrapped = async (
masterKeyVersion: number,
masterKeyWrapped: string,
masterKeyVersion: number,
signKey: CryptoKey,
) => {
const serialized = JSON.stringify({
version: masterKeyVersion,
key: masterKeyWrapped,
});
const serializedBuffer = new TextEncoder().encode(serialized);
return encodeToBase64(await signMessage(serializedBuffer, signKey));
return encodeToBase64(await signMessage(encodeString(serialized), signKey));
};
export const verifyMasterKeyWrapped = async (
masterKeyVersion: number,
masterKeyWrapped: string,
masterKeyVersion: number,
masterKeyWrappedSig: string,
verifyKey: CryptoKey,
) => {
@@ -145,6 +144,9 @@ export const verifyMasterKeyWrapped = async (
version: masterKeyVersion,
key: masterKeyWrapped,
});
const serializedBuffer = new TextEncoder().encode(serialized);
return await verifySignature(serializedBuffer, decodeFromBase64(masterKeyWrappedSig), verifyKey);
return await verifySignature(
encodeString(serialized),
decodeFromBase64(masterKeyWrappedSig),
verifyKey,
);
};