@simplewebauthn/server 5.4.0 → 5.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/metadata/mdsTypes.d.ts +15 -10
- package/dist/metadata/mdsTypes.js +16 -0
- package/dist/metadata/mdsTypes.js.map +1 -1
- package/dist/metadata/verifyAttestationWithMetadata.d.ts +17 -1
- package/dist/metadata/verifyAttestationWithMetadata.js +60 -41
- package/dist/metadata/verifyAttestationWithMetadata.js.map +1 -1
- package/dist/registration/verifications/tpm/constants.d.ts +30 -0
- package/dist/registration/verifications/tpm/constants.js +36 -2
- package/dist/registration/verifications/tpm/constants.js.map +1 -1
- package/dist/registration/verifications/tpm/parsePubArea.d.ts +3 -0
- package/dist/registration/verifications/tpm/parsePubArea.js +21 -3
- package/dist/registration/verifications/tpm/parsePubArea.js.map +1 -1
- package/dist/registration/verifications/tpm/verifyAttestationTPM.js +3 -7
- package/dist/registration/verifications/tpm/verifyAttestationTPM.js.map +1 -1
- package/package.json +2 -2
|
@@ -143,42 +143,46 @@ export declare type MetadataStatement = {
|
|
|
143
143
|
*/
|
|
144
144
|
/**
|
|
145
145
|
* USER_VERIFY
|
|
146
|
-
* https://fidoalliance.org/specs/common-specs/fido-registry-v2.
|
|
146
|
+
* https://fidoalliance.org/specs/common-specs/fido-registry-v2.2-ps-20220523.html#user-verification-methods
|
|
147
147
|
*/
|
|
148
148
|
export declare type UserVerify = 'presence_internal' | 'fingerprint_internal' | 'passcode_internal' | 'voiceprint_internal' | 'faceprint_internal' | 'location_internal' | 'eyeprint_internal' | 'pattern_internal' | 'handprint_internal' | 'passcode_external' | 'pattern_external' | 'none' | 'all';
|
|
149
149
|
/**
|
|
150
150
|
* ALG_SIGN
|
|
151
|
-
* https://fidoalliance.org/specs/common-specs/fido-registry-v2.
|
|
151
|
+
* https://fidoalliance.org/specs/common-specs/fido-registry-v2.2-ps-20220523.html#authentication-algorithms
|
|
152
|
+
*
|
|
153
|
+
* Using this helpful TS pattern here so that we can strongly enforce the existence of COSE info
|
|
154
|
+
* mappings in `algSignToCOSEInfoMap` in verifyAttestationWithMetadata.ts
|
|
152
155
|
*/
|
|
153
|
-
export declare type AlgSign =
|
|
156
|
+
export declare type AlgSign = typeof AlgSign[number];
|
|
157
|
+
declare const AlgSign: readonly ["secp256r1_ecdsa_sha256_raw", "secp256r1_ecdsa_sha256_der", "rsassa_pss_sha256_raw", "rsassa_pss_sha256_der", "secp256k1_ecdsa_sha256_raw", "secp256k1_ecdsa_sha256_der", "rsassa_pss_sha384_raw", "rsassa_pkcsv15_sha256_raw", "rsassa_pkcsv15_sha384_raw", "rsassa_pkcsv15_sha512_raw", "rsassa_pkcsv15_sha1_raw", "secp384r1_ecdsa_sha384_raw", "secp512r1_ecdsa_sha256_raw", "ed25519_eddsa_sha512_raw"];
|
|
154
158
|
/**
|
|
155
159
|
* ALG_KEY
|
|
156
|
-
* https://fidoalliance.org/specs/common-specs/fido-registry-v2.
|
|
160
|
+
* https://fidoalliance.org/specs/common-specs/fido-registry-v2.2-ps-20220523.html#public-key-representation-formats
|
|
157
161
|
*/
|
|
158
162
|
export declare type AlgKey = 'ecc_x962_raw' | 'ecc_x962_der' | 'rsa_2048_raw' | 'rsa_2048_der' | 'cose';
|
|
159
163
|
/**
|
|
160
164
|
* ATTESTATION
|
|
161
|
-
* https://fidoalliance.org/specs/common-specs/fido-registry-v2.
|
|
165
|
+
* https://fidoalliance.org/specs/common-specs/fido-registry-v2.2-ps-20220523.html#authenticator-attestation-types
|
|
162
166
|
*/
|
|
163
|
-
export declare type Attestation = 'basic_full' | 'basic_surrogate' | 'ecdaa' | 'attca';
|
|
167
|
+
export declare type Attestation = 'basic_full' | 'basic_surrogate' | 'ecdaa' | 'attca' | 'anonca' | 'none';
|
|
164
168
|
/**
|
|
165
169
|
* KEY_PROTECTION
|
|
166
|
-
* https://fidoalliance.org/specs/common-specs/fido-registry-v2.
|
|
170
|
+
* https://fidoalliance.org/specs/common-specs/fido-registry-v2.2-ps-20220523.html#key-protection-types
|
|
167
171
|
*/
|
|
168
172
|
export declare type KeyProtection = 'software' | 'hardware' | 'tee' | 'secure_element' | 'remote_handle';
|
|
169
173
|
/**
|
|
170
174
|
* MATCHER_PROTECTION
|
|
171
|
-
* https://fidoalliance.org/specs/common-specs/fido-registry-v2.
|
|
175
|
+
* https://fidoalliance.org/specs/common-specs/fido-registry-v2.2-ps-20220523.html#matcher-protection-types
|
|
172
176
|
*/
|
|
173
177
|
export declare type MatcherProtection = 'software' | 'tee' | 'on_chip';
|
|
174
178
|
/**
|
|
175
179
|
* ATTACHMENT_HINT
|
|
176
|
-
* https://fidoalliance.org/specs/common-specs/fido-registry-v2.
|
|
180
|
+
* https://fidoalliance.org/specs/common-specs/fido-registry-v2.2-ps-20220523.html#authenticator-attachment-hints
|
|
177
181
|
*/
|
|
178
182
|
export declare type AttachmentHint = 'internal' | 'external' | 'wired' | 'wireless' | 'nfc' | 'bluetooth' | 'network' | 'ready' | 'wifi_direct';
|
|
179
183
|
/**
|
|
180
184
|
* TRANSACTION_CONFIRMATION_DISPLAY
|
|
181
|
-
* https://fidoalliance.org/specs/common-specs/fido-registry-v2.
|
|
185
|
+
* https://fidoalliance.org/specs/common-specs/fido-registry-v2.2-ps-20220523.html#transaction-confirmation-display-types
|
|
182
186
|
*/
|
|
183
187
|
export declare type TransactionConfirmationDisplay = 'any' | 'privileged_software' | 'tee' | 'hardware' | 'remote';
|
|
184
188
|
/**
|
|
@@ -205,3 +209,4 @@ export declare type AuthenticatorGetInfo = {
|
|
|
205
209
|
maxMsgSize?: number;
|
|
206
210
|
pinProtocols?: number[];
|
|
207
211
|
};
|
|
212
|
+
export {};
|
|
@@ -1,3 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const AlgSign = [
|
|
4
|
+
'secp256r1_ecdsa_sha256_raw',
|
|
5
|
+
'secp256r1_ecdsa_sha256_der',
|
|
6
|
+
'rsassa_pss_sha256_raw',
|
|
7
|
+
'rsassa_pss_sha256_der',
|
|
8
|
+
'secp256k1_ecdsa_sha256_raw',
|
|
9
|
+
'secp256k1_ecdsa_sha256_der',
|
|
10
|
+
'rsassa_pss_sha384_raw',
|
|
11
|
+
'rsassa_pkcsv15_sha256_raw',
|
|
12
|
+
'rsassa_pkcsv15_sha384_raw',
|
|
13
|
+
'rsassa_pkcsv15_sha512_raw',
|
|
14
|
+
'rsassa_pkcsv15_sha1_raw',
|
|
15
|
+
'secp384r1_ecdsa_sha384_raw',
|
|
16
|
+
'secp512r1_ecdsa_sha256_raw',
|
|
17
|
+
'ed25519_eddsa_sha512_raw',
|
|
18
|
+
];
|
|
3
19
|
//# sourceMappingURL=mdsTypes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mdsTypes.js","sourceRoot":"","sources":["../../src/metadata/mdsTypes.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"mdsTypes.js","sourceRoot":"","sources":["../../src/metadata/mdsTypes.ts"],"names":[],"mappings":";;AA2MA,MAAM,OAAO,GAAG;IACd,4BAA4B;IAC5B,4BAA4B;IAC5B,uBAAuB;IACvB,uBAAuB;IACvB,4BAA4B;IAC5B,4BAA4B;IAC5B,uBAAuB;IACvB,2BAA2B;IAC3B,2BAA2B;IAC3B,2BAA2B;IAC3B,yBAAyB;IACzB,4BAA4B;IAC5B,4BAA4B;IAC5B,0BAA0B;CAClB,CAAC"}
|
|
@@ -1,8 +1,24 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { Base64URLString } from '@simplewebauthn/typescript-types';
|
|
3
|
-
import { MetadataStatement } from '../metadata/mdsTypes';
|
|
3
|
+
import type { MetadataStatement, AlgSign } from '../metadata/mdsTypes';
|
|
4
4
|
/**
|
|
5
5
|
* Match properties of the authenticator's attestation statement against expected values as
|
|
6
6
|
* registered with the FIDO Alliance Metadata Service
|
|
7
7
|
*/
|
|
8
8
|
export declare function verifyAttestationWithMetadata(statement: MetadataStatement, credentialPublicKey: Buffer, x5c: Buffer[] | Base64URLString[]): Promise<boolean>;
|
|
9
|
+
declare type COSEInfo = {
|
|
10
|
+
kty: number;
|
|
11
|
+
alg: number;
|
|
12
|
+
crv?: number;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Convert ALG_SIGN values to COSE info
|
|
16
|
+
*
|
|
17
|
+
* Values pulled from `ALG_KEY_COSE` definitions in the FIDO Registry of Predefined Values
|
|
18
|
+
*
|
|
19
|
+
* https://fidoalliance.org/specs/common-specs/fido-registry-v2.2-ps-20220523.html#authentication-algorithms
|
|
20
|
+
*/
|
|
21
|
+
export declare const algSignToCOSEInfoMap: {
|
|
22
|
+
[key in AlgSign]: COSEInfo;
|
|
23
|
+
};
|
|
24
|
+
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.verifyAttestationWithMetadata = void 0;
|
|
3
|
+
exports.algSignToCOSEInfoMap = exports.verifyAttestationWithMetadata = void 0;
|
|
4
4
|
const convertCertBufferToPEM_1 = require("../helpers/convertCertBufferToPEM");
|
|
5
5
|
const validateCertificatePath_1 = require("../helpers/validateCertificatePath");
|
|
6
6
|
const decodeCredentialPublicKey_1 = require("../helpers/decodeCredentialPublicKey");
|
|
@@ -13,8 +13,9 @@ async function verifyAttestationWithMetadata(statement, credentialPublicKey, x5c
|
|
|
13
13
|
// Make sure the alg in the attestation statement matches one of the ones specified in metadata
|
|
14
14
|
const keypairCOSEAlgs = new Set();
|
|
15
15
|
statement.authenticationAlgorithms.forEach(algSign => {
|
|
16
|
-
//
|
|
17
|
-
const algSignCOSEINFO =
|
|
16
|
+
// Map algSign string to { kty, alg, crv }
|
|
17
|
+
const algSignCOSEINFO = exports.algSignToCOSEInfoMap[algSign];
|
|
18
|
+
// Keeping this statement here just in case MDS returns something unexpected
|
|
18
19
|
if (algSignCOSEINFO) {
|
|
19
20
|
keypairCOSEAlgs.add(algSignCOSEINFO);
|
|
20
21
|
}
|
|
@@ -54,8 +55,26 @@ async function verifyAttestationWithMetadata(statement, credentialPublicKey, x5c
|
|
|
54
55
|
}
|
|
55
56
|
// Make sure the public key is one of the allowed algorithms
|
|
56
57
|
if (!foundMatch) {
|
|
57
|
-
|
|
58
|
-
|
|
58
|
+
/**
|
|
59
|
+
* Craft some useful error output from the MDS algorithms
|
|
60
|
+
*
|
|
61
|
+
* Example:
|
|
62
|
+
*
|
|
63
|
+
* ```
|
|
64
|
+
* [
|
|
65
|
+
* 'rsassa_pss_sha256_raw' (COSE info: { kty: 3, alg: -37 }),
|
|
66
|
+
* 'secp256k1_ecdsa_sha256_raw' (COSE info: { kty: 2, alg: -47, crv: 8 })
|
|
67
|
+
* ]
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
const debugMDSAlgs = statement.authenticationAlgorithms
|
|
71
|
+
.map((algSign) => `'${algSign}' (COSE info: ${stringifyCOSEInfo(exports.algSignToCOSEInfoMap[algSign])})`);
|
|
72
|
+
const strMDSAlgs = JSON.stringify(debugMDSAlgs, null, 2).replace(/"/g, '');
|
|
73
|
+
/**
|
|
74
|
+
* Construct useful error output about the public key
|
|
75
|
+
*/
|
|
76
|
+
const strPubKeyAlg = stringifyCOSEInfo(publicKeyCOSEInfo);
|
|
77
|
+
throw new Error(`Public key parameters ${strPubKeyAlg} did not match any of the following metadata algorithms:\n${strMDSAlgs}`);
|
|
59
78
|
}
|
|
60
79
|
try {
|
|
61
80
|
await (0, validateCertificatePath_1.validateCertificatePath)(x5c.map(convertCertBufferToPEM_1.convertCertBufferToPEM), statement.attestationRootCertificates.map(convertCertBufferToPEM_1.convertCertBufferToPEM));
|
|
@@ -69,43 +88,43 @@ async function verifyAttestationWithMetadata(statement, credentialPublicKey, x5c
|
|
|
69
88
|
exports.verifyAttestationWithMetadata = verifyAttestationWithMetadata;
|
|
70
89
|
/**
|
|
71
90
|
* Convert ALG_SIGN values to COSE info
|
|
72
|
-
*
|
|
91
|
+
*
|
|
92
|
+
* Values pulled from `ALG_KEY_COSE` definitions in the FIDO Registry of Predefined Values
|
|
93
|
+
*
|
|
94
|
+
* https://fidoalliance.org/specs/common-specs/fido-registry-v2.2-ps-20220523.html#authentication-algorithms
|
|
73
95
|
*/
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
// case 'rsa_emsa_pkcs1_sha256_der':
|
|
106
|
-
// return {};
|
|
107
|
-
default:
|
|
108
|
-
return undefined;
|
|
96
|
+
exports.algSignToCOSEInfoMap = {
|
|
97
|
+
secp256r1_ecdsa_sha256_raw: { kty: 2, alg: -7, crv: 1 },
|
|
98
|
+
secp256r1_ecdsa_sha256_der: { kty: 2, alg: -7, crv: 1 },
|
|
99
|
+
rsassa_pss_sha256_raw: { kty: 3, alg: -37 },
|
|
100
|
+
rsassa_pss_sha256_der: { kty: 3, alg: -37 },
|
|
101
|
+
secp256k1_ecdsa_sha256_raw: { kty: 2, alg: -47, crv: 8 },
|
|
102
|
+
secp256k1_ecdsa_sha256_der: { kty: 2, alg: -47, crv: 8 },
|
|
103
|
+
rsassa_pss_sha384_raw: { kty: 3, alg: -38 },
|
|
104
|
+
rsassa_pkcsv15_sha256_raw: { kty: 3, alg: -257 },
|
|
105
|
+
rsassa_pkcsv15_sha384_raw: { kty: 3, alg: -258 },
|
|
106
|
+
rsassa_pkcsv15_sha512_raw: { kty: 3, alg: -259 },
|
|
107
|
+
rsassa_pkcsv15_sha1_raw: { kty: 3, alg: -65535 },
|
|
108
|
+
secp384r1_ecdsa_sha384_raw: { kty: 2, alg: -35, crv: 2 },
|
|
109
|
+
secp512r1_ecdsa_sha256_raw: { kty: 2, alg: -36, crv: 3 },
|
|
110
|
+
ed25519_eddsa_sha512_raw: { kty: 1, alg: -8, crv: 6 },
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* A helper to format COSEInfo a little nicer than we can achieve with JSON.stringify()
|
|
114
|
+
*
|
|
115
|
+
* Input: `{ "kty": 3, "alg": -257 }`
|
|
116
|
+
*
|
|
117
|
+
* Output: `"{ kty: 3, alg: -257 }"`
|
|
118
|
+
*/
|
|
119
|
+
function stringifyCOSEInfo(info) {
|
|
120
|
+
const { kty, alg, crv } = info;
|
|
121
|
+
let toReturn = '';
|
|
122
|
+
if (kty !== convertCOSEtoPKCS_1.COSEKTY.RSA) {
|
|
123
|
+
toReturn = `{ kty: ${kty}, alg: ${alg}, crv: ${crv} }`;
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
toReturn = `{ kty: ${kty}, alg: ${alg} }`;
|
|
109
127
|
}
|
|
128
|
+
return toReturn;
|
|
110
129
|
}
|
|
111
130
|
//# sourceMappingURL=verifyAttestationWithMetadata.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyAttestationWithMetadata.js","sourceRoot":"","sources":["../../src/metadata/verifyAttestationWithMetadata.ts"],"names":[],"mappings":";;;AAGA,8EAA2E;AAC3E,gFAA6E;AAC7E,oFAAiF;AACjF,oEAAiE;AAEjE;;;GAGG;AACI,KAAK,UAAU,6BAA6B,CACjD,SAA4B,EAC5B,mBAA2B,EAC3B,GAAiC;IAEjC,+FAA+F;IAC/F,MAAM,eAAe,GAAkB,IAAI,GAAG,EAAE,CAAC;IACjD,SAAS,CAAC,wBAAwB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACnD,
|
|
1
|
+
{"version":3,"file":"verifyAttestationWithMetadata.js","sourceRoot":"","sources":["../../src/metadata/verifyAttestationWithMetadata.ts"],"names":[],"mappings":";;;AAGA,8EAA2E;AAC3E,gFAA6E;AAC7E,oFAAiF;AACjF,oEAAiE;AAEjE;;;GAGG;AACI,KAAK,UAAU,6BAA6B,CACjD,SAA4B,EAC5B,mBAA2B,EAC3B,GAAiC;IAEjC,+FAA+F;IAC/F,MAAM,eAAe,GAAkB,IAAI,GAAG,EAAE,CAAC;IACjD,SAAS,CAAC,wBAAwB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACnD,0CAA0C;QAC1C,MAAM,eAAe,GAAG,4BAAoB,CAAC,OAAO,CAAC,CAAC;QAEtD,4EAA4E;QAC5E,IAAI,eAAe,EAAE;YACnB,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;SACtC;IACH,CAAC,CAAC,CAAC;IAEH,oDAAoD;IACpD,MAAM,gBAAgB,GAAG,IAAA,qDAAyB,EAAC,mBAAmB,CAAC,CAAC;IACxE,+DAA+D;IAC/D,MAAM,iBAAiB,GAAa;QAClC,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,4BAAQ,CAAC,GAAG,CAAW;QACjD,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,4BAAQ,CAAC,GAAG,CAAW;QACjD,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,4BAAQ,CAAC,GAAG,CAAW;KAClD,CAAC;IACF,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE;QAC1B,OAAO,iBAAiB,CAAC,GAAG,CAAC;KAC9B;IAED;;;OAGG;IACH,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,KAAK,MAAM,UAAU,IAAI,eAAe,EAAE;QACxC,yCAAyC;QACzC,IAAI,UAAU,CAAC,GAAG,KAAK,iBAAiB,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG,KAAK,iBAAiB,CAAC,GAAG,EAAE;YACxF,+DAA+D;YAC/D,IACE,CAAC,UAAU,CAAC,GAAG,KAAK,2BAAO,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG,KAAK,2BAAO,CAAC,GAAG,CAAC;gBAClE,UAAU,CAAC,GAAG,KAAK,iBAAiB,CAAC,GAAG,EACxC;gBACA,UAAU,GAAG,IAAI,CAAC;aACnB;iBAAM;gBACL,+CAA+C;gBAC/C,UAAU,GAAG,IAAI,CAAC;aACnB;SACF;QAED,IAAI,UAAU,EAAE;YACd,MAAM;SACP;KACF;IAED,4DAA4D;IAC5D,IAAI,CAAC,UAAU,EAAE;QACf;;;;;;;;;;;WAWG;QACH,MAAM,YAAY,GAAG,SAAS,CAAC,wBAAwB;aACpD,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,OAAO,iBAAiB,iBAAiB,CAAC,4BAAoB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;QACrG,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAE3E;;WAEG;QACH,MAAM,YAAY,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;QAE1D,MAAM,IAAI,KAAK,CACb,yBAAyB,YAAY,6DAA6D,UAAU,EAAE,CAC/G,CAAC;KACH;IAED,IAAI;QACF,MAAM,IAAA,iDAAuB,EAC3B,GAAG,CAAC,GAAG,CAAC,+CAAsB,CAAC,EAC/B,SAAS,CAAC,2BAA2B,CAAC,GAAG,CAAC,+CAAsB,CAAC,CAClE,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAI,GAAG,GAAY,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,4EAA4E,IAAI,CAAC,OAAO,EAAE,CAC3F,CAAC;KACH;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AA/FD,sEA+FC;AAQD;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAmC;IAClE,0BAA0B,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;IACvD,0BAA0B,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;IACvD,qBAAqB,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;IAC3C,qBAAqB,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;IAC3C,0BAA0B,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;IACxD,0BAA0B,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;IACxD,qBAAqB,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;IAC3C,yBAAyB,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE;IAChD,yBAAyB,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE;IAChD,yBAAyB,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE;IAChD,uBAAuB,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE;IAChD,0BAA0B,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;IACxD,0BAA0B,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;IACxD,wBAAwB,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;CACtD,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,IAAc;IACvC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAE/B,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,GAAG,KAAK,2BAAO,CAAC,GAAG,EAAE;QACvB,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC;KACxD;SAAM;QACL,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC;KAC3C;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1,9 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A whole lotta domain knowledge is captured here, with hazy connections to source
|
|
3
|
+
* documents. Good places to start searching for more info on these values are the
|
|
4
|
+
* following Trusted Computing Group TPM Library docs linked in the WebAuthn API:
|
|
5
|
+
*
|
|
6
|
+
* - https://www.trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-1-Architecture-01.38.pdf
|
|
7
|
+
* - https://www.trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-2-Structures-01.38.pdf
|
|
8
|
+
* - https://www.trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-3-Commands-01.38.pdf
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* 6.9 TPM_ST (Structure Tags)
|
|
12
|
+
*/
|
|
1
13
|
export declare const TPM_ST: {
|
|
2
14
|
[key: number]: string;
|
|
3
15
|
};
|
|
16
|
+
/**
|
|
17
|
+
* 6.3 TPM_ALG_ID
|
|
18
|
+
*/
|
|
4
19
|
export declare const TPM_ALG: {
|
|
5
20
|
[key: number]: string;
|
|
6
21
|
};
|
|
22
|
+
/**
|
|
23
|
+
* 6.4 TPM_ECC_CURVE
|
|
24
|
+
*/
|
|
7
25
|
export declare const TPM_ECC_CURVE: {
|
|
8
26
|
[key: number]: string;
|
|
9
27
|
};
|
|
@@ -11,7 +29,19 @@ declare type ManufacturerInfo = {
|
|
|
11
29
|
name: string;
|
|
12
30
|
id: string;
|
|
13
31
|
};
|
|
32
|
+
/**
|
|
33
|
+
* Sourced from https://trustedcomputinggroup.org/resource/vendor-id-registry/
|
|
34
|
+
*
|
|
35
|
+
* Latest version:
|
|
36
|
+
* https://trustedcomputinggroup.org/wp-content/uploads/TCG-TPM-Vendor-ID-Registry-Version-1.02-Revision-1.00.pdf
|
|
37
|
+
*/
|
|
14
38
|
export declare const TPM_MANUFACTURERS: {
|
|
15
39
|
[key: string]: ManufacturerInfo;
|
|
16
40
|
};
|
|
41
|
+
/**
|
|
42
|
+
* Match TPM public area curve ID's to `crv` numbers used in COSE public keys
|
|
43
|
+
*/
|
|
44
|
+
export declare const TPM_ECC_CURVE_COSE_CRV_MAP: {
|
|
45
|
+
[key: string]: number;
|
|
46
|
+
};
|
|
17
47
|
export {};
|
|
@@ -1,7 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TPM_MANUFACTURERS = exports.TPM_ECC_CURVE = exports.TPM_ALG = exports.TPM_ST = void 0;
|
|
4
2
|
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
|
3
|
+
/**
|
|
4
|
+
* A whole lotta domain knowledge is captured here, with hazy connections to source
|
|
5
|
+
* documents. Good places to start searching for more info on these values are the
|
|
6
|
+
* following Trusted Computing Group TPM Library docs linked in the WebAuthn API:
|
|
7
|
+
*
|
|
8
|
+
* - https://www.trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-1-Architecture-01.38.pdf
|
|
9
|
+
* - https://www.trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-2-Structures-01.38.pdf
|
|
10
|
+
* - https://www.trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-3-Commands-01.38.pdf
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.TPM_ECC_CURVE_COSE_CRV_MAP = exports.TPM_MANUFACTURERS = exports.TPM_ECC_CURVE = exports.TPM_ALG = exports.TPM_ST = void 0;
|
|
14
|
+
/**
|
|
15
|
+
* 6.9 TPM_ST (Structure Tags)
|
|
16
|
+
*/
|
|
5
17
|
exports.TPM_ST = {
|
|
6
18
|
0x00c4: 'TPM_ST_RSP_COMMAND',
|
|
7
19
|
0x8000: 'TPM_ST_NULL',
|
|
@@ -21,6 +33,9 @@ exports.TPM_ST = {
|
|
|
21
33
|
0x8025: 'TPM_ST_AUTH_SIGNED',
|
|
22
34
|
0x8029: 'TPM_ST_FU_MANIFEST',
|
|
23
35
|
};
|
|
36
|
+
/**
|
|
37
|
+
* 6.3 TPM_ALG_ID
|
|
38
|
+
*/
|
|
24
39
|
exports.TPM_ALG = {
|
|
25
40
|
0x0000: 'TPM_ALG_ERROR',
|
|
26
41
|
0x0001: 'TPM_ALG_RSA',
|
|
@@ -60,6 +75,9 @@ exports.TPM_ALG = {
|
|
|
60
75
|
0x0043: 'TPM_ALG_CFB',
|
|
61
76
|
0x0044: 'TPM_ALG_ECB',
|
|
62
77
|
};
|
|
78
|
+
/**
|
|
79
|
+
* 6.4 TPM_ECC_CURVE
|
|
80
|
+
*/
|
|
63
81
|
exports.TPM_ECC_CURVE = {
|
|
64
82
|
0x0000: 'TPM_ECC_NONE',
|
|
65
83
|
0x0001: 'TPM_ECC_NIST_P192',
|
|
@@ -71,6 +89,12 @@ exports.TPM_ECC_CURVE = {
|
|
|
71
89
|
0x0011: 'TPM_ECC_BN_P638',
|
|
72
90
|
0x0020: 'TPM_ECC_SM2_P256',
|
|
73
91
|
};
|
|
92
|
+
/**
|
|
93
|
+
* Sourced from https://trustedcomputinggroup.org/resource/vendor-id-registry/
|
|
94
|
+
*
|
|
95
|
+
* Latest version:
|
|
96
|
+
* https://trustedcomputinggroup.org/wp-content/uploads/TCG-TPM-Vendor-ID-Registry-Version-1.02-Revision-1.00.pdf
|
|
97
|
+
*/
|
|
74
98
|
exports.TPM_MANUFACTURERS = {
|
|
75
99
|
'id:414D4400': {
|
|
76
100
|
name: 'AMD',
|
|
@@ -149,4 +173,14 @@ exports.TPM_MANUFACTURERS = {
|
|
|
149
173
|
id: 'FIDO',
|
|
150
174
|
},
|
|
151
175
|
};
|
|
176
|
+
/**
|
|
177
|
+
* Match TPM public area curve ID's to `crv` numbers used in COSE public keys
|
|
178
|
+
*/
|
|
179
|
+
exports.TPM_ECC_CURVE_COSE_CRV_MAP = {
|
|
180
|
+
TPM_ECC_NIST_P256: 1,
|
|
181
|
+
TPM_ECC_NIST_P384: 2,
|
|
182
|
+
TPM_ECC_NIST_P521: 3,
|
|
183
|
+
TPM_ECC_BN_P256: 1,
|
|
184
|
+
TPM_ECC_SM2_P256: 1, // p256
|
|
185
|
+
};
|
|
152
186
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/registration/verifications/tpm/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/registration/verifications/tpm/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
/**
|
|
3
3
|
* Break apart a TPM attestation's pubArea buffer
|
|
4
|
+
*
|
|
5
|
+
* See 12.2.4 TPMT_PUBLIC here:
|
|
6
|
+
* https://trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-2-Structures-00.96-130315.pdf
|
|
4
7
|
*/
|
|
5
8
|
export declare function parsePubArea(pubArea: Buffer): ParsedPubArea;
|
|
6
9
|
declare type ParsedPubArea = {
|
|
@@ -4,6 +4,9 @@ exports.parsePubArea = void 0;
|
|
|
4
4
|
const constants_1 = require("./constants");
|
|
5
5
|
/**
|
|
6
6
|
* Break apart a TPM attestation's pubArea buffer
|
|
7
|
+
*
|
|
8
|
+
* See 12.2.4 TPMT_PUBLIC here:
|
|
9
|
+
* https://trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-2-Structures-00.96-130315.pdf
|
|
7
10
|
*/
|
|
8
11
|
function parsePubArea(pubArea) {
|
|
9
12
|
let pointer = 0;
|
|
@@ -31,6 +34,7 @@ function parsePubArea(pubArea) {
|
|
|
31
34
|
const authPolicy = pubArea.slice(pointer, (pointer += authPolicyLength));
|
|
32
35
|
// Extract additional curve params according to type
|
|
33
36
|
const parameters = {};
|
|
37
|
+
let unique = Buffer.from([]);
|
|
34
38
|
if (type === 'TPM_ALG_RSA') {
|
|
35
39
|
const rsaBuffer = pubArea.slice(pointer, (pointer += 10));
|
|
36
40
|
parameters.rsa = {
|
|
@@ -39,6 +43,12 @@ function parsePubArea(pubArea) {
|
|
|
39
43
|
keyBits: rsaBuffer.slice(4, 6).readUInt16BE(0),
|
|
40
44
|
exponent: rsaBuffer.slice(6, 10).readUInt32BE(0),
|
|
41
45
|
};
|
|
46
|
+
/**
|
|
47
|
+
* See 11.2.4.5 TPM2B_PUBLIC_KEY_RSA here:
|
|
48
|
+
* https://trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-2-Structures-00.96-130315.pdf
|
|
49
|
+
*/
|
|
50
|
+
const uniqueLength = pubArea.slice(pointer, (pointer += 2)).readUInt16BE(0);
|
|
51
|
+
unique = pubArea.slice(pointer, (pointer += uniqueLength));
|
|
42
52
|
}
|
|
43
53
|
else if (type === 'TPM_ALG_ECC') {
|
|
44
54
|
const eccBuffer = pubArea.slice(pointer, (pointer += 8));
|
|
@@ -48,13 +58,21 @@ function parsePubArea(pubArea) {
|
|
|
48
58
|
curveID: constants_1.TPM_ECC_CURVE[eccBuffer.slice(4, 6).readUInt16BE(0)],
|
|
49
59
|
kdf: constants_1.TPM_ALG[eccBuffer.slice(6, 8).readUInt16BE(0)],
|
|
50
60
|
};
|
|
61
|
+
/**
|
|
62
|
+
* See 11.2.5.1 TPM2B_ECC_PARAMETER here:
|
|
63
|
+
* https://trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-2-Structures-00.96-130315.pdf
|
|
64
|
+
*/
|
|
65
|
+
// Retrieve X
|
|
66
|
+
const uniqueXLength = pubArea.slice(pointer, (pointer += 2)).readUInt16BE(0);
|
|
67
|
+
const uniqueX = pubArea.slice(pointer, (pointer += uniqueXLength));
|
|
68
|
+
// Retrieve Y
|
|
69
|
+
const uniqueYLength = pubArea.slice(pointer, (pointer += 2)).readUInt16BE(0);
|
|
70
|
+
const uniqueY = pubArea.slice(pointer, (pointer += uniqueYLength));
|
|
71
|
+
unique = Buffer.concat([uniqueX, uniqueY]);
|
|
51
72
|
}
|
|
52
73
|
else {
|
|
53
74
|
throw new Error(`Unexpected type "${type}" (TPM)`);
|
|
54
75
|
}
|
|
55
|
-
// Slice out unique of dynamic length
|
|
56
|
-
const uniqueLength = pubArea.slice(pointer, (pointer += 2)).readUInt16BE(0);
|
|
57
|
-
const unique = pubArea.slice(pointer, (pointer += uniqueLength));
|
|
58
76
|
return {
|
|
59
77
|
type,
|
|
60
78
|
nameAlg,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsePubArea.js","sourceRoot":"","sources":["../../../../src/registration/verifications/tpm/parsePubArea.ts"],"names":[],"mappings":";;;AAAA,2CAAqD;AAErD
|
|
1
|
+
{"version":3,"file":"parsePubArea.js","sourceRoot":"","sources":["../../../../src/registration/verifications/tpm/parsePubArea.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,10 +70,6 @@ async function verifyAttestationTPM(options) {
|
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
else if (pubType === 'TPM_ALG_ECC') {
|
|
73
|
-
/**
|
|
74
|
-
* TODO: Confirm this all works fine. Conformance tools v1.3.4 don't currently test ECC so I
|
|
75
|
-
* had to eyeball it based on the **duo-labs/webauthn** library
|
|
76
|
-
*/
|
|
77
73
|
const crv = cosePublicKey.get(convertCOSEtoPKCS_1.COSEKEYS.crv);
|
|
78
74
|
const x = cosePublicKey.get(convertCOSEtoPKCS_1.COSEKEYS.x);
|
|
79
75
|
const y = cosePublicKey.get(convertCOSEtoPKCS_1.COSEKEYS.y);
|
|
@@ -93,9 +89,9 @@ async function verifyAttestationTPM(options) {
|
|
|
93
89
|
throw new Error(`Parsed pubArea type is ECC, but missing parameters.ecc (TPM|ECC)`);
|
|
94
90
|
}
|
|
95
91
|
const pubAreaCurveID = parameters.ecc.curveID;
|
|
96
|
-
const
|
|
97
|
-
if (
|
|
98
|
-
throw new Error(`
|
|
92
|
+
const pubAreaCurveIDMapToCOSECRV = constants_1.TPM_ECC_CURVE_COSE_CRV_MAP[pubAreaCurveID];
|
|
93
|
+
if (pubAreaCurveIDMapToCOSECRV !== crv) {
|
|
94
|
+
throw new Error(`Public area key curve ID "${pubAreaCurveID}" mapped to "${pubAreaCurveIDMapToCOSECRV}" which did not match public key crv of "${crv}" (TPM|ECC)`);
|
|
99
95
|
}
|
|
100
96
|
}
|
|
101
97
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyAttestationTPM.js","sourceRoot":"","sources":["../../../../src/registration/verifications/tpm/verifyAttestationTPM.ts"],"names":[],"mappings":";;;AAAA,uDAAkD;AAClD,mDAO6B;AAI7B,0FAAuF;AACvF,0EAA2E;AAC3E,oDAAiD;AACjD,oFAAiF;AACjF,sFAAmF;AACnF,4EAAyE;AACzE,sEAAmE;AACnE,uEAAoE;AACpE,mGAAgG;AAEhG,
|
|
1
|
+
{"version":3,"file":"verifyAttestationTPM.js","sourceRoot":"","sources":["../../../../src/registration/verifications/tpm/verifyAttestationTPM.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplewebauthn/server",
|
|
3
|
-
"version": "5.4.
|
|
3
|
+
"version": "5.4.3",
|
|
4
4
|
"description": "SimpleWebAuthn for Servers",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"node-fetch": "^2.6.0",
|
|
60
60
|
"node-rsa": "^1.1.1"
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "bee3aefe652cba5b6e46dc2af282ec4028e3eefa",
|
|
63
63
|
"devDependencies": {
|
|
64
64
|
"@types/cbor": "^5.0.1",
|
|
65
65
|
"@types/debug": "^4.1.7",
|