mirror of
https://github.com/bitwarden/browser
synced 2025-12-12 14:23:32 +00:00
fix cli crypto service calls
This commit is contained in:
@@ -334,7 +334,7 @@ export class Main {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const lockedCallback = async () =>
|
const lockedCallback = async () =>
|
||||||
await this.cryptoService.clearStoredKey(KeySuffixOptions.Auto);
|
await this.cryptoService.clearStoredUserKey(KeySuffixOptions.Auto);
|
||||||
|
|
||||||
this.vaultTimeoutSettingsService = new VaultTimeoutSettingsService(
|
this.vaultTimeoutSettingsService = new VaultTimeoutSettingsService(
|
||||||
this.cryptoService,
|
this.cryptoService,
|
||||||
|
|||||||
@@ -421,11 +421,14 @@ export class ServeCommand {
|
|||||||
this.processResponse(res, Response.error("You are not logged in."));
|
this.processResponse(res, Response.error("You are not logged in."));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (await this.main.cryptoService.hasKeyInMemory()) {
|
if (await this.main.cryptoService.hasUserKeyInMemory()) {
|
||||||
return false;
|
return false;
|
||||||
} else if (await this.main.cryptoService.hasKeyStored(KeySuffixOptions.Auto)) {
|
} else if (await this.main.cryptoService.hasUserKeyStored(KeySuffixOptions.Auto)) {
|
||||||
// load key into memory
|
// load key into memory
|
||||||
await this.main.cryptoService.getKey();
|
const userAutoKey = await this.main.cryptoService.getUserKeyFromStorage(
|
||||||
|
KeySuffixOptions.Auto
|
||||||
|
);
|
||||||
|
await this.main.cryptoService.setUserKey(userAutoKey);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
this.processResponse(res, Response.error("Vault is locked."));
|
this.processResponse(res, Response.error("Vault is locked."));
|
||||||
|
|||||||
@@ -597,11 +597,14 @@ export class Program {
|
|||||||
|
|
||||||
protected async exitIfLocked() {
|
protected async exitIfLocked() {
|
||||||
await this.exitIfNotAuthed();
|
await this.exitIfNotAuthed();
|
||||||
if (await this.main.cryptoService.hasKeyInMemory()) {
|
if (await this.main.cryptoService.hasUserKeyInMemory()) {
|
||||||
return;
|
return;
|
||||||
} else if (await this.main.cryptoService.hasKeyStored(KeySuffixOptions.Auto)) {
|
} else if (await this.main.cryptoService.hasUserKeyStored(KeySuffixOptions.Auto)) {
|
||||||
// load key into memory
|
// load key into memory
|
||||||
await this.main.cryptoService.getKey();
|
const userAutoKey = await this.main.cryptoService.getUserKeyFromStorage(
|
||||||
|
KeySuffixOptions.Auto
|
||||||
|
);
|
||||||
|
await this.main.cryptoService.setUserKey(userAutoKey);
|
||||||
} else if (process.env.BW_NOINTERACTION !== "true") {
|
} else if (process.env.BW_NOINTERACTION !== "true") {
|
||||||
// must unlock
|
// must unlock
|
||||||
if (await this.main.keyConnectorService.getUsesKeyConnector()) {
|
if (await this.main.keyConnectorService.getUsesKeyConnector()) {
|
||||||
|
|||||||
@@ -82,6 +82,12 @@ export abstract class CryptoService {
|
|||||||
* @param userId The desired user
|
* @param userId The desired user
|
||||||
*/
|
*/
|
||||||
clearUserKey: (clearSecretStorage?: boolean, userId?: string) => Promise<void>;
|
clearUserKey: (clearSecretStorage?: boolean, userId?: string) => Promise<void>;
|
||||||
|
/**
|
||||||
|
* Clears the user's stored version of the user symmetric key
|
||||||
|
* @param keySuffix The desired version of the key to clear
|
||||||
|
* @param userId The desired user
|
||||||
|
*/
|
||||||
|
clearStoredUserKey: (keySuffix: KeySuffixOptions, userId?: string) => Promise<void>;
|
||||||
/**
|
/**
|
||||||
* Stores the master key encrypted user symmetric key
|
* Stores the master key encrypted user symmetric key
|
||||||
* @param userSymKeyMasterKey The master key encrypted user symmetric key to set
|
* @param userSymKeyMasterKey The master key encrypted user symmetric key to set
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ export class CryptoService implements CryptoServiceAbstraction {
|
|||||||
if (userKey != null) {
|
if (userKey != null) {
|
||||||
if (!(await this.validateUserKey(userKey))) {
|
if (!(await this.validateUserKey(userKey))) {
|
||||||
this.logService.warning("Wrong key, throwing away stored key");
|
this.logService.warning("Wrong key, throwing away stored key");
|
||||||
await this.clearStoredUserKeys(userId);
|
await this.clearAllStoredUserKeys(userId);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,7 +121,21 @@ export class CryptoService implements CryptoServiceAbstraction {
|
|||||||
async clearUserKey(clearStoredKeys = true, userId?: string): Promise<void> {
|
async clearUserKey(clearStoredKeys = true, userId?: string): Promise<void> {
|
||||||
await this.stateService.setUserSymKey(null, { userId: userId });
|
await this.stateService.setUserSymKey(null, { userId: userId });
|
||||||
if (clearStoredKeys) {
|
if (clearStoredKeys) {
|
||||||
await this.clearStoredUserKeys(userId);
|
await this.clearAllStoredUserKeys(userId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async clearStoredUserKey(keySuffix: KeySuffixOptions, userId?: string): Promise<void> {
|
||||||
|
switch (keySuffix) {
|
||||||
|
case KeySuffixOptions.Auto:
|
||||||
|
this.stateService.setUserSymKeyAuto(null, { userId: userId });
|
||||||
|
break;
|
||||||
|
case KeySuffixOptions.Biometric:
|
||||||
|
this.stateService.setUserSymKeyBiometric(null, { userId: userId });
|
||||||
|
break;
|
||||||
|
case KeySuffixOptions.Pin:
|
||||||
|
this.stateService.setUserSymKeyPinEphemeral(null, { userId: userId });
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -813,7 +827,7 @@ export class CryptoService implements CryptoServiceAbstraction {
|
|||||||
return [new SymmetricCryptoKey(newSymKey) as T, protectedSymKey];
|
return [new SymmetricCryptoKey(newSymKey) as T, protectedSymKey];
|
||||||
}
|
}
|
||||||
|
|
||||||
private async clearStoredUserKeys(userId?: string): Promise<void> {
|
private async clearAllStoredUserKeys(userId?: string): Promise<void> {
|
||||||
await this.stateService.setUserSymKeyAuto(null, { userId: userId });
|
await this.stateService.setUserSymKeyAuto(null, { userId: userId });
|
||||||
await this.stateService.setUserSymKeyBiometric(null, { userId: userId });
|
await this.stateService.setUserSymKeyBiometric(null, { userId: userId });
|
||||||
await this.stateService.setUserSymKeyPinEphemeral(null, { userId: userId });
|
await this.stateService.setUserSymKeyPinEphemeral(null, { userId: userId });
|
||||||
|
|||||||
Reference in New Issue
Block a user