summaryrefslogtreecommitdiffhomepage
path: root/packages/server/src/helpers
diff options
context:
space:
mode:
Diffstat (limited to 'packages/server/src/helpers')
-rw-r--r--packages/server/src/helpers/convertCOSEtoPKCS.test.ts3
-rw-r--r--packages/server/src/helpers/convertCOSEtoPKCS.ts13
-rw-r--r--packages/server/src/helpers/decodeAttestationObject.ts22
-rw-r--r--packages/server/src/helpers/decodeClientDataJSON.ts8
-rw-r--r--packages/server/src/helpers/getCertificateInfo.ts7
-rw-r--r--packages/server/src/helpers/parseAuthenticatorData.ts19
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;
+};