1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-16 16:23:44 +00:00

update device-crypto service with new crypto service

This commit is contained in:
Jacob Fink
2023-06-08 17:13:15 -04:00
parent 7583c959eb
commit d79f2e24be
2 changed files with 23 additions and 15 deletions

View File

@@ -6,7 +6,11 @@ import { CryptoFunctionService } from "../platform/abstractions/crypto-function.
import { CryptoService } from "../platform/abstractions/crypto.service"; import { CryptoService } from "../platform/abstractions/crypto.service";
import { EncryptService } from "../platform/abstractions/encrypt.service"; import { EncryptService } from "../platform/abstractions/encrypt.service";
import { StateService } from "../platform/abstractions/state.service"; import { StateService } from "../platform/abstractions/state.service";
import { SymmetricCryptoKey, DeviceKey } from "../platform/models/domain/symmetric-crypto-key"; import {
SymmetricCryptoKey,
DeviceKey,
UserSymKey,
} from "../platform/models/domain/symmetric-crypto-key";
import { CsprngArray } from "../types/csprng"; import { CsprngArray } from "../types/csprng";
export class DeviceCryptoService implements DeviceCryptoServiceAbstraction { export class DeviceCryptoService implements DeviceCryptoServiceAbstraction {
@@ -21,7 +25,7 @@ export class DeviceCryptoService implements DeviceCryptoServiceAbstraction {
async trustDevice(): Promise<DeviceResponse> { async trustDevice(): Promise<DeviceResponse> {
// Attempt to get user symmetric key // Attempt to get user symmetric key
const userSymKey: SymmetricCryptoKey = await this.cryptoService.getEncKey(); const userSymKey: UserSymKey = await this.cryptoService.getUserKeyFromMemory();
// If user symmetric key is not found, throw error // If user symmetric key is not found, throw error
if (!userSymKey) { if (!userSymKey) {

View File

@@ -8,7 +8,11 @@ import { CryptoFunctionService } from "../platform/abstractions/crypto-function.
import { EncryptService } from "../platform/abstractions/encrypt.service"; import { EncryptService } from "../platform/abstractions/encrypt.service";
import { StateService } from "../platform/abstractions/state.service"; import { StateService } from "../platform/abstractions/state.service";
import { EncString } from "../platform/models/domain/enc-string"; import { EncString } from "../platform/models/domain/enc-string";
import { SymmetricCryptoKey, DeviceKey } from "../platform/models/domain/symmetric-crypto-key"; import {
SymmetricCryptoKey,
DeviceKey,
UserSymKey,
} from "../platform/models/domain/symmetric-crypto-key";
import { CryptoService } from "../platform/services/crypto.service"; import { CryptoService } from "../platform/services/crypto.service";
import { CsprngArray } from "../types/csprng"; import { CsprngArray } from "../types/csprng";
@@ -125,7 +129,7 @@ describe("deviceCryptoService", () => {
let mockDeviceKey: DeviceKey; let mockDeviceKey: DeviceKey;
let mockUserSymKeyRandomBytes: CsprngArray; let mockUserSymKeyRandomBytes: CsprngArray;
let mockUserSymKey: SymmetricCryptoKey; let mockUserSymKey: UserSymKey;
const deviceRsaKeyLength = 2048; const deviceRsaKeyLength = 2048;
let mockDeviceRsaKeyPair: [ArrayBuffer, ArrayBuffer]; let mockDeviceRsaKeyPair: [ArrayBuffer, ArrayBuffer];
@@ -147,7 +151,7 @@ describe("deviceCryptoService", () => {
let makeDeviceKeySpy: jest.SpyInstance; let makeDeviceKeySpy: jest.SpyInstance;
let rsaGenerateKeyPairSpy: jest.SpyInstance; let rsaGenerateKeyPairSpy: jest.SpyInstance;
let cryptoSvcGetEncKeySpy: jest.SpyInstance; let cryptoSvcGetUserKeyFromMemorySpy: jest.SpyInstance;
let cryptoSvcRsaEncryptSpy: jest.SpyInstance; let cryptoSvcRsaEncryptSpy: jest.SpyInstance;
let encryptServiceEncryptSpy: jest.SpyInstance; let encryptServiceEncryptSpy: jest.SpyInstance;
let appIdServiceGetAppIdSpy: jest.SpyInstance; let appIdServiceGetAppIdSpy: jest.SpyInstance;
@@ -160,7 +164,7 @@ describe("deviceCryptoService", () => {
mockDeviceKey = new SymmetricCryptoKey(mockDeviceKeyRandomBytes) as DeviceKey; mockDeviceKey = new SymmetricCryptoKey(mockDeviceKeyRandomBytes) as DeviceKey;
mockUserSymKeyRandomBytes = new Uint8Array(userSymKeyBytesLength).buffer as CsprngArray; mockUserSymKeyRandomBytes = new Uint8Array(userSymKeyBytesLength).buffer as CsprngArray;
mockUserSymKey = new SymmetricCryptoKey(mockUserSymKeyRandomBytes); mockUserSymKey = new SymmetricCryptoKey(mockUserSymKeyRandomBytes) as UserSymKey;
mockDeviceRsaKeyPair = [ mockDeviceRsaKeyPair = [
new ArrayBuffer(deviceRsaKeyLength), new ArrayBuffer(deviceRsaKeyLength),
@@ -194,8 +198,8 @@ describe("deviceCryptoService", () => {
.spyOn(cryptoFunctionService, "rsaGenerateKeyPair") .spyOn(cryptoFunctionService, "rsaGenerateKeyPair")
.mockResolvedValue(mockDeviceRsaKeyPair); .mockResolvedValue(mockDeviceRsaKeyPair);
cryptoSvcGetEncKeySpy = jest cryptoSvcGetUserKeyFromMemorySpy = jest
.spyOn(cryptoService, "getEncKey") .spyOn(cryptoService, "getUserKeyFromMemory")
.mockResolvedValue(mockUserSymKey); .mockResolvedValue(mockUserSymKey);
cryptoSvcRsaEncryptSpy = jest cryptoSvcRsaEncryptSpy = jest
@@ -227,7 +231,7 @@ describe("deviceCryptoService", () => {
expect(makeDeviceKeySpy).toHaveBeenCalledTimes(1); expect(makeDeviceKeySpy).toHaveBeenCalledTimes(1);
expect(rsaGenerateKeyPairSpy).toHaveBeenCalledTimes(1); expect(rsaGenerateKeyPairSpy).toHaveBeenCalledTimes(1);
expect(cryptoSvcGetEncKeySpy).toHaveBeenCalledTimes(1); expect(cryptoSvcGetUserKeyFromMemorySpy).toHaveBeenCalledTimes(1);
expect(cryptoSvcRsaEncryptSpy).toHaveBeenCalledTimes(1); expect(cryptoSvcRsaEncryptSpy).toHaveBeenCalledTimes(1);
expect(encryptServiceEncryptSpy).toHaveBeenCalledTimes(2); expect(encryptServiceEncryptSpy).toHaveBeenCalledTimes(2);
@@ -247,17 +251,17 @@ describe("deviceCryptoService", () => {
it("throws specific error if user symmetric key is not found", async () => { it("throws specific error if user symmetric key is not found", async () => {
// setup the spy to return null // setup the spy to return null
cryptoSvcGetEncKeySpy.mockResolvedValue(null); cryptoSvcGetUserKeyFromMemorySpy.mockResolvedValue(null);
// check if the expected error is thrown // check if the expected error is thrown
await expect(deviceCryptoService.trustDevice()).rejects.toThrow( await expect(deviceCryptoService.trustDevice()).rejects.toThrow(
"User symmetric key not found" "User symmetric key not found"
); );
// reset the spy // reset the spy
cryptoSvcGetEncKeySpy.mockReset(); cryptoSvcGetUserKeyFromMemorySpy.mockReset();
// setup the spy to return undefined // setup the spy to return undefined
cryptoSvcGetEncKeySpy.mockResolvedValue(undefined); cryptoSvcGetUserKeyFromMemorySpy.mockResolvedValue(undefined);
// check if the expected error is thrown // check if the expected error is thrown
await expect(deviceCryptoService.trustDevice()).rejects.toThrow( await expect(deviceCryptoService.trustDevice()).rejects.toThrow(
"User symmetric key not found" "User symmetric key not found"
@@ -276,9 +280,9 @@ describe("deviceCryptoService", () => {
errorText: "rsaGenerateKeyPair error", errorText: "rsaGenerateKeyPair error",
}, },
{ {
method: "getEncKey", method: "getUserKeyFromMemory",
spy: () => cryptoSvcGetEncKeySpy, spy: () => cryptoSvcGetUserKeyFromMemorySpy,
errorText: "getEncKey error", errorText: "getUserKeyFromMemory error",
}, },
{ {
method: "rsaEncrypt", method: "rsaEncrypt",