ox 0.12.1 → 0.12.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/CHANGELOG.md +18 -0
- package/CoseKey/package.json +6 -0
- package/_cjs/core/Cbor.js +58 -0
- package/_cjs/core/Cbor.js.map +1 -1
- package/_cjs/core/CoseKey.js +41 -0
- package/_cjs/core/CoseKey.js.map +1 -0
- package/_cjs/core/Json.js +26 -0
- package/_cjs/core/Json.js.map +1 -1
- package/_cjs/core/WebAuthnP256.js +24 -5
- package/_cjs/core/WebAuthnP256.js.map +1 -1
- package/_cjs/index.js +3 -2
- package/_cjs/index.js.map +1 -1
- package/_cjs/version.js +1 -1
- package/_esm/core/Cbor.js +59 -0
- package/_esm/core/Cbor.js.map +1 -1
- package/_esm/core/CoseKey.js +74 -0
- package/_esm/core/CoseKey.js.map +1 -0
- package/_esm/core/Json.js +52 -0
- package/_esm/core/Json.js.map +1 -1
- package/_esm/core/WebAuthnP256.js +75 -5
- package/_esm/core/WebAuthnP256.js.map +1 -1
- package/_esm/index.js +32 -0
- package/_esm/index.js.map +1 -1
- package/_esm/version.js +1 -1
- package/_types/core/Cbor.d.ts.map +1 -1
- package/_types/core/CoseKey.d.ts +56 -0
- package/_types/core/CoseKey.d.ts.map +1 -0
- package/_types/core/Json.d.ts +31 -0
- package/_types/core/Json.d.ts.map +1 -1
- package/_types/core/WebAuthnP256.d.ts +71 -0
- package/_types/core/WebAuthnP256.d.ts.map +1 -1
- package/_types/index.d.ts +32 -0
- package/_types/index.d.ts.map +1 -1
- package/_types/version.d.ts +1 -1
- package/core/Cbor.ts +64 -0
- package/core/CoseKey.ts +93 -0
- package/core/Json.ts +57 -0
- package/core/WebAuthnP256.ts +113 -4
- package/index.ts +32 -1
- package/package.json +6 -1
- package/version.ts +1 -1
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import * as Cbor from './Cbor.js';
|
|
2
|
+
import * as Errors from './Errors.js';
|
|
3
|
+
import * as PublicKey from './PublicKey.js';
|
|
4
|
+
/**
|
|
5
|
+
* Converts a P256 {@link ox#PublicKey.PublicKey} to a CBOR-encoded COSE_Key.
|
|
6
|
+
*
|
|
7
|
+
* The COSE_Key uses integer map keys per [RFC 9053](https://datatracker.ietf.org/doc/html/rfc9053):
|
|
8
|
+
* - `1` (kty): `2` (EC2)
|
|
9
|
+
* - `3` (alg): `-7` (ES256)
|
|
10
|
+
* - `-1` (crv): `1` (P-256)
|
|
11
|
+
* - `-2` (x): x coordinate bytes
|
|
12
|
+
* - `-3` (y): y coordinate bytes
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts twoslash
|
|
16
|
+
* import { CoseKey, P256 } from 'ox'
|
|
17
|
+
*
|
|
18
|
+
* const { publicKey } = P256.createKeyPair()
|
|
19
|
+
*
|
|
20
|
+
* const coseKey = CoseKey.fromPublicKey(publicKey)
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @param publicKey - The P256 public key to convert.
|
|
24
|
+
* @returns The CBOR-encoded COSE_Key as a Hex string.
|
|
25
|
+
*/
|
|
26
|
+
export function fromPublicKey(publicKey) {
|
|
27
|
+
const pkBytes = PublicKey.toBytes(publicKey);
|
|
28
|
+
const x = pkBytes.slice(1, 33);
|
|
29
|
+
const y = pkBytes.slice(33, 65);
|
|
30
|
+
return Cbor.encode(new Map([
|
|
31
|
+
[1, 2], // kty: EC2
|
|
32
|
+
[3, -7], // alg: ES256
|
|
33
|
+
[-1, 1], // crv: P-256
|
|
34
|
+
[-2, x], // x coordinate
|
|
35
|
+
[-3, y], // y coordinate
|
|
36
|
+
]));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Converts a CBOR-encoded COSE_Key to a P256 {@link ox#PublicKey.PublicKey}.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts twoslash
|
|
43
|
+
* import { CoseKey, P256 } from 'ox'
|
|
44
|
+
*
|
|
45
|
+
* const { publicKey } = P256.createKeyPair()
|
|
46
|
+
* const coseKey = CoseKey.fromPublicKey(publicKey)
|
|
47
|
+
*
|
|
48
|
+
* const publicKey2 = CoseKey.toPublicKey(coseKey)
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @param coseKey - The CBOR-encoded COSE_Key.
|
|
52
|
+
* @returns The P256 public key.
|
|
53
|
+
*/
|
|
54
|
+
export function toPublicKey(coseKey) {
|
|
55
|
+
const decoded = Cbor.decode(coseKey);
|
|
56
|
+
const x = decoded['-2'];
|
|
57
|
+
const y = decoded['-3'];
|
|
58
|
+
if (!(x instanceof Uint8Array) || !(y instanceof Uint8Array))
|
|
59
|
+
throw new InvalidCoseKeyError();
|
|
60
|
+
return PublicKey.from(new Uint8Array([0x04, ...x, ...y]));
|
|
61
|
+
}
|
|
62
|
+
/** Thrown when a COSE_Key does not contain valid P256 public key coordinates. */
|
|
63
|
+
export class InvalidCoseKeyError extends Errors.BaseError {
|
|
64
|
+
constructor() {
|
|
65
|
+
super('COSE_Key does not contain valid P256 public key coordinates.');
|
|
66
|
+
Object.defineProperty(this, "name", {
|
|
67
|
+
enumerable: true,
|
|
68
|
+
configurable: true,
|
|
69
|
+
writable: true,
|
|
70
|
+
value: 'CoseKey.InvalidCoseKeyError'
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=CoseKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CoseKey.js","sourceRoot":"","sources":["../../core/CoseKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,aAAa,CAAC,SAA8B;IAC1D,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC5C,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC9B,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC/B,OAAO,IAAI,CAAC,MAAM,CAChB,IAAI,GAAG,CAAkB;QACvB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW;QACnB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa;QACtB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa;QACtB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe;QACxB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe;KACzB,CAAC,CACH,CAAA;AACH,CAAC;AASD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAA0B,OAAO,CAAC,CAAA;IAE7D,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACvB,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEvB,IAAI,CAAC,CAAC,CAAC,YAAY,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,UAAU,CAAC;QAC1D,MAAM,IAAI,mBAAmB,EAAE,CAAA;IAEjC,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3D,CAAC;AAUD,iFAAiF;AACjF,MAAM,OAAO,mBAAoB,SAAQ,MAAM,CAAC,SAAS;IAGvD;QACE,KAAK,CAAC,8DAA8D,CAAC,CAAA;QAHrD;;;;mBAAO,6BAA6B;WAAA;IAItD,CAAC;CACF"}
|
package/_esm/core/Json.js
CHANGED
|
@@ -1,4 +1,56 @@
|
|
|
1
1
|
const bigIntSuffix = '#__bigint';
|
|
2
|
+
/**
|
|
3
|
+
* Serializes a value to a canonical JSON string as defined by
|
|
4
|
+
* [RFC 8785 (JSON Canonicalization Scheme)](https://www.rfc-editor.org/rfc/rfc8785).
|
|
5
|
+
*
|
|
6
|
+
* - Object keys are sorted recursively by UTF-16 code unit comparison.
|
|
7
|
+
* - Primitives are serialized per ECMAScript rules (no trailing zeros on numbers, etc.).
|
|
8
|
+
* - No whitespace is inserted.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts twoslash
|
|
12
|
+
* import { Json } from 'ox'
|
|
13
|
+
*
|
|
14
|
+
* const json = Json.canonicalize({ b: 2, a: 1 })
|
|
15
|
+
* // @log: '{"a":1,"b":2}'
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts twoslash
|
|
20
|
+
* import { Json } from 'ox'
|
|
21
|
+
*
|
|
22
|
+
* const json = Json.canonicalize({ z: [3, { y: 1, x: 2 }], a: 'hello' })
|
|
23
|
+
* // @log: '{"a":"hello","z":[3,{"x":2,"y":1}]}'
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @param value - The value to canonicalize.
|
|
27
|
+
* @returns The canonical JSON string.
|
|
28
|
+
*/
|
|
29
|
+
export function canonicalize(value) {
|
|
30
|
+
if (value === null || typeof value === 'boolean' || typeof value === 'string')
|
|
31
|
+
return JSON.stringify(value);
|
|
32
|
+
if (typeof value === 'number') {
|
|
33
|
+
if (!Number.isFinite(value))
|
|
34
|
+
throw new TypeError('Cannot canonicalize non-finite number');
|
|
35
|
+
return Object.is(value, -0) ? '0' : JSON.stringify(value);
|
|
36
|
+
}
|
|
37
|
+
if (typeof value === 'bigint')
|
|
38
|
+
throw new TypeError('Cannot canonicalize bigint');
|
|
39
|
+
if (Array.isArray(value))
|
|
40
|
+
return `[${value.map((item) => canonicalize(item)).join(',')}]`;
|
|
41
|
+
if (typeof value === 'object') {
|
|
42
|
+
const entries = Object.keys(value)
|
|
43
|
+
.sort()
|
|
44
|
+
.reduce((acc, key) => {
|
|
45
|
+
const v = value[key];
|
|
46
|
+
if (v !== undefined)
|
|
47
|
+
acc.push(`${JSON.stringify(key)}:${canonicalize(v)}`);
|
|
48
|
+
return acc;
|
|
49
|
+
}, []);
|
|
50
|
+
return `{${entries.join(',')}}`;
|
|
51
|
+
}
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
2
54
|
/**
|
|
3
55
|
* Parses a JSON string, with support for `bigint`.
|
|
4
56
|
*
|
package/_esm/core/Json.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Json.js","sourceRoot":"","sources":["../../core/Json.ts"],"names":[],"mappings":"AAEA,MAAM,YAAY,GAAG,WAAW,CAAA;AAEhC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,KAAK,CACnB,MAAc,EACd,OAAmE;IAEnE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,MAAM,CAAA;QACpB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC3D,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;QACrD,OAAO,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IACpE,CAAC,CAAC,CAAA;AACJ,CAAC;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,SAAS,CACvB,KAAU,EACV,QAA2E,EAC3E,KAAmC;IAEnC,OAAO,IAAI,CAAC,SAAS,CACnB,KAAK,EACL,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACb,IAAI,OAAO,QAAQ,KAAK,UAAU;YAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC/D,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,GAAG,YAAY,CAAA;QACrE,OAAO,KAAK,CAAA;IACd,CAAC,EACD,KAAK,CACN,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"Json.js","sourceRoot":"","sources":["../../core/Json.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as Base64 from './Base64.js';
|
|
2
2
|
import * as Bytes from './Bytes.js';
|
|
3
|
+
import * as Cbor from './Cbor.js';
|
|
4
|
+
import * as CoseKey from './CoseKey.js';
|
|
3
5
|
import * as Errors from './Errors.js';
|
|
4
6
|
import * as Hash from './Hash.js';
|
|
5
7
|
import * as Hex from './Hex.js';
|
|
@@ -76,15 +78,45 @@ export async function createCredential(options) {
|
|
|
76
78
|
* // @log: "0xa379a6f6eeafb9a55e378c118034e2751e682fab9f2d30ab13d2125586ce194705000001a4"
|
|
77
79
|
* ```
|
|
78
80
|
*
|
|
81
|
+
* @example
|
|
82
|
+
* ### With Attested Credential Data
|
|
83
|
+
*
|
|
84
|
+
* Include a credential ID and public key in the authenticator data (for registration responses):
|
|
85
|
+
*
|
|
86
|
+
* ```ts twoslash
|
|
87
|
+
* import { P256, WebAuthnP256 } from 'ox'
|
|
88
|
+
*
|
|
89
|
+
* const { publicKey } = P256.createKeyPair()
|
|
90
|
+
*
|
|
91
|
+
* const authenticatorData = WebAuthnP256.getAuthenticatorData({
|
|
92
|
+
* rpId: 'example.com',
|
|
93
|
+
* flag: 0x41, // UP + AT
|
|
94
|
+
* credential: {
|
|
95
|
+
* id: new Uint8Array(32),
|
|
96
|
+
* publicKey,
|
|
97
|
+
* },
|
|
98
|
+
* })
|
|
99
|
+
* ```
|
|
100
|
+
*
|
|
79
101
|
* @param options - Options to construct the authenticator data.
|
|
80
102
|
* @returns The authenticator data.
|
|
81
103
|
*/
|
|
82
104
|
export function getAuthenticatorData(options = {}) {
|
|
83
|
-
const { flag = 5, rpId = window.location.hostname, signCount = 0 } = options;
|
|
105
|
+
const { credential, flag = 5, rpId = window.location.hostname, signCount = 0, } = options;
|
|
84
106
|
const rpIdHash = Hash.sha256(Hex.fromString(rpId));
|
|
85
107
|
const flag_bytes = Hex.fromNumber(flag, { size: 1 });
|
|
86
108
|
const signCount_bytes = Hex.fromNumber(signCount, { size: 4 });
|
|
87
|
-
|
|
109
|
+
const base = Hex.concat(rpIdHash, flag_bytes, signCount_bytes);
|
|
110
|
+
if (!credential)
|
|
111
|
+
return base;
|
|
112
|
+
// AAGUID (16 bytes of zeros)
|
|
113
|
+
const aaguid = Hex.fromBytes(new Uint8Array(16));
|
|
114
|
+
// Credential ID
|
|
115
|
+
const credentialId = Hex.fromBytes(credential.id);
|
|
116
|
+
const credIdLen = Hex.fromNumber(credential.id.length, { size: 2 });
|
|
117
|
+
// COSE public key
|
|
118
|
+
const coseKey = CoseKey.fromPublicKey(credential.publicKey);
|
|
119
|
+
return Hex.concat(base, aaguid, credIdLen, credentialId, coseKey);
|
|
88
120
|
}
|
|
89
121
|
/**
|
|
90
122
|
* Constructs the Client Data in stringified JSON format which represents client data that
|
|
@@ -114,15 +146,52 @@ export function getAuthenticatorData(options = {}) {
|
|
|
114
146
|
* @returns The client data.
|
|
115
147
|
*/
|
|
116
148
|
export function getClientDataJSON(options) {
|
|
117
|
-
const { challenge, crossOrigin = false, extraClientData, origin = window.location.origin, } = options;
|
|
149
|
+
const { challenge, crossOrigin = false, extraClientData, origin = window.location.origin, type = 'webauthn.get', } = options;
|
|
118
150
|
return JSON.stringify({
|
|
119
|
-
type
|
|
151
|
+
type,
|
|
120
152
|
challenge: Base64.fromHex(challenge, { url: true, pad: false }),
|
|
121
153
|
origin,
|
|
122
154
|
crossOrigin,
|
|
123
155
|
...extraClientData,
|
|
124
156
|
});
|
|
125
157
|
}
|
|
158
|
+
/**
|
|
159
|
+
* Constructs a CBOR-encoded attestation object for testing WebAuthn registration
|
|
160
|
+
* verification. Combines the authenticator data with an attestation statement.
|
|
161
|
+
*
|
|
162
|
+
* :::warning
|
|
163
|
+
*
|
|
164
|
+
* This function is mainly for testing purposes. In production, the attestation
|
|
165
|
+
* object is returned by the authenticator during `navigator.credentials.create()`.
|
|
166
|
+
*
|
|
167
|
+
* :::
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* ```ts twoslash
|
|
171
|
+
* import { P256, WebAuthnP256 } from 'ox'
|
|
172
|
+
*
|
|
173
|
+
* const { publicKey } = P256.createKeyPair()
|
|
174
|
+
*
|
|
175
|
+
* const attestationObject = WebAuthnP256.getAttestationObject({
|
|
176
|
+
* authData: WebAuthnP256.getAuthenticatorData({
|
|
177
|
+
* rpId: 'example.com',
|
|
178
|
+
* flag: 0x41,
|
|
179
|
+
* credential: { id: new Uint8Array(32), publicKey },
|
|
180
|
+
* }),
|
|
181
|
+
* })
|
|
182
|
+
* ```
|
|
183
|
+
*
|
|
184
|
+
* @param options - Options to construct the attestation object.
|
|
185
|
+
* @returns The CBOR-encoded attestation object as a Hex string.
|
|
186
|
+
*/
|
|
187
|
+
export function getAttestationObject(options) {
|
|
188
|
+
const { attStmt = {}, authData, fmt = 'none' } = options;
|
|
189
|
+
return Cbor.encode({
|
|
190
|
+
fmt,
|
|
191
|
+
attStmt,
|
|
192
|
+
authData: Hex.toBytes(authData),
|
|
193
|
+
});
|
|
194
|
+
}
|
|
126
195
|
/**
|
|
127
196
|
* Returns the creation options for a P256 WebAuthn Credential to be used with
|
|
128
197
|
* the Web Authentication API.
|
|
@@ -403,7 +472,8 @@ export function verify(options) {
|
|
|
403
472
|
// Check that response is for an authentication assertion (if typeIndex is provided)
|
|
404
473
|
if (typeIndex !== undefined) {
|
|
405
474
|
const type = '"type":"webauthn.get"';
|
|
406
|
-
if (type !==
|
|
475
|
+
if (type !==
|
|
476
|
+
clientDataJSON.slice(Number(typeIndex), Number(typeIndex) + type.length))
|
|
407
477
|
return false;
|
|
408
478
|
}
|
|
409
479
|
// Extract and validate the challenge from clientDataJSON
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebAuthnP256.js","sourceRoot":"","sources":["../../core/WebAuthnP256.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAA;AAClD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAoBjC,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC;IAC7C,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG;CACzE,CAAC,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAiC;IAEjC,MAAM,EACJ,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CACjD,MAAM,CAAC,SAAS,CAAC,WAAW,CAC7B,EACD,GAAG,IAAI,EACR,GAAG,OAAO,CAAA;IACX,MAAM,eAAe,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAA;IAC1D,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,CAAC,MAAM,QAAQ,CAChC,eAAwB,CACzB,CAAiC,CAAA;QAClC,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,6BAA6B,EAAE,CAAA;QAE1D,MAAM,QAAQ,GAAG,UAAU,CAAC,QAA4C,CAAA;QACxE,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAA;QAEnE,OAAO;YACL,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,SAAS;YACT,GAAG,EAAE,UAAU;SAChB,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,6BAA6B,CAAC;YACtC,KAAK,EAAE,KAAc;SACtB,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAuBD
|
|
1
|
+
{"version":3,"file":"WebAuthnP256.js","sourceRoot":"","sources":["../../core/WebAuthnP256.ts"],"names":[],"mappings":"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"}
|
package/_esm/index.js
CHANGED
|
@@ -1340,6 +1340,38 @@ export * as Cbor from './core/Cbor.js';
|
|
|
1340
1340
|
* @category Addresses
|
|
1341
1341
|
*/
|
|
1342
1342
|
export * as ContractAddress from './core/ContractAddress.js';
|
|
1343
|
+
/**
|
|
1344
|
+
* Utility functions for converting between COSE_Key and P256 public keys.
|
|
1345
|
+
*
|
|
1346
|
+
* COSE_Key is the key format used in WebAuthn attestation objects, as defined in
|
|
1347
|
+
* [RFC 9053](https://datatracker.ietf.org/doc/html/rfc9053).
|
|
1348
|
+
*
|
|
1349
|
+
* @example
|
|
1350
|
+
* ### Encoding a Public Key to COSE_Key
|
|
1351
|
+
*
|
|
1352
|
+
* ```ts twoslash
|
|
1353
|
+
* import { CoseKey, P256 } from 'ox'
|
|
1354
|
+
*
|
|
1355
|
+
* const { publicKey } = P256.createKeyPair()
|
|
1356
|
+
*
|
|
1357
|
+
* const coseKey = CoseKey.fromPublicKey(publicKey)
|
|
1358
|
+
* ```
|
|
1359
|
+
*
|
|
1360
|
+
* @example
|
|
1361
|
+
* ### Decoding a COSE_Key to Public Key
|
|
1362
|
+
*
|
|
1363
|
+
* ```ts twoslash
|
|
1364
|
+
* import { CoseKey, P256 } from 'ox'
|
|
1365
|
+
*
|
|
1366
|
+
* const { publicKey } = P256.createKeyPair()
|
|
1367
|
+
* const coseKey = CoseKey.fromPublicKey(publicKey)
|
|
1368
|
+
*
|
|
1369
|
+
* const publicKey2 = CoseKey.toPublicKey(coseKey)
|
|
1370
|
+
* ```
|
|
1371
|
+
*
|
|
1372
|
+
* @category Crypto
|
|
1373
|
+
*/
|
|
1374
|
+
export * as CoseKey from './core/CoseKey.js';
|
|
1343
1375
|
/**
|
|
1344
1376
|
* Utilities for working with Ed25519 signatures and key pairs.
|
|
1345
1377
|
*
|
package/_esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkHG;AACH,OAAO,KAAK,GAAG,MAAM,eAAe,CAAA;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyEG;AACH,OAAO,KAAK,cAAc,MAAM,0BAA0B,CAAA;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;AACH,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgHG;AACH,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2FG;AACH,OAAO,KAAK,WAAW,MAAM,uBAAuB,CAAA;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AACH,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAA;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqGG;AACH,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAA;AAExD;;;;GAIG;AACH,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAA;AAElD;;;;GAIG;AACH,OAAO,KAAK,YAAY,MAAM,wBAAwB,CAAA;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAA;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAA;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAA;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAA;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAA;AAE1C;;;;GAIG;AACH,OAAO,KAAK,eAAe,MAAM,2BAA2B,CAAA;AAE5D;;;;GAIG;AACH,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAA;AAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAA;AAExC;;;;GAIG;AACH,OAAO,KAAK,cAAc,MAAM,0BAA0B,CAAA;AAE1D;;;;GAIG;AACH,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAA;AAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiHG;AACH,OAAO,KAAK,GAAG,MAAM,eAAe,CAAA;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6HG;AACH,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAA;AAExC,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAA;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/_esm/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cbor.d.ts","sourceRoot":"","sources":["../../core/Cbor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Cbor.d.ts","sourceRoot":"","sources":["../../core/Cbor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import * as Cbor from './Cbor.js';
|
|
2
|
+
import * as Errors from './Errors.js';
|
|
3
|
+
import type * as Hex from './Hex.js';
|
|
4
|
+
import * as PublicKey from './PublicKey.js';
|
|
5
|
+
/**
|
|
6
|
+
* Converts a P256 {@link ox#PublicKey.PublicKey} to a CBOR-encoded COSE_Key.
|
|
7
|
+
*
|
|
8
|
+
* The COSE_Key uses integer map keys per [RFC 9053](https://datatracker.ietf.org/doc/html/rfc9053):
|
|
9
|
+
* - `1` (kty): `2` (EC2)
|
|
10
|
+
* - `3` (alg): `-7` (ES256)
|
|
11
|
+
* - `-1` (crv): `1` (P-256)
|
|
12
|
+
* - `-2` (x): x coordinate bytes
|
|
13
|
+
* - `-3` (y): y coordinate bytes
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts twoslash
|
|
17
|
+
* import { CoseKey, P256 } from 'ox'
|
|
18
|
+
*
|
|
19
|
+
* const { publicKey } = P256.createKeyPair()
|
|
20
|
+
*
|
|
21
|
+
* const coseKey = CoseKey.fromPublicKey(publicKey)
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @param publicKey - The P256 public key to convert.
|
|
25
|
+
* @returns The CBOR-encoded COSE_Key as a Hex string.
|
|
26
|
+
*/
|
|
27
|
+
export declare function fromPublicKey(publicKey: PublicKey.PublicKey): Hex.Hex;
|
|
28
|
+
export declare namespace fromPublicKey {
|
|
29
|
+
type ErrorType = PublicKey.toBytes.ErrorType | Cbor.encode.ErrorType | Errors.GlobalErrorType;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Converts a CBOR-encoded COSE_Key to a P256 {@link ox#PublicKey.PublicKey}.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts twoslash
|
|
36
|
+
* import { CoseKey, P256 } from 'ox'
|
|
37
|
+
*
|
|
38
|
+
* const { publicKey } = P256.createKeyPair()
|
|
39
|
+
* const coseKey = CoseKey.fromPublicKey(publicKey)
|
|
40
|
+
*
|
|
41
|
+
* const publicKey2 = CoseKey.toPublicKey(coseKey)
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* @param coseKey - The CBOR-encoded COSE_Key.
|
|
45
|
+
* @returns The P256 public key.
|
|
46
|
+
*/
|
|
47
|
+
export declare function toPublicKey(coseKey: Hex.Hex): PublicKey.PublicKey;
|
|
48
|
+
export declare namespace toPublicKey {
|
|
49
|
+
type ErrorType = Cbor.decode.ErrorType | PublicKey.from.ErrorType | InvalidCoseKeyError | Errors.GlobalErrorType;
|
|
50
|
+
}
|
|
51
|
+
/** Thrown when a COSE_Key does not contain valid P256 public key coordinates. */
|
|
52
|
+
export declare class InvalidCoseKeyError extends Errors.BaseError {
|
|
53
|
+
readonly name = "CoseKey.InvalidCoseKeyError";
|
|
54
|
+
constructor();
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=CoseKey.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CoseKey.d.ts","sourceRoot":"","sources":["../../core/CoseKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,KAAK,GAAG,MAAM,UAAU,CAAA;AACpC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,CAarE;AAED,MAAM,CAAC,OAAO,WAAW,aAAa,CAAC;IACrC,KAAK,SAAS,GACV,SAAS,CAAC,OAAO,CAAC,SAAS,GAC3B,IAAI,CAAC,MAAM,CAAC,SAAS,GACrB,MAAM,CAAC,eAAe,CAAA;CAC3B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,SAAS,CAUjE;AAED,MAAM,CAAC,OAAO,WAAW,WAAW,CAAC;IACnC,KAAK,SAAS,GACV,IAAI,CAAC,MAAM,CAAC,SAAS,GACrB,SAAS,CAAC,IAAI,CAAC,SAAS,GACxB,mBAAmB,GACnB,MAAM,CAAC,eAAe,CAAA;CAC3B;AAED,iFAAiF;AACjF,qBAAa,mBAAoB,SAAQ,MAAM,CAAC,SAAS;IACvD,SAAkB,IAAI,iCAAgC;;CAKvD"}
|
package/_types/core/Json.d.ts
CHANGED
|
@@ -1,4 +1,35 @@
|
|
|
1
1
|
import type * as Errors from './Errors.js';
|
|
2
|
+
/**
|
|
3
|
+
* Serializes a value to a canonical JSON string as defined by
|
|
4
|
+
* [RFC 8785 (JSON Canonicalization Scheme)](https://www.rfc-editor.org/rfc/rfc8785).
|
|
5
|
+
*
|
|
6
|
+
* - Object keys are sorted recursively by UTF-16 code unit comparison.
|
|
7
|
+
* - Primitives are serialized per ECMAScript rules (no trailing zeros on numbers, etc.).
|
|
8
|
+
* - No whitespace is inserted.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts twoslash
|
|
12
|
+
* import { Json } from 'ox'
|
|
13
|
+
*
|
|
14
|
+
* const json = Json.canonicalize({ b: 2, a: 1 })
|
|
15
|
+
* // @log: '{"a":1,"b":2}'
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts twoslash
|
|
20
|
+
* import { Json } from 'ox'
|
|
21
|
+
*
|
|
22
|
+
* const json = Json.canonicalize({ z: [3, { y: 1, x: 2 }], a: 'hello' })
|
|
23
|
+
* // @log: '{"a":"hello","z":[3,{"x":2,"y":1}]}'
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @param value - The value to canonicalize.
|
|
27
|
+
* @returns The canonical JSON string.
|
|
28
|
+
*/
|
|
29
|
+
export declare function canonicalize(value: unknown): string;
|
|
30
|
+
export declare namespace canonicalize {
|
|
31
|
+
type ErrorType = Errors.GlobalErrorType;
|
|
32
|
+
}
|
|
2
33
|
/**
|
|
3
34
|
* Parses a JSON string, with support for `bigint`.
|
|
4
35
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Json.d.ts","sourceRoot":"","sources":["../../core/Json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,aAAa,CAAA;AAI1C;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,KAAK,CACnB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,SAAS,OAQpE;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,KAAK,SAAS,GAAG,MAAM,CAAC,eAAe,CAAA;CACxC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,GAAG,EACV,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,EAC3E,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,UAWpC;AAED,MAAM,CAAC,OAAO,WAAW,SAAS,CAAC;IACjC,KAAK,SAAS,GAAG,MAAM,CAAC,eAAe,CAAA;CACxC"}
|
|
1
|
+
{"version":3,"file":"Json.d.ts","sourceRoot":"","sources":["../../core/Json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,aAAa,CAAA;AAI1C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAwBnD;AAED,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IACpC,KAAK,SAAS,GAAG,MAAM,CAAC,eAAe,CAAA;CACxC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,KAAK,CACnB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,SAAS,OAQpE;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,KAAK,SAAS,GAAG,MAAM,CAAC,eAAe,CAAA;CACxC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,GAAG,EACV,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,EAC3E,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,UAWpC;AAED,MAAM,CAAC,OAAO,WAAW,SAAS,CAAC;IACjC,KAAK,SAAS,GAAG,MAAM,CAAC,eAAe,CAAA;CACxC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as Base64 from './Base64.js';
|
|
2
2
|
import * as Bytes from './Bytes.js';
|
|
3
|
+
import * as Cbor from './Cbor.js';
|
|
3
4
|
import * as Errors from './Errors.js';
|
|
4
5
|
import * as Hash from './Hash.js';
|
|
5
6
|
import * as Hex from './Hex.js';
|
|
@@ -83,12 +84,39 @@ export declare namespace createCredential {
|
|
|
83
84
|
* // @log: "0xa379a6f6eeafb9a55e378c118034e2751e682fab9f2d30ab13d2125586ce194705000001a4"
|
|
84
85
|
* ```
|
|
85
86
|
*
|
|
87
|
+
* @example
|
|
88
|
+
* ### With Attested Credential Data
|
|
89
|
+
*
|
|
90
|
+
* Include a credential ID and public key in the authenticator data (for registration responses):
|
|
91
|
+
*
|
|
92
|
+
* ```ts twoslash
|
|
93
|
+
* import { P256, WebAuthnP256 } from 'ox'
|
|
94
|
+
*
|
|
95
|
+
* const { publicKey } = P256.createKeyPair()
|
|
96
|
+
*
|
|
97
|
+
* const authenticatorData = WebAuthnP256.getAuthenticatorData({
|
|
98
|
+
* rpId: 'example.com',
|
|
99
|
+
* flag: 0x41, // UP + AT
|
|
100
|
+
* credential: {
|
|
101
|
+
* id: new Uint8Array(32),
|
|
102
|
+
* publicKey,
|
|
103
|
+
* },
|
|
104
|
+
* })
|
|
105
|
+
* ```
|
|
106
|
+
*
|
|
86
107
|
* @param options - Options to construct the authenticator data.
|
|
87
108
|
* @returns The authenticator data.
|
|
88
109
|
*/
|
|
89
110
|
export declare function getAuthenticatorData(options?: getAuthenticatorData.Options): Hex.Hex;
|
|
90
111
|
export declare namespace getAuthenticatorData {
|
|
91
112
|
type Options = {
|
|
113
|
+
/** Attested credential data to include (credential ID + public key). When set, the AT flag (0x40) should also be set. */
|
|
114
|
+
credential?: {
|
|
115
|
+
/** The credential ID as raw bytes. */
|
|
116
|
+
id: Uint8Array;
|
|
117
|
+
/** The P256 public key associated with the credential. */
|
|
118
|
+
publicKey: PublicKey.PublicKey;
|
|
119
|
+
} | undefined;
|
|
92
120
|
/** A bitfield that indicates various attributes that were asserted by the authenticator. [Read more](https://developer.mozilla.org/en-US/docs/Web/API/Web_Authentication_API/Authenticator_data#flags) */
|
|
93
121
|
flag?: number | undefined;
|
|
94
122
|
/** The [Relying Party ID](https://w3c.github.io/webauthn/#relying-party-identifier) that the credential is scoped to. */
|
|
@@ -136,9 +164,52 @@ export declare namespace getClientDataJSON {
|
|
|
136
164
|
extraClientData?: Record<string, unknown> | undefined;
|
|
137
165
|
/** The fully qualified origin of the relying party which has been given by the client/browser to the authenticator. */
|
|
138
166
|
origin?: string | undefined;
|
|
167
|
+
/** The WebAuthn ceremony type. @default 'webauthn.get' */
|
|
168
|
+
type?: 'webauthn.create' | 'webauthn.get' | undefined;
|
|
139
169
|
};
|
|
140
170
|
type ErrorType = Errors.GlobalErrorType;
|
|
141
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Constructs a CBOR-encoded attestation object for testing WebAuthn registration
|
|
174
|
+
* verification. Combines the authenticator data with an attestation statement.
|
|
175
|
+
*
|
|
176
|
+
* :::warning
|
|
177
|
+
*
|
|
178
|
+
* This function is mainly for testing purposes. In production, the attestation
|
|
179
|
+
* object is returned by the authenticator during `navigator.credentials.create()`.
|
|
180
|
+
*
|
|
181
|
+
* :::
|
|
182
|
+
*
|
|
183
|
+
* @example
|
|
184
|
+
* ```ts twoslash
|
|
185
|
+
* import { P256, WebAuthnP256 } from 'ox'
|
|
186
|
+
*
|
|
187
|
+
* const { publicKey } = P256.createKeyPair()
|
|
188
|
+
*
|
|
189
|
+
* const attestationObject = WebAuthnP256.getAttestationObject({
|
|
190
|
+
* authData: WebAuthnP256.getAuthenticatorData({
|
|
191
|
+
* rpId: 'example.com',
|
|
192
|
+
* flag: 0x41,
|
|
193
|
+
* credential: { id: new Uint8Array(32), publicKey },
|
|
194
|
+
* }),
|
|
195
|
+
* })
|
|
196
|
+
* ```
|
|
197
|
+
*
|
|
198
|
+
* @param options - Options to construct the attestation object.
|
|
199
|
+
* @returns The CBOR-encoded attestation object as a Hex string.
|
|
200
|
+
*/
|
|
201
|
+
export declare function getAttestationObject(options: getAttestationObject.Options): Hex.Hex;
|
|
202
|
+
export declare namespace getAttestationObject {
|
|
203
|
+
type Options = {
|
|
204
|
+
/** Attestation statement. */
|
|
205
|
+
attStmt?: Record<string, unknown> | undefined;
|
|
206
|
+
/** Authenticator data as a Hex string (from {@link ox#WebAuthnP256.(getAuthenticatorData:function)}). */
|
|
207
|
+
authData: Hex.Hex;
|
|
208
|
+
/** Attestation format. @default 'none' */
|
|
209
|
+
fmt?: string | undefined;
|
|
210
|
+
};
|
|
211
|
+
type ErrorType = Cbor.encode.ErrorType | Errors.GlobalErrorType;
|
|
212
|
+
}
|
|
142
213
|
/**
|
|
143
214
|
* Returns the creation options for a P256 WebAuthn Credential to be used with
|
|
144
215
|
* the Web Authentication API.
|