mirror of
https://github.com/kmc7468/arkvault.git
synced 2026-02-04 08:06:56 +00:00
48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
import {
|
|
generateEncryptionKeyPair,
|
|
generateSigningKeyPair,
|
|
exportRSAKeyToBase64,
|
|
makeRSAKeyNonextractable,
|
|
wrapMasterKey,
|
|
generateMasterKey,
|
|
makeAESKeyNonextractable,
|
|
wrapHmacSecret,
|
|
generateHmacSecret,
|
|
} from "$lib/modules/crypto";
|
|
import { clientKeyStore } from "$lib/stores";
|
|
|
|
export const generateClientKeys = async () => {
|
|
const { encryptKey, decryptKey } = await generateEncryptionKeyPair();
|
|
const { signKey, verifyKey } = await generateSigningKeyPair();
|
|
|
|
clientKeyStore.set({
|
|
encryptKey,
|
|
decryptKey: await makeRSAKeyNonextractable(decryptKey),
|
|
signKey: await makeRSAKeyNonextractable(signKey),
|
|
verifyKey,
|
|
});
|
|
|
|
return {
|
|
encryptKey,
|
|
encryptKeyBase64: await exportRSAKeyToBase64(encryptKey),
|
|
decryptKeyBase64: await exportRSAKeyToBase64(decryptKey),
|
|
signKeyBase64: await exportRSAKeyToBase64(signKey),
|
|
verifyKeyBase64: await exportRSAKeyToBase64(verifyKey),
|
|
};
|
|
};
|
|
|
|
export const generateInitialMasterKey = async (encryptKey: CryptoKey) => {
|
|
const { masterKey } = await generateMasterKey();
|
|
return {
|
|
masterKey: await makeAESKeyNonextractable(masterKey),
|
|
masterKeyWrapped: await wrapMasterKey(masterKey, encryptKey),
|
|
};
|
|
};
|
|
|
|
export const generateInitialHmacSecret = async (masterKey: CryptoKey) => {
|
|
const { hmacSecret } = await generateHmacSecret();
|
|
return {
|
|
hmacSecretWrapped: await wrapHmacSecret(hmacSecret, masterKey),
|
|
};
|
|
};
|