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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# ox
|
|
2
2
|
|
|
3
|
+
## 1.7.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#394](https://github.com/wevm/ox/pull/394) [`06021e1`](https://github.com/wevm/ox/commit/06021e18ade1d85163d8bfcc0ae6e848256da30d) Thanks [@jxom](https://github.com/jxom)! - Added seed and BIP-39 mnemonic key derivation for P256, Secp256k1, Ed25519, ML-DSA-44, and AES-GCM, with domain separation for non-HD derivations.
|
|
8
|
+
|
|
9
|
+
## 1.6.3
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#389](https://github.com/wevm/ox/pull/389) [`8d66309`](https://github.com/wevm/ox/commit/8d66309cb43884f1eb40cd0bca6e9b78be269690) Thanks [@jxom](https://github.com/jxom)! - Updated native multisig signing for configuration versions, access-key authorization, current protocol limits, and the `initialConfig` naming.
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
import { MultisigConfig } from "ox/tempo";
|
|
17
|
+
|
|
18
|
+
const digest = MultisigConfig.getSignPayload({ initialConfig, payload });
|
|
19
|
+
```
|
|
20
|
+
|
|
3
21
|
## 1.6.2
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/dist/core/AesGcm.d.ts
CHANGED
|
@@ -64,8 +64,8 @@ export declare namespace encrypt {
|
|
|
64
64
|
* Derives an AES-256-GCM key from a 32-byte WebAuthn PRF output.
|
|
65
65
|
*
|
|
66
66
|
* The permanent derivation contract uses the PRF output as the HMAC-SHA256
|
|
67
|
-
* key.
|
|
68
|
-
*
|
|
67
|
+
* key. The HMAC message uses the `ox.aesGcm.fromPrf.v1` domain followed by a
|
|
68
|
+
* 32-bit big-endian counter set to zero.
|
|
69
69
|
*
|
|
70
70
|
* @example
|
|
71
71
|
* ```ts twoslash
|
|
@@ -83,6 +83,59 @@ export declare function fromPrf(value: Hex.Hex | Bytes.Bytes): Promise<CryptoKey
|
|
|
83
83
|
export declare namespace fromPrf {
|
|
84
84
|
type ErrorType = Bytes.concat.ErrorType | Bytes.from.ErrorType | Bytes.fromNumber.ErrorType | InvalidPrfSizeError | Errors.GlobalErrorType;
|
|
85
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Derives an AES-256-GCM key from a BIP-39 mnemonic.
|
|
88
|
+
*
|
|
89
|
+
* This is equivalent to passing `Mnemonic.toSeed(mnemonic, { passphrase })`
|
|
90
|
+
* to {@link ox#AesGcm.fromSeed}.
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```ts twoslash
|
|
94
|
+
* import { AesGcm } from 'ox'
|
|
95
|
+
*
|
|
96
|
+
* const key = await AesGcm.fromMnemonic(
|
|
97
|
+
* 'test test test test test test test test test test test junk'
|
|
98
|
+
* )
|
|
99
|
+
* ```
|
|
100
|
+
*
|
|
101
|
+
* @param mnemonic - BIP-39 mnemonic phrase.
|
|
102
|
+
* @param options - Options.
|
|
103
|
+
* @returns A nonextractable AES-256-GCM key for encryption and decryption.
|
|
104
|
+
*/
|
|
105
|
+
export declare function fromMnemonic(mnemonic: string, options?: fromMnemonic.Options): Promise<CryptoKey>;
|
|
106
|
+
export declare namespace fromMnemonic {
|
|
107
|
+
type Options = {
|
|
108
|
+
/** Optional BIP-39 passphrase. */
|
|
109
|
+
passphrase?: string | undefined;
|
|
110
|
+
};
|
|
111
|
+
type ErrorType = fromSeed.ErrorType;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Derives an AES-256-GCM key from a seed.
|
|
115
|
+
*
|
|
116
|
+
* The seed must contain at least 32 bytes of cryptographically strong key
|
|
117
|
+
* material. Do not pass a password directly; use a password KDF first.
|
|
118
|
+
*
|
|
119
|
+
* The permanent derivation contract uses the seed as the HMAC-SHA256
|
|
120
|
+
* key. The HMAC message uses the `ox.aesGcm.fromSeed.v1` domain followed by a
|
|
121
|
+
* 32-bit big-endian counter set to zero.
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* ```ts twoslash
|
|
125
|
+
* import { AesGcm } from 'ox'
|
|
126
|
+
*
|
|
127
|
+
* const key = await AesGcm.fromSeed(
|
|
128
|
+
* '0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'
|
|
129
|
+
* )
|
|
130
|
+
* ```
|
|
131
|
+
*
|
|
132
|
+
* @param seed - Seed containing at least 32 bytes of cryptographically strong key material.
|
|
133
|
+
* @returns A nonextractable AES-256-GCM key for encryption and decryption.
|
|
134
|
+
*/
|
|
135
|
+
export declare function fromSeed(seed: Hex.Hex | Bytes.Bytes): Promise<CryptoKey>;
|
|
136
|
+
export declare namespace fromSeed {
|
|
137
|
+
type ErrorType = Bytes.concat.ErrorType | Bytes.from.ErrorType | Bytes.fromNumber.ErrorType | InvalidSeedSizeError | Errors.GlobalErrorType;
|
|
138
|
+
}
|
|
86
139
|
/**
|
|
87
140
|
* Derives an AES-GCM key from a password using PBKDF2.
|
|
88
141
|
*
|
|
@@ -139,4 +192,16 @@ export declare namespace InvalidPrfSizeError {
|
|
|
139
192
|
size: number;
|
|
140
193
|
};
|
|
141
194
|
}
|
|
195
|
+
/** Thrown when a seed contains fewer than 32 bytes. */
|
|
196
|
+
export declare class InvalidSeedSizeError extends Errors.BaseError {
|
|
197
|
+
readonly name = "AesGcm.InvalidSeedSizeError";
|
|
198
|
+
constructor(options: InvalidSeedSizeError.Options);
|
|
199
|
+
}
|
|
200
|
+
export declare namespace InvalidSeedSizeError {
|
|
201
|
+
/** Options for {@link ox#AesGcm.InvalidSeedSizeError}. */
|
|
202
|
+
type Options = {
|
|
203
|
+
/** Received seed size. */
|
|
204
|
+
size: number;
|
|
205
|
+
};
|
|
206
|
+
}
|
|
142
207
|
//# sourceMappingURL=AesGcm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AesGcm.d.ts","sourceRoot":"","sources":["../../src/core/AesGcm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"AesGcm.d.ts","sourceRoot":"","sources":["../../src/core/AesGcm.ts"],"names":[],"mappings":"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"}
|
package/dist/core/AesGcm.js
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
|
export const ivLength = 16;
|
|
5
6
|
/**
|
|
6
7
|
* Decrypts encrypted data using AES-GCM.
|
|
@@ -76,8 +77,8 @@ export async function encrypt(value, key, options = {}) {
|
|
|
76
77
|
* Derives an AES-256-GCM key from a 32-byte WebAuthn PRF output.
|
|
77
78
|
*
|
|
78
79
|
* The permanent derivation contract uses the PRF output as the HMAC-SHA256
|
|
79
|
-
* key.
|
|
80
|
-
*
|
|
80
|
+
* key. The HMAC message uses the `ox.aesGcm.fromPrf.v1` domain followed by a
|
|
81
|
+
* 32-bit big-endian counter set to zero.
|
|
81
82
|
*
|
|
82
83
|
* @example
|
|
83
84
|
* ```ts twoslash
|
|
@@ -95,18 +96,65 @@ export async function fromPrf(value) {
|
|
|
95
96
|
const bytes = Bytes.from(value);
|
|
96
97
|
if (bytes.length !== 32)
|
|
97
98
|
throw new InvalidPrfSizeError({ size: bytes.length });
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
99
|
+
return deriveKey(bytes, fromPrfDomain);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Derives an AES-256-GCM key from a BIP-39 mnemonic.
|
|
103
|
+
*
|
|
104
|
+
* This is equivalent to passing `Mnemonic.toSeed(mnemonic, { passphrase })`
|
|
105
|
+
* to {@link ox#AesGcm.fromSeed}.
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```ts twoslash
|
|
109
|
+
* import { AesGcm } from 'ox'
|
|
110
|
+
*
|
|
111
|
+
* const key = await AesGcm.fromMnemonic(
|
|
112
|
+
* 'test test test test test test test test test test test junk'
|
|
113
|
+
* )
|
|
114
|
+
* ```
|
|
115
|
+
*
|
|
116
|
+
* @param mnemonic - BIP-39 mnemonic phrase.
|
|
117
|
+
* @param options - Options.
|
|
118
|
+
* @returns A nonextractable AES-256-GCM key for encryption and decryption.
|
|
119
|
+
*/
|
|
120
|
+
export async function fromMnemonic(mnemonic, options = {}) {
|
|
121
|
+
const { passphrase } = options;
|
|
122
|
+
const seed = mnemonic_.toSeed(mnemonic, passphrase);
|
|
103
123
|
try {
|
|
104
|
-
return await
|
|
124
|
+
return await fromSeed(seed);
|
|
105
125
|
}
|
|
106
126
|
finally {
|
|
107
|
-
|
|
127
|
+
seed.fill(0);
|
|
108
128
|
}
|
|
109
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Derives an AES-256-GCM key from a seed.
|
|
132
|
+
*
|
|
133
|
+
* The seed must contain at least 32 bytes of cryptographically strong key
|
|
134
|
+
* material. Do not pass a password directly; use a password KDF first.
|
|
135
|
+
*
|
|
136
|
+
* The permanent derivation contract uses the seed as the HMAC-SHA256
|
|
137
|
+
* key. The HMAC message uses the `ox.aesGcm.fromSeed.v1` domain followed by a
|
|
138
|
+
* 32-bit big-endian counter set to zero.
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```ts twoslash
|
|
142
|
+
* import { AesGcm } from 'ox'
|
|
143
|
+
*
|
|
144
|
+
* const key = await AesGcm.fromSeed(
|
|
145
|
+
* '0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'
|
|
146
|
+
* )
|
|
147
|
+
* ```
|
|
148
|
+
*
|
|
149
|
+
* @param seed - Seed containing at least 32 bytes of cryptographically strong key material.
|
|
150
|
+
* @returns A nonextractable AES-256-GCM key for encryption and decryption.
|
|
151
|
+
*/
|
|
152
|
+
export async function fromSeed(seed) {
|
|
153
|
+
const bytes = Bytes.from(seed);
|
|
154
|
+
if (bytes.length < 32)
|
|
155
|
+
throw new InvalidSeedSizeError({ size: bytes.length });
|
|
156
|
+
return deriveKey(bytes, fromSeedDomain);
|
|
157
|
+
}
|
|
110
158
|
/**
|
|
111
159
|
* Derives an AES-GCM key from a password using PBKDF2.
|
|
112
160
|
*
|
|
@@ -156,5 +204,26 @@ export class InvalidPrfSizeError extends Errors.BaseError {
|
|
|
156
204
|
super(`PRF output must be exactly 32 bytes. Received ${options.size} bytes.`);
|
|
157
205
|
}
|
|
158
206
|
}
|
|
159
|
-
|
|
207
|
+
/** Thrown when a seed contains fewer than 32 bytes. */
|
|
208
|
+
export class InvalidSeedSizeError extends Errors.BaseError {
|
|
209
|
+
name = 'AesGcm.InvalidSeedSizeError';
|
|
210
|
+
constructor(options) {
|
|
211
|
+
super(`Seed must contain at least 32 bytes. Received ${options.size} bytes.`);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
async function deriveKey(seed, domain) {
|
|
215
|
+
const baseKey = await globalThis.crypto.subtle.importKey('raw', seed, {
|
|
216
|
+
name: 'HMAC',
|
|
217
|
+
hash: 'SHA-256',
|
|
218
|
+
}, false, ['sign']);
|
|
219
|
+
const key = new Uint8Array(await globalThis.crypto.subtle.sign('HMAC', baseKey, Bytes.concat(domain, Bytes.fromNumber(0, { size: 4 }))));
|
|
220
|
+
try {
|
|
221
|
+
return await globalThis.crypto.subtle.importKey('raw', key, { name: 'AES-GCM' }, false, ['encrypt', 'decrypt']);
|
|
222
|
+
}
|
|
223
|
+
finally {
|
|
224
|
+
key.fill(0);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
const fromPrfDomain = Bytes.fromString('ox.aesGcm.fromPrf.v1');
|
|
228
|
+
const fromSeedDomain = Bytes.fromString('ox.aesGcm.fromSeed.v1');
|
|
160
229
|
//# sourceMappingURL=AesGcm.js.map
|
package/dist/core/AesGcm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AesGcm.js","sourceRoot":"","sources":["../../src/core/AesGcm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"AesGcm.js","sourceRoot":"","sources":["../../src/core/AesGcm.ts"],"names":[],"mappings":"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"}
|
package/dist/core/Ed25519.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ 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/curves Ed25519 utilities. */
|
|
6
7
|
export declare const noble: import("@noble/curves/abstract/edwards.js").EdDSA;
|
|
7
8
|
/**
|
|
@@ -36,8 +37,8 @@ export declare namespace createKeyPair {
|
|
|
36
37
|
* Derives an Ed25519 private key from a 32-byte WebAuthn PRF output.
|
|
37
38
|
*
|
|
38
39
|
* The permanent derivation contract uses the PRF output as the HMAC-SHA256
|
|
39
|
-
* key.
|
|
40
|
-
*
|
|
40
|
+
* key. The HMAC message uses the `ox.ed25519.fromPrf.v1` domain followed by a
|
|
41
|
+
* 32-bit big-endian counter set to zero.
|
|
41
42
|
*
|
|
42
43
|
* @example
|
|
43
44
|
* ```ts twoslash
|
|
@@ -64,6 +65,74 @@ export declare namespace fromPrf {
|
|
|
64
65
|
type ReturnType<as extends 'Hex' | 'Bytes'> = (as extends 'Bytes' ? Bytes.Bytes : never) | (as extends 'Hex' ? Hex.Hex : never);
|
|
65
66
|
type ErrorType = Bytes.concat.ErrorType | Bytes.from.ErrorType | Bytes.fromNumber.ErrorType | Hash.hmac256.ErrorType | Hex.fromBytes.ErrorType | InvalidPrfSizeError | Errors.GlobalErrorType;
|
|
66
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Derives an Ed25519 private key from a BIP-39 mnemonic.
|
|
70
|
+
*
|
|
71
|
+
* This is equivalent to passing `Mnemonic.toSeed(mnemonic, { passphrase })`
|
|
72
|
+
* to {@link ox#Ed25519.fromSeed}.
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```ts twoslash
|
|
76
|
+
* import { Ed25519 } from 'ox'
|
|
77
|
+
*
|
|
78
|
+
* const privateKey = Ed25519.fromMnemonic(
|
|
79
|
+
* 'test test test test test test test test test test test junk'
|
|
80
|
+
* )
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
83
|
+
* @param mnemonic - BIP-39 mnemonic phrase.
|
|
84
|
+
* @param options - Options.
|
|
85
|
+
* @returns An Ed25519 private key.
|
|
86
|
+
*/
|
|
87
|
+
export declare function fromMnemonic<as extends 'Hex' | 'Bytes' = 'Hex'>(mnemonic: string, options?: fromMnemonic.Options<as>): fromMnemonic.ReturnType<as>;
|
|
88
|
+
export declare namespace fromMnemonic {
|
|
89
|
+
type Options<as extends 'Hex' | 'Bytes' = 'Hex'> = {
|
|
90
|
+
/**
|
|
91
|
+
* Format of the returned private key.
|
|
92
|
+
* @default 'Hex'
|
|
93
|
+
*/
|
|
94
|
+
as?: as | 'Hex' | 'Bytes' | undefined;
|
|
95
|
+
/** Optional BIP-39 passphrase. */
|
|
96
|
+
passphrase?: string | undefined;
|
|
97
|
+
};
|
|
98
|
+
type ReturnType<as extends 'Hex' | 'Bytes'> = fromSeed.ReturnType<as>;
|
|
99
|
+
type ErrorType = fromSeed.ErrorType;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Derives an Ed25519 private key from a seed.
|
|
103
|
+
*
|
|
104
|
+
* The seed must contain at least 32 bytes of cryptographically strong key
|
|
105
|
+
* material. Do not pass a password directly; use a password KDF first.
|
|
106
|
+
*
|
|
107
|
+
* The permanent derivation contract uses the seed as the HMAC-SHA256
|
|
108
|
+
* key. The HMAC message uses the `ox.ed25519.fromSeed.v1` domain followed by a
|
|
109
|
+
* 32-bit big-endian counter set to zero.
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```ts twoslash
|
|
113
|
+
* import { Ed25519 } from 'ox'
|
|
114
|
+
*
|
|
115
|
+
* const privateKey = Ed25519.fromSeed(
|
|
116
|
+
* '0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'
|
|
117
|
+
* )
|
|
118
|
+
* ```
|
|
119
|
+
*
|
|
120
|
+
* @param seed - Seed containing at least 32 bytes of cryptographically strong key material.
|
|
121
|
+
* @param options - Options.
|
|
122
|
+
* @returns An Ed25519 private key.
|
|
123
|
+
*/
|
|
124
|
+
export declare function fromSeed<as extends 'Hex' | 'Bytes' = 'Hex'>(seed: Hex.Hex | Bytes.Bytes, options?: fromSeed.Options<as>): fromSeed.ReturnType<as>;
|
|
125
|
+
export declare namespace fromSeed {
|
|
126
|
+
type Options<as extends 'Hex' | 'Bytes' = 'Hex'> = {
|
|
127
|
+
/**
|
|
128
|
+
* Format of the returned private key.
|
|
129
|
+
* @default 'Hex'
|
|
130
|
+
*/
|
|
131
|
+
as?: as | 'Hex' | 'Bytes' | undefined;
|
|
132
|
+
};
|
|
133
|
+
type ReturnType<as extends 'Hex' | 'Bytes'> = (as extends 'Bytes' ? Bytes.Bytes : never) | (as extends 'Hex' ? Hex.Hex : never);
|
|
134
|
+
type ErrorType = Bytes.from.ErrorType | Hex.fromBytes.ErrorType | keyDerivation.derive.ErrorType | InvalidSeedSizeError | Errors.GlobalErrorType;
|
|
135
|
+
}
|
|
67
136
|
/**
|
|
68
137
|
* Computes the Ed25519 public key from a provided private key.
|
|
69
138
|
*
|
|
@@ -273,4 +342,16 @@ export declare namespace InvalidPrfSizeError {
|
|
|
273
342
|
size: number;
|
|
274
343
|
};
|
|
275
344
|
}
|
|
345
|
+
/** Thrown when a seed contains fewer than 32 bytes. */
|
|
346
|
+
export declare class InvalidSeedSizeError extends Errors.BaseError {
|
|
347
|
+
readonly name = "Ed25519.InvalidSeedSizeError";
|
|
348
|
+
constructor(options: InvalidSeedSizeError.Options);
|
|
349
|
+
}
|
|
350
|
+
export declare namespace InvalidSeedSizeError {
|
|
351
|
+
/** Options for {@link ox#Ed25519.InvalidSeedSizeError}. */
|
|
352
|
+
type Options = {
|
|
353
|
+
/** Received seed size. */
|
|
354
|
+
size: number;
|
|
355
|
+
};
|
|
356
|
+
}
|
|
276
357
|
//# sourceMappingURL=Ed25519.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Ed25519.d.ts","sourceRoot":"","sources":["../../src/core/Ed25519.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":"Ed25519.d.ts","sourceRoot":"","sources":["../../src/core/Ed25519.ts"],"names":[],"mappings":"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"}
|
package/dist/core/Ed25519.js
CHANGED
|
@@ -4,6 +4,8 @@ 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 engine from './internal/ed25519.js';
|
|
7
|
+
import * as keyDerivation from './internal/keyDerivation.js';
|
|
8
|
+
import * as mnemonic_ from './internal/mnemonic.js';
|
|
7
9
|
/** Re-export of noble/curves Ed25519 utilities. */
|
|
8
10
|
export const noble = ed25519;
|
|
9
11
|
/**
|
|
@@ -32,8 +34,8 @@ export function createKeyPair(options = {}) {
|
|
|
32
34
|
* Derives an Ed25519 private key from a 32-byte WebAuthn PRF output.
|
|
33
35
|
*
|
|
34
36
|
* The permanent derivation contract uses the PRF output as the HMAC-SHA256
|
|
35
|
-
* key.
|
|
36
|
-
*
|
|
37
|
+
* key. The HMAC message uses the `ox.ed25519.fromPrf.v1` domain followed by a
|
|
38
|
+
* 32-bit big-endian counter set to zero.
|
|
37
39
|
*
|
|
38
40
|
* @example
|
|
39
41
|
* ```ts twoslash
|
|
@@ -53,7 +55,72 @@ export function fromPrf(value, options = {}) {
|
|
|
53
55
|
const bytes = Bytes.from(value);
|
|
54
56
|
if (bytes.length !== 32)
|
|
55
57
|
throw new InvalidPrfSizeError({ size: bytes.length });
|
|
56
|
-
const privateKey = Hash.hmac256(bytes, Bytes.concat(
|
|
58
|
+
const privateKey = Hash.hmac256(bytes, Bytes.concat(fromPrfDomain, Bytes.fromNumber(0, { size: 4 })), { as: 'Bytes' });
|
|
59
|
+
if (as === 'Hex') {
|
|
60
|
+
const value = Hex.fromBytes(privateKey);
|
|
61
|
+
privateKey.fill(0);
|
|
62
|
+
return value;
|
|
63
|
+
}
|
|
64
|
+
return privateKey;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Derives an Ed25519 private key from a BIP-39 mnemonic.
|
|
68
|
+
*
|
|
69
|
+
* This is equivalent to passing `Mnemonic.toSeed(mnemonic, { passphrase })`
|
|
70
|
+
* to {@link ox#Ed25519.fromSeed}.
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```ts twoslash
|
|
74
|
+
* import { Ed25519 } from 'ox'
|
|
75
|
+
*
|
|
76
|
+
* const privateKey = Ed25519.fromMnemonic(
|
|
77
|
+
* 'test test test test test test test test test test test junk'
|
|
78
|
+
* )
|
|
79
|
+
* ```
|
|
80
|
+
*
|
|
81
|
+
* @param mnemonic - BIP-39 mnemonic phrase.
|
|
82
|
+
* @param options - Options.
|
|
83
|
+
* @returns An Ed25519 private key.
|
|
84
|
+
*/
|
|
85
|
+
export function fromMnemonic(mnemonic, options = {}) {
|
|
86
|
+
const { passphrase } = options;
|
|
87
|
+
const seed = mnemonic_.toSeed(mnemonic, passphrase);
|
|
88
|
+
try {
|
|
89
|
+
return fromSeed(seed, options);
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
seed.fill(0);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Derives an Ed25519 private key from a seed.
|
|
97
|
+
*
|
|
98
|
+
* The seed must contain at least 32 bytes of cryptographically strong key
|
|
99
|
+
* material. Do not pass a password directly; use a password KDF first.
|
|
100
|
+
*
|
|
101
|
+
* The permanent derivation contract uses the seed as the HMAC-SHA256
|
|
102
|
+
* key. The HMAC message uses the `ox.ed25519.fromSeed.v1` domain followed by a
|
|
103
|
+
* 32-bit big-endian counter set to zero.
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```ts twoslash
|
|
107
|
+
* import { Ed25519 } from 'ox'
|
|
108
|
+
*
|
|
109
|
+
* const privateKey = Ed25519.fromSeed(
|
|
110
|
+
* '0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'
|
|
111
|
+
* )
|
|
112
|
+
* ```
|
|
113
|
+
*
|
|
114
|
+
* @param seed - Seed containing at least 32 bytes of cryptographically strong key material.
|
|
115
|
+
* @param options - Options.
|
|
116
|
+
* @returns An Ed25519 private key.
|
|
117
|
+
*/
|
|
118
|
+
export function fromSeed(seed, options = {}) {
|
|
119
|
+
const { as = 'Hex' } = options;
|
|
120
|
+
const bytes = Bytes.from(seed);
|
|
121
|
+
if (bytes.length < 32)
|
|
122
|
+
throw new InvalidSeedSizeError({ size: bytes.length });
|
|
123
|
+
const privateKey = keyDerivation.derive(bytes, fromSeedDomain);
|
|
57
124
|
if (as === 'Hex') {
|
|
58
125
|
const value = Hex.fromBytes(privateKey);
|
|
59
126
|
privateKey.fill(0);
|
|
@@ -224,5 +291,13 @@ export class InvalidPrfSizeError extends Errors.BaseError {
|
|
|
224
291
|
super(`PRF output must be exactly 32 bytes. Received ${options.size} bytes.`);
|
|
225
292
|
}
|
|
226
293
|
}
|
|
227
|
-
|
|
294
|
+
/** Thrown when a seed contains fewer than 32 bytes. */
|
|
295
|
+
export class InvalidSeedSizeError extends Errors.BaseError {
|
|
296
|
+
name = 'Ed25519.InvalidSeedSizeError';
|
|
297
|
+
constructor(options) {
|
|
298
|
+
super(`Seed must contain at least 32 bytes. Received ${options.size} bytes.`);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
const fromPrfDomain = Bytes.fromString('ox.ed25519.fromPrf.v1');
|
|
302
|
+
const fromSeedDomain = Bytes.fromString('ox.ed25519.fromSeed.v1');
|
|
228
303
|
//# sourceMappingURL=Ed25519.js.map
|
package/dist/core/Ed25519.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Ed25519.js","sourceRoot":"","sources":["../../src/core/Ed25519.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAClD,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,MAAM,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"Ed25519.js","sourceRoot":"","sources":["../../src/core/Ed25519.ts"],"names":[],"mappings":"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"}
|