mirror of
https://github.com/kmc7468/arkvault.git
synced 2025-12-14 22:08:45 +00:00
38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import {
|
|
generateRSAKeyPair,
|
|
makeRSAKeyNonextractable,
|
|
exportRSAKeyToBase64,
|
|
generateAESKey,
|
|
makeAESKeyNonextractable,
|
|
wrapAESKeyUsingRSA,
|
|
} from "$lib/modules/crypto";
|
|
import { clientKeyStore } from "$lib/stores";
|
|
|
|
export const generateClientKeys = async () => {
|
|
const encKeyPair = await generateRSAKeyPair("encryption");
|
|
const sigKeyPair = await generateRSAKeyPair("signature");
|
|
|
|
clientKeyStore.set({
|
|
encryptKey: encKeyPair.publicKey,
|
|
decryptKey: await makeRSAKeyNonextractable(encKeyPair.privateKey),
|
|
signKey: await makeRSAKeyNonextractable(sigKeyPair.privateKey),
|
|
verifyKey: sigKeyPair.publicKey,
|
|
});
|
|
|
|
return {
|
|
encryptKey: encKeyPair.publicKey,
|
|
encryptKeyBase64: await exportRSAKeyToBase64(encKeyPair.publicKey),
|
|
decryptKeyBase64: await exportRSAKeyToBase64(encKeyPair.privateKey),
|
|
signKeyBase64: await exportRSAKeyToBase64(sigKeyPair.privateKey),
|
|
verifyKeyBase64: await exportRSAKeyToBase64(sigKeyPair.publicKey),
|
|
};
|
|
};
|
|
|
|
export const generateInitialMasterKey = async (encryptKey: CryptoKey) => {
|
|
const masterKey = await generateAESKey();
|
|
return {
|
|
masterKey: await makeAESKeyNonextractable(masterKey),
|
|
masterKeyWrapped: await wrapAESKeyUsingRSA(masterKey, encryptKey),
|
|
};
|
|
};
|