summaryrefslogtreecommitdiffhomepage
path: root/packages/server/src
diff options
context:
space:
mode:
authorMatthew Miller <matthew@millerti.me>2021-08-20 08:30:39 -0700
committerMatthew Miller <matthew@millerti.me>2021-08-20 08:30:39 -0700
commite113d5260ed8ee1a06b614e0a1ca700f3283d540 (patch)
tree2838d4e15445439b2c07d658069a1092cac473fe /packages/server/src
parent35ca2c17573bfc8174ca384bfc7a772dafba4e18 (diff)
Redefine MDS data structures
Diffstat (limited to 'packages/server/src')
-rw-r--r--packages/server/src/helpers/constants.ts16
-rw-r--r--packages/server/src/metadata/mdsTypes.ts70
2 files changed, 51 insertions, 35 deletions
diff --git a/packages/server/src/helpers/constants.ts b/packages/server/src/helpers/constants.ts
index 185f058..fbcb1bf 100644
--- a/packages/server/src/helpers/constants.ts
+++ b/packages/server/src/helpers/constants.ts
@@ -52,19 +52,3 @@ export enum FIDO_METADATA_ATTESTATION_TYPES {
ATTESTATION_ECDAA = 15881,
ATTESTATION_ATTCA = 15882,
}
-
-export type FIDO_AUTHENTICATOR_STATUS =
- | 'NOT_FIDO_CERTIFIED'
- | 'FIDO_CERTIFIED'
- | 'USER_VERIFICATION_BYPASS'
- | 'ATTESTATION_KEY_COMPROMISE'
- | 'USER_KEY_REMOTE_COMPROMISE'
- | 'USER_KEY_PHYSICAL_COMPROMISE'
- | 'UPDATE_AVAILABLE'
- | 'REVOKED'
- | 'SELF_ASSERTION_SUBMITTED'
- | 'FIDO_CERTIFIED_L1'
- | 'FIDO_CERTIFIED_L2'
- | 'FIDO_CERTIFIED_L3'
- | 'FIDO_CERTIFIED_L4'
- | 'FIDO_CERTIFIED_L5';
diff --git a/packages/server/src/metadata/mdsTypes.ts b/packages/server/src/metadata/mdsTypes.ts
index fcf8c38..6a65ebd 100644
--- a/packages/server/src/metadata/mdsTypes.ts
+++ b/packages/server/src/metadata/mdsTypes.ts
@@ -1,9 +1,8 @@
import { Base64URLString } from '@simplewebauthn/typescript-types';
-import { FIDO_AUTHENTICATOR_STATUS } from '../helpers/constants';
-
/**
- * Parsed JWT structures
+ * Metadata Service structures
+ * https://fidoalliance.org/specs/mds/fido-metadata-service-v3.0-ps-20210518.html
*/
export type MDSJWTHeader = {
alg: string;
@@ -15,27 +14,60 @@ export type MDSJWTPayload = {
legalHeader: string;
no: number;
nextUpdate: string; // YYYY-MM-DD
- entries: MDSEntry[];
+ entries: MetadataBLOBPayloadEntry[];
};
-export type MDSEntry = {
+export type MetadataBLOBPayloadEntry = {
+ aaid?: string;
+ aaguid?: string;
attestationCertificateKeyIdentifiers?: string[];
- metadataStatement: MetadataStatement;
- statusReports: {
- status: FIDO_AUTHENTICATOR_STATUS;
- certificateNumber: string;
- certificate: string;
- certificationDescriptor: string;
- url: string;
- certificationRequirementsVersion: string;
- certificationPolicyVersion: string;
- // YYYY-MM-DD
- effectiveDate: string;
- }[];
- // YYYY-MM-DD
- timeOfLastStatusChange: string;
+ metadataStatement?: MetadataStatement;
+ biometricStatusReports?: BiometricStatusReport[];
+ statusReports: StatusReport[];
+ timeOfLastStatusChange: string; // YYYY-MM-DD
+ rogueListURL?: string;
+ rogueListHash?: string;
+};
+
+export type BiometricStatusReport = {
+ certLevel: number;
+ modality: UserVerify;
+ effectiveDate?: string;
+ certificationDescriptor?: string;
+ certificateNumber?: string;
+ certificationPolicyVersion?: string;
+ certificationRequirementsVersion?: string;
+};
+
+export type StatusReport = {
+ status: AuthenticatorStatus;
+ effectiveDate?: string; // YYYY-MM-DD
+ authenticatorVersion?: number;
+ certificate?: string;
+ url?: string;
+ certificationDescriptor?: string;
+ certificateNumber?: string;
+ certificationPolicyVersion?: string;
+ certificationRequirementsVersion?: string;
};
+export type AuthenticatorStatus =
+ | 'NOT_FIDO_CERTIFIED'
+ | 'FIDO_CERTIFIED'
+ | 'USER_VERIFICATION_BYPASS'
+ | 'ATTESTATION_KEY_COMPROMISE'
+ | 'USER_KEY_REMOTE_COMPROMISE'
+ | 'USER_KEY_PHYSICAL_COMPROMISE'
+ | 'UPDATE_AVAILABLE'
+ | 'REVOKED'
+ | 'SELF_ASSERTION_SUBMITTED'
+ | 'FIDO_CERTIFIED_L1'
+ | 'FIDO_CERTIFIED_L1plus'
+ | 'FIDO_CERTIFIED_L2'
+ | 'FIDO_CERTIFIED_L2plus'
+ | 'FIDO_CERTIFIED_L3'
+ | 'FIDO_CERTIFIED_L3plus';
+
/**
* Types defined in the FIDO Metadata Statement spec
*