Files
pi-ku/frontend/src/utils/keystore.ts
T
2026-04-29 23:12:39 +05:30

24 lines
711 B
TypeScript

import { openDB } from "idb";
// we use indexedDB to securely store master key for easier access across tabs (better UX than having to store in session)
const db = openDB("piku-keys", 1, {
upgrade(db) {
db.createObjectStore("master-key");
},
});
export const saveMasterKey = async (key: CryptoKey) => {
const database = await db;
return await database.put("master-key", key, "masterKey");
};
export const loadMasterKey = async (): Promise<CryptoKey | null> => {
const database = await db;
return (await database.get("master-key", "masterKey")) || null;
};
export const clearMasterKey = async () => {
const database = await db;
return await database.delete("master-key", "masterKey");
};