1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-15 15:53:27 +00:00

[EC-598] feat: start creating separate authenticator service

This commit is contained in:
Andreas Coroiu
2023-03-20 11:09:48 +01:00
parent 1a034ea26e
commit e70d6cdcd4
3 changed files with 61 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
export abstract class Fido2AuthenticatorService {
makeCredential: (params: Fido2AuthenticatorMakeCredentialsParams) => void;
}
/**
* Parameters for {@link Fido2AuthenticatorService.makeCredential}
*
* @note
* This interface uses the parameter names defined in `fido-v2.0-ps-20190130`
* but the parameter values use the corresponding data structures defined in
* `WD-webauthn-3-20210427`. This is to avoid the unnecessary complexity of
* converting data to CBOR and back.
*/
export interface Fido2AuthenticatorMakeCredentialsParams {
clientDataHash: BufferSource;
rp: {
name: string;
id?: string;
};
user: {
name: string;
displayName: string;
id: BufferSource;
};
pubKeyCredParams: {
alg: number;
// type: "public-key"; // not used
}[];
excludeList?: {
id: BufferSource;
transports?: ("ble" | "internal" | "nfc" | "usb")[];
// type: "public-key"; // not used
}[];
extensions?: {
appid?: string;
appidExclude?: string;
credProps?: boolean;
uvm?: boolean;
};
options?: {
rk?: boolean;
uv?: boolean;
};
}

View File

@@ -0,0 +1,5 @@
describe("FidoAuthenticatorService", () => {
describe("authenticatorMakeCredential", () => {
test.skip("To be implemented");
});
});

View File

@@ -0,0 +1,12 @@
import {
Fido2AuthenticatorMakeCredentialsParams,
Fido2AuthenticatorService as Fido2AuthenticatorServiceAbstraction,
} from "../abstractions/fido2-authenticator.service.abstraction";
/**
* Bitwarden implementation of the Authenticator API described by the FIDO Alliance
* https://fidoalliance.org/specs/fido-v2.0-ps-20190130/fido-client-to-authenticator-protocol-v2.0-ps-20190130.html
*/
export class Fido2AuthenticatorService implements Fido2AuthenticatorServiceAbstraction {
makeCredential: (params: Fido2AuthenticatorMakeCredentialsParams) => void;
}