ox 1.6.2 → 1.7.0
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/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/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/dist/tempo/KeyAuthorization.d.ts +16 -12
- package/dist/tempo/KeyAuthorization.d.ts.map +1 -1
- package/dist/tempo/KeyAuthorization.js +7 -13
- package/dist/tempo/KeyAuthorization.js.map +1 -1
- package/dist/tempo/MultisigConfig.d.ts +20 -17
- package/dist/tempo/MultisigConfig.d.ts.map +1 -1
- package/dist/tempo/MultisigConfig.js +17 -16
- package/dist/tempo/MultisigConfig.js.map +1 -1
- package/dist/tempo/SignatureEnvelope.d.ts +19 -17
- package/dist/tempo/SignatureEnvelope.d.ts.map +1 -1
- package/dist/tempo/SignatureEnvelope.js +35 -27
- package/dist/tempo/SignatureEnvelope.js.map +1 -1
- package/dist/tempo/index.d.ts +2 -2
- package/dist/tempo/index.js +2 -2
- package/dist/zod/tempo/KeyAuthorization.d.ts +231 -22
- package/dist/zod/tempo/KeyAuthorization.d.ts.map +1 -1
- package/dist/zod/tempo/KeyAuthorization.js +10 -2
- package/dist/zod/tempo/KeyAuthorization.js.map +1 -1
- package/dist/zod/tempo/RpcSchemaTempo.d.ts +82 -8
- package/dist/zod/tempo/RpcSchemaTempo.d.ts.map +1 -1
- package/dist/zod/tempo/Transaction.d.ts +246 -24
- package/dist/zod/tempo/Transaction.d.ts.map +1 -1
- package/dist/zod/tempo/TransactionRequest.d.ts +149 -14
- package/dist/zod/tempo/TransactionRequest.d.ts.map +1 -1
- package/dist/zod/tempo/TxEnvelopeTempo.d.ts +78 -6
- package/dist/zod/tempo/TxEnvelopeTempo.d.ts.map +1 -1
- 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/_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/internal/keyDerivation.ts +34 -0
- package/src/tempo/KeyAuthorization.test-d.ts +41 -6
- package/src/tempo/KeyAuthorization.test.ts +77 -18
- package/src/tempo/KeyAuthorization.ts +36 -36
- package/src/tempo/MultisigConfig.test.ts +28 -8
- package/src/tempo/MultisigConfig.ts +28 -19
- package/src/tempo/SignatureEnvelope.test.ts +64 -19
- package/src/tempo/SignatureEnvelope.ts +45 -35
- package/src/tempo/index.ts +2 -2
- package/src/tempo/multisig.e2e.test.ts +402 -145
- package/src/version.ts +1 -1
- package/src/zod/tempo/KeyAuthorization.ts +12 -2
- package/src/zod/tempo/_test/KeyAuthorization.test.ts +19 -5
package/dist/core/MlDsa44.d.ts
CHANGED
|
@@ -2,15 +2,14 @@ import * as Bytes from './Bytes.js';
|
|
|
2
2
|
import * as Errors from './Errors.js';
|
|
3
3
|
import * as Hash from './Hash.js';
|
|
4
4
|
import * as Hex from './Hex.js';
|
|
5
|
+
import * as keyDerivation from './internal/keyDerivation.js';
|
|
5
6
|
/** Re-export of noble/post-quantum ML-DSA-44 utilities. */
|
|
6
7
|
export declare const noble: import("@noble/post-quantum/utils.js").CryptoKeys & {
|
|
7
8
|
lengths: {
|
|
8
9
|
signRand?: number;
|
|
9
10
|
signature?: number;
|
|
10
11
|
};
|
|
11
|
-
sign: (msg: import("@noble/post-quantum/utils.js").TArg<Uint8Array>, secretKey: import("@noble/post-quantum/utils.js").TArg<Uint8Array>, opts
|
|
12
|
-
/** Thrown when a context string exceeds the 255-byte FIPS 204 limit. */
|
|
13
|
-
?: import("@noble/post-quantum/utils.js").TArg<import("@noble/post-quantum/utils.js").SigOpts>) => import("@noble/post-quantum/utils.js").TRet<Uint8Array>;
|
|
12
|
+
sign: (msg: import("@noble/post-quantum/utils.js").TArg<Uint8Array>, secretKey: import("@noble/post-quantum/utils.js").TArg<Uint8Array>, opts?: import("@noble/post-quantum/utils.js").TArg<import("@noble/post-quantum/utils.js").SigOpts>) => import("@noble/post-quantum/utils.js").TRet<Uint8Array>;
|
|
14
13
|
verify: (sig: import("@noble/post-quantum/utils.js").TArg<Uint8Array>, msg: import("@noble/post-quantum/utils.js").TArg<Uint8Array>, publicKey: import("@noble/post-quantum/utils.js").TArg<Uint8Array>, opts?: import("@noble/post-quantum/utils.js").TArg<import("@noble/post-quantum/utils.js").VerOpts>) => boolean;
|
|
15
14
|
} & {
|
|
16
15
|
internal: import("@noble/post-quantum/utils.js").TRet<import("@noble/post-quantum/ml-dsa.js").DSAInternal>;
|
|
@@ -183,8 +182,8 @@ export declare namespace createKeyPair {
|
|
|
183
182
|
* Derives an ML-DSA-44 private key from a 32-byte WebAuthn PRF output.
|
|
184
183
|
*
|
|
185
184
|
* The permanent derivation contract uses the PRF output as the HMAC-SHA256
|
|
186
|
-
* key.
|
|
187
|
-
*
|
|
185
|
+
* key. The HMAC message uses the `ox.mldsa44.fromPrf.v1` domain followed by a
|
|
186
|
+
* 32-bit big-endian counter set to zero.
|
|
188
187
|
*
|
|
189
188
|
* @example
|
|
190
189
|
* ```ts twoslash
|
|
@@ -211,6 +210,74 @@ export declare namespace fromPrf {
|
|
|
211
210
|
type ReturnType<as extends 'Hex' | 'Bytes'> = (as extends 'Bytes' ? Bytes.Bytes : never) | (as extends 'Hex' ? Hex.Hex : never);
|
|
212
211
|
type ErrorType = Bytes.concat.ErrorType | Bytes.from.ErrorType | Bytes.fromNumber.ErrorType | Hash.hmac256.ErrorType | Hex.fromBytes.ErrorType | InvalidPrfSizeError | Errors.GlobalErrorType;
|
|
213
212
|
}
|
|
213
|
+
/**
|
|
214
|
+
* Derives an ML-DSA-44 private key from a BIP-39 mnemonic.
|
|
215
|
+
*
|
|
216
|
+
* This is equivalent to passing `Mnemonic.toSeed(mnemonic, { passphrase })`
|
|
217
|
+
* to {@link ox#MlDsa44.fromSeed}.
|
|
218
|
+
*
|
|
219
|
+
* @example
|
|
220
|
+
* ```ts twoslash
|
|
221
|
+
* import { MlDsa44 } from 'ox'
|
|
222
|
+
*
|
|
223
|
+
* const privateKey = MlDsa44.fromMnemonic(
|
|
224
|
+
* 'test test test test test test test test test test test junk'
|
|
225
|
+
* )
|
|
226
|
+
* ```
|
|
227
|
+
*
|
|
228
|
+
* @param mnemonic - BIP-39 mnemonic phrase.
|
|
229
|
+
* @param options - Options.
|
|
230
|
+
* @returns An ML-DSA-44 private key (32-byte seed).
|
|
231
|
+
*/
|
|
232
|
+
export declare function fromMnemonic<as extends 'Hex' | 'Bytes' = 'Hex'>(mnemonic: string, options?: fromMnemonic.Options<as>): fromMnemonic.ReturnType<as>;
|
|
233
|
+
export declare namespace fromMnemonic {
|
|
234
|
+
type Options<as extends 'Hex' | 'Bytes' = 'Hex'> = {
|
|
235
|
+
/**
|
|
236
|
+
* Format of the returned private key.
|
|
237
|
+
* @default 'Hex'
|
|
238
|
+
*/
|
|
239
|
+
as?: as | 'Hex' | 'Bytes' | undefined;
|
|
240
|
+
/** Optional BIP-39 passphrase. */
|
|
241
|
+
passphrase?: string | undefined;
|
|
242
|
+
};
|
|
243
|
+
type ReturnType<as extends 'Hex' | 'Bytes'> = fromSeed.ReturnType<as>;
|
|
244
|
+
type ErrorType = fromSeed.ErrorType;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Derives an ML-DSA-44 private key from a seed.
|
|
248
|
+
*
|
|
249
|
+
* The seed must contain at least 32 bytes of cryptographically strong key
|
|
250
|
+
* material. Do not pass a password directly; use a password KDF first.
|
|
251
|
+
*
|
|
252
|
+
* The permanent derivation contract uses the seed as the HMAC-SHA256
|
|
253
|
+
* key. The HMAC message uses the `ox.mldsa44.fromSeed.v1` domain followed by a
|
|
254
|
+
* 32-bit big-endian counter set to zero.
|
|
255
|
+
*
|
|
256
|
+
* @example
|
|
257
|
+
* ```ts twoslash
|
|
258
|
+
* import { MlDsa44 } from 'ox'
|
|
259
|
+
*
|
|
260
|
+
* const privateKey = MlDsa44.fromSeed(
|
|
261
|
+
* '0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'
|
|
262
|
+
* )
|
|
263
|
+
* ```
|
|
264
|
+
*
|
|
265
|
+
* @param seed - Seed containing at least 32 bytes of cryptographically strong key material.
|
|
266
|
+
* @param options - Options.
|
|
267
|
+
* @returns An ML-DSA-44 private key (32-byte seed).
|
|
268
|
+
*/
|
|
269
|
+
export declare function fromSeed<as extends 'Hex' | 'Bytes' = 'Hex'>(seed: Hex.Hex | Bytes.Bytes, options?: fromSeed.Options<as>): fromSeed.ReturnType<as>;
|
|
270
|
+
export declare namespace fromSeed {
|
|
271
|
+
type Options<as extends 'Hex' | 'Bytes' = 'Hex'> = {
|
|
272
|
+
/**
|
|
273
|
+
* Format of the returned private key.
|
|
274
|
+
* @default 'Hex'
|
|
275
|
+
*/
|
|
276
|
+
as?: as | 'Hex' | 'Bytes' | undefined;
|
|
277
|
+
};
|
|
278
|
+
type ReturnType<as extends 'Hex' | 'Bytes'> = (as extends 'Bytes' ? Bytes.Bytes : never) | (as extends 'Hex' ? Hex.Hex : never);
|
|
279
|
+
type ErrorType = Bytes.from.ErrorType | Hex.fromBytes.ErrorType | keyDerivation.derive.ErrorType | InvalidSeedSizeError | Errors.GlobalErrorType;
|
|
280
|
+
}
|
|
214
281
|
/**
|
|
215
282
|
* Computes the ML-DSA-44 public key from a provided private key.
|
|
216
283
|
*
|
|
@@ -386,4 +453,16 @@ export declare namespace InvalidPrfSizeError {
|
|
|
386
453
|
size: number;
|
|
387
454
|
};
|
|
388
455
|
}
|
|
456
|
+
/** Thrown when a seed contains fewer than 32 bytes. */
|
|
457
|
+
export declare class InvalidSeedSizeError extends Errors.BaseError {
|
|
458
|
+
readonly name = "MlDsa44.InvalidSeedSizeError";
|
|
459
|
+
constructor(options: InvalidSeedSizeError.Options);
|
|
460
|
+
}
|
|
461
|
+
export declare namespace InvalidSeedSizeError {
|
|
462
|
+
/** Options for {@link ox#MlDsa44.InvalidSeedSizeError}. */
|
|
463
|
+
type Options = {
|
|
464
|
+
/** Received seed size. */
|
|
465
|
+
size: number;
|
|
466
|
+
};
|
|
467
|
+
}
|
|
389
468
|
//# sourceMappingURL=MlDsa44.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MlDsa44.d.ts","sourceRoot":"","sources":["../../src/core/MlDsa44.ts"],"names":[],"mappings":"AACA,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":"MlDsa44.d.ts","sourceRoot":"","sources":["../../src/core/MlDsa44.ts"],"names":[],"mappings":"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"}
|
package/dist/core/MlDsa44.js
CHANGED
|
@@ -4,7 +4,9 @@ import * as Errors from './Errors.js';
|
|
|
4
4
|
import * as Hash from './Hash.js';
|
|
5
5
|
import * as Hex from './Hex.js';
|
|
6
6
|
import * as Entropy from './internal/entropy.js';
|
|
7
|
+
import * as keyDerivation from './internal/keyDerivation.js';
|
|
7
8
|
import * as engine from './internal/mlDsa44.js';
|
|
9
|
+
import * as mnemonic_ from './internal/mnemonic.js';
|
|
8
10
|
/** Re-export of noble/post-quantum ML-DSA-44 utilities. */
|
|
9
11
|
export const noble = ml_dsa44;
|
|
10
12
|
/** Size of an ML-DSA-44 private key (seed) in bytes. */
|
|
@@ -44,8 +46,8 @@ export function createKeyPair(options = {}) {
|
|
|
44
46
|
* Derives an ML-DSA-44 private key from a 32-byte WebAuthn PRF output.
|
|
45
47
|
*
|
|
46
48
|
* The permanent derivation contract uses the PRF output as the HMAC-SHA256
|
|
47
|
-
* key.
|
|
48
|
-
*
|
|
49
|
+
* key. The HMAC message uses the `ox.mldsa44.fromPrf.v1` domain followed by a
|
|
50
|
+
* 32-bit big-endian counter set to zero.
|
|
49
51
|
*
|
|
50
52
|
* @example
|
|
51
53
|
* ```ts twoslash
|
|
@@ -65,7 +67,72 @@ export function fromPrf(value, options = {}) {
|
|
|
65
67
|
const bytes = Bytes.from(value);
|
|
66
68
|
if (bytes.length !== 32)
|
|
67
69
|
throw new InvalidPrfSizeError({ size: bytes.length });
|
|
68
|
-
const privateKey = Hash.hmac256(bytes, Bytes.concat(
|
|
70
|
+
const privateKey = Hash.hmac256(bytes, Bytes.concat(fromPrfDomain, Bytes.fromNumber(0, { size: 4 })), { as: 'Bytes' });
|
|
71
|
+
if (as === 'Hex') {
|
|
72
|
+
const value = Hex.fromBytes(privateKey);
|
|
73
|
+
privateKey.fill(0);
|
|
74
|
+
return value;
|
|
75
|
+
}
|
|
76
|
+
return privateKey;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Derives an ML-DSA-44 private key from a BIP-39 mnemonic.
|
|
80
|
+
*
|
|
81
|
+
* This is equivalent to passing `Mnemonic.toSeed(mnemonic, { passphrase })`
|
|
82
|
+
* to {@link ox#MlDsa44.fromSeed}.
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```ts twoslash
|
|
86
|
+
* import { MlDsa44 } from 'ox'
|
|
87
|
+
*
|
|
88
|
+
* const privateKey = MlDsa44.fromMnemonic(
|
|
89
|
+
* 'test test test test test test test test test test test junk'
|
|
90
|
+
* )
|
|
91
|
+
* ```
|
|
92
|
+
*
|
|
93
|
+
* @param mnemonic - BIP-39 mnemonic phrase.
|
|
94
|
+
* @param options - Options.
|
|
95
|
+
* @returns An ML-DSA-44 private key (32-byte seed).
|
|
96
|
+
*/
|
|
97
|
+
export function fromMnemonic(mnemonic, options = {}) {
|
|
98
|
+
const { passphrase } = options;
|
|
99
|
+
const seed = mnemonic_.toSeed(mnemonic, passphrase);
|
|
100
|
+
try {
|
|
101
|
+
return fromSeed(seed, options);
|
|
102
|
+
}
|
|
103
|
+
finally {
|
|
104
|
+
seed.fill(0);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Derives an ML-DSA-44 private key from a seed.
|
|
109
|
+
*
|
|
110
|
+
* The seed must contain at least 32 bytes of cryptographically strong key
|
|
111
|
+
* material. Do not pass a password directly; use a password KDF first.
|
|
112
|
+
*
|
|
113
|
+
* The permanent derivation contract uses the seed as the HMAC-SHA256
|
|
114
|
+
* key. The HMAC message uses the `ox.mldsa44.fromSeed.v1` domain followed by a
|
|
115
|
+
* 32-bit big-endian counter set to zero.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```ts twoslash
|
|
119
|
+
* import { MlDsa44 } from 'ox'
|
|
120
|
+
*
|
|
121
|
+
* const privateKey = MlDsa44.fromSeed(
|
|
122
|
+
* '0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'
|
|
123
|
+
* )
|
|
124
|
+
* ```
|
|
125
|
+
*
|
|
126
|
+
* @param seed - Seed containing at least 32 bytes of cryptographically strong key material.
|
|
127
|
+
* @param options - Options.
|
|
128
|
+
* @returns An ML-DSA-44 private key (32-byte seed).
|
|
129
|
+
*/
|
|
130
|
+
export function fromSeed(seed, options = {}) {
|
|
131
|
+
const { as = 'Hex' } = options;
|
|
132
|
+
const bytes = Bytes.from(seed);
|
|
133
|
+
if (bytes.length < 32)
|
|
134
|
+
throw new InvalidSeedSizeError({ size: bytes.length });
|
|
135
|
+
const privateKey = keyDerivation.derive(bytes, fromSeedDomain);
|
|
69
136
|
if (as === 'Hex') {
|
|
70
137
|
const value = Hex.fromBytes(privateKey);
|
|
71
138
|
privateKey.fill(0);
|
|
@@ -194,6 +261,13 @@ export class InvalidPrfSizeError extends Errors.BaseError {
|
|
|
194
261
|
super(`PRF output must be exactly 32 bytes. Received ${options.size} bytes.`);
|
|
195
262
|
}
|
|
196
263
|
}
|
|
264
|
+
/** Thrown when a seed contains fewer than 32 bytes. */
|
|
265
|
+
export class InvalidSeedSizeError extends Errors.BaseError {
|
|
266
|
+
name = 'MlDsa44.InvalidSeedSizeError';
|
|
267
|
+
constructor(options) {
|
|
268
|
+
super(`Seed must contain at least 32 bytes. Received ${options.size} bytes.`);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
197
271
|
function toContextBytes(context) {
|
|
198
272
|
if (context === undefined)
|
|
199
273
|
return undefined;
|
|
@@ -202,5 +276,6 @@ function toContextBytes(context) {
|
|
|
202
276
|
throw new InvalidContextSizeError({ size: bytes.length });
|
|
203
277
|
return bytes;
|
|
204
278
|
}
|
|
205
|
-
const
|
|
279
|
+
const fromPrfDomain = Bytes.fromString('ox.mldsa44.fromPrf.v1');
|
|
280
|
+
const fromSeedDomain = Bytes.fromString('ox.mldsa44.fromSeed.v1');
|
|
206
281
|
//# sourceMappingURL=MlDsa44.js.map
|
package/dist/core/MlDsa44.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MlDsa44.js","sourceRoot":"","sources":["../../src/core/MlDsa44.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AACxD,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,KAAK,OAAO,MAAM,uBAAuB,CAAA;AAChD,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"MlDsa44.js","sourceRoot":"","sources":["../../src/core/MlDsa44.ts"],"names":[],"mappings":"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"}
|
package/dist/core/P256.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as Bytes from './Bytes.js';
|
|
2
|
-
import
|
|
2
|
+
import * as Errors from './Errors.js';
|
|
3
3
|
import * as Hex from './Hex.js';
|
|
4
|
+
import * as keyDerivation from './internal/keyDerivation.js';
|
|
4
5
|
import * as PublicKey from './PublicKey.js';
|
|
5
6
|
import type * as Signature from './Signature.js';
|
|
6
7
|
/** Re-export of noble/curves P256 utilities. */
|
|
@@ -33,6 +34,74 @@ export declare namespace createKeyPair {
|
|
|
33
34
|
};
|
|
34
35
|
type ErrorType = Hex.fromBytes.ErrorType | PublicKey.from.ErrorType | Errors.GlobalErrorType;
|
|
35
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Derives a valid P256 private key from a BIP-39 mnemonic.
|
|
39
|
+
*
|
|
40
|
+
* This is equivalent to passing `Mnemonic.toSeed(mnemonic, { passphrase })`
|
|
41
|
+
* to {@link ox#P256.fromSeed}.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts twoslash
|
|
45
|
+
* import { P256 } from 'ox'
|
|
46
|
+
*
|
|
47
|
+
* const privateKey = P256.fromMnemonic(
|
|
48
|
+
* 'test test test test test test test test test test test junk'
|
|
49
|
+
* )
|
|
50
|
+
* ```
|
|
51
|
+
*
|
|
52
|
+
* @param mnemonic - BIP-39 mnemonic phrase.
|
|
53
|
+
* @param options - Options.
|
|
54
|
+
* @returns A valid P256 private key.
|
|
55
|
+
*/
|
|
56
|
+
export declare function fromMnemonic<as extends 'Hex' | 'Bytes' = 'Hex'>(mnemonic: string, options?: fromMnemonic.Options<as>): fromMnemonic.ReturnType<as>;
|
|
57
|
+
export declare namespace fromMnemonic {
|
|
58
|
+
type Options<as extends 'Hex' | 'Bytes' = 'Hex'> = {
|
|
59
|
+
/**
|
|
60
|
+
* Format of the returned private key.
|
|
61
|
+
* @default 'Hex'
|
|
62
|
+
*/
|
|
63
|
+
as?: as | 'Hex' | 'Bytes' | undefined;
|
|
64
|
+
/** Optional BIP-39 passphrase. */
|
|
65
|
+
passphrase?: string | undefined;
|
|
66
|
+
};
|
|
67
|
+
type ReturnType<as extends 'Hex' | 'Bytes'> = fromSeed.ReturnType<as>;
|
|
68
|
+
type ErrorType = fromSeed.ErrorType;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Derives a valid P256 private key from a seed.
|
|
72
|
+
*
|
|
73
|
+
* The seed must contain at least 32 bytes of cryptographically strong key
|
|
74
|
+
* material. Do not pass a password directly; use a password KDF first.
|
|
75
|
+
*
|
|
76
|
+
* The permanent derivation contract uses the seed as the HMAC-SHA256
|
|
77
|
+
* key. The HMAC message uses the `ox.p256.fromSeed.v1` domain followed by a
|
|
78
|
+
* 32-bit big-endian counter starting at zero. Invalid scalars are skipped.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```ts twoslash
|
|
82
|
+
* import { P256 } from 'ox'
|
|
83
|
+
*
|
|
84
|
+
* const privateKey = P256.fromSeed(
|
|
85
|
+
* '0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'
|
|
86
|
+
* )
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* @param seed - Seed containing at least 32 bytes of cryptographically strong key material.
|
|
90
|
+
* @param options - Options.
|
|
91
|
+
* @returns A valid P256 private key.
|
|
92
|
+
*/
|
|
93
|
+
export declare function fromSeed<as extends 'Hex' | 'Bytes' = 'Hex'>(seed: Hex.Hex | Bytes.Bytes, options?: fromSeed.Options<as>): fromSeed.ReturnType<as>;
|
|
94
|
+
export declare namespace fromSeed {
|
|
95
|
+
type Options<as extends 'Hex' | 'Bytes' = 'Hex'> = {
|
|
96
|
+
/**
|
|
97
|
+
* Format of the returned private key.
|
|
98
|
+
* @default 'Hex'
|
|
99
|
+
*/
|
|
100
|
+
as?: as | 'Hex' | 'Bytes' | undefined;
|
|
101
|
+
};
|
|
102
|
+
type ReturnType<as extends 'Hex' | 'Bytes'> = (as extends 'Bytes' ? Bytes.Bytes : never) | (as extends 'Hex' ? Hex.Hex : never);
|
|
103
|
+
type ErrorType = Bytes.from.ErrorType | Hex.fromBytes.ErrorType | keyDerivation.derive.ErrorType | InvalidSeedSizeError | Errors.GlobalErrorType;
|
|
104
|
+
}
|
|
36
105
|
/**
|
|
37
106
|
* Computes the P256 ECDSA public key from a provided private key.
|
|
38
107
|
*
|
|
@@ -268,4 +337,16 @@ export declare namespace verify {
|
|
|
268
337
|
};
|
|
269
338
|
type ErrorType = Errors.GlobalErrorType;
|
|
270
339
|
}
|
|
340
|
+
/** Thrown when a seed contains fewer than 32 bytes. */
|
|
341
|
+
export declare class InvalidSeedSizeError extends Errors.BaseError {
|
|
342
|
+
readonly name = "P256.InvalidSeedSizeError";
|
|
343
|
+
constructor(options: InvalidSeedSizeError.Options);
|
|
344
|
+
}
|
|
345
|
+
export declare namespace InvalidSeedSizeError {
|
|
346
|
+
/** Options for {@link ox#P256.InvalidSeedSizeError}. */
|
|
347
|
+
type Options = {
|
|
348
|
+
/** Received seed size. */
|
|
349
|
+
size: number;
|
|
350
|
+
};
|
|
351
|
+
}
|
|
271
352
|
//# sourceMappingURL=P256.d.ts.map
|
package/dist/core/P256.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"P256.d.ts","sourceRoot":"","sources":["../../src/core/P256.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"P256.d.ts","sourceRoot":"","sources":["../../src/core/P256.ts"],"names":[],"mappings":"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"}
|
package/dist/core/P256.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { p256 as noble_p256 } from '@noble/curves/nist.js';
|
|
2
2
|
import * as Bytes from './Bytes.js';
|
|
3
|
+
import * as Errors from './Errors.js';
|
|
3
4
|
import * as Hex from './Hex.js';
|
|
4
5
|
import { formatPublicKey, formatSignature, normalizePublicKey, normalizeSignature, } from './internal/cryptoIo.js';
|
|
6
|
+
import * as keyDerivation from './internal/keyDerivation.js';
|
|
7
|
+
import * as mnemonic_ from './internal/mnemonic.js';
|
|
5
8
|
import * as engine from './internal/p256.js';
|
|
6
9
|
import * as Entropy from './internal/entropy.js';
|
|
7
10
|
import { fromRecoveredBytes, toCompactBytes, toRecoveredBytes, } from './internal/signature.js';
|
|
@@ -30,6 +33,73 @@ export function createKeyPair(options = {}) {
|
|
|
30
33
|
publicKey,
|
|
31
34
|
};
|
|
32
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Derives a valid P256 private key from a BIP-39 mnemonic.
|
|
38
|
+
*
|
|
39
|
+
* This is equivalent to passing `Mnemonic.toSeed(mnemonic, { passphrase })`
|
|
40
|
+
* to {@link ox#P256.fromSeed}.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts twoslash
|
|
44
|
+
* import { P256 } from 'ox'
|
|
45
|
+
*
|
|
46
|
+
* const privateKey = P256.fromMnemonic(
|
|
47
|
+
* 'test test test test test test test test test test test junk'
|
|
48
|
+
* )
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @param mnemonic - BIP-39 mnemonic phrase.
|
|
52
|
+
* @param options - Options.
|
|
53
|
+
* @returns A valid P256 private key.
|
|
54
|
+
*/
|
|
55
|
+
export function fromMnemonic(mnemonic, options = {}) {
|
|
56
|
+
const { passphrase } = options;
|
|
57
|
+
const seed = mnemonic_.toSeed(mnemonic, passphrase);
|
|
58
|
+
try {
|
|
59
|
+
return fromSeed(seed, options);
|
|
60
|
+
}
|
|
61
|
+
finally {
|
|
62
|
+
seed.fill(0);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Derives a valid P256 private key from a seed.
|
|
67
|
+
*
|
|
68
|
+
* The seed must contain at least 32 bytes of cryptographically strong key
|
|
69
|
+
* material. Do not pass a password directly; use a password KDF first.
|
|
70
|
+
*
|
|
71
|
+
* The permanent derivation contract uses the seed as the HMAC-SHA256
|
|
72
|
+
* key. The HMAC message uses the `ox.p256.fromSeed.v1` domain followed by a
|
|
73
|
+
* 32-bit big-endian counter starting at zero. Invalid scalars are skipped.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```ts twoslash
|
|
77
|
+
* import { P256 } from 'ox'
|
|
78
|
+
*
|
|
79
|
+
* const privateKey = P256.fromSeed(
|
|
80
|
+
* '0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'
|
|
81
|
+
* )
|
|
82
|
+
* ```
|
|
83
|
+
*
|
|
84
|
+
* @param seed - Seed containing at least 32 bytes of cryptographically strong key material.
|
|
85
|
+
* @param options - Options.
|
|
86
|
+
* @returns A valid P256 private key.
|
|
87
|
+
*/
|
|
88
|
+
export function fromSeed(seed, options = {}) {
|
|
89
|
+
const { as = 'Hex' } = options;
|
|
90
|
+
const bytes = Bytes.from(seed);
|
|
91
|
+
if (bytes.length < 32)
|
|
92
|
+
throw new InvalidSeedSizeError({ size: bytes.length });
|
|
93
|
+
const privateKey = keyDerivation.derive(bytes, fromSeedDomain, {
|
|
94
|
+
validate: noble.utils.isValidSecretKey,
|
|
95
|
+
});
|
|
96
|
+
if (as === 'Hex') {
|
|
97
|
+
const value = Hex.fromBytes(privateKey);
|
|
98
|
+
privateKey.fill(0);
|
|
99
|
+
return value;
|
|
100
|
+
}
|
|
101
|
+
return privateKey;
|
|
102
|
+
}
|
|
33
103
|
/**
|
|
34
104
|
* Computes the P256 ECDSA public key from a provided private key.
|
|
35
105
|
*
|
|
@@ -181,4 +251,12 @@ export function verify(options) {
|
|
|
181
251
|
const { hash, payload, publicKey, signature } = options;
|
|
182
252
|
return engine.verify(toCompactBytes(normalizeSignature(signature)), Bytes.from(payload), PublicKey.toBytes(normalizePublicKey(publicKey)), { prehash: hash === true });
|
|
183
253
|
}
|
|
254
|
+
/** Thrown when a seed contains fewer than 32 bytes. */
|
|
255
|
+
export class InvalidSeedSizeError extends Errors.BaseError {
|
|
256
|
+
name = 'P256.InvalidSeedSizeError';
|
|
257
|
+
constructor(options) {
|
|
258
|
+
super(`Seed must contain at least 32 bytes. Received ${options.size} bytes.`);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
const fromSeedDomain = Bytes.fromString('ox.p256.fromSeed.v1');
|
|
184
262
|
//# sourceMappingURL=P256.js.map
|
package/dist/core/P256.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"P256.js","sourceRoot":"","sources":["../../src/core/P256.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"P256.js","sourceRoot":"","sources":["../../src/core/P256.ts"],"names":[],"mappings":"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"}
|
package/dist/core/Secp256k1.d.ts
CHANGED
|
@@ -3,7 +3,9 @@ import * as Bytes from './Bytes.js';
|
|
|
3
3
|
import * as Errors from './Errors.js';
|
|
4
4
|
import * as Hash from './Hash.js';
|
|
5
5
|
import * as Hex from './Hex.js';
|
|
6
|
+
import * as keyDerivation from './internal/keyDerivation.js';
|
|
6
7
|
import type { OneOf } from './internal/types.js';
|
|
8
|
+
import * as Mnemonic from './Mnemonic.js';
|
|
7
9
|
import * as PublicKey from './PublicKey.js';
|
|
8
10
|
import type * as Signature from './Signature.js';
|
|
9
11
|
/** Re-export of noble/curves secp256k1 utilities. */
|
|
@@ -40,7 +42,7 @@ export declare namespace createKeyPair {
|
|
|
40
42
|
* Derives a valid secp256k1 private key from a 32-byte WebAuthn PRF output.
|
|
41
43
|
*
|
|
42
44
|
* The permanent derivation contract uses the PRF output as the HMAC-SHA256
|
|
43
|
-
* key.
|
|
45
|
+
* key. The HMAC message uses the `ox.secp256k1.fromPrf.v1` domain followed by
|
|
44
46
|
* a 32-bit big-endian counter starting at zero. Invalid scalars are skipped.
|
|
45
47
|
*
|
|
46
48
|
* @example
|
|
@@ -68,6 +70,76 @@ export declare namespace fromPrf {
|
|
|
68
70
|
type ReturnType<as extends 'Hex' | 'Bytes'> = (as extends 'Bytes' ? Bytes.Bytes : never) | (as extends 'Hex' ? Hex.Hex : never);
|
|
69
71
|
type ErrorType = Bytes.concat.ErrorType | Bytes.from.ErrorType | Bytes.fromNumber.ErrorType | Hash.hmac256.ErrorType | Hex.fromBytes.ErrorType | InvalidPrfSizeError | Errors.GlobalErrorType;
|
|
70
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Derives a valid secp256k1 private key from a BIP-39 mnemonic.
|
|
75
|
+
*
|
|
76
|
+
* This is equivalent to {@link ox#Mnemonic.toPrivateKey}, and derives the
|
|
77
|
+
* private key at `m/44'/60'/0'/0/0` by default.
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```ts twoslash
|
|
81
|
+
* import { Secp256k1 } from 'ox'
|
|
82
|
+
*
|
|
83
|
+
* const privateKey = Secp256k1.fromMnemonic(
|
|
84
|
+
* 'test test test test test test test test test test test junk'
|
|
85
|
+
* )
|
|
86
|
+
* ```
|
|
87
|
+
*
|
|
88
|
+
* @param mnemonic - BIP-39 mnemonic phrase.
|
|
89
|
+
* @param options - Options.
|
|
90
|
+
* @returns A valid secp256k1 private key.
|
|
91
|
+
*/
|
|
92
|
+
export declare function fromMnemonic<as extends 'Hex' | 'Bytes' = 'Hex'>(mnemonic: string, options?: fromMnemonic.Options<as>): fromMnemonic.ReturnType<as>;
|
|
93
|
+
export declare namespace fromMnemonic {
|
|
94
|
+
type Options<as extends 'Hex' | 'Bytes' = 'Hex'> = {
|
|
95
|
+
/**
|
|
96
|
+
* Format of the returned private key.
|
|
97
|
+
* @default 'Hex'
|
|
98
|
+
*/
|
|
99
|
+
as?: as | 'Hex' | 'Bytes' | undefined;
|
|
100
|
+
/** Derivation path. @default `m/44'/60'/0'/0/0` */
|
|
101
|
+
path?: string | undefined;
|
|
102
|
+
/** Optional BIP-39 passphrase. */
|
|
103
|
+
passphrase?: string | undefined;
|
|
104
|
+
};
|
|
105
|
+
type ReturnType<as extends 'Hex' | 'Bytes'> = Mnemonic.toPrivateKey.ReturnType<as>;
|
|
106
|
+
type ErrorType = Mnemonic.toPrivateKey.ErrorType;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Derives a valid secp256k1 private key from a seed.
|
|
110
|
+
*
|
|
111
|
+
* The seed must contain at least 32 bytes of cryptographically strong key
|
|
112
|
+
* material. Do not pass a password directly; use a password KDF first.
|
|
113
|
+
*
|
|
114
|
+
* The permanent derivation contract uses the seed as the HMAC-SHA256
|
|
115
|
+
* key. The HMAC message uses the `ox.secp256k1.fromSeed.v1` domain followed by
|
|
116
|
+
* a 32-bit big-endian counter starting at zero. Invalid scalars are skipped.
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```ts twoslash
|
|
120
|
+
* import { Secp256k1 } from 'ox'
|
|
121
|
+
*
|
|
122
|
+
* const privateKey = Secp256k1.fromSeed(
|
|
123
|
+
* '0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'
|
|
124
|
+
* )
|
|
125
|
+
* ```
|
|
126
|
+
*
|
|
127
|
+
* @param seed - Seed containing at least 32 bytes of cryptographically strong key material.
|
|
128
|
+
* @param options - Options.
|
|
129
|
+
* @returns A valid secp256k1 private key.
|
|
130
|
+
*/
|
|
131
|
+
export declare function fromSeed<as extends 'Hex' | 'Bytes' = 'Hex'>(seed: Hex.Hex | Bytes.Bytes, options?: fromSeed.Options<as>): fromSeed.ReturnType<as>;
|
|
132
|
+
export declare namespace fromSeed {
|
|
133
|
+
type Options<as extends 'Hex' | 'Bytes' = 'Hex'> = {
|
|
134
|
+
/**
|
|
135
|
+
* Format of the returned private key.
|
|
136
|
+
* @default 'Hex'
|
|
137
|
+
*/
|
|
138
|
+
as?: as | 'Hex' | 'Bytes' | undefined;
|
|
139
|
+
};
|
|
140
|
+
type ReturnType<as extends 'Hex' | 'Bytes'> = (as extends 'Bytes' ? Bytes.Bytes : never) | (as extends 'Hex' ? Hex.Hex : never);
|
|
141
|
+
type ErrorType = Bytes.from.ErrorType | Hex.fromBytes.ErrorType | keyDerivation.derive.ErrorType | InvalidSeedSizeError | Errors.GlobalErrorType;
|
|
142
|
+
}
|
|
71
143
|
/**
|
|
72
144
|
* Computes the secp256k1 ECDSA public key from a provided private key.
|
|
73
145
|
*
|
|
@@ -388,4 +460,16 @@ export declare namespace InvalidPrfSizeError {
|
|
|
388
460
|
size: number;
|
|
389
461
|
};
|
|
390
462
|
}
|
|
463
|
+
/** Thrown when a seed contains fewer than 32 bytes. */
|
|
464
|
+
export declare class InvalidSeedSizeError extends Errors.BaseError {
|
|
465
|
+
readonly name = "Secp256k1.InvalidSeedSizeError";
|
|
466
|
+
constructor(options: InvalidSeedSizeError.Options);
|
|
467
|
+
}
|
|
468
|
+
export declare namespace InvalidSeedSizeError {
|
|
469
|
+
/** Options for {@link ox#Secp256k1.InvalidSeedSizeError}. */
|
|
470
|
+
type Options = {
|
|
471
|
+
/** Received seed size. */
|
|
472
|
+
size: number;
|
|
473
|
+
};
|
|
474
|
+
}
|
|
391
475
|
//# sourceMappingURL=Secp256k1.d.ts.map
|