From c0216e191a9b41d6ff61f2ca4f0a4d9fec4f3ac1 Mon Sep 17 00:00:00 2001 From: Justin Baur <19896123+justindbaur@users.noreply.github.com> Date: Mon, 13 May 2024 06:51:53 -0400 Subject: [PATCH] Use encrypt service in node env secure storage (#9099) * Use `EncryptService` In `NodeEnvSecureStorage` To Replace Deprecated Methods * Update Abstract EncryptService Method To Reflect Implementation --- apps/cli/src/bw.ts | 2 +- .../platform/services/node-env-secure-storage.service.ts | 8 ++++---- libs/common/src/platform/abstractions/encrypt.service.ts | 5 +---- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/apps/cli/src/bw.ts b/apps/cli/src/bw.ts index d7ce250a71..2f5eefdbb2 100644 --- a/apps/cli/src/bw.ts +++ b/apps/cli/src/bw.ts @@ -272,7 +272,7 @@ export class Main { this.secureStorageService = new NodeEnvSecureStorageService( this.storageService, this.logService, - () => this.cryptoService, + this.encryptService, ); this.memoryStorageService = new MemoryStorageService(); diff --git a/apps/cli/src/platform/services/node-env-secure-storage.service.ts b/apps/cli/src/platform/services/node-env-secure-storage.service.ts index 2364553d2a..2ab18b6c46 100644 --- a/apps/cli/src/platform/services/node-env-secure-storage.service.ts +++ b/apps/cli/src/platform/services/node-env-secure-storage.service.ts @@ -1,6 +1,6 @@ import { throwError } from "rxjs"; -import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.service"; +import { EncryptService } from "@bitwarden/common/platform/abstractions/encrypt.service"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { AbstractStorageService } from "@bitwarden/common/platform/abstractions/storage.service"; import { Utils } from "@bitwarden/common/platform/misc/utils"; @@ -11,7 +11,7 @@ export class NodeEnvSecureStorageService implements AbstractStorageService { constructor( private storageService: AbstractStorageService, private logService: LogService, - private cryptoService: () => CryptoService, + private encryptService: EncryptService, ) {} get valuesRequireDeserialization(): boolean { @@ -59,7 +59,7 @@ export class NodeEnvSecureStorageService implements AbstractStorageService { if (sessionKey == null) { throw new Error("No session key available."); } - const encValue = await this.cryptoService().encryptToBytes( + const encValue = await this.encryptService.encryptToBytes( Utils.fromB64ToArray(plainValue), sessionKey, ); @@ -78,7 +78,7 @@ export class NodeEnvSecureStorageService implements AbstractStorageService { } const encBuf = EncArrayBuffer.fromB64(encValue); - const decValue = await this.cryptoService().decryptFromBytes(encBuf, sessionKey); + const decValue = await this.encryptService.decryptToBytes(encBuf, sessionKey); if (decValue == null) { this.logService.info("Failed to decrypt."); return null; diff --git a/libs/common/src/platform/abstractions/encrypt.service.ts b/libs/common/src/platform/abstractions/encrypt.service.ts index 9b4dde3676..bc526e3578 100644 --- a/libs/common/src/platform/abstractions/encrypt.service.ts +++ b/libs/common/src/platform/abstractions/encrypt.service.ts @@ -7,10 +7,7 @@ import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; export abstract class EncryptService { abstract encrypt(plainValue: string | Uint8Array, key: SymmetricCryptoKey): Promise; - abstract encryptToBytes( - plainValue: Uint8Array, - key?: SymmetricCryptoKey, - ): Promise; + abstract encryptToBytes(plainValue: Uint8Array, key: SymmetricCryptoKey): Promise; abstract decryptToUtf8(encString: EncString, key: SymmetricCryptoKey): Promise; abstract decryptToBytes(encThing: Encrypted, key: SymmetricCryptoKey): Promise; abstract rsaEncrypt(data: Uint8Array, publicKey: Uint8Array): Promise;