diff options
Diffstat (limited to 'packages/server/src/helpers')
6 files changed, 61 insertions, 11 deletions
diff --git a/packages/server/src/helpers/convertCOSEtoPKCS.test.ts b/packages/server/src/helpers/convertCOSEtoPKCS.test.ts index d17d4bd..e914cc7 100644 --- a/packages/server/src/helpers/convertCOSEtoPKCS.test.ts +++ b/packages/server/src/helpers/convertCOSEtoPKCS.test.ts @@ -1,7 +1,6 @@ import cbor from 'cbor'; -import { COSEKEYS } from '@simplewebauthn/typescript-types'; -import convertCOSEtoPKCS from './convertCOSEtoPKCS'; +import convertCOSEtoPKCS, { COSEKEYS } from './convertCOSEtoPKCS'; test('should throw an error curve if, somehow, curve coordinate x is missing', () => { const mockCOSEKey = new Map<number, number | Buffer>(); diff --git a/packages/server/src/helpers/convertCOSEtoPKCS.ts b/packages/server/src/helpers/convertCOSEtoPKCS.ts index 5b03b1a..3039415 100644 --- a/packages/server/src/helpers/convertCOSEtoPKCS.ts +++ b/packages/server/src/helpers/convertCOSEtoPKCS.ts @@ -1,5 +1,4 @@ import cbor from 'cbor'; -import { COSEKEYS, COSEPublicKey } from '@simplewebauthn/typescript-types'; /** * Takes COSE-encoded public key and converts it to PKCS key @@ -40,3 +39,15 @@ export default function convertCOSEtoPKCS(cosePublicKey: Buffer): Buffer { return Buffer.concat([tag, x as Buffer, y as Buffer]); } + +export type COSEPublicKey = Map<COSEAlgorithmIdentifier, number | Buffer>; + +export enum COSEKEYS { + kty = 1, + alg = 3, + crv = -1, + x = -2, + y = -3, + n = -1, + e = -2, +} diff --git a/packages/server/src/helpers/decodeAttestationObject.ts b/packages/server/src/helpers/decodeAttestationObject.ts index 3e66e67..2eb9997 100644 --- a/packages/server/src/helpers/decodeAttestationObject.ts +++ b/packages/server/src/helpers/decodeAttestationObject.ts @@ -1,11 +1,10 @@ import base64url from 'base64url'; import cbor from 'cbor'; -import { AttestationObject } from '@simplewebauthn/typescript-types'; /** - * Convert an AttestationObject from base64 string to a proper object + * Convert an AttestationObject from base64url string to a proper object * - * @param base64AttestationObject Base64-encoded Attestation Object + * @param base64AttestationObject Base64URL-encoded Attestation Object */ export default function decodeAttestationObject( base64AttestationObject: string, @@ -14,3 +13,20 @@ export default function decodeAttestationObject( const toCBOR: AttestationObject = cbor.decodeAllSync(toBuffer)[0]; return toCBOR; } + +export enum ATTESTATION_FORMATS { + FIDO_U2F = 'fido-u2f', + PACKED = 'packed', + ANDROID_SAFETYNET = 'android-safetynet', + NONE = 'none', +} + +export type AttestationObject = { + fmt: ATTESTATION_FORMATS; + attStmt: { + sig?: Buffer; + x5c?: Buffer[]; + response?: Buffer; + }; + authData: Buffer; +}; diff --git a/packages/server/src/helpers/decodeClientDataJSON.ts b/packages/server/src/helpers/decodeClientDataJSON.ts index fb909cf..c0ebb2b 100644 --- a/packages/server/src/helpers/decodeClientDataJSON.ts +++ b/packages/server/src/helpers/decodeClientDataJSON.ts @@ -1,5 +1,3 @@ -import { ClientDataJSON } from '@simplewebauthn/typescript-types'; - import asciiToBinary from './asciiToBinary'; /** @@ -15,3 +13,9 @@ export default function decodeClientDataJSON(data: string): ClientDataJSON { return clientData; } + +type ClientDataJSON = { + type: string; + challenge: string; + origin: string; +}; diff --git a/packages/server/src/helpers/getCertificateInfo.ts b/packages/server/src/helpers/getCertificateInfo.ts index b6d8e26..3741fac 100644 --- a/packages/server/src/helpers/getCertificateInfo.ts +++ b/packages/server/src/helpers/getCertificateInfo.ts @@ -1,5 +1,10 @@ import jsrsasign from 'jsrsasign'; -import { CertificateInfo } from '@simplewebauthn/typescript-types'; + +export type CertificateInfo = { + subject: { [key: string]: string }; + version: number; + basicConstraintsCA: boolean; +}; type ExtInfo = { critical: boolean; diff --git a/packages/server/src/helpers/parseAuthenticatorData.ts b/packages/server/src/helpers/parseAuthenticatorData.ts index 62c1cb1..3177dd5 100644 --- a/packages/server/src/helpers/parseAuthenticatorData.ts +++ b/packages/server/src/helpers/parseAuthenticatorData.ts @@ -1,5 +1,3 @@ -import { ParsedAuthenticatorData } from '@simplewebauthn/typescript-types'; - /** * Make sense of the authData buffer contained in an Attestation */ @@ -57,3 +55,20 @@ export default function parseAuthenticatorData(authData: Buffer): ParsedAuthenti COSEPublicKey, }; } + +type ParsedAuthenticatorData = { + rpIdHash: Buffer; + flagsBuf: Buffer; + flags: { + up: boolean; + uv: boolean; + at: boolean; + ed: boolean; + flagsInt: number; + }; + counter: number; + counterBuf: Buffer; + aaguid?: Buffer; + credentialID?: Buffer; + COSEPublicKey?: Buffer; +}; |