From feef1c8ed00c6609edbb34f4697dc33bb2ed5505 Mon Sep 17 00:00:00 2001 From: Bernd Schoolmann Date: Thu, 3 Jul 2025 17:18:31 +0200 Subject: [PATCH] Move key-generation service ownership to KM --- .../common/services/pin/pin.service.implementation.ts | 2 +- libs/common/src/auth/services/token.service.spec.ts | 2 +- libs/common/src/auth/services/token.service.ts | 2 +- .../crypto}/abstractions/key-generation.service.ts | 4 ++-- .../crypto}/services/key-generation.service.spec.ts | 8 ++++---- .../crypto}/services/key-generation.service.ts | 10 +++++----- .../services/device-trust.service.implementation.ts | 2 +- .../device-trust/services/device-trust.service.spec.ts | 2 +- .../services/key-connector.service.spec.ts | 2 +- .../key-connector/services/key-connector.service.ts | 2 +- .../services/master-password.service.spec.ts | 2 +- .../services/master-password.service.ts | 2 +- .../src/tools/send/services/send.service.spec.ts | 2 +- libs/common/src/tools/send/services/send.service.ts | 2 +- libs/key-management/src/key.service.ts | 2 +- 15 files changed, 23 insertions(+), 23 deletions(-) rename libs/common/src/{platform => key-management/crypto}/abstractions/key-generation.service.ts (94%) rename libs/common/src/{platform => key-management/crypto}/services/key-generation.service.spec.ts (93%) rename libs/common/src/{platform => key-management/crypto}/services/key-generation.service.ts (92%) diff --git a/libs/auth/src/common/services/pin/pin.service.implementation.ts b/libs/auth/src/common/services/pin/pin.service.implementation.ts index 5b7777fedd1..36cc6ddce85 100644 --- a/libs/auth/src/common/services/pin/pin.service.implementation.ts +++ b/libs/auth/src/common/services/pin/pin.service.implementation.ts @@ -5,7 +5,7 @@ import { firstValueFrom, map } from "rxjs"; import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { CryptoFunctionService } from "@bitwarden/common/key-management/crypto/abstractions/crypto-function.service"; import { EncryptService } from "@bitwarden/common/key-management/crypto/abstractions/encrypt.service"; -import { KeyGenerationService } from "@bitwarden/common/platform/abstractions/key-generation.service"; +import { KeyGenerationService } from "@bitwarden/common/key-management/crypto/abstractions/key-generation.service"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { EncString, EncryptedString } from "@bitwarden/common/platform/models/domain/enc-string"; import { diff --git a/libs/common/src/auth/services/token.service.spec.ts b/libs/common/src/auth/services/token.service.spec.ts index e67e522368f..fe78dca1160 100644 --- a/libs/common/src/auth/services/token.service.spec.ts +++ b/libs/common/src/auth/services/token.service.spec.ts @@ -9,12 +9,12 @@ import { LogoutReason } from "@bitwarden/auth/common"; import { FakeSingleUserStateProvider, FakeGlobalStateProvider } from "../../../spec"; import { EncryptService } from "../../key-management/crypto/abstractions/encrypt.service"; +import { KeyGenerationService } from "../../key-management/crypto/abstractions/key-generation.service"; import { VaultTimeout, VaultTimeoutAction, VaultTimeoutStringType, } from "../../key-management/vault-timeout"; -import { KeyGenerationService } from "../../platform/abstractions/key-generation.service"; import { LogService } from "../../platform/abstractions/log.service"; import { AbstractStorageService } from "../../platform/abstractions/storage.service"; import { StorageLocation } from "../../platform/enums"; diff --git a/libs/common/src/auth/services/token.service.ts b/libs/common/src/auth/services/token.service.ts index 2c6883272c3..92b5e65a3b2 100644 --- a/libs/common/src/auth/services/token.service.ts +++ b/libs/common/src/auth/services/token.service.ts @@ -8,12 +8,12 @@ import { Opaque } from "type-fest"; import { LogoutReason, decodeJwtTokenToJson } from "@bitwarden/auth/common"; import { EncryptService } from "../../key-management/crypto/abstractions/encrypt.service"; +import { KeyGenerationService } from "../../key-management/crypto/abstractions/key-generation.service"; import { VaultTimeout, VaultTimeoutAction, VaultTimeoutStringType, } from "../../key-management/vault-timeout"; -import { KeyGenerationService } from "../../platform/abstractions/key-generation.service"; import { LogService } from "../../platform/abstractions/log.service"; import { AbstractStorageService } from "../../platform/abstractions/storage.service"; import { StorageLocation } from "../../platform/enums"; diff --git a/libs/common/src/platform/abstractions/key-generation.service.ts b/libs/common/src/key-management/crypto/abstractions/key-generation.service.ts similarity index 94% rename from libs/common/src/platform/abstractions/key-generation.service.ts rename to libs/common/src/key-management/crypto/abstractions/key-generation.service.ts index 91c630ed638..919f770cbf0 100644 --- a/libs/common/src/platform/abstractions/key-generation.service.ts +++ b/libs/common/src/key-management/crypto/abstractions/key-generation.service.ts @@ -2,8 +2,8 @@ // eslint-disable-next-line no-restricted-imports import { KdfConfig } from "@bitwarden/key-management"; -import { CsprngArray } from "../../types/csprng"; -import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; +import { SymmetricCryptoKey } from "../../../platform/models/domain/symmetric-crypto-key"; +import { CsprngArray } from "../../../types/csprng"; export abstract class KeyGenerationService { /** diff --git a/libs/common/src/platform/services/key-generation.service.spec.ts b/libs/common/src/key-management/crypto/services/key-generation.service.spec.ts similarity index 93% rename from libs/common/src/platform/services/key-generation.service.spec.ts rename to libs/common/src/key-management/crypto/services/key-generation.service.spec.ts index 4fdad48e0fa..daa2c547bbe 100644 --- a/libs/common/src/platform/services/key-generation.service.spec.ts +++ b/libs/common/src/key-management/crypto/services/key-generation.service.spec.ts @@ -4,10 +4,10 @@ import { mock } from "jest-mock-extended"; // eslint-disable-next-line no-restricted-imports import { PBKDF2KdfConfig, Argon2KdfConfig } from "@bitwarden/key-management"; -import { CryptoFunctionService } from "../../key-management/crypto/abstractions/crypto-function.service"; -import { CsprngArray } from "../../types/csprng"; -import { EncryptionType } from "../enums"; -import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; +import { EncryptionType } from "../../../platform/enums"; +import { SymmetricCryptoKey } from "../../../platform/models/domain/symmetric-crypto-key"; +import { CsprngArray } from "../../../types/csprng"; +import { CryptoFunctionService } from "../abstractions/crypto-function.service"; import { KeyGenerationService } from "./key-generation.service"; diff --git a/libs/common/src/platform/services/key-generation.service.ts b/libs/common/src/key-management/crypto/services/key-generation.service.ts similarity index 92% rename from libs/common/src/platform/services/key-generation.service.ts rename to libs/common/src/key-management/crypto/services/key-generation.service.ts index 49f99eb79a9..dab8e555d40 100644 --- a/libs/common/src/platform/services/key-generation.service.ts +++ b/libs/common/src/key-management/crypto/services/key-generation.service.ts @@ -4,12 +4,12 @@ // eslint-disable-next-line no-restricted-imports import { KdfConfig, PBKDF2KdfConfig, Argon2KdfConfig, KdfType } from "@bitwarden/key-management"; -import { CryptoFunctionService } from "../../key-management/crypto/abstractions/crypto-function.service"; -import { CsprngArray } from "../../types/csprng"; +import { EncryptionType } from "../../../platform/enums"; +import { Utils } from "../../../platform/misc/utils"; +import { SymmetricCryptoKey } from "../../../platform/models/domain/symmetric-crypto-key"; +import { CsprngArray } from "../../../types/csprng"; +import { CryptoFunctionService } from "../abstractions/crypto-function.service"; import { KeyGenerationService as KeyGenerationServiceAbstraction } from "../abstractions/key-generation.service"; -import { EncryptionType } from "../enums"; -import { Utils } from "../misc/utils"; -import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; export class KeyGenerationService implements KeyGenerationServiceAbstraction { constructor(private cryptoFunctionService: CryptoFunctionService) {} diff --git a/libs/common/src/key-management/device-trust/services/device-trust.service.implementation.ts b/libs/common/src/key-management/device-trust/services/device-trust.service.implementation.ts index b02c8922ccb..d0d5a84833f 100644 --- a/libs/common/src/key-management/device-trust/services/device-trust.service.implementation.ts +++ b/libs/common/src/key-management/device-trust/services/device-trust.service.implementation.ts @@ -20,7 +20,6 @@ import { import { AppIdService } from "../../../platform/abstractions/app-id.service"; import { ConfigService } from "../../../platform/abstractions/config/config.service"; import { I18nService } from "../../../platform/abstractions/i18n.service"; -import { KeyGenerationService } from "../../../platform/abstractions/key-generation.service"; import { LogService } from "../../../platform/abstractions/log.service"; import { PlatformUtilsService } from "../../../platform/abstractions/platform-utils.service"; import { AbstractStorageService } from "../../../platform/abstractions/storage.service"; @@ -33,6 +32,7 @@ import { UserId } from "../../../types/guid"; import { UserKey, DeviceKey } from "../../../types/key"; import { CryptoFunctionService } from "../../crypto/abstractions/crypto-function.service"; import { EncryptService } from "../../crypto/abstractions/encrypt.service"; +import { KeyGenerationService } from "../../crypto/abstractions/key-generation.service"; import { DeviceTrustServiceAbstraction } from "../abstractions/device-trust.service.abstraction"; /** Uses disk storage so that the device key can persist after log out and tab removal. */ diff --git a/libs/common/src/key-management/device-trust/services/device-trust.service.spec.ts b/libs/common/src/key-management/device-trust/services/device-trust.service.spec.ts index c1b291c086a..19366c8b0af 100644 --- a/libs/common/src/key-management/device-trust/services/device-trust.service.spec.ts +++ b/libs/common/src/key-management/device-trust/services/device-trust.service.spec.ts @@ -25,7 +25,6 @@ import { DeviceType } from "../../../enums"; import { AppIdService } from "../../../platform/abstractions/app-id.service"; import { ConfigService } from "../../../platform/abstractions/config/config.service"; import { I18nService } from "../../../platform/abstractions/i18n.service"; -import { KeyGenerationService } from "../../../platform/abstractions/key-generation.service"; import { LogService } from "../../../platform/abstractions/log.service"; import { PlatformUtilsService } from "../../../platform/abstractions/platform-utils.service"; import { AbstractStorageService } from "../../../platform/abstractions/storage.service"; @@ -40,6 +39,7 @@ import { UserId } from "../../../types/guid"; import { DeviceKey, UserKey } from "../../../types/key"; import { CryptoFunctionService } from "../../crypto/abstractions/crypto-function.service"; import { EncryptService } from "../../crypto/abstractions/encrypt.service"; +import { KeyGenerationService } from "../../crypto/abstractions/key-generation.service"; import { SHOULD_TRUST_DEVICE, diff --git a/libs/common/src/key-management/key-connector/services/key-connector.service.spec.ts b/libs/common/src/key-management/key-connector/services/key-connector.service.spec.ts index 2f897a7a28a..8c84092aa1e 100644 --- a/libs/common/src/key-management/key-connector/services/key-connector.service.spec.ts +++ b/libs/common/src/key-management/key-connector/services/key-connector.service.spec.ts @@ -19,9 +19,9 @@ import { LogService } from "../../../platform/abstractions/log.service"; import { Utils } from "../../../platform/misc/utils"; import { EncString } from "../../../platform/models/domain/enc-string"; import { SymmetricCryptoKey } from "../../../platform/models/domain/symmetric-crypto-key"; -import { KeyGenerationService } from "../../../platform/services/key-generation.service"; import { OrganizationId, UserId } from "../../../types/guid"; import { MasterKey, UserKey } from "../../../types/key"; +import { KeyGenerationService } from "../../crypto/services/key-generation.service"; import { FakeMasterPasswordService } from "../../master-password/services/fake-master-password.service"; import { KeyConnectorUserKeyRequest } from "../models/key-connector-user-key.request"; diff --git a/libs/common/src/key-management/key-connector/services/key-connector.service.ts b/libs/common/src/key-management/key-connector/services/key-connector.service.ts index 0c4f4090e61..2e532c2717b 100644 --- a/libs/common/src/key-management/key-connector/services/key-connector.service.ts +++ b/libs/common/src/key-management/key-connector/services/key-connector.service.ts @@ -23,13 +23,13 @@ import { Organization } from "../../../admin-console/models/domain/organization" import { TokenService } from "../../../auth/abstractions/token.service"; import { IdentityTokenResponse } from "../../../auth/models/response/identity-token.response"; import { KeysRequest } from "../../../models/request/keys.request"; -import { KeyGenerationService } from "../../../platform/abstractions/key-generation.service"; import { LogService } from "../../../platform/abstractions/log.service"; import { Utils } from "../../../platform/misc/utils"; import { SymmetricCryptoKey } from "../../../platform/models/domain/symmetric-crypto-key"; import { KEY_CONNECTOR_DISK, StateProvider, UserKeyDefinition } from "../../../platform/state"; import { UserId } from "../../../types/guid"; import { MasterKey } from "../../../types/key"; +import { KeyGenerationService } from "../../crypto/abstractions/key-generation.service"; import { InternalMasterPasswordServiceAbstraction } from "../../master-password/abstractions/master-password.service.abstraction"; import { KeyConnectorService as KeyConnectorServiceAbstraction } from "../abstractions/key-connector.service"; import { KeyConnectorUserKeyRequest } from "../models/key-connector-user-key.request"; diff --git a/libs/common/src/key-management/master-password/services/master-password.service.spec.ts b/libs/common/src/key-management/master-password/services/master-password.service.spec.ts index 4a09a6d66b1..7fedb22353b 100644 --- a/libs/common/src/key-management/master-password/services/master-password.service.spec.ts +++ b/libs/common/src/key-management/master-password/services/master-password.service.spec.ts @@ -4,7 +4,6 @@ import * as rxjs from "rxjs"; import { makeSymmetricCryptoKey } from "../../../../spec"; import { ForceSetPasswordReason } from "../../../auth/models/domain/force-set-password-reason"; -import { KeyGenerationService } from "../../../platform/abstractions/key-generation.service"; import { LogService } from "../../../platform/abstractions/log.service"; import { StateService } from "../../../platform/abstractions/state.service"; import { EncString } from "../../../platform/models/domain/enc-string"; @@ -13,6 +12,7 @@ import { StateProvider } from "../../../platform/state"; import { UserId } from "../../../types/guid"; import { MasterKey } from "../../../types/key"; import { EncryptService } from "../../crypto/abstractions/encrypt.service"; +import { KeyGenerationService } from "../../crypto/abstractions/key-generation.service"; import { MasterPasswordService } from "./master-password.service"; diff --git a/libs/common/src/key-management/master-password/services/master-password.service.ts b/libs/common/src/key-management/master-password/services/master-password.service.ts index 95ed346f110..110a2112c0c 100644 --- a/libs/common/src/key-management/master-password/services/master-password.service.ts +++ b/libs/common/src/key-management/master-password/services/master-password.service.ts @@ -3,7 +3,6 @@ import { firstValueFrom, map, Observable } from "rxjs"; import { ForceSetPasswordReason } from "../../../auth/models/domain/force-set-password-reason"; -import { KeyGenerationService } from "../../../platform/abstractions/key-generation.service"; import { LogService } from "../../../platform/abstractions/log.service"; import { StateService } from "../../../platform/abstractions/state.service"; import { EncryptionType } from "../../../platform/enums"; @@ -18,6 +17,7 @@ import { import { UserId } from "../../../types/guid"; import { MasterKey, UserKey } from "../../../types/key"; import { EncryptService } from "../../crypto/abstractions/encrypt.service"; +import { KeyGenerationService } from "../../crypto/abstractions/key-generation.service"; import { InternalMasterPasswordServiceAbstraction } from "../abstractions/master-password.service.abstraction"; /** Memory since master key shouldn't be available on lock */ diff --git a/libs/common/src/tools/send/services/send.service.spec.ts b/libs/common/src/tools/send/services/send.service.spec.ts index 777bc54f299..52bda4d2cc6 100644 --- a/libs/common/src/tools/send/services/send.service.spec.ts +++ b/libs/common/src/tools/send/services/send.service.spec.ts @@ -13,9 +13,9 @@ import { mockAccountServiceWith, } from "../../../../spec"; import { EncryptService } from "../../../key-management/crypto/abstractions/encrypt.service"; +import { KeyGenerationService } from "../../../key-management/crypto/abstractions/key-generation.service"; import { EnvironmentService } from "../../../platform/abstractions/environment.service"; import { I18nService } from "../../../platform/abstractions/i18n.service"; -import { KeyGenerationService } from "../../../platform/abstractions/key-generation.service"; import { Utils } from "../../../platform/misc/utils"; import { EncString } from "../../../platform/models/domain/enc-string"; import { SymmetricCryptoKey } from "../../../platform/models/domain/symmetric-crypto-key"; diff --git a/libs/common/src/tools/send/services/send.service.ts b/libs/common/src/tools/send/services/send.service.ts index 2556fa2e908..2a87329242a 100644 --- a/libs/common/src/tools/send/services/send.service.ts +++ b/libs/common/src/tools/send/services/send.service.ts @@ -7,8 +7,8 @@ import { Observable, concatMap, distinctUntilChanged, firstValueFrom, map } from import { PBKDF2KdfConfig, KeyService } from "@bitwarden/key-management"; import { EncryptService } from "../../../key-management/crypto/abstractions/encrypt.service"; +import { KeyGenerationService } from "../../../key-management/crypto/abstractions/key-generation.service"; import { I18nService } from "../../../platform/abstractions/i18n.service"; -import { KeyGenerationService } from "../../../platform/abstractions/key-generation.service"; import { Utils } from "../../../platform/misc/utils"; import { EncArrayBuffer } from "../../../platform/models/domain/enc-array-buffer"; import { EncString } from "../../../platform/models/domain/enc-string"; diff --git a/libs/key-management/src/key.service.ts b/libs/key-management/src/key.service.ts index eae52a2ba87..c34e781adc0 100644 --- a/libs/key-management/src/key.service.ts +++ b/libs/key-management/src/key.service.ts @@ -21,10 +21,10 @@ import { ProfileProviderResponse } from "@bitwarden/common/admin-console/models/ import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { CryptoFunctionService } from "@bitwarden/common/key-management/crypto/abstractions/crypto-function.service"; import { EncryptService } from "@bitwarden/common/key-management/crypto/abstractions/encrypt.service"; +import { KeyGenerationService } from "@bitwarden/common/key-management/crypto/abstractions/key-generation.service"; import { InternalMasterPasswordServiceAbstraction } from "@bitwarden/common/key-management/master-password/abstractions/master-password.service.abstraction"; import { VaultTimeoutStringType } from "@bitwarden/common/key-management/vault-timeout"; import { VAULT_TIMEOUT } from "@bitwarden/common/key-management/vault-timeout/services/vault-timeout-settings.state"; -import { KeyGenerationService } from "@bitwarden/common/platform/abstractions/key-generation.service"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { StateService } from "@bitwarden/common/platform/abstractions/state.service";