@tinfoilsh/passkey-kit 0.2.0 → 0.2.2
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/README.md +15 -1
- package/dist/crypto.d.ts +14 -0
- package/dist/crypto.d.ts.map +1 -1
- package/dist/crypto.js +22 -6
- package/dist/crypto.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/kit.d.ts.map +1 -1
- package/dist/kit.js +36 -6
- package/dist/kit.js.map +1 -1
- package/package.json +1 -1
- package/src/crypto.ts +22 -6
- package/src/index.ts +1 -0
- package/src/kit.ts +34 -5
package/README.md
CHANGED
|
@@ -88,6 +88,13 @@ insecure because same-origin scripts can read the cached secret material.
|
|
|
88
88
|
recovery. `wrapKeyWithPRFResult` and `unwrapKeyWithPRFResult` perform explicit
|
|
89
89
|
crypto-only operations without starting a ceremony or accessing storage.
|
|
90
90
|
|
|
91
|
+
The standalone `wrapKey(profile, credentialId, prfOutput, key)` and
|
|
92
|
+
`unwrapKey(profile, prfOutput, wrappedKey)` functions expose the same
|
|
93
|
+
crypto-only operations without constructing a manager, for migration and
|
|
94
|
+
interoperability tooling that already holds raw PRF output. They apply the
|
|
95
|
+
same validation as the manager methods and treat the PRF output as secret
|
|
96
|
+
key material.
|
|
97
|
+
|
|
91
98
|
## Swift quickstart
|
|
92
99
|
|
|
93
100
|
Add this repository as a Swift Package Manager dependency and link the
|
|
@@ -135,6 +142,11 @@ Advanced flows can call `evaluateCredential(credentialIds:interaction:)`.
|
|
|
135
142
|
Its `prfResult.output` is raw secret key material. Do not log, transmit, or
|
|
136
143
|
retain it longer than necessary.
|
|
137
144
|
|
|
145
|
+
The standalone `wrapKey(profile:credentialId:prfOutput:key:)` and
|
|
146
|
+
`unwrapKey(profile:prfOutput:wrapped:)` functions expose the same crypto-only
|
|
147
|
+
operations without constructing a manager or providing a presentation anchor,
|
|
148
|
+
for migration and interoperability tooling that already holds raw PRF output.
|
|
149
|
+
|
|
138
150
|
Apple hosts must pass a `PasskeyPresentationAnchorProviding` implementation to
|
|
139
151
|
the manager as `presentationAnchorProvider`. The provider returns the iOS or
|
|
140
152
|
macOS window AuthenticationServices uses for interactive presentation. Making
|
|
@@ -147,7 +159,9 @@ generic Apple adapter that stores cached PRF output with
|
|
|
147
159
|
`kSecAttrAccessibleWhenUnlockedThisDeviceOnly`. Its records are device-bound and
|
|
148
160
|
unavailable while the device is locked, but any process context that can read
|
|
149
161
|
the item can recover keys without another passkey prompt. Choose storage based
|
|
150
|
-
on the host app's threat model.
|
|
162
|
+
on the host app's threat model. Hosts migrating from a pre-kit cache format can
|
|
163
|
+
pass the optional `decodeCachedRecord` hook to decode non-canonical stored
|
|
164
|
+
payloads instead of forking the adapter. The host app must also provide the
|
|
151
165
|
`webcredentials` associated-domain entitlement for its relying-party domain.
|
|
152
166
|
Keychain operations are synchronous and can block the manager's main actor.
|
|
153
167
|
|
package/dist/crypto.d.ts
CHANGED
|
@@ -7,6 +7,20 @@ export declare function validateCredentialId(credentialId: string): void;
|
|
|
7
7
|
export declare function validateKey(key: Uint8Array, operation?: string): void;
|
|
8
8
|
export declare function validateWrappedKey(wrapped: WrappedKey, profile: PasskeyKeyProfile): void;
|
|
9
9
|
export declare function deriveWrappingKey(prfOutput: Uint8Array, profile: PasskeyKeyProfile): Promise<CryptoKey>;
|
|
10
|
+
/**
|
|
11
|
+
* Wraps exactly 32 key bytes with a key derived from raw WebAuthn PRF
|
|
12
|
+
* output, without starting a ceremony or accessing storage. The PRF
|
|
13
|
+
* output is secret key material: callers must avoid logging,
|
|
14
|
+
* transmitting, or retaining it longer than necessary. High-level
|
|
15
|
+
* applications should prefer a manager's `createAndWrapKey`.
|
|
16
|
+
*/
|
|
10
17
|
export declare function wrapKey(profile: PasskeyKeyProfile, credentialId: string, prfOutput: Uint8Array, key: Uint8Array, operation?: string): Promise<WrappedKey>;
|
|
18
|
+
/**
|
|
19
|
+
* Unwraps a `WrappedKey` with a key derived from raw WebAuthn PRF
|
|
20
|
+
* output, without starting a ceremony or accessing storage. The PRF
|
|
21
|
+
* output is secret key material: callers must avoid logging,
|
|
22
|
+
* transmitting, or retaining it longer than necessary. High-level
|
|
23
|
+
* applications should prefer a manager's `recoverKey`.
|
|
24
|
+
*/
|
|
11
25
|
export declare function unwrapKey(profile: PasskeyKeyProfile, prfOutput: Uint8Array, wrapped: WrappedKey, operation?: string): Promise<Uint8Array>;
|
|
12
26
|
//# sourceMappingURL=crypto.d.ts.map
|
package/dist/crypto.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMhE,eAAO,MAAM,YAAY,+DAKf,CAAC;AAQX,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,CAqBpF;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,iBAAiB,EACvB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAST;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAmBlF;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAE/D;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAIrE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAmBxF;AAED,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,SAAS,CAAC,CAwBpB;AAED,wBAAsB,OAAO,CAC3B,OAAO,EAAE,iBAAiB,EAC1B,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,UAAU,EACrB,GAAG,EAAE,UAAU,EACf,SAAS,
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMhE,eAAO,MAAM,YAAY,+DAKf,CAAC;AAQX,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,CAqBpF;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,iBAAiB,EACvB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAST;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAmBlF;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAE/D;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAIrE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAmBxF;AAED,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,SAAS,CAAC,CAwBpB;AAED;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,iBAAiB,EAC1B,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,UAAU,EACrB,GAAG,EAAE,UAAU,EACf,SAAS,SAAY,GACpB,OAAO,CAAC,UAAU,CAAC,CAsBrB;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,UAAU,EACnB,SAAS,SAAc,GACtB,OAAO,CAAC,UAAU,CAAC,CAiBrB"}
|
package/dist/crypto.js
CHANGED
|
@@ -116,15 +116,23 @@ export async function deriveWrappingKey(prfOutput, profile) {
|
|
|
116
116
|
throw operationFailed("failed to derive wrapping key", cause);
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
|
-
|
|
119
|
+
/**
|
|
120
|
+
* Wraps exactly 32 key bytes with a key derived from raw WebAuthn PRF
|
|
121
|
+
* output, without starting a ceremony or accessing storage. The PRF
|
|
122
|
+
* output is secret key material: callers must avoid logging,
|
|
123
|
+
* transmitting, or retaining it longer than necessary. High-level
|
|
124
|
+
* applications should prefer a manager's `createAndWrapKey`.
|
|
125
|
+
*/
|
|
126
|
+
export async function wrapKey(profile, credentialId, prfOutput, key, operation = "wrapKey") {
|
|
127
|
+
const validatedProfile = copyAndValidateProfile(profile);
|
|
120
128
|
validateCredentialId(credentialId);
|
|
121
129
|
validateKey(key, operation);
|
|
122
130
|
try {
|
|
123
|
-
const wrappingKey = await deriveWrappingKey(prfOutput,
|
|
131
|
+
const wrappingKey = await deriveWrappingKey(prfOutput, validatedProfile);
|
|
124
132
|
const iv = crypto.getRandomValues(new Uint8Array(AES_GCM_IV_BYTES));
|
|
125
133
|
const ciphertext = await crypto.subtle.encrypt({ name: "AES-GCM", iv: iv }, wrappingKey, key);
|
|
126
134
|
return {
|
|
127
|
-
profile:
|
|
135
|
+
profile: validatedProfile,
|
|
128
136
|
credentialId,
|
|
129
137
|
kekIvHex: bytesToHex(iv),
|
|
130
138
|
wrappedKeyHex: bytesToHex(new Uint8Array(ciphertext)),
|
|
@@ -136,10 +144,18 @@ export async function wrapKey(profile, credentialId, prfOutput, key, operation =
|
|
|
136
144
|
throw operationFailed("failed to wrap key", cause, operation);
|
|
137
145
|
}
|
|
138
146
|
}
|
|
139
|
-
|
|
140
|
-
|
|
147
|
+
/**
|
|
148
|
+
* Unwraps a `WrappedKey` with a key derived from raw WebAuthn PRF
|
|
149
|
+
* output, without starting a ceremony or accessing storage. The PRF
|
|
150
|
+
* output is secret key material: callers must avoid logging,
|
|
151
|
+
* transmitting, or retaining it longer than necessary. High-level
|
|
152
|
+
* applications should prefer a manager's `recoverKey`.
|
|
153
|
+
*/
|
|
154
|
+
export async function unwrapKey(profile, prfOutput, wrapped, operation = "unwrapKey") {
|
|
155
|
+
const validatedProfile = copyAndValidateProfile(profile);
|
|
156
|
+
validateWrappedKey(wrapped, validatedProfile);
|
|
141
157
|
try {
|
|
142
|
-
const wrappingKey = await deriveWrappingKey(prfOutput,
|
|
158
|
+
const wrappingKey = await deriveWrappingKey(prfOutput, validatedProfile);
|
|
143
159
|
const plaintext = await crypto.subtle.decrypt({ name: "AES-GCM", iv: hexToBytes(wrapped.kekIvHex) }, wrappingKey, hexToBytes(wrapped.wrappedKeyHex));
|
|
144
160
|
const key = new Uint8Array(plaintext);
|
|
145
161
|
validateKey(key, operation);
|
package/dist/crypto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { PasskeyKeyError } from "./errors.js";
|
|
2
2
|
export type { PasskeyKeyErrorCategory } from "./errors.js";
|
|
3
3
|
export { createPasskeyKeyManager } from "./kit.js";
|
|
4
|
+
export { unwrapKey, wrapKey } from "./crypto.js";
|
|
4
5
|
export { decodeWrappedKeyRecord, encodeWrappedKeyRecord, } from "./wrapped-key-record-codec.js";
|
|
5
6
|
export { createInsecureBrowserLocalStoragePasskeyKeyStorage, createMemoryPasskeyKeyStorage, } from "./storage.js";
|
|
6
7
|
export type { CachedPRFResult, PasskeyKeyStorage } from "./storage.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,kDAAkD,EAClD,6BAA6B,GAC9B,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACvE,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,YAAY,EACZ,eAAe,EACf,cAAc,EACd,2BAA2B,EAC3B,yBAAyB,EACzB,UAAU,EACV,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,kDAAkD,EAClD,6BAA6B,GAC9B,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACvE,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,YAAY,EACZ,eAAe,EACf,cAAc,EACd,2BAA2B,EAC3B,yBAAyB,EACzB,UAAU,EACV,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { PasskeyKeyError } from "./errors.js";
|
|
2
2
|
export { createPasskeyKeyManager } from "./kit.js";
|
|
3
|
+
export { unwrapKey, wrapKey } from "./crypto.js";
|
|
3
4
|
export { decodeWrappedKeyRecord, encodeWrappedKeyRecord, } from "./wrapped-key-record-codec.js";
|
|
4
5
|
export { createInsecureBrowserLocalStoragePasskeyKeyStorage, createMemoryPasskeyKeyStorage, } from "./storage.js";
|
|
5
6
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,kDAAkD,EAClD,6BAA6B,GAC9B,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,kDAAkD,EAClD,6BAA6B,GAC9B,MAAM,cAAc,CAAC"}
|
package/dist/kit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kit.d.ts","sourceRoot":"","sources":["../src/kit.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAGV,iBAAiB,EACjB,uBAAuB,EAMxB,MAAM,YAAY,CAAC;AAoFpB,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,uBAAuB,GAC9B,iBAAiB,
|
|
1
|
+
{"version":3,"file":"kit.d.ts","sourceRoot":"","sources":["../src/kit.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAGV,iBAAiB,EACjB,uBAAuB,EAMxB,MAAM,YAAY,CAAC;AAoFpB,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,uBAAuB,GAC9B,iBAAiB,CA2YnB"}
|
package/dist/kit.js
CHANGED
|
@@ -178,9 +178,21 @@ export function createPasskeyKeyManager(config) {
|
|
|
178
178
|
if (!Array.isArray(credentialIds) || credentialIds.length === 0) {
|
|
179
179
|
throw invalidInput("at least one credentialId is required");
|
|
180
180
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
181
|
+
// Skip candidates that are not canonical base64url instead of
|
|
182
|
+
// failing the ceremony: one malformed ID (e.g. a legacy record
|
|
183
|
+
// written by another client) must not block assertion against
|
|
184
|
+
// the valid ones.
|
|
185
|
+
const unique = [...new Set(credentialIds)].filter((credentialId) => {
|
|
186
|
+
try {
|
|
187
|
+
validateCredentialId(credentialId);
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
if (unique.length === 0) {
|
|
195
|
+
throw invalidInput("no credentialId is valid unpadded base64url");
|
|
184
196
|
}
|
|
185
197
|
const preferred = preferredCredentialId ?? loadPreferredCredentialId();
|
|
186
198
|
if (!preferred || !unique.includes(preferred))
|
|
@@ -234,9 +246,27 @@ export function createPasskeyKeyManager(config) {
|
|
|
234
246
|
function prepareRecovery(input) {
|
|
235
247
|
if (!input || typeof input !== "object")
|
|
236
248
|
throw invalidInput("input is required");
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
249
|
+
// Skip malformed candidates (wrong profile, non-canonical
|
|
250
|
+
// credential ID, bad lengths) rather than failing the whole set,
|
|
251
|
+
// so one corrupt or foreign bundle cannot block recovery from the
|
|
252
|
+
// healthy ones. Throw only when no usable candidate remains.
|
|
253
|
+
if (!Array.isArray(input.wrappedKeys) || input.wrappedKeys.length === 0) {
|
|
254
|
+
throw invalidInput("at least one wrapped key is required");
|
|
255
|
+
}
|
|
256
|
+
const wrappedKeys = [];
|
|
257
|
+
for (const candidate of input.wrappedKeys) {
|
|
258
|
+
try {
|
|
259
|
+
const [wrapped] = copyWrappedKeys([candidate]);
|
|
260
|
+
validateWrappedKey(wrapped, profile);
|
|
261
|
+
wrappedKeys.push(wrapped);
|
|
262
|
+
}
|
|
263
|
+
catch {
|
|
264
|
+
// Skipped: malformed candidate.
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
if (wrappedKeys.length === 0) {
|
|
268
|
+
throw invalidInput("no wrapped key matches this profile and format");
|
|
269
|
+
}
|
|
240
270
|
return wrappedKeys;
|
|
241
271
|
}
|
|
242
272
|
async function evaluateCredential(input, operation = "evaluateCredential") {
|
package/dist/kit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kit.js","sourceRoot":"","sources":["../src/kit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kit.js","sourceRoot":"","sources":["../src/kit.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/crypto.ts
CHANGED
|
@@ -142,17 +142,25 @@ export async function deriveWrappingKey(
|
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
144
|
|
|
145
|
+
/**
|
|
146
|
+
* Wraps exactly 32 key bytes with a key derived from raw WebAuthn PRF
|
|
147
|
+
* output, without starting a ceremony or accessing storage. The PRF
|
|
148
|
+
* output is secret key material: callers must avoid logging,
|
|
149
|
+
* transmitting, or retaining it longer than necessary. High-level
|
|
150
|
+
* applications should prefer a manager's `createAndWrapKey`.
|
|
151
|
+
*/
|
|
145
152
|
export async function wrapKey(
|
|
146
153
|
profile: PasskeyKeyProfile,
|
|
147
154
|
credentialId: string,
|
|
148
155
|
prfOutput: Uint8Array,
|
|
149
156
|
key: Uint8Array,
|
|
150
|
-
operation = "
|
|
157
|
+
operation = "wrapKey",
|
|
151
158
|
): Promise<WrappedKey> {
|
|
159
|
+
const validatedProfile = copyAndValidateProfile(profile);
|
|
152
160
|
validateCredentialId(credentialId);
|
|
153
161
|
validateKey(key, operation);
|
|
154
162
|
try {
|
|
155
|
-
const wrappingKey = await deriveWrappingKey(prfOutput,
|
|
163
|
+
const wrappingKey = await deriveWrappingKey(prfOutput, validatedProfile);
|
|
156
164
|
const iv = crypto.getRandomValues(new Uint8Array(AES_GCM_IV_BYTES));
|
|
157
165
|
const ciphertext = await crypto.subtle.encrypt(
|
|
158
166
|
{ name: "AES-GCM", iv: iv as BufferSource },
|
|
@@ -160,7 +168,7 @@ export async function wrapKey(
|
|
|
160
168
|
key as BufferSource,
|
|
161
169
|
);
|
|
162
170
|
return {
|
|
163
|
-
profile:
|
|
171
|
+
profile: validatedProfile,
|
|
164
172
|
credentialId,
|
|
165
173
|
kekIvHex: bytesToHex(iv),
|
|
166
174
|
wrappedKeyHex: bytesToHex(new Uint8Array(ciphertext)),
|
|
@@ -171,15 +179,23 @@ export async function wrapKey(
|
|
|
171
179
|
}
|
|
172
180
|
}
|
|
173
181
|
|
|
182
|
+
/**
|
|
183
|
+
* Unwraps a `WrappedKey` with a key derived from raw WebAuthn PRF
|
|
184
|
+
* output, without starting a ceremony or accessing storage. The PRF
|
|
185
|
+
* output is secret key material: callers must avoid logging,
|
|
186
|
+
* transmitting, or retaining it longer than necessary. High-level
|
|
187
|
+
* applications should prefer a manager's `recoverKey`.
|
|
188
|
+
*/
|
|
174
189
|
export async function unwrapKey(
|
|
175
190
|
profile: PasskeyKeyProfile,
|
|
176
191
|
prfOutput: Uint8Array,
|
|
177
192
|
wrapped: WrappedKey,
|
|
178
|
-
operation = "
|
|
193
|
+
operation = "unwrapKey",
|
|
179
194
|
): Promise<Uint8Array> {
|
|
180
|
-
|
|
195
|
+
const validatedProfile = copyAndValidateProfile(profile);
|
|
196
|
+
validateWrappedKey(wrapped, validatedProfile);
|
|
181
197
|
try {
|
|
182
|
-
const wrappingKey = await deriveWrappingKey(prfOutput,
|
|
198
|
+
const wrappingKey = await deriveWrappingKey(prfOutput, validatedProfile);
|
|
183
199
|
const plaintext = await crypto.subtle.decrypt(
|
|
184
200
|
{ name: "AES-GCM", iv: hexToBytes(wrapped.kekIvHex) as BufferSource },
|
|
185
201
|
wrappingKey,
|
package/src/index.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { PasskeyKeyError } from "./errors.js";
|
|
2
2
|
export type { PasskeyKeyErrorCategory } from "./errors.js";
|
|
3
3
|
export { createPasskeyKeyManager } from "./kit.js";
|
|
4
|
+
export { unwrapKey, wrapKey } from "./crypto.js";
|
|
4
5
|
export {
|
|
5
6
|
decodeWrappedKeyRecord,
|
|
6
7
|
encodeWrappedKeyRecord,
|
package/src/kit.ts
CHANGED
|
@@ -249,9 +249,20 @@ export function createPasskeyKeyManager(
|
|
|
249
249
|
if (!Array.isArray(credentialIds) || credentialIds.length === 0) {
|
|
250
250
|
throw invalidInput("at least one credentialId is required");
|
|
251
251
|
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
252
|
+
// Skip candidates that are not canonical base64url instead of
|
|
253
|
+
// failing the ceremony: one malformed ID (e.g. a legacy record
|
|
254
|
+
// written by another client) must not block assertion against
|
|
255
|
+
// the valid ones.
|
|
256
|
+
const unique = [...new Set(credentialIds)].filter((credentialId) => {
|
|
257
|
+
try {
|
|
258
|
+
validateCredentialId(credentialId);
|
|
259
|
+
return true;
|
|
260
|
+
} catch {
|
|
261
|
+
return false;
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
if (unique.length === 0) {
|
|
265
|
+
throw invalidInput("no credentialId is valid unpadded base64url");
|
|
255
266
|
}
|
|
256
267
|
const preferred = preferredCredentialId ?? loadPreferredCredentialId();
|
|
257
268
|
if (!preferred || !unique.includes(preferred)) return unique;
|
|
@@ -327,8 +338,26 @@ export function createPasskeyKeyManager(
|
|
|
327
338
|
|
|
328
339
|
function prepareRecovery(input: RecoverKeyInput) {
|
|
329
340
|
if (!input || typeof input !== "object") throw invalidInput("input is required");
|
|
330
|
-
|
|
331
|
-
|
|
341
|
+
// Skip malformed candidates (wrong profile, non-canonical
|
|
342
|
+
// credential ID, bad lengths) rather than failing the whole set,
|
|
343
|
+
// so one corrupt or foreign bundle cannot block recovery from the
|
|
344
|
+
// healthy ones. Throw only when no usable candidate remains.
|
|
345
|
+
if (!Array.isArray(input.wrappedKeys) || input.wrappedKeys.length === 0) {
|
|
346
|
+
throw invalidInput("at least one wrapped key is required");
|
|
347
|
+
}
|
|
348
|
+
const wrappedKeys: WrappedKey[] = [];
|
|
349
|
+
for (const candidate of input.wrappedKeys) {
|
|
350
|
+
try {
|
|
351
|
+
const [wrapped] = copyWrappedKeys([candidate]);
|
|
352
|
+
validateWrappedKey(wrapped, profile);
|
|
353
|
+
wrappedKeys.push(wrapped);
|
|
354
|
+
} catch {
|
|
355
|
+
// Skipped: malformed candidate.
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
if (wrappedKeys.length === 0) {
|
|
359
|
+
throw invalidInput("no wrapped key matches this profile and format");
|
|
360
|
+
}
|
|
332
361
|
return wrappedKeys;
|
|
333
362
|
}
|
|
334
363
|
|