mirror of
https://github.com/bitwarden/browser
synced 2025-12-20 02:03:39 +00:00
[EC-598] feat: make everything compile again
This commit is contained in:
@@ -82,9 +82,11 @@ import { CipherService } from "@bitwarden/common/vault/services/cipher.service";
|
||||
import { FolderApiService } from "@bitwarden/common/vault/services/folder/folder-api.service";
|
||||
import { SyncNotifierService } from "@bitwarden/common/vault/services/sync/sync-notifier.service";
|
||||
import { SyncService } from "@bitwarden/common/vault/services/sync/sync.service";
|
||||
import { Fido2AuthenticatorService as Fido2AuthenticatorServiceAbstraction } from "@bitwarden/common/webauthn/abstractions/fido2-authenticator.service.abstraction";
|
||||
import { Fido2ClientService as Fido2ClientServiceAbstraction } from "@bitwarden/common/webauthn/abstractions/fido2-client.service.abstraction";
|
||||
import { Fido2UserInterfaceService as Fido2UserInterfaceServiceAbstraction } from "@bitwarden/common/webauthn/abstractions/fido2-user-interface.service.abstraction";
|
||||
import { Fido2Service as Fido2ServiceAbstraction } from "@bitwarden/common/webauthn/abstractions/fido2.service.abstraction";
|
||||
import { Fido2Service } from "@bitwarden/common/webauthn/services/fido2.service";
|
||||
import { Fido2AuthenticatorService } from "@bitwarden/common/webauthn/services/fido2-authenticator.service";
|
||||
import { Fido2ClientService } from "@bitwarden/common/webauthn/services/fido2-client.service";
|
||||
|
||||
import ContextMenusBackground from "../autofill/background/context-menus.background";
|
||||
import NotificationBackground from "../autofill/background/notification.background";
|
||||
@@ -178,7 +180,8 @@ export default class MainBackground {
|
||||
userVerificationApiService: UserVerificationApiServiceAbstraction;
|
||||
syncNotifierService: SyncNotifierServiceAbstraction;
|
||||
fido2UserInterfaceService: Fido2UserInterfaceServiceAbstraction;
|
||||
fido2Service: Fido2ServiceAbstraction;
|
||||
fido2AuthenticatorService: Fido2AuthenticatorServiceAbstraction;
|
||||
fido2ClientService: Fido2ClientServiceAbstraction;
|
||||
avatarUpdateService: AvatarUpdateServiceAbstraction;
|
||||
mainContextMenuHandler: MainContextMenuHandler;
|
||||
cipherContextMenuHandler: CipherContextMenuHandler;
|
||||
@@ -481,7 +484,11 @@ export default class MainBackground {
|
||||
);
|
||||
|
||||
this.fido2UserInterfaceService = new BrowserFido2UserInterfaceService(this.popupUtilsService);
|
||||
this.fido2Service = new Fido2Service(this.fido2UserInterfaceService, this.cipherService);
|
||||
this.fido2AuthenticatorService = new Fido2AuthenticatorService(
|
||||
this.cipherService,
|
||||
this.fido2UserInterfaceService
|
||||
);
|
||||
this.fido2ClientService = new Fido2ClientService(this.fido2AuthenticatorService);
|
||||
|
||||
const systemUtilsServiceReloadCallback = () => {
|
||||
const forceWindowReload =
|
||||
|
||||
@@ -223,11 +223,11 @@ export default class RuntimeBackground {
|
||||
this.abortControllers.get(msg.abortedRequestId)?.abort();
|
||||
break;
|
||||
case "fido2RegisterCredentialRequest":
|
||||
return await this.main.fido2Service
|
||||
return await this.main.fido2ClientService
|
||||
.createCredential(msg.data, this.createAbortController(msg.requestId))
|
||||
.finally(() => this.abortControllers.delete(msg.requestId));
|
||||
case "fido2GetCredentialRequest":
|
||||
return await this.main.fido2Service
|
||||
return await this.main.fido2ClientService
|
||||
.assertCredential(msg.data, this.createAbortController(msg.requestId))
|
||||
.finally(() => this.abortControllers.delete(msg.requestId));
|
||||
}
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import { Fido2Utils } from "@bitwarden/common/webauthn/abstractions/fido2-utils";
|
||||
import {
|
||||
CredentialAssertParams,
|
||||
CredentialAssertResult,
|
||||
CredentialRegistrationParams,
|
||||
CredentialRegistrationResult,
|
||||
} from "@bitwarden/common/webauthn/abstractions/fido2.service.abstraction";
|
||||
CreateCredentialParams,
|
||||
CreateCredentialResult,
|
||||
AssertCredentialParams,
|
||||
AssertCredentialResult,
|
||||
} from "@bitwarden/common/webauthn/abstractions/fido2-client.service.abstraction";
|
||||
import { Fido2Utils } from "@bitwarden/common/webauthn/abstractions/fido2-utils";
|
||||
|
||||
class BitAuthenticatorAttestationResponse implements AuthenticatorAttestationResponse {
|
||||
clientDataJSON: ArrayBuffer;
|
||||
attestationObject: ArrayBuffer;
|
||||
|
||||
constructor(private result: CredentialRegistrationResult) {
|
||||
constructor(private result: CreateCredentialResult) {
|
||||
this.clientDataJSON = Fido2Utils.stringToBuffer(result.clientDataJSON);
|
||||
this.attestationObject = Fido2Utils.stringToBuffer(result.attestationObject);
|
||||
}
|
||||
@@ -35,8 +35,9 @@ class BitAuthenticatorAttestationResponse implements AuthenticatorAttestationRes
|
||||
export class WebauthnUtils {
|
||||
static mapCredentialCreationOptions(
|
||||
options: CredentialCreationOptions,
|
||||
origin: string
|
||||
): CredentialRegistrationParams {
|
||||
origin: string,
|
||||
sameOriginWithAncestors: boolean
|
||||
): CreateCredentialParams {
|
||||
const keyOptions = options.publicKey;
|
||||
|
||||
if (keyOptions == undefined) {
|
||||
@@ -55,15 +56,12 @@ export class WebauthnUtils {
|
||||
excludeCredentials: keyOptions.excludeCredentials?.map((credential) => ({
|
||||
id: Fido2Utils.bufferToString(credential.id),
|
||||
transports: credential.transports,
|
||||
type: credential.type,
|
||||
})),
|
||||
extensions: {
|
||||
appid: keyOptions.extensions?.appid,
|
||||
appidExclude: keyOptions.extensions?.appidExclude,
|
||||
credProps: keyOptions.extensions?.credProps,
|
||||
uvm: keyOptions.extensions?.uvm,
|
||||
},
|
||||
extensions: undefined, // extensions not currently supported
|
||||
pubKeyCredParams: keyOptions.pubKeyCredParams.map((params) => ({
|
||||
alg: params.alg,
|
||||
type: params.type,
|
||||
})),
|
||||
rp: {
|
||||
id: keyOptions.rp.id,
|
||||
@@ -74,12 +72,11 @@ export class WebauthnUtils {
|
||||
displayName: keyOptions.user.displayName,
|
||||
},
|
||||
timeout: keyOptions.timeout,
|
||||
sameOriginWithAncestors,
|
||||
};
|
||||
}
|
||||
|
||||
static mapCredentialRegistrationResult(
|
||||
result: CredentialRegistrationResult
|
||||
): PublicKeyCredential {
|
||||
static mapCredentialRegistrationResult(result: CreateCredentialResult): PublicKeyCredential {
|
||||
return {
|
||||
id: result.credentialId,
|
||||
rawId: Fido2Utils.stringToBuffer(result.credentialId),
|
||||
@@ -92,8 +89,9 @@ export class WebauthnUtils {
|
||||
|
||||
static mapCredentialRequestOptions(
|
||||
options: CredentialRequestOptions,
|
||||
origin: string
|
||||
): CredentialAssertParams {
|
||||
origin: string,
|
||||
sameOriginWithAncestors: boolean
|
||||
): AssertCredentialParams {
|
||||
const keyOptions = options.publicKey;
|
||||
|
||||
if (keyOptions == undefined) {
|
||||
@@ -108,10 +106,11 @@ export class WebauthnUtils {
|
||||
rpId: keyOptions.rpId,
|
||||
userVerification: keyOptions.userVerification,
|
||||
timeout: keyOptions.timeout,
|
||||
sameOriginWithAncestors,
|
||||
};
|
||||
}
|
||||
|
||||
static mapCredentialAssertResult(result: CredentialAssertResult): PublicKeyCredential {
|
||||
static mapCredentialAssertResult(result: AssertCredentialResult): PublicKeyCredential {
|
||||
return {
|
||||
id: result.credentialId,
|
||||
rawId: Fido2Utils.stringToBuffer(result.credentialId),
|
||||
|
||||
@@ -5,13 +5,24 @@ import {
|
||||
Fido2UserInterfaceService as Fido2UserInterfaceServiceAbstraction,
|
||||
NewCredentialParams,
|
||||
} from "@bitwarden/common/webauthn/abstractions/fido2-user-interface.service.abstraction";
|
||||
import { RequestAbortedError } from "@bitwarden/common/webauthn/abstractions/fido2.service.abstraction";
|
||||
|
||||
import { BrowserApi } from "../../browser/browserApi";
|
||||
import { PopupUtilsService } from "../../popup/services/popup-utils.service";
|
||||
|
||||
const BrowserFido2MessageName = "BrowserFido2UserInterfaceServiceMessage";
|
||||
|
||||
export class Fido2Error extends Error {
|
||||
constructor(message: string, readonly fallbackRequested = false) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
|
||||
export class RequestAbortedError extends Fido2Error {
|
||||
constructor(fallbackRequested = false) {
|
||||
super("Fido2 request was aborted", fallbackRequested);
|
||||
}
|
||||
}
|
||||
|
||||
export type BrowserFido2Message = { requestId: string } & (
|
||||
| {
|
||||
type: "PickCredentialRequest";
|
||||
@@ -198,6 +209,21 @@ export class BrowserFido2UserInterfaceService implements Fido2UserInterfaceServi
|
||||
return false;
|
||||
}
|
||||
|
||||
async confirmNewNonDiscoverableCredential(
|
||||
params: NewCredentialParams,
|
||||
abortController?: AbortController
|
||||
): Promise<string> {
|
||||
return null;
|
||||
}
|
||||
|
||||
async informExcludedCredential(
|
||||
existingCipherIds: string[],
|
||||
newCredential: NewCredentialParams,
|
||||
abortController?: AbortController
|
||||
): Promise<void> {
|
||||
// Not Implemented
|
||||
}
|
||||
|
||||
private setAbortTimeout(abortController: AbortController) {
|
||||
return setTimeout(() => abortController.abort());
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import {
|
||||
CredentialAssertParams,
|
||||
CredentialAssertResult,
|
||||
CredentialRegistrationParams,
|
||||
CredentialRegistrationResult,
|
||||
} from "@bitwarden/common/webauthn/abstractions/fido2.service.abstraction";
|
||||
CreateCredentialParams,
|
||||
CreateCredentialResult,
|
||||
AssertCredentialParams,
|
||||
AssertCredentialResult,
|
||||
} from "@bitwarden/common/webauthn/abstractions/fido2-client.service.abstraction";
|
||||
|
||||
export enum MessageType {
|
||||
CredentialCreationRequest,
|
||||
@@ -17,22 +17,22 @@ export enum MessageType {
|
||||
|
||||
export type CredentialCreationRequest = {
|
||||
type: MessageType.CredentialCreationRequest;
|
||||
data: CredentialRegistrationParams;
|
||||
data: CreateCredentialParams;
|
||||
};
|
||||
|
||||
export type CredentialCreationResponse = {
|
||||
type: MessageType.CredentialCreationResponse;
|
||||
result?: CredentialRegistrationResult;
|
||||
result?: CreateCredentialResult;
|
||||
};
|
||||
|
||||
export type CredentialGetRequest = {
|
||||
type: MessageType.CredentialGetRequest;
|
||||
data: CredentialAssertParams;
|
||||
data: AssertCredentialParams;
|
||||
};
|
||||
|
||||
export type CredentialGetResponse = {
|
||||
type: MessageType.CredentialGetResponse;
|
||||
result?: CredentialAssertResult;
|
||||
result?: AssertCredentialResult;
|
||||
};
|
||||
|
||||
export type AbortRequest = {
|
||||
|
||||
@@ -22,7 +22,8 @@ navigator.credentials.create = async (
|
||||
const response = await messenger.request(
|
||||
{
|
||||
type: MessageType.CredentialCreationRequest,
|
||||
data: WebauthnUtils.mapCredentialCreationOptions(options, window.location.origin),
|
||||
// TODO: Fix sameOriginWithAncestors!
|
||||
data: WebauthnUtils.mapCredentialCreationOptions(options, window.location.origin, true),
|
||||
},
|
||||
abortController
|
||||
);
|
||||
@@ -49,7 +50,8 @@ navigator.credentials.get = async (
|
||||
const response = await messenger.request(
|
||||
{
|
||||
type: MessageType.CredentialGetRequest,
|
||||
data: WebauthnUtils.mapCredentialRequestOptions(options, window.location.origin),
|
||||
// TODO: Fix sameOriginWithAncestors!
|
||||
data: WebauthnUtils.mapCredentialRequestOptions(options, window.location.origin, true),
|
||||
},
|
||||
abortController
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user