* Add useDeviceList hook Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add isCrossVerified func to matrixUtil Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add className prop in sidebar avatar comp Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add unverified session indicator in sidebar Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add info card component Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add css variables Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add cross signin status hook Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add hasCrossSigninAccountData function Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add cross signin info card in device manage component Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add cross signing and key backup component Signed-off-by: Ajay Bura <ajbura@gmail.com> * Fix typo Signed-off-by: Ajay Bura <ajbura@gmail.com> * WIP Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add cross singing dialogs Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add cross signing set/reset Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add SecretStorageAccess component Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add key backup Signed-off-by: Ajay Bura <ajbura@gmail.com> * WIP * WIP * WIP * WIP * Show progress when restoring key backup * Add SSSS and key backup
41 lines
1 KiB
JavaScript
41 lines
1 KiB
JavaScript
const secretStorageKeys = new Map();
|
|
|
|
export function storePrivateKey(keyId, privateKey) {
|
|
if (privateKey instanceof Uint8Array === false) {
|
|
throw new Error('Unable to store, privateKey is invalid.');
|
|
}
|
|
secretStorageKeys.set(keyId, privateKey);
|
|
}
|
|
|
|
export function hasPrivateKey(keyId) {
|
|
return secretStorageKeys.get(keyId) instanceof Uint8Array;
|
|
}
|
|
|
|
export function getPrivateKey(keyId) {
|
|
return secretStorageKeys.get(keyId);
|
|
}
|
|
|
|
export function deletePrivateKey(keyId) {
|
|
delete secretStorageKeys.delete(keyId);
|
|
}
|
|
|
|
export function clearSecretStorageKeys() {
|
|
secretStorageKeys.clear();
|
|
}
|
|
|
|
async function getSecretStorageKey({ keys }) {
|
|
const keyIds = Object.keys(keys);
|
|
const keyId = keyIds.find(hasPrivateKey);
|
|
if (!keyId) return undefined;
|
|
const privateKey = getPrivateKey(keyId);
|
|
return [keyId, privateKey];
|
|
}
|
|
|
|
function cacheSecretStorageKey(keyId, keyInfo, privateKey) {
|
|
secretStorageKeys.set(keyId, privateKey);
|
|
}
|
|
|
|
export const cryptoCallbacks = {
|
|
getSecretStorageKey,
|
|
cacheSecretStorageKey,
|
|
};
|