summaryrefslogtreecommitdiffhomepage
path: root/packages/server/src
diff options
context:
space:
mode:
authorMatthew Miller <matthew@millerti.me>2021-08-02 11:23:20 -0700
committerMatthew Miller <matthew@millerti.me>2021-08-02 11:23:20 -0700
commite317f261e61417e21b7c06da182befaf096b3d89 (patch)
tree72cf10d1ac8f8ce063321b5c3a0ad0eb60dd6865 /packages/server/src
parent06097255f04fd043865d721a6eeb43e6b350a012 (diff)
Refactor attestation format type
Diffstat (limited to 'packages/server/src')
-rw-r--r--packages/server/src/attestation/verifyAttestationResponse.ts18
-rw-r--r--packages/server/src/helpers/decodeAttestationObject.ts19
2 files changed, 18 insertions, 19 deletions
diff --git a/packages/server/src/attestation/verifyAttestationResponse.ts b/packages/server/src/attestation/verifyAttestationResponse.ts
index 0dc200f..5e6a203 100644
--- a/packages/server/src/attestation/verifyAttestationResponse.ts
+++ b/packages/server/src/attestation/verifyAttestationResponse.ts
@@ -4,7 +4,7 @@ import {
COSEAlgorithmIdentifier,
} from '@simplewebauthn/typescript-types';
-import decodeAttestationObject, { ATTESTATION_FORMAT } from '../helpers/decodeAttestationObject';
+import decodeAttestationObject, { AttestationFormat } from '../helpers/decodeAttestationObject';
import decodeClientDataJSON from '../helpers/decodeClientDataJSON';
import parseAuthenticatorData from '../helpers/parseAuthenticatorData';
import toHash from '../helpers/toHash';
@@ -179,7 +179,7 @@ export default async function verifyAttestationResponse(
* Verification can only be performed when attestation = 'direct'
*/
let verified = false;
- if (fmt === ATTESTATION_FORMAT.FIDO_U2F) {
+ if (fmt === 'fido-u2f') {
verified = verifyFIDOU2F({
attStmt,
clientDataHash,
@@ -188,7 +188,7 @@ export default async function verifyAttestationResponse(
rpIdHash,
aaguid,
});
- } else if (fmt === ATTESTATION_FORMAT.PACKED) {
+ } else if (fmt === 'packed') {
verified = await verifyPacked({
attStmt,
authData,
@@ -196,14 +196,14 @@ export default async function verifyAttestationResponse(
credentialPublicKey,
aaguid,
});
- } else if (fmt === ATTESTATION_FORMAT.ANDROID_SAFETYNET) {
+ } else if (fmt === 'android-safetynet') {
verified = await verifyAndroidSafetynet({
attStmt,
authData,
clientDataHash,
aaguid,
});
- } else if (fmt === ATTESTATION_FORMAT.ANDROID_KEY) {
+ } else if (fmt === 'android-key') {
verified = await verifyAndroidKey({
attStmt,
authData,
@@ -211,7 +211,7 @@ export default async function verifyAttestationResponse(
credentialPublicKey,
aaguid,
});
- } else if (fmt === ATTESTATION_FORMAT.TPM) {
+ } else if (fmt === 'tpm') {
verified = await verifyTPM({
aaguid,
attStmt,
@@ -219,14 +219,14 @@ export default async function verifyAttestationResponse(
credentialPublicKey,
clientDataHash,
});
- } else if (fmt === ATTESTATION_FORMAT.APPLE) {
+ } else if (fmt === 'apple') {
verified = await verifyApple({
attStmt,
authData,
clientDataHash,
credentialPublicKey,
});
- } else if (fmt === ATTESTATION_FORMAT.NONE) {
+ } else if (fmt === 'none') {
if (Object.keys(attStmt).length > 0) {
throw new Error('None attestation had unexpected attestation statement');
}
@@ -275,7 +275,7 @@ export default async function verifyAttestationResponse(
export type VerifiedAttestation = {
verified: boolean;
attestationInfo?: {
- fmt: ATTESTATION_FORMAT;
+ fmt: AttestationFormat;
counter: number;
aaguid: string;
credentialPublicKey: Buffer;
diff --git a/packages/server/src/helpers/decodeAttestationObject.ts b/packages/server/src/helpers/decodeAttestationObject.ts
index 8b69c90..3aa39d7 100644
--- a/packages/server/src/helpers/decodeAttestationObject.ts
+++ b/packages/server/src/helpers/decodeAttestationObject.ts
@@ -10,18 +10,17 @@ export default function decodeAttestationObject(attestationObject: Buffer): Atte
return toCBOR;
}
-export enum ATTESTATION_FORMAT {
- FIDO_U2F = 'fido-u2f',
- PACKED = 'packed',
- ANDROID_SAFETYNET = 'android-safetynet',
- ANDROID_KEY = 'android-key',
- TPM = 'tpm',
- APPLE = 'apple',
- NONE = 'none',
-}
+export type AttestationFormat =
+ | 'fido-u2f'
+ | 'packed'
+ | 'android-safetynet'
+ | 'android-key'
+ | 'tpm'
+ | 'apple'
+ | 'none';
export type AttestationObject = {
- fmt: ATTESTATION_FORMAT;
+ fmt: AttestationFormat;
attStmt: AttestationStatement;
authData: Buffer;
};