ox 1.6.3 → 1.7.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.
- package/CHANGELOG.md +12 -0
- package/dist/core/AesGcm.d.ts +67 -2
- package/dist/core/AesGcm.d.ts.map +1 -1
- package/dist/core/AesGcm.js +79 -10
- package/dist/core/AesGcm.js.map +1 -1
- package/dist/core/Ed25519.d.ts +83 -2
- package/dist/core/Ed25519.d.ts.map +1 -1
- package/dist/core/Ed25519.js +79 -4
- package/dist/core/Ed25519.js.map +1 -1
- package/dist/core/MlDsa44.d.ts +84 -5
- package/dist/core/MlDsa44.d.ts.map +1 -1
- package/dist/core/MlDsa44.js +79 -4
- package/dist/core/MlDsa44.js.map +1 -1
- package/dist/core/P256.d.ts +82 -1
- package/dist/core/P256.d.ts.map +1 -1
- package/dist/core/P256.js +78 -0
- package/dist/core/P256.js.map +1 -1
- package/dist/core/Secp256k1.d.ts +85 -1
- package/dist/core/Secp256k1.d.ts.map +1 -1
- package/dist/core/Secp256k1.js +74 -3
- package/dist/core/Secp256k1.js.map +1 -1
- package/dist/core/Siwe.d.ts.map +1 -1
- package/dist/core/Siwe.js +45 -6
- package/dist/core/Siwe.js.map +1 -1
- package/dist/core/internal/keyDerivation.d.ts +13 -0
- package/dist/core/internal/keyDerivation.d.ts.map +1 -0
- package/dist/core/internal/keyDerivation.js +13 -0
- package/dist/core/internal/keyDerivation.js.map +1 -0
- package/package.json +1 -1
- package/src/core/AesGcm.ts +137 -30
- package/src/core/Ed25519.ts +135 -4
- package/src/core/MlDsa44.ts +135 -4
- package/src/core/P256.ts +135 -1
- package/src/core/Secp256k1.ts +134 -3
- package/src/core/Siwe.ts +45 -5
- package/src/core/_test/AesGcm.test-d.ts +19 -0
- package/src/core/_test/AesGcm.test.ts +90 -1
- package/src/core/_test/Ed25519.test-d.ts +24 -0
- package/src/core/_test/Ed25519.test.ts +87 -1
- package/src/core/_test/MlDsa44.test-d.ts +24 -0
- package/src/core/_test/MlDsa44.test.ts +69 -1
- package/src/core/_test/P256.test-d.ts +26 -0
- package/src/core/_test/P256.test.ts +98 -1
- package/src/core/_test/Secp256k1.test-d.ts +27 -0
- package/src/core/_test/Secp256k1.test.ts +112 -1
- package/src/core/_test/Siwe.test.ts +98 -0
- package/src/core/internal/keyDerivation.ts +34 -0
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Secp256k1.d.ts","sourceRoot":"","sources":["../../src/core/Secp256k1.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,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;
|
|
1
|
+
{"version":3,"file":"Secp256k1.d.ts","sourceRoot":"","sources":["../../src/core/Secp256k1.ts"],"names":[],"mappings":"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"}
|
package/dist/core/Secp256k1.js
CHANGED
|
@@ -5,9 +5,11 @@ import * as Errors from './Errors.js';
|
|
|
5
5
|
import * as Hash from './Hash.js';
|
|
6
6
|
import * as Hex from './Hex.js';
|
|
7
7
|
import { formatPublicKey, formatSignature, normalizePublicKey, normalizeSignature, } from './internal/cryptoIo.js';
|
|
8
|
+
import * as keyDerivation from './internal/keyDerivation.js';
|
|
8
9
|
import * as engine from './internal/secp256k1.js';
|
|
9
10
|
import * as Entropy from './internal/entropy.js';
|
|
10
11
|
import { fromRecoveredBytes, toCompactBytes, toRecoveredBytes, } from './internal/signature.js';
|
|
12
|
+
import * as Mnemonic from './Mnemonic.js';
|
|
11
13
|
import * as PublicKey from './PublicKey.js';
|
|
12
14
|
/** Re-export of noble/curves secp256k1 utilities. */
|
|
13
15
|
export const noble = secp256k1;
|
|
@@ -37,7 +39,7 @@ export function createKeyPair(options = {}) {
|
|
|
37
39
|
* Derives a valid secp256k1 private key from a 32-byte WebAuthn PRF output.
|
|
38
40
|
*
|
|
39
41
|
* The permanent derivation contract uses the PRF output as the HMAC-SHA256
|
|
40
|
-
* key.
|
|
42
|
+
* key. The HMAC message uses the `ox.secp256k1.fromPrf.v1` domain followed by
|
|
41
43
|
* a 32-bit big-endian counter starting at zero. Invalid scalars are skipped.
|
|
42
44
|
*
|
|
43
45
|
* @example
|
|
@@ -59,7 +61,7 @@ export function fromPrf(value, options = {}) {
|
|
|
59
61
|
if (bytes.length !== 32)
|
|
60
62
|
throw new InvalidPrfSizeError({ size: bytes.length });
|
|
61
63
|
for (let counter = 0;; counter++) {
|
|
62
|
-
const candidate = Hash.hmac256(bytes, Bytes.concat(
|
|
64
|
+
const candidate = Hash.hmac256(bytes, Bytes.concat(fromPrfDomain, Bytes.fromNumber(counter, { size: 4 })), { as: 'Bytes' });
|
|
63
65
|
if (noble.utils.isValidSecretKey(candidate)) {
|
|
64
66
|
if (as === 'Hex') {
|
|
65
67
|
const value = Hex.fromBytes(candidate);
|
|
@@ -71,6 +73,67 @@ export function fromPrf(value, options = {}) {
|
|
|
71
73
|
candidate.fill(0);
|
|
72
74
|
}
|
|
73
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Derives a valid secp256k1 private key from a BIP-39 mnemonic.
|
|
78
|
+
*
|
|
79
|
+
* This is equivalent to {@link ox#Mnemonic.toPrivateKey}, and derives the
|
|
80
|
+
* private key at `m/44'/60'/0'/0/0` by default.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```ts twoslash
|
|
84
|
+
* import { Secp256k1 } from 'ox'
|
|
85
|
+
*
|
|
86
|
+
* const privateKey = Secp256k1.fromMnemonic(
|
|
87
|
+
* 'test test test test test test test test test test test junk'
|
|
88
|
+
* )
|
|
89
|
+
* ```
|
|
90
|
+
*
|
|
91
|
+
* @param mnemonic - BIP-39 mnemonic phrase.
|
|
92
|
+
* @param options - Options.
|
|
93
|
+
* @returns A valid secp256k1 private key.
|
|
94
|
+
*/
|
|
95
|
+
export function fromMnemonic(mnemonic, options = {}) {
|
|
96
|
+
const { as = 'Hex', passphrase, path } = options;
|
|
97
|
+
return Mnemonic.toPrivateKey(mnemonic, { as, passphrase, path });
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Derives a valid secp256k1 private key from a seed.
|
|
101
|
+
*
|
|
102
|
+
* The seed must contain at least 32 bytes of cryptographically strong key
|
|
103
|
+
* material. Do not pass a password directly; use a password KDF first.
|
|
104
|
+
*
|
|
105
|
+
* The permanent derivation contract uses the seed as the HMAC-SHA256
|
|
106
|
+
* key. The HMAC message uses the `ox.secp256k1.fromSeed.v1` domain followed by
|
|
107
|
+
* a 32-bit big-endian counter starting at zero. Invalid scalars are skipped.
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```ts twoslash
|
|
111
|
+
* import { Secp256k1 } from 'ox'
|
|
112
|
+
*
|
|
113
|
+
* const privateKey = Secp256k1.fromSeed(
|
|
114
|
+
* '0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'
|
|
115
|
+
* )
|
|
116
|
+
* ```
|
|
117
|
+
*
|
|
118
|
+
* @param seed - Seed containing at least 32 bytes of cryptographically strong key material.
|
|
119
|
+
* @param options - Options.
|
|
120
|
+
* @returns A valid secp256k1 private key.
|
|
121
|
+
*/
|
|
122
|
+
export function fromSeed(seed, options = {}) {
|
|
123
|
+
const { as = 'Hex' } = options;
|
|
124
|
+
const bytes = Bytes.from(seed);
|
|
125
|
+
if (bytes.length < 32)
|
|
126
|
+
throw new InvalidSeedSizeError({ size: bytes.length });
|
|
127
|
+
const privateKey = keyDerivation.derive(bytes, fromSeedDomain, {
|
|
128
|
+
validate: noble.utils.isValidSecretKey,
|
|
129
|
+
});
|
|
130
|
+
if (as === 'Hex') {
|
|
131
|
+
const value = Hex.fromBytes(privateKey);
|
|
132
|
+
privateKey.fill(0);
|
|
133
|
+
return value;
|
|
134
|
+
}
|
|
135
|
+
return privateKey;
|
|
136
|
+
}
|
|
74
137
|
/**
|
|
75
138
|
* Computes the secp256k1 ECDSA public key from a provided private key.
|
|
76
139
|
*
|
|
@@ -281,5 +344,13 @@ export class InvalidPrfSizeError extends Errors.BaseError {
|
|
|
281
344
|
super(`PRF output must be exactly 32 bytes. Received ${options.size} bytes.`);
|
|
282
345
|
}
|
|
283
346
|
}
|
|
284
|
-
|
|
347
|
+
/** Thrown when a seed contains fewer than 32 bytes. */
|
|
348
|
+
export class InvalidSeedSizeError extends Errors.BaseError {
|
|
349
|
+
name = 'Secp256k1.InvalidSeedSizeError';
|
|
350
|
+
constructor(options) {
|
|
351
|
+
super(`Seed must contain at least 32 bytes. Received ${options.size} bytes.`);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
const fromPrfDomain = Bytes.fromString('ox.secp256k1.fromPrf.v1');
|
|
355
|
+
const fromSeedDomain = Bytes.fromString('ox.secp256k1.fromSeed.v1');
|
|
285
356
|
//# sourceMappingURL=Secp256k1.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Secp256k1.js","sourceRoot":"","sources":["../../src/core/Secp256k1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,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;AAC/B,OAAO,EACL,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAA;AACjD,OAAO,KAAK,OAAO,MAAM,uBAAuB,CAAA;AAChD,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,gBAAgB,GACjB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAG3C,qDAAqD;AACrD,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;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,OAAO,CACrB,KAA4B,EAC5B,UAA+B,EAAE;IAEjC,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,CAAA;IAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE;QAAE,MAAM,IAAI,mBAAmB,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;IAE9E,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAC5B,KAAK,EACL,KAAK,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"Secp256k1.js","sourceRoot":"","sources":["../../src/core/Secp256k1.ts"],"names":[],"mappings":"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"}
|
package/dist/core/Siwe.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Siwe.d.ts","sourceRoot":"","sources":["../../src/core/Siwe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD,eAAO,MAAM,WAAW,QACwD,CAAA;AAEhF,eAAO,MAAM,OAAO,QAC8J,CAAA;AAElL,eAAO,MAAM,cAAc,QAA8B,CAAA;AAEzD,eAAO,MAAM,UAAU,QAAsB,CAAA;AAE7C,eAAO,MAAM,WAAW,QAAgC,CAAA;AAGxD,eAAO,MAAM,WAAW,QACoL,CAAA;AAG5M,eAAO,MAAM,WAAW,QACiP,CAAA;
|
|
1
|
+
{"version":3,"file":"Siwe.d.ts","sourceRoot":"","sources":["../../src/core/Siwe.ts"],"names":[],"mappings":"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"}
|
package/dist/core/Siwe.js
CHANGED
|
@@ -10,6 +10,33 @@ export const schemeRegex = /^([a-zA-Z][a-zA-Z0-9+-.]*)$/;
|
|
|
10
10
|
export const prefixRegex = /^(?:(?<scheme>[a-zA-Z][a-zA-Z0-9+-.]*):\/\/)?(?<domain>[a-zA-Z0-9+-.]*(?::[0-9]{1,5})?) (?:wants you to sign in with your Ethereum account:\n)(?<address>0x[a-fA-F0-9]{40})\n\n(?:(?<statement>.*)\n\n)?/;
|
|
11
11
|
// https://regexr.com/80gf9
|
|
12
12
|
export const suffixRegex = /(?:URI: (?<uri>.+))\n(?:Version: (?<version>.+))\n(?:Chain ID: (?<chainId>\d+))\n(?:Nonce: (?<nonce>[a-zA-Z0-9]+))\n(?:Issued At: (?<issuedAt>.+))(?:\nExpiration Time: (?<expirationTime>.+))?(?:\nNot Before: (?<notBefore>.+))?(?:\nRequest ID: (?<requestId>.+))?/;
|
|
13
|
+
const siweDateTimeRegex = /^(\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])[Tt]([01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:[Zz]|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/;
|
|
14
|
+
function parseSiweDateTime(value) {
|
|
15
|
+
const match = value.match(siweDateTimeRegex);
|
|
16
|
+
if (!match)
|
|
17
|
+
return new Date(Number.NaN);
|
|
18
|
+
const year = Number(match[1]);
|
|
19
|
+
const month = Number(match[2]);
|
|
20
|
+
const day = Number(match[3]);
|
|
21
|
+
const days = [
|
|
22
|
+
31,
|
|
23
|
+
year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0) ? 29 : 28,
|
|
24
|
+
31,
|
|
25
|
+
30,
|
|
26
|
+
31,
|
|
27
|
+
30,
|
|
28
|
+
31,
|
|
29
|
+
31,
|
|
30
|
+
30,
|
|
31
|
+
31,
|
|
32
|
+
30,
|
|
33
|
+
31,
|
|
34
|
+
];
|
|
35
|
+
const daysInMonth = days[month - 1];
|
|
36
|
+
if (!daysInMonth || day > daysInMonth)
|
|
37
|
+
return new Date(Number.NaN);
|
|
38
|
+
return new Date(value.toUpperCase());
|
|
39
|
+
}
|
|
13
40
|
/**
|
|
14
41
|
* Creates [EIP-4361](https://eips.ethereum.org/EIPS/eip-4361) formatted message.
|
|
15
42
|
*
|
|
@@ -275,9 +302,11 @@ export function parseMessage(message) {
|
|
|
275
302
|
...prefix,
|
|
276
303
|
...suffix,
|
|
277
304
|
...(chainId ? { chainId: Number(chainId) } : {}),
|
|
278
|
-
...(expirationTime
|
|
279
|
-
|
|
280
|
-
|
|
305
|
+
...(expirationTime
|
|
306
|
+
? { expirationTime: parseSiweDateTime(expirationTime) }
|
|
307
|
+
: {}),
|
|
308
|
+
...(issuedAt ? { issuedAt: parseSiweDateTime(issuedAt) } : {}),
|
|
309
|
+
...(notBefore ? { notBefore: parseSiweDateTime(notBefore) } : {}),
|
|
281
310
|
...(requestId ? { requestId } : {}),
|
|
282
311
|
...(resources ? { resources } : {}),
|
|
283
312
|
...(scheme ? { scheme } : {}),
|
|
@@ -318,10 +347,20 @@ export function validateMessage(value) {
|
|
|
318
347
|
return false;
|
|
319
348
|
if (scheme && message.scheme !== scheme)
|
|
320
349
|
return false;
|
|
321
|
-
if (
|
|
322
|
-
return false;
|
|
323
|
-
if (message.notBefore && time < message.notBefore)
|
|
350
|
+
if (Number.isNaN(time.getTime()))
|
|
324
351
|
return false;
|
|
352
|
+
if (message.expirationTime) {
|
|
353
|
+
if (Number.isNaN(message.expirationTime.getTime()))
|
|
354
|
+
return false;
|
|
355
|
+
if (time >= message.expirationTime)
|
|
356
|
+
return false;
|
|
357
|
+
}
|
|
358
|
+
if (message.notBefore) {
|
|
359
|
+
if (Number.isNaN(message.notBefore.getTime()))
|
|
360
|
+
return false;
|
|
361
|
+
if (time < message.notBefore)
|
|
362
|
+
return false;
|
|
363
|
+
}
|
|
325
364
|
try {
|
|
326
365
|
if (!message.address)
|
|
327
366
|
return false;
|
package/dist/core/Siwe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Siwe.js","sourceRoot":"","sources":["../../src/core/Siwe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAG/B,MAAM,CAAC,MAAM,WAAW,GACtB,8EAA8E,CAAA;AAEhF,MAAM,CAAC,MAAM,OAAO,GAClB,gLAAgL,CAAA;AAElL,MAAM,CAAC,MAAM,cAAc,GAAG,2BAA2B,CAAA;AAEzD,MAAM,CAAC,MAAM,UAAU,GAAG,mBAAmB,CAAA;AAE7C,MAAM,CAAC,MAAM,WAAW,GAAG,6BAA6B,CAAA;AAExD,2BAA2B;AAC3B,MAAM,CAAC,MAAM,WAAW,GACtB,0MAA0M,CAAA;AAE5M,2BAA2B;AAC3B,MAAM,CAAC,MAAM,WAAW,GACtB,uQAAuQ,CAAA;
|
|
1
|
+
{"version":3,"file":"Siwe.js","sourceRoot":"","sources":["../../src/core/Siwe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as Bytes from '../Bytes.js';
|
|
2
|
+
import type * as Errors from '../Errors.js';
|
|
3
|
+
import * as Hash from '../Hash.js';
|
|
4
|
+
/** @internal */
|
|
5
|
+
export declare function derive(seed: Bytes.Bytes, domain: Bytes.Bytes, options?: derive.Options): Bytes.Bytes;
|
|
6
|
+
/** @internal */
|
|
7
|
+
export declare namespace derive {
|
|
8
|
+
type Options = {
|
|
9
|
+
validate?: ((key: Bytes.Bytes) => boolean) | undefined;
|
|
10
|
+
};
|
|
11
|
+
type ErrorType = Bytes.concat.ErrorType | Bytes.fromNumber.ErrorType | Hash.hmac256.ErrorType | Errors.GlobalErrorType;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=keyDerivation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyDerivation.d.ts","sourceRoot":"","sources":["../../../src/core/internal/keyDerivation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AACpC,OAAO,KAAK,KAAK,MAAM,MAAM,cAAc,CAAA;AAC3C,OAAO,KAAK,IAAI,MAAM,YAAY,CAAA;AAElC,gBAAgB;AAChB,wBAAgB,MAAM,CACpB,IAAI,EAAE,KAAK,CAAC,KAAK,EACjB,MAAM,EAAE,KAAK,CAAC,KAAK,EACnB,OAAO,GAAE,MAAM,CAAC,OAAY,GAC3B,KAAK,CAAC,KAAK,CAWb;AAED,gBAAgB;AAChB,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,KAAK,OAAO,GAAG;QACb,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,GAAG,SAAS,CAAA;KACvD,CAAA;IAED,KAAK,SAAS,GACV,KAAK,CAAC,MAAM,CAAC,SAAS,GACtB,KAAK,CAAC,UAAU,CAAC,SAAS,GAC1B,IAAI,CAAC,OAAO,CAAC,SAAS,GACtB,MAAM,CAAC,eAAe,CAAA;CAC3B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as Bytes from '../Bytes.js';
|
|
2
|
+
import * as Hash from '../Hash.js';
|
|
3
|
+
/** @internal */
|
|
4
|
+
export function derive(seed, domain, options = {}) {
|
|
5
|
+
const { validate } = options;
|
|
6
|
+
for (let counter = 0;; counter++) {
|
|
7
|
+
const key = Hash.hmac256(seed, Bytes.concat(domain, Bytes.fromNumber(counter, { size: 4 })), { as: 'Bytes' });
|
|
8
|
+
if (!validate || validate(key))
|
|
9
|
+
return key;
|
|
10
|
+
key.fill(0);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=keyDerivation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyDerivation.js","sourceRoot":"","sources":["../../../src/core/internal/keyDerivation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AAEpC,OAAO,KAAK,IAAI,MAAM,YAAY,CAAA;AAElC,gBAAgB;AAChB,MAAM,UAAU,MAAM,CACpB,IAAiB,EACjB,MAAmB,EACnB,UAA0B,EAAE;IAE5B,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;IAC5B,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CACtB,IAAI,EACJ,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAC5D,EAAE,EAAE,EAAE,OAAO,EAAE,CAChB,CAAA;QACD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAA;QAC1C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACb,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
package/src/core/AesGcm.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as Bytes from './Bytes.js'
|
|
2
2
|
import * as Errors from './Errors.js'
|
|
3
3
|
import * as Hex from './Hex.js'
|
|
4
|
+
import * as mnemonic_ from './internal/mnemonic.js'
|
|
4
5
|
|
|
5
6
|
export const ivLength = 16
|
|
6
7
|
|
|
@@ -138,8 +139,8 @@ export declare namespace encrypt {
|
|
|
138
139
|
* Derives an AES-256-GCM key from a 32-byte WebAuthn PRF output.
|
|
139
140
|
*
|
|
140
141
|
* The permanent derivation contract uses the PRF output as the HMAC-SHA256
|
|
141
|
-
* key.
|
|
142
|
-
*
|
|
142
|
+
* key. The HMAC message uses the `ox.aesGcm.fromPrf.v1` domain followed by a
|
|
143
|
+
* 32-bit big-endian counter set to zero.
|
|
143
144
|
*
|
|
144
145
|
* @example
|
|
145
146
|
* ```ts twoslash
|
|
@@ -158,43 +159,95 @@ export async function fromPrf(
|
|
|
158
159
|
): Promise<CryptoKey> {
|
|
159
160
|
const bytes = Bytes.from(value)
|
|
160
161
|
if (bytes.length !== 32) throw new InvalidPrfSizeError({ size: bytes.length })
|
|
162
|
+
return deriveKey(bytes, fromPrfDomain)
|
|
163
|
+
}
|
|
161
164
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
165
|
+
export declare namespace fromPrf {
|
|
166
|
+
type ErrorType =
|
|
167
|
+
| Bytes.concat.ErrorType
|
|
168
|
+
| Bytes.from.ErrorType
|
|
169
|
+
| Bytes.fromNumber.ErrorType
|
|
170
|
+
| InvalidPrfSizeError
|
|
171
|
+
| Errors.GlobalErrorType
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Derives an AES-256-GCM key from a BIP-39 mnemonic.
|
|
176
|
+
*
|
|
177
|
+
* This is equivalent to passing `Mnemonic.toSeed(mnemonic, { passphrase })`
|
|
178
|
+
* to {@link ox#AesGcm.fromSeed}.
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* ```ts twoslash
|
|
182
|
+
* import { AesGcm } from 'ox'
|
|
183
|
+
*
|
|
184
|
+
* const key = await AesGcm.fromMnemonic(
|
|
185
|
+
* 'test test test test test test test test test test test junk'
|
|
186
|
+
* )
|
|
187
|
+
* ```
|
|
188
|
+
*
|
|
189
|
+
* @param mnemonic - BIP-39 mnemonic phrase.
|
|
190
|
+
* @param options - Options.
|
|
191
|
+
* @returns A nonextractable AES-256-GCM key for encryption and decryption.
|
|
192
|
+
*/
|
|
193
|
+
export async function fromMnemonic(
|
|
194
|
+
mnemonic: string,
|
|
195
|
+
options: fromMnemonic.Options = {},
|
|
196
|
+
): Promise<CryptoKey> {
|
|
197
|
+
const { passphrase } = options
|
|
198
|
+
const seed = mnemonic_.toSeed(mnemonic, passphrase)
|
|
179
199
|
try {
|
|
180
|
-
return await
|
|
181
|
-
'raw',
|
|
182
|
-
key,
|
|
183
|
-
{ name: 'AES-GCM' },
|
|
184
|
-
false,
|
|
185
|
-
['encrypt', 'decrypt'],
|
|
186
|
-
)
|
|
200
|
+
return await fromSeed(seed)
|
|
187
201
|
} finally {
|
|
188
|
-
|
|
202
|
+
seed.fill(0)
|
|
189
203
|
}
|
|
190
204
|
}
|
|
191
205
|
|
|
192
|
-
export declare namespace
|
|
206
|
+
export declare namespace fromMnemonic {
|
|
207
|
+
type Options = {
|
|
208
|
+
/** Optional BIP-39 passphrase. */
|
|
209
|
+
passphrase?: string | undefined
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
type ErrorType = fromSeed.ErrorType
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Derives an AES-256-GCM key from a seed.
|
|
217
|
+
*
|
|
218
|
+
* The seed must contain at least 32 bytes of cryptographically strong key
|
|
219
|
+
* material. Do not pass a password directly; use a password KDF first.
|
|
220
|
+
*
|
|
221
|
+
* The permanent derivation contract uses the seed as the HMAC-SHA256
|
|
222
|
+
* key. The HMAC message uses the `ox.aesGcm.fromSeed.v1` domain followed by a
|
|
223
|
+
* 32-bit big-endian counter set to zero.
|
|
224
|
+
*
|
|
225
|
+
* @example
|
|
226
|
+
* ```ts twoslash
|
|
227
|
+
* import { AesGcm } from 'ox'
|
|
228
|
+
*
|
|
229
|
+
* const key = await AesGcm.fromSeed(
|
|
230
|
+
* '0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'
|
|
231
|
+
* )
|
|
232
|
+
* ```
|
|
233
|
+
*
|
|
234
|
+
* @param seed - Seed containing at least 32 bytes of cryptographically strong key material.
|
|
235
|
+
* @returns A nonextractable AES-256-GCM key for encryption and decryption.
|
|
236
|
+
*/
|
|
237
|
+
export async function fromSeed(
|
|
238
|
+
seed: Hex.Hex | Bytes.Bytes,
|
|
239
|
+
): Promise<CryptoKey> {
|
|
240
|
+
const bytes = Bytes.from(seed)
|
|
241
|
+
if (bytes.length < 32) throw new InvalidSeedSizeError({ size: bytes.length })
|
|
242
|
+
return deriveKey(bytes, fromSeedDomain)
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
export declare namespace fromSeed {
|
|
193
246
|
type ErrorType =
|
|
194
247
|
| Bytes.concat.ErrorType
|
|
195
248
|
| Bytes.from.ErrorType
|
|
196
249
|
| Bytes.fromNumber.ErrorType
|
|
197
|
-
|
|
|
250
|
+
| InvalidSeedSizeError
|
|
198
251
|
| Errors.GlobalErrorType
|
|
199
252
|
}
|
|
200
253
|
|
|
@@ -290,4 +343,58 @@ export declare namespace InvalidPrfSizeError {
|
|
|
290
343
|
}
|
|
291
344
|
}
|
|
292
345
|
|
|
293
|
-
|
|
346
|
+
/** Thrown when a seed contains fewer than 32 bytes. */
|
|
347
|
+
export class InvalidSeedSizeError extends Errors.BaseError {
|
|
348
|
+
override readonly name = 'AesGcm.InvalidSeedSizeError'
|
|
349
|
+
|
|
350
|
+
constructor(options: InvalidSeedSizeError.Options) {
|
|
351
|
+
super(
|
|
352
|
+
`Seed must contain at least 32 bytes. Received ${options.size} bytes.`,
|
|
353
|
+
)
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
export declare namespace InvalidSeedSizeError {
|
|
358
|
+
/** Options for {@link ox#AesGcm.InvalidSeedSizeError}. */
|
|
359
|
+
type Options = {
|
|
360
|
+
/** Received seed size. */
|
|
361
|
+
size: number
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
async function deriveKey(
|
|
366
|
+
seed: Bytes.Bytes,
|
|
367
|
+
domain: Bytes.Bytes,
|
|
368
|
+
): Promise<CryptoKey> {
|
|
369
|
+
const baseKey = await globalThis.crypto.subtle.importKey(
|
|
370
|
+
'raw',
|
|
371
|
+
seed,
|
|
372
|
+
{
|
|
373
|
+
name: 'HMAC',
|
|
374
|
+
hash: 'SHA-256',
|
|
375
|
+
},
|
|
376
|
+
false,
|
|
377
|
+
['sign'],
|
|
378
|
+
)
|
|
379
|
+
const key = new Uint8Array(
|
|
380
|
+
await globalThis.crypto.subtle.sign(
|
|
381
|
+
'HMAC',
|
|
382
|
+
baseKey,
|
|
383
|
+
Bytes.concat(domain, Bytes.fromNumber(0, { size: 4 })),
|
|
384
|
+
),
|
|
385
|
+
)
|
|
386
|
+
try {
|
|
387
|
+
return await globalThis.crypto.subtle.importKey(
|
|
388
|
+
'raw',
|
|
389
|
+
key,
|
|
390
|
+
{ name: 'AES-GCM' },
|
|
391
|
+
false,
|
|
392
|
+
['encrypt', 'decrypt'],
|
|
393
|
+
)
|
|
394
|
+
} finally {
|
|
395
|
+
key.fill(0)
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
const fromPrfDomain = Bytes.fromString('ox.aesGcm.fromPrf.v1')
|
|
400
|
+
const fromSeedDomain = Bytes.fromString('ox.aesGcm.fromSeed.v1')
|