updated generateIntermediateKeyAttribute to save key to localDB

This commit is contained in:
Abhinav-grd 2021-04-05 11:20:40 +05:30
parent 176db8b9ee
commit 6059e63064
4 changed files with 17 additions and 23 deletions

View file

@ -13,7 +13,7 @@ import { getKey, SESSION_KEYS, setKey } from 'utils/storage/sessionStorage';
import { B64EncryptionResult } from 'services/uploadService'; import { B64EncryptionResult } from 'services/uploadService';
import CryptoWorker, { import CryptoWorker, {
setSessionKeys, setSessionKeys,
generateIntermediateKeyAttributes, generateAndSaveIntermediateKeyAttributes,
} from 'utils/crypto'; } from 'utils/crypto';
import { Spinner } from 'react-bootstrap'; import { Spinner } from 'react-bootstrap';
import { getActualKey } from 'utils/common/key'; import { getActualKey } from 'utils/common/key';
@ -94,13 +94,10 @@ export default function Generate() {
keyAttributes, keyAttributes,
updatedKey updatedKey
); );
setData( await generateAndSaveIntermediateKeyAttributes(
LS_KEYS.KEY_ATTRIBUTES,
await generateIntermediateKeyAttributes(
passphrase, passphrase,
updatedKeyAttributes, updatedKeyAttributes,
key key
)
); );
setSessionKeys(key); setSessionKeys(key);

View file

@ -12,7 +12,7 @@ import * as Yup from 'yup';
import { KeyAttributes } from 'types'; import { KeyAttributes } from 'types';
import { setKey, SESSION_KEYS, getKey } from 'utils/storage/sessionStorage'; import { setKey, SESSION_KEYS, getKey } from 'utils/storage/sessionStorage';
import CryptoWorker, { import CryptoWorker, {
generateIntermediateKeyAttributes, generateAndSaveIntermediateKeyAttributes,
setSessionKeys, setSessionKeys,
} from 'utils/crypto'; } from 'utils/crypto';
import { logoutUser } from 'services/userService'; import { logoutUser } from 'services/userService';
@ -72,12 +72,11 @@ export default function Credentials() {
kek kek
); );
if (isFirstLogin()) { if (isFirstLogin()) {
const intermediateKeyAttributes = await generateIntermediateKeyAttributes( generateAndSaveIntermediateKeyAttributes(
passphrase, passphrase,
keyAttributes, keyAttributes,
key key
); );
setData(LS_KEYS.KEY_ATTRIBUTES, intermediateKeyAttributes);
} }
setSessionKeys(key); setSessionKeys(key);
router.push('/gallery'); router.push('/gallery');

View file

@ -14,7 +14,7 @@ import { getKey, SESSION_KEYS, setKey } from 'utils/storage/sessionStorage';
import { B64EncryptionResult } from 'services/uploadService'; import { B64EncryptionResult } from 'services/uploadService';
import CryptoWorker, { import CryptoWorker, {
setSessionKeys, setSessionKeys,
generateIntermediateKeyAttributes, generateAndSaveIntermediateKeyAttributes,
} from 'utils/crypto'; } from 'utils/crypto';
import { Spinner } from 'react-bootstrap'; import { Spinner } from 'react-bootstrap';
@ -103,14 +103,10 @@ export default function Generate() {
getData(LS_KEYS.USER).name, getData(LS_KEYS.USER).name,
keyAttributes keyAttributes
); );
await generateAndSaveIntermediateKeyAttributes(
setData(
LS_KEYS.KEY_ATTRIBUTES,
await generateIntermediateKeyAttributes(
passphrase, passphrase,
keyAttributes, keyAttributes,
key key
)
); );
setSessionKeys(key); setSessionKeys(key);

View file

@ -10,11 +10,11 @@ const CryptoWorker: any =
runningInBrowser() && runningInBrowser() &&
Comlink.wrap(new Worker('worker/crypto.worker.js', { type: 'module' })); Comlink.wrap(new Worker('worker/crypto.worker.js', { type: 'module' }));
export async function generateIntermediateKeyAttributes( export async function generateAndSaveIntermediateKeyAttributes(
passphrase, passphrase,
keyAttributes, keyAttributes,
key key
): Promise<KeyAttributes> { ) {
const cryptoWorker = await new CryptoWorker(); const cryptoWorker = await new CryptoWorker();
const intermediateKekSalt: string = await cryptoWorker.generateSaltToDeriveKey(); const intermediateKekSalt: string = await cryptoWorker.generateSaltToDeriveKey();
const intermediateKek: KEK = await cryptoWorker.deriveIntermediateKey( const intermediateKek: KEK = await cryptoWorker.deriveIntermediateKey(
@ -25,7 +25,8 @@ export async function generateIntermediateKeyAttributes(
key, key,
intermediateKek.key intermediateKek.key
); );
return {
const updatedKeyAttributes = {
kekSalt: intermediateKekSalt, kekSalt: intermediateKekSalt,
encryptedKey: encryptedKeyAttributes.encryptedData, encryptedKey: encryptedKeyAttributes.encryptedData,
keyDecryptionNonce: encryptedKeyAttributes.nonce, keyDecryptionNonce: encryptedKeyAttributes.nonce,
@ -35,6 +36,7 @@ export async function generateIntermediateKeyAttributes(
opsLimit: intermediateKek.opsLimit, opsLimit: intermediateKek.opsLimit,
memLimit: intermediateKek.memLimit, memLimit: intermediateKek.memLimit,
}; };
setData(LS_KEYS.KEY_ATTRIBUTES, updatedKeyAttributes);
} }
export const setSessionKeys = async (key: string) => { export const setSessionKeys = async (key: string) => {