ox 0.12.4 → 0.13.1

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.
Files changed (128) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/_cjs/core/P256.js +1 -1
  3. package/_cjs/core/P256.js.map +1 -1
  4. package/_cjs/core/WebAuthnP256.js +15 -256
  5. package/_cjs/core/WebAuthnP256.js.map +1 -1
  6. package/_cjs/core/WebCryptoP256.js +3 -1
  7. package/_cjs/core/WebCryptoP256.js.map +1 -1
  8. package/_cjs/core/internal/webauthn.js +5 -13
  9. package/_cjs/core/internal/webauthn.js.map +1 -1
  10. package/_cjs/index.docs.js +1 -0
  11. package/_cjs/index.docs.js.map +1 -1
  12. package/_cjs/tempo/KeyAuthorization.js +18 -3
  13. package/_cjs/tempo/KeyAuthorization.js.map +1 -1
  14. package/_cjs/tempo/SignatureEnvelope.js +26 -0
  15. package/_cjs/tempo/SignatureEnvelope.js.map +1 -1
  16. package/_cjs/tempo/TxEnvelopeTempo.js +5 -10
  17. package/_cjs/tempo/TxEnvelopeTempo.js.map +1 -1
  18. package/_cjs/version.js +1 -1
  19. package/_cjs/webauthn/Authentication.js +246 -0
  20. package/_cjs/webauthn/Authentication.js.map +1 -0
  21. package/_cjs/webauthn/Authenticator.js +55 -0
  22. package/_cjs/webauthn/Authenticator.js.map +1 -0
  23. package/_cjs/webauthn/Credential.js +53 -0
  24. package/_cjs/webauthn/Credential.js.map +1 -0
  25. package/_cjs/webauthn/Registration.js +349 -0
  26. package/_cjs/webauthn/Registration.js.map +1 -0
  27. package/_cjs/webauthn/Types.js +3 -0
  28. package/_cjs/webauthn/Types.js.map +1 -0
  29. package/_cjs/webauthn/index.js +9 -0
  30. package/_cjs/webauthn/index.js.map +1 -0
  31. package/_cjs/webauthn/internal/utils.js +53 -0
  32. package/_cjs/webauthn/internal/utils.js.map +1 -0
  33. package/_esm/core/P256.js +1 -1
  34. package/_esm/core/P256.js.map +1 -1
  35. package/_esm/core/WebAuthnP256.js +13 -261
  36. package/_esm/core/WebAuthnP256.js.map +1 -1
  37. package/_esm/core/WebCryptoP256.js +4 -1
  38. package/_esm/core/WebCryptoP256.js.map +1 -1
  39. package/_esm/core/internal/webauthn.js +5 -13
  40. package/_esm/core/internal/webauthn.js.map +1 -1
  41. package/_esm/erc8021/index.js +2 -2
  42. package/_esm/index.docs.js +1 -0
  43. package/_esm/index.docs.js.map +1 -1
  44. package/_esm/tempo/KeyAuthorization.js +66 -3
  45. package/_esm/tempo/KeyAuthorization.js.map +1 -1
  46. package/_esm/tempo/SignatureEnvelope.js +74 -0
  47. package/_esm/tempo/SignatureEnvelope.js.map +1 -1
  48. package/_esm/tempo/TransactionReceipt.js +1 -1
  49. package/_esm/tempo/TransactionRequest.js +1 -1
  50. package/_esm/tempo/TxEnvelopeTempo.js +5 -10
  51. package/_esm/tempo/TxEnvelopeTempo.js.map +1 -1
  52. package/_esm/version.js +1 -1
  53. package/_esm/webauthn/Authentication.js +453 -0
  54. package/_esm/webauthn/Authentication.js.map +1 -0
  55. package/_esm/webauthn/Authenticator.js +176 -0
  56. package/_esm/webauthn/Authenticator.js.map +1 -0
  57. package/_esm/webauthn/Credential.js +95 -0
  58. package/_esm/webauthn/Credential.js.map +1 -0
  59. package/_esm/webauthn/Registration.js +512 -0
  60. package/_esm/webauthn/Registration.js.map +1 -0
  61. package/_esm/webauthn/Types.js +2 -0
  62. package/_esm/webauthn/Types.js.map +1 -0
  63. package/_esm/webauthn/index.js +31 -0
  64. package/_esm/webauthn/index.js.map +1 -0
  65. package/_esm/webauthn/internal/utils.js +52 -0
  66. package/_esm/webauthn/internal/utils.js.map +1 -0
  67. package/_types/core/WebAuthnP256.d.ts +33 -208
  68. package/_types/core/WebAuthnP256.d.ts.map +1 -1
  69. package/_types/core/WebCryptoP256.d.ts +2 -0
  70. package/_types/core/WebCryptoP256.d.ts.map +1 -1
  71. package/_types/core/internal/webauthn.d.ts +2 -110
  72. package/_types/core/internal/webauthn.d.ts.map +1 -1
  73. package/_types/erc8021/index.d.ts +2 -2
  74. package/_types/index.docs.d.ts +1 -0
  75. package/_types/index.docs.d.ts.map +1 -1
  76. package/_types/tempo/KeyAuthorization.d.ts +57 -0
  77. package/_types/tempo/KeyAuthorization.d.ts.map +1 -1
  78. package/_types/tempo/SignatureEnvelope.d.ts +75 -0
  79. package/_types/tempo/SignatureEnvelope.d.ts.map +1 -1
  80. package/_types/tempo/Transaction.d.ts +2 -2
  81. package/_types/tempo/TransactionReceipt.d.ts +2 -2
  82. package/_types/tempo/TransactionRequest.d.ts +2 -2
  83. package/_types/tempo/TxEnvelopeTempo.d.ts.map +1 -1
  84. package/_types/version.d.ts +1 -1
  85. package/_types/webauthn/Authentication.d.ts +324 -0
  86. package/_types/webauthn/Authentication.d.ts.map +1 -0
  87. package/_types/webauthn/Authenticator.d.ts +182 -0
  88. package/_types/webauthn/Authenticator.d.ts.map +1 -0
  89. package/_types/webauthn/Credential.d.ts +77 -0
  90. package/_types/webauthn/Credential.d.ts.map +1 -0
  91. package/_types/webauthn/Registration.d.ts +308 -0
  92. package/_types/webauthn/Registration.d.ts.map +1 -0
  93. package/_types/webauthn/Types.d.ts +106 -0
  94. package/_types/webauthn/Types.d.ts.map +1 -0
  95. package/_types/webauthn/index.d.ts +33 -0
  96. package/_types/webauthn/index.d.ts.map +1 -0
  97. package/_types/webauthn/internal/utils.d.ts +17 -0
  98. package/_types/webauthn/internal/utils.d.ts.map +1 -0
  99. package/core/P256.ts +1 -1
  100. package/core/WebAuthnP256.ts +37 -582
  101. package/core/WebCryptoP256.ts +6 -1
  102. package/core/internal/webauthn.ts +6 -165
  103. package/erc8021/index.ts +2 -2
  104. package/index.docs.ts +1 -0
  105. package/package.json +31 -1
  106. package/tempo/KeyAuthorization.test.ts +139 -0
  107. package/tempo/KeyAuthorization.ts +82 -3
  108. package/tempo/SignatureEnvelope.test.ts +147 -0
  109. package/tempo/SignatureEnvelope.ts +113 -0
  110. package/tempo/Transaction.ts +2 -2
  111. package/tempo/TransactionReceipt.ts +2 -2
  112. package/tempo/TransactionRequest.ts +2 -2
  113. package/tempo/TxEnvelopeTempo.ts +5 -12
  114. package/tempo/e2e.test.ts +265 -0
  115. package/version.ts +1 -1
  116. package/webauthn/Authentication/package.json +6 -0
  117. package/webauthn/Authentication.ts +673 -0
  118. package/webauthn/Authenticator/package.json +6 -0
  119. package/webauthn/Authenticator.ts +259 -0
  120. package/webauthn/Credential/package.json +6 -0
  121. package/webauthn/Credential.ts +146 -0
  122. package/webauthn/Registration/package.json +6 -0
  123. package/webauthn/Registration.ts +805 -0
  124. package/webauthn/Types/package.json +6 -0
  125. package/webauthn/Types.ts +158 -0
  126. package/webauthn/index.ts +38 -0
  127. package/webauthn/internal/utils.ts +63 -0
  128. package/webauthn/package.json +6 -0
@@ -0,0 +1,349 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateFailedError = exports.VerifyError = exports.createChallenge = void 0;
4
+ exports.create = create;
5
+ exports.getOptions = getOptions;
6
+ exports.serializeResponse = serializeResponse;
7
+ exports.serializeOptions = serializeOptions;
8
+ exports.deserializeOptions = deserializeOptions;
9
+ exports.deserializeResponse = deserializeResponse;
10
+ exports.verify = verify;
11
+ const Base64 = require("../core/Base64.js");
12
+ const Bytes = require("../core/Bytes.js");
13
+ const Cbor = require("../core/Cbor.js");
14
+ const CoseKey = require("../core/CoseKey.js");
15
+ const Errors = require("../core/Errors.js");
16
+ const Hash = require("../core/Hash.js");
17
+ const Hex = require("../core/Hex.js");
18
+ const internal = require("../core/internal/webauthn.js");
19
+ const P256 = require("../core/P256.js");
20
+ const PublicKey = require("../core/PublicKey.js");
21
+ const Signature = require("../core/Signature.js");
22
+ const utils_js_1 = require("./internal/utils.js");
23
+ exports.createChallenge = Uint8Array.from([
24
+ 105, 171, 180, 181, 160, 222, 75, 198, 42, 42, 32, 31, 141, 37, 186, 233,
25
+ ]);
26
+ async function create(options) {
27
+ const { createFn = window.navigator.credentials.create.bind(window.navigator.credentials), ...rest } = options;
28
+ const creationOptions = 'publicKey' in rest
29
+ ? rest
30
+ : getOptions(rest);
31
+ try {
32
+ const credential = (await createFn(creationOptions));
33
+ if (!credential)
34
+ throw new CreateFailedError();
35
+ const response = credential.response;
36
+ const publicKey = await internal.parseCredentialPublicKey(response);
37
+ return {
38
+ attestationObject: response.attestationObject,
39
+ clientDataJSON: response.clientDataJSON,
40
+ id: credential.id,
41
+ publicKey,
42
+ raw: credential,
43
+ };
44
+ }
45
+ catch (error) {
46
+ throw new CreateFailedError({
47
+ cause: error,
48
+ });
49
+ }
50
+ }
51
+ function getOptions(options) {
52
+ const { attestation = 'none', authenticatorSelection = {
53
+ residentKey: 'preferred',
54
+ requireResidentKey: false,
55
+ userVerification: 'required',
56
+ }, challenge = exports.createChallenge, excludeCredentialIds, extensions, name: name_, rp = {
57
+ id: window.location.hostname,
58
+ name: window.document.title,
59
+ }, user, } = options;
60
+ const name = (user?.name ?? name_);
61
+ return {
62
+ publicKey: {
63
+ attestation,
64
+ authenticatorSelection,
65
+ challenge: typeof challenge === 'string' ? Bytes.fromHex(challenge) : challenge,
66
+ ...(excludeCredentialIds
67
+ ? {
68
+ excludeCredentials: excludeCredentialIds?.map((id) => ({
69
+ id: Base64.toBytes(id),
70
+ type: 'public-key',
71
+ })),
72
+ }
73
+ : {}),
74
+ pubKeyCredParams: [
75
+ {
76
+ type: 'public-key',
77
+ alg: -7,
78
+ },
79
+ ],
80
+ rp,
81
+ user: {
82
+ id: user?.id ?? Hash.keccak256(Bytes.fromString(name), { as: 'Bytes' }),
83
+ name,
84
+ displayName: user?.displayName ?? name,
85
+ },
86
+ ...(extensions && { extensions }),
87
+ },
88
+ };
89
+ }
90
+ function serializeResponse(response) {
91
+ const { credential, ...rest } = response;
92
+ const rawResponse = {};
93
+ for (const key of utils_js_1.responseKeys) {
94
+ const value = credential.raw.response[key];
95
+ if (value instanceof ArrayBuffer)
96
+ rawResponse[key] = Base64.fromBytes(new Uint8Array(value), utils_js_1.base64UrlOptions);
97
+ }
98
+ return {
99
+ ...rest,
100
+ credential: {
101
+ attestationObject: Base64.fromBytes(new Uint8Array(credential.attestationObject), utils_js_1.base64UrlOptions),
102
+ clientDataJSON: Base64.fromBytes(new Uint8Array(credential.clientDataJSON), utils_js_1.base64UrlOptions),
103
+ id: credential.id,
104
+ publicKey: PublicKey.toHex(credential.publicKey),
105
+ raw: {
106
+ id: credential.raw.id,
107
+ type: credential.raw.type,
108
+ authenticatorAttachment: credential.raw.authenticatorAttachment,
109
+ rawId: Base64.fromBytes((0, utils_js_1.bufferSourceToBytes)(credential.raw.rawId), utils_js_1.base64UrlOptions),
110
+ response: rawResponse,
111
+ },
112
+ },
113
+ };
114
+ }
115
+ function serializeOptions(options) {
116
+ const publicKey = options.publicKey;
117
+ if (!publicKey)
118
+ return {};
119
+ const { challenge, excludeCredentials, extensions, user, ...rest } = publicKey;
120
+ return {
121
+ publicKey: {
122
+ ...rest,
123
+ challenge: Hex.fromBytes((0, utils_js_1.bufferSourceToBytes)(challenge)),
124
+ ...(excludeCredentials && {
125
+ excludeCredentials: excludeCredentials.map(({ id, ...rest }) => ({
126
+ ...rest,
127
+ id: Base64.fromBytes((0, utils_js_1.bufferSourceToBytes)(id), utils_js_1.base64UrlOptions),
128
+ })),
129
+ }),
130
+ ...(extensions && {
131
+ extensions: (0, utils_js_1.serializeExtensions)(extensions),
132
+ }),
133
+ user: {
134
+ ...user,
135
+ id: Base64.fromBytes((0, utils_js_1.bufferSourceToBytes)(user.id), utils_js_1.base64UrlOptions),
136
+ },
137
+ },
138
+ };
139
+ }
140
+ function deserializeOptions(options) {
141
+ const publicKey = options.publicKey;
142
+ if (!publicKey)
143
+ return {};
144
+ const { challenge, excludeCredentials, extensions, user, ...rest } = publicKey;
145
+ return {
146
+ publicKey: {
147
+ ...rest,
148
+ challenge: Bytes.fromHex(challenge),
149
+ ...(excludeCredentials && {
150
+ excludeCredentials: excludeCredentials.map(({ id, ...rest }) => ({
151
+ ...rest,
152
+ id: Base64.toBytes(id),
153
+ })),
154
+ }),
155
+ ...(extensions && {
156
+ extensions: (0, utils_js_1.deserializeExtensions)(extensions),
157
+ }),
158
+ user: {
159
+ ...user,
160
+ id: Base64.toBytes(user.id),
161
+ },
162
+ },
163
+ };
164
+ }
165
+ function deserializeResponse(response) {
166
+ const { credential, ...rest } = response;
167
+ const rawResponse = {};
168
+ for (const [key, value] of Object.entries(credential.raw.response))
169
+ rawResponse[key] = (0, utils_js_1.bytesToArrayBuffer)(Base64.toBytes(value));
170
+ return {
171
+ ...rest,
172
+ credential: {
173
+ attestationObject: (0, utils_js_1.bytesToArrayBuffer)(Base64.toBytes(credential.attestationObject)),
174
+ clientDataJSON: (0, utils_js_1.bytesToArrayBuffer)(Base64.toBytes(credential.clientDataJSON)),
175
+ id: credential.id,
176
+ publicKey: PublicKey.from(credential.publicKey),
177
+ raw: {
178
+ id: credential.raw.id,
179
+ type: credential.raw.type,
180
+ authenticatorAttachment: credential.raw.authenticatorAttachment,
181
+ rawId: (0, utils_js_1.bytesToArrayBuffer)(Base64.toBytes(credential.raw.rawId)),
182
+ response: rawResponse,
183
+ getClientExtensionResults: () => ({}),
184
+ },
185
+ },
186
+ };
187
+ }
188
+ function verify(options) {
189
+ const { attestation = 'none', credential, origin, rpId, userVerification = 'required', } = options;
190
+ const clientDataJSONBytes = new Uint8Array(credential.clientDataJSON);
191
+ const clientDataJSON = Bytes.toString(clientDataJSONBytes);
192
+ const clientData = JSON.parse(clientDataJSON);
193
+ if (clientData.type !== 'webauthn.create')
194
+ throw new VerifyError(`Expected clientData.type "webauthn.create", got "${clientData.type}"`);
195
+ const challengeResult = (() => {
196
+ if (typeof options.challenge === 'function')
197
+ return options.challenge(clientData.challenge);
198
+ const challengeBytes = typeof options.challenge === 'string'
199
+ ? Bytes.fromHex(options.challenge)
200
+ : options.challenge;
201
+ const challenge = Base64.fromBytes(challengeBytes, utils_js_1.base64UrlOptions);
202
+ return clientData.challenge === challenge;
203
+ })();
204
+ if (!challengeResult)
205
+ throw new VerifyError('Challenge mismatch');
206
+ const origins = Array.isArray(origin) ? origin : [origin];
207
+ if (!origins.includes(clientData.origin))
208
+ throw new VerifyError(`Origin mismatch: expected ${JSON.stringify(origin)}, got "${clientData.origin}"`);
209
+ const attestationObjectBytes = new Uint8Array(credential.attestationObject);
210
+ const attestation_ = Cbor.decode(attestationObjectBytes);
211
+ const authData = attestation_.authData;
212
+ const rpIdHash = authData.slice(0, 32);
213
+ const expectedRpIdHash = Hash.sha256(Hex.fromString(rpId), { as: 'Bytes' });
214
+ if (!Bytes.isEqual(rpIdHash, expectedRpIdHash))
215
+ throw new VerifyError('rpId hash mismatch');
216
+ const flags = authData[32];
217
+ const up = (flags & 0x01) !== 0;
218
+ const uv = (flags & 0x04) !== 0;
219
+ const at = (flags & 0x40) !== 0;
220
+ const be = (flags & 0x08) !== 0;
221
+ const bs = (flags & 0x10) !== 0;
222
+ if (!up)
223
+ throw new VerifyError('User presence flag not set');
224
+ if (!at)
225
+ throw new VerifyError('Attested credential data flag not set');
226
+ if (userVerification === 'required' && !uv)
227
+ throw new VerifyError('User verification flag not set');
228
+ if (!be && bs)
229
+ throw new VerifyError('Backup state (BS) flag is set but backup eligibility (BE) flag is not');
230
+ if (authData.length < 55)
231
+ throw new VerifyError('authData too short for attested credential data');
232
+ const counter = ((authData[33] << 24) |
233
+ (authData[34] << 16) |
234
+ (authData[35] << 8) |
235
+ authData[36]) >>>
236
+ 0;
237
+ const credIdLen = (authData[53] << 8) | authData[54];
238
+ if (55 + credIdLen > authData.length)
239
+ throw new VerifyError('credIdLen exceeds authData bounds');
240
+ const credentialId = authData.slice(55, 55 + credIdLen);
241
+ if (credential.id !== undefined) {
242
+ const expectedId = Base64.fromBytes(credentialId, utils_js_1.base64UrlOptions);
243
+ if (credential.id !== expectedId)
244
+ throw new VerifyError(`Credential ID mismatch: supplied "${credential.id}" does not match authData "${expectedId}"`);
245
+ }
246
+ const ed = (flags & 0x80) !== 0;
247
+ const coseKeyBytes = authData.slice(55 + credIdLen);
248
+ const coseKeyHex = Hex.fromBytes(coseKeyBytes);
249
+ const coseKeyData = Cbor.decode(coseKeyHex);
250
+ if (coseKeyData['1'] !== 2 ||
251
+ coseKeyData['3'] !== -7 ||
252
+ coseKeyData['-1'] !== 1)
253
+ throw new VerifyError('COSE key must be EC2 (kty=2) with ES256 algorithm (alg=-7) on P-256 curve (crv=1)');
254
+ const publicKey = CoseKey.toPublicKey(coseKeyHex);
255
+ const expectedCoseKeyLen = Bytes.fromHex(CoseKey.fromPublicKey(publicKey)).length;
256
+ const trailingBytes = coseKeyBytes.length - expectedCoseKeyLen;
257
+ if (trailingBytes > 0 && !ed)
258
+ throw new VerifyError(`authData contains ${trailingBytes} unexpected trailing byte(s) after COSE key`);
259
+ const clientDataHash = Hash.sha256(Bytes.fromString(clientDataJSON), {
260
+ as: 'Bytes',
261
+ });
262
+ const verificationData = Bytes.concat(authData, clientDataHash);
263
+ const { fmt, attStmt } = attestation_;
264
+ if (fmt === 'none') {
265
+ if (attestation === 'required')
266
+ throw new VerifyError('Attestation format is "none" but attestation verification is required. ' +
267
+ 'Set `attestation: "none"` to accept unattested credentials.');
268
+ }
269
+ else if (fmt === 'packed') {
270
+ const sig = attStmt.sig;
271
+ const alg = attStmt.alg;
272
+ if (!(sig instanceof Uint8Array) || typeof alg !== 'number')
273
+ throw new VerifyError('Invalid packed attestation statement: missing sig or alg');
274
+ if (alg !== -7)
275
+ throw new VerifyError(`Unsupported attestation algorithm: ${alg} (expected -7 / ES256)`);
276
+ if (attStmt.x5c) {
277
+ throw new VerifyError('Packed attestation with x5c certificate chain is not supported. ' +
278
+ 'Use self attestation (no x5c) or set `attestation: "none"`.');
279
+ }
280
+ const attSignature = Signature.fromDerBytes(sig);
281
+ const verified = P256.verify({
282
+ hash: true,
283
+ payload: verificationData,
284
+ publicKey,
285
+ signature: attSignature,
286
+ });
287
+ if (!verified)
288
+ throw new VerifyError('Attestation signature verification failed');
289
+ }
290
+ else {
291
+ throw new VerifyError(`Unsupported attestation format: "${fmt}"`);
292
+ }
293
+ const id = credential.id ?? Base64.fromBytes(credentialId, utils_js_1.base64UrlOptions);
294
+ const raw = credential.raw ?? {
295
+ authenticatorAttachment: null,
296
+ getClientExtensionResults: () => ({}),
297
+ id,
298
+ rawId: (0, utils_js_1.bytesToArrayBuffer)(credentialId),
299
+ response: {
300
+ attestationObject: credential.attestationObject,
301
+ clientDataJSON: credential.clientDataJSON,
302
+ },
303
+ type: 'public-key',
304
+ };
305
+ return {
306
+ credential: {
307
+ attestationObject: credential.attestationObject,
308
+ clientDataJSON: credential.clientDataJSON,
309
+ id,
310
+ publicKey,
311
+ raw,
312
+ },
313
+ counter,
314
+ ...(uv ? { userVerified: true } : {}),
315
+ ...(be ? { backedUp: bs } : {}),
316
+ ...(be
317
+ ? {
318
+ deviceType: bs ? 'multiDevice' : 'singleDevice',
319
+ }
320
+ : {}),
321
+ };
322
+ }
323
+ class VerifyError extends Errors.BaseError {
324
+ constructor() {
325
+ super(...arguments);
326
+ Object.defineProperty(this, "name", {
327
+ enumerable: true,
328
+ configurable: true,
329
+ writable: true,
330
+ value: 'Registration.VerifyError'
331
+ });
332
+ }
333
+ }
334
+ exports.VerifyError = VerifyError;
335
+ class CreateFailedError extends Errors.BaseError {
336
+ constructor({ cause } = {}) {
337
+ super('Failed to create credential.', {
338
+ cause,
339
+ });
340
+ Object.defineProperty(this, "name", {
341
+ enumerable: true,
342
+ configurable: true,
343
+ writable: true,
344
+ value: 'Registration.CreateFailedError'
345
+ });
346
+ }
347
+ }
348
+ exports.CreateFailedError = CreateFailedError;
349
+ //# sourceMappingURL=Registration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Registration.js","sourceRoot":"","sources":["../../webauthn/Registration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Types.js","sourceRoot":"","sources":["../../webauthn/Types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Types = exports.Registration = exports.Credential = exports.Authenticator = exports.Authentication = void 0;
4
+ exports.Authentication = require("./Authentication.js");
5
+ exports.Authenticator = require("./Authenticator.js");
6
+ exports.Credential = require("./Credential.js");
7
+ exports.Registration = require("./Registration.js");
8
+ exports.Types = require("./Types.js");
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../webauthn/index.ts"],"names":[],"mappings":";;;AASA,wDAAqD;AAOrD,sDAAmD;AAOnD,gDAA6C;AAO7C,oDAAiD;AAOjD,sCAAmC"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.responseKeys = exports.base64UrlOptions = void 0;
4
+ exports.bytesToArrayBuffer = bytesToArrayBuffer;
5
+ exports.bufferSourceToBytes = bufferSourceToBytes;
6
+ exports.serializeExtensions = serializeExtensions;
7
+ exports.deserializeExtensions = deserializeExtensions;
8
+ const Base64 = require("../../core/Base64.js");
9
+ exports.base64UrlOptions = { url: true, pad: false };
10
+ exports.responseKeys = [
11
+ 'attestationObject',
12
+ 'authenticatorData',
13
+ 'clientDataJSON',
14
+ 'signature',
15
+ 'userHandle',
16
+ ];
17
+ function bytesToArrayBuffer(bytes) {
18
+ return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);
19
+ }
20
+ function bufferSourceToBytes(source) {
21
+ if (source instanceof Uint8Array)
22
+ return source;
23
+ if (source instanceof ArrayBuffer)
24
+ return new Uint8Array(source);
25
+ return new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
26
+ }
27
+ function serializeExtensions(extensions) {
28
+ const { prf, ...rest } = extensions;
29
+ return {
30
+ ...rest,
31
+ ...(prf && {
32
+ prf: {
33
+ eval: {
34
+ first: Base64.fromBytes(prf.eval.first, exports.base64UrlOptions),
35
+ },
36
+ },
37
+ }),
38
+ };
39
+ }
40
+ function deserializeExtensions(extensions) {
41
+ const { prf, ...rest } = extensions;
42
+ return {
43
+ ...rest,
44
+ ...(prf && {
45
+ prf: {
46
+ eval: {
47
+ first: Base64.toBytes(prf.eval.first),
48
+ },
49
+ },
50
+ }),
51
+ };
52
+ }
53
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../webauthn/internal/utils.ts"],"names":[],"mappings":";;;AAgBA,gDAKC;AAGD,kDAIC;AAGD,kDAcC;AAGD,sDAcC;AA9DD,+CAA8C;AAIjC,QAAA,gBAAgB,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAW,CAAA;AAGrD,QAAA,YAAY,GAAG;IAC1B,mBAAmB;IACnB,mBAAmB;IACnB,gBAAgB;IAChB,WAAW;IACX,YAAY;CACJ,CAAA;AAGV,SAAgB,kBAAkB,CAAC,KAAiB;IAClD,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CACvB,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CACrB,CAAA;AAClB,CAAC;AAGD,SAAgB,mBAAmB,CAAC,MAA0B;IAC5D,IAAI,MAAM,YAAY,UAAU;QAAE,OAAO,MAAM,CAAA;IAC/C,IAAI,MAAM,YAAY,WAAW;QAAE,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;IAChE,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;AAC5E,CAAC;AAGD,SAAgB,mBAAmB,CACjC,UAAsD;IAEtD,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,UAAU,CAAA;IACnC,OAAO;QACL,GAAG,IAAI;QACP,GAAG,CAAC,GAAG,IAAI;YACT,GAAG,EAAE;gBACH,IAAI,EAAE;oBACJ,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,wBAAgB,CAAC;iBAC1D;aACF;SACF,CAAC;KACH,CAAA;AACH,CAAC;AAGD,SAAgB,qBAAqB,CACnC,UAA4D;IAE5D,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,UAAU,CAAA;IACnC,OAAO;QACL,GAAG,IAAI;QACP,GAAG,CAAC,GAAG,IAAI;YACT,GAAG,EAAE;gBACH,IAAI,EAAE;oBACJ,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;iBACtC;aACF;SACF,CAAC;KACH,CAAA;AACH,CAAC"}
package/_esm/core/P256.js CHANGED
@@ -178,6 +178,6 @@ export function sign(options) {
178
178
  */
179
179
  export function verify(options) {
180
180
  const { hash, payload, publicKey, signature } = options;
181
- return secp256r1.verify(signature, payload instanceof Uint8Array ? payload : Bytes.fromHex(payload), PublicKey.toHex(publicKey).substring(2), ...(hash ? [{ prehash: true, lowS: true }] : []));
181
+ return secp256r1.verify(signature, payload instanceof Uint8Array ? payload : Bytes.fromHex(payload), PublicKey.toHex(publicKey).substring(2), { lowS: true, ...(hash ? { prehash: true } : {}) });
182
182
  }
183
183
  //# sourceMappingURL=P256.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"P256.js","sourceRoot":"","sources":["../../core/P256.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,OAAO,MAAM,uBAAuB,CAAA;AAChD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAG3C,gDAAgD;AAChD,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAA;AAE9B;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAC3B,UAAqC,EAAE;IAEvC,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,CAAA;IAC9B,MAAM,UAAU,GAAG,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC3C,MAAM,SAAS,GAAG,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC,CAAA;IAE9C,OAAO;QACL,UAAU,EAAE,UAAmB;QAC/B,SAAS;KACV,CAAA;AACH,CAAC;AAwBD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAC1B,OAA6B;IAE7B,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;IAC9B,MAAM,KAAK,GAAG,SAAS,CAAC,eAAe,CAAC,cAAc,CACpD,OAAO,UAAU,KAAK,QAAQ;QAC5B,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACvC,CAAA;IACD,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC;AAaD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAoC;IAEpC,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;IACrD,MAAM,KAAK,GAAG,SAAS,CAAC,eAAe,CAAC,OAAO,CAC7C,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACpC,CAAA;IACD,MAAM,aAAa,GACjB,OAAO,UAAU,KAAK,QAAQ;QAC5B,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACxC,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAChC,SAAS,CAAC,KAAK,CAAC,sBAAsB,CAAC,aAAa,CAAC,CACtD,CAAA;IACD,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA,CAAC,oBAAoB;IACtE,IAAI,EAAE,KAAK,KAAK;QAAE,OAAO,GAAG,CAAC,SAAS,CAAC,YAAY,CAAU,CAAA;IAC7D,OAAO,YAAqB,CAAA;AAC9B,CAAC;AA6BD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAC9B,UAAwC,EAAE;IAE1C,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,CAAA;IAC9B,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAA;IAChD,IAAI,EAAE,KAAK,KAAK;QAAE,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAU,CAAA;IACtD,OAAO,KAAc,CAAA;AACvB,CAAC;AAkBD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAiC;IAEjC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;IACtC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,CAAA;IACnC,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC,SAAS,CACxC,MAAM,CAAC,CAAC,CAAC,EACT,MAAM,CAAC,CAAC,CAAC,CACV,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IACzB,MAAM,QAAQ,GACZ,OAAO,YAAY,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IAClE,MAAM,KAAK,GAAG,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IAChE,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC;AAgBD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,IAAI,CAAC,OAAqB;IACxC,MAAM,EACJ,YAAY,GAAG,OAAO,CAAC,YAAY,EACnC,IAAI,EACJ,OAAO,EACP,UAAU,GACX,GAAG,OAAO,CAAA;IACX,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,IAAI,CACvC,OAAO,YAAY,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAChE,UAAU,YAAY,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EACzE;QACE,YAAY,EACV,OAAO,YAAY,KAAK,SAAS;YAC/B,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,IAAI,EAAE,IAAI;QACV,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnC,CACF,CAAA;IACD,OAAO;QACL,CAAC;QACD,CAAC;QACD,OAAO,EAAE,QAAQ;KAClB,CAAA;AACH,CAAC;AA0BD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,MAAM,CAAC,OAAuB;IAC5C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;IACvD,OAAO,SAAS,CAAC,MAAM,CACrB,SAAS,EACT,OAAO,YAAY,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAChE,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EACvC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CACjD,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"P256.js","sourceRoot":"","sources":["../../core/P256.ts"],"names":[],"mappings":"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"}