1
0
mirror of https://github.com/bitwarden/browser synced 2026-02-10 13:40:06 +00:00

OpaqueService -> OpaqueKeyExchangeService

This commit is contained in:
Thomas Rittson
2025-03-18 13:29:28 +10:00
parent cb58927b1f
commit d122bba3a9
5 changed files with 29 additions and 25 deletions

View File

@@ -11,7 +11,7 @@ import { AccountService } from "@bitwarden/common/auth/abstractions/account.serv
import { MasterPasswordApiService } from "@bitwarden/common/auth/abstractions/master-password-api.service.abstraction";
import { UserVerificationService } from "@bitwarden/common/auth/abstractions/user-verification/user-verification.service.abstraction";
import { PasswordRequest } from "@bitwarden/common/auth/models/request/password.request";
import { OpaqueService } from "@bitwarden/common/auth/opaque/opaque.service";
import { OpaqueKeyExchangeService } from "@bitwarden/common/auth/opaque/opaque-key-exchange.service";
import { getUserId } from "@bitwarden/common/auth/services/account.service";
import { InternalMasterPasswordServiceAbstraction } from "@bitwarden/common/key-management/master-password/abstractions/master-password.service.abstraction";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
@@ -60,7 +60,7 @@ export class ChangePasswordComponent
masterPasswordService: InternalMasterPasswordServiceAbstraction,
accountService: AccountService,
toastService: ToastService,
private opaqueService: OpaqueService,
private opaqueKeyExchangeService: OpaqueKeyExchangeService,
) {
super(
i18nService,
@@ -222,17 +222,21 @@ export class ChangePasswordComponent
return this.updateKey();
});
} else {
const sessionId = await this.opaqueService.register(this.masterPassword, newUserKey[0], {
memory: 256 * 1024,
iterations: 3,
parallelism: 4,
});
const sessionId = await this.opaqueKeyExchangeService.register(
this.masterPassword,
newUserKey[0],
{
memory: 256 * 1024,
iterations: 3,
parallelism: 4,
},
);
request.opaqueSessionId = sessionId;
this.formPromise = this.masterPasswordApiService.postPassword(request);
}
// TODO: remove this test code
await this.opaqueService.register(this.masterPassword, newUserKey[0], {
await this.opaqueKeyExchangeService.register(this.masterPassword, newUserKey[0], {
algorithm: "argon2id",
parameters: { memory: 256 * 1024, iterations: 3, parallelism: 4 },
});

View File

@@ -99,9 +99,9 @@ import { UserVerificationService as UserVerificationServiceAbstraction } from "@
import { WebAuthnLoginApiServiceAbstraction } from "@bitwarden/common/auth/abstractions/webauthn/webauthn-login-api.service.abstraction";
import { WebAuthnLoginPrfKeyServiceAbstraction } from "@bitwarden/common/auth/abstractions/webauthn/webauthn-login-prf-key.service.abstraction";
import { WebAuthnLoginServiceAbstraction } from "@bitwarden/common/auth/abstractions/webauthn/webauthn-login.service.abstraction";
import { DefaultOpaqueService } from "@bitwarden/common/auth/opaque/default-opaque.service";
import { OpaqueApiService } from "@bitwarden/common/auth/opaque/opaque-api.service";
import { OpaqueService } from "@bitwarden/common/auth/opaque/opaque.service";
import { DefaultOpaqueKeyExchangeService } from "@bitwarden/common/auth/opaque/default-opaque-key-exchange.service";
import { OpaqueKeyExchangeApiService } from "@bitwarden/common/auth/opaque/opaque-key-exchange-api.service";
import { OpaqueKeyExchangeService } from "@bitwarden/common/auth/opaque/opaque-key-exchange.service";
import { AccountApiServiceImplementation } from "@bitwarden/common/auth/services/account-api.service";
import { AccountServiceImplementation } from "@bitwarden/common/auth/services/account.service";
import { AnonymousHubService } from "@bitwarden/common/auth/services/anonymous-hub.service";
@@ -1500,13 +1500,13 @@ const safeProviders: SafeProvider[] = [
deps: [ApiServiceAbstraction, EnvironmentService],
}),
safeProvider({
provide: OpaqueApiService,
provide: OpaqueKeyExchangeApiService,
deps: [ApiServiceAbstraction, EnvironmentService],
}),
safeProvider({
provide: OpaqueService,
useClass: DefaultOpaqueService,
deps: [OpaqueApiService, SdkService],
provide: OpaqueKeyExchangeService,
useClass: DefaultOpaqueKeyExchangeService,
deps: [OpaqueKeyExchangeApiService, SdkService],
}),
safeProvider({
provide: MasterPasswordApiServiceAbstraction,

View File

@@ -13,12 +13,12 @@ import { LoginFinishRequest } from "./models/login-finish.request";
import { LoginStartRequest } from "./models/login-start.request";
import { RegistrationFinishRequest } from "./models/registration-finish.request";
import { RegistrationStartRequest } from "./models/registration-start.request";
import { OpaqueApiService } from "./opaque-api.service";
import { OpaqueService } from "./opaque.service";
import { OpaqueKeyExchangeApiService } from "./opaque-key-exchange-api.service";
import { OpaqueKeyExchangeService } from "./opaque-key-exchange.service";
export class DefaultOpaqueService implements OpaqueService {
export class DefaultOpaqueKeyExchangeService implements OpaqueKeyExchangeService {
constructor(
private opaqueApiService: OpaqueApiService,
private opaqueKeyExchangeApiService: OpaqueKeyExchangeApiService,
private sdkService: SdkService,
) {}
@@ -34,7 +34,7 @@ export class DefaultOpaqueService implements OpaqueService {
masterPassword,
config.toSdkConfig(),
);
const registrationStartResponse = await this.opaqueApiService.registrationStart(
const registrationStartResponse = await this.opaqueKeyExchangeApiService.registrationStart(
new RegistrationStartRequest(
Utils.fromBufferToB64(registrationStart.registration_request),
config,
@@ -58,7 +58,7 @@ export class DefaultOpaqueService implements OpaqueService {
new EncString(sdkKeyset.private_key),
);
await this.opaqueApiService.registrationFinish(
await this.opaqueKeyExchangeApiService.registrationFinish(
new RegistrationFinishRequest(
registrationStartResponse.sessionId,
Utils.fromBufferToB64(registrationFinish.registration_upload),
@@ -81,7 +81,7 @@ export class DefaultOpaqueService implements OpaqueService {
const cryptoClient = (await firstValueFrom(this.sdkService.client$)).crypto();
const loginStart = cryptoClient.opaque_login_start(masterPassword, config.toSdkConfig());
const loginStartResponse = await this.opaqueApiService.loginStart(
const loginStartResponse = await this.opaqueKeyExchangeApiService.loginStart(
new LoginStartRequest(email, Utils.fromBufferToB64(loginStart.credential_request)),
);
@@ -92,7 +92,7 @@ export class DefaultOpaqueService implements OpaqueService {
loginStart.state,
);
const success = await this.opaqueApiService.loginFinish(
const success = await this.opaqueKeyExchangeApiService.loginFinish(
new LoginFinishRequest(
loginStartResponse.sessionId,
Utils.fromBufferToB64(loginFinish.credential_finalization),

View File

@@ -11,7 +11,7 @@ import { RegistrationFinishResponse } from "./models/registration-finish.respons
import { RegistrationStartRequest } from "./models/registration-start.request";
import { RegistrationStartResponse } from "./models/registration-start.response";
export class OpaqueApiService {
export class OpaqueKeyExchangeApiService {
constructor(
private apiService: ApiService,
private environmentService: EnvironmentService,

View File

@@ -4,7 +4,7 @@ import { UserKey } from "../../types/key";
import { Argon2IdParameters } from "./models/cipher-configuration";
export abstract class OpaqueService {
export abstract class OpaqueKeyExchangeService {
/**
* Register a user to use the Opaque login method.
*/