ox 0.14.34 → 0.14.35
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 +8 -0
- package/_cjs/core/AesGcm.js +47 -1
- package/_cjs/core/AesGcm.js.map +1 -1
- package/_cjs/core/Ed25519.js +42 -1
- package/_cjs/core/Ed25519.js.map +1 -1
- package/_cjs/core/P256.js +44 -1
- package/_cjs/core/P256.js.map +1 -1
- package/_cjs/core/Secp256k1.js +38 -1
- package/_cjs/core/Secp256k1.js.map +1 -1
- package/_cjs/core/internal/keyDerivation.js +15 -0
- package/_cjs/core/internal/keyDerivation.js.map +1 -0
- package/_cjs/tempo/MultisigConfig.js +15 -4
- package/_cjs/tempo/MultisigConfig.js.map +1 -1
- package/_cjs/version.js +1 -1
- package/_esm/core/AesGcm.js +85 -0
- package/_esm/core/AesGcm.js.map +1 -1
- package/_esm/core/Ed25519.js +81 -0
- package/_esm/core/Ed25519.js.map +1 -1
- package/_esm/core/P256.js +83 -0
- package/_esm/core/P256.js.map +1 -1
- package/_esm/core/Secp256k1.js +77 -0
- package/_esm/core/Secp256k1.js.map +1 -1
- package/_esm/core/internal/keyDerivation.js +13 -0
- package/_esm/core/internal/keyDerivation.js.map +1 -0
- package/_esm/tempo/MultisigConfig.js +17 -5
- package/_esm/tempo/MultisigConfig.js.map +1 -1
- package/_esm/version.js +1 -1
- package/_types/core/AesGcm.d.ts +66 -1
- package/_types/core/AesGcm.d.ts.map +1 -1
- package/_types/core/Ed25519.d.ts +82 -1
- package/_types/core/Ed25519.d.ts.map +1 -1
- package/_types/core/P256.d.ts +82 -1
- package/_types/core/P256.d.ts.map +1 -1
- package/_types/core/Secp256k1.d.ts +85 -1
- package/_types/core/Secp256k1.d.ts.map +1 -1
- package/_types/core/internal/keyDerivation.d.ts +12 -0
- package/_types/core/internal/keyDerivation.d.ts.map +1 -0
- package/_types/tempo/MultisigConfig.d.ts +4 -3
- package/_types/tempo/MultisigConfig.d.ts.map +1 -1
- package/_types/version.d.ts +1 -1
- package/core/AesGcm.ts +137 -1
- package/core/Ed25519.ts +133 -1
- package/core/P256.ts +135 -1
- package/core/Secp256k1.ts +133 -1
- package/core/internal/keyDerivation.ts +33 -0
- package/package.json +1 -1
- package/tempo/MultisigConfig.test.ts +40 -6
- package/tempo/MultisigConfig.ts +18 -5
- package/version.ts +1 -1
package/_types/core/Ed25519.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
|
/** Re-export of noble/curves Ed25519 utilities. */
|
|
5
6
|
export declare const noble: import("@noble/curves/abstract/edwards").CurveFn;
|
|
6
7
|
/**
|
|
@@ -31,6 +32,74 @@ export declare namespace createKeyPair {
|
|
|
31
32
|
};
|
|
32
33
|
type ErrorType = Hex.fromBytes.ErrorType | randomPrivateKey.ErrorType | getPublicKey.ErrorType | Errors.GlobalErrorType;
|
|
33
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Derives an Ed25519 private key from a BIP-39 mnemonic.
|
|
37
|
+
*
|
|
38
|
+
* This is equivalent to passing `Mnemonic.toSeed(mnemonic, { passphrase })`
|
|
39
|
+
* to `Ed25519.fromSeed`.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts twoslash
|
|
43
|
+
* import { Ed25519 } from 'ox'
|
|
44
|
+
*
|
|
45
|
+
* const privateKey = Ed25519.fromMnemonic(
|
|
46
|
+
* 'test test test test test test test test test test test junk'
|
|
47
|
+
* )
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @param mnemonic - BIP-39 mnemonic phrase.
|
|
51
|
+
* @param options - Options.
|
|
52
|
+
* @returns An Ed25519 private key.
|
|
53
|
+
*/
|
|
54
|
+
export declare function fromMnemonic<as extends 'Hex' | 'Bytes' = 'Hex'>(mnemonic: string, options?: fromMnemonic.Options<as>): fromMnemonic.ReturnType<as>;
|
|
55
|
+
export declare namespace fromMnemonic {
|
|
56
|
+
type Options<as extends 'Hex' | 'Bytes' = 'Hex'> = {
|
|
57
|
+
/**
|
|
58
|
+
* Format of the returned private key.
|
|
59
|
+
* @default 'Hex'
|
|
60
|
+
*/
|
|
61
|
+
as?: as | 'Hex' | 'Bytes' | undefined;
|
|
62
|
+
/** Optional BIP-39 passphrase. */
|
|
63
|
+
passphrase?: string | undefined;
|
|
64
|
+
};
|
|
65
|
+
type ReturnType<as extends 'Hex' | 'Bytes'> = fromSeed.ReturnType<as>;
|
|
66
|
+
type ErrorType = fromSeed.ErrorType;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Derives an Ed25519 private key from a seed.
|
|
70
|
+
*
|
|
71
|
+
* The seed must contain at least 32 bytes of cryptographically strong key
|
|
72
|
+
* material. Do not pass a password directly; use a password KDF first.
|
|
73
|
+
*
|
|
74
|
+
* The permanent derivation contract uses the seed as the HMAC-SHA256
|
|
75
|
+
* key. The HMAC message uses the `ox.ed25519.fromSeed.v1` domain followed by a
|
|
76
|
+
* 32-bit big-endian counter set to zero.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```ts twoslash
|
|
80
|
+
* import { Ed25519 } from 'ox'
|
|
81
|
+
*
|
|
82
|
+
* const privateKey = Ed25519.fromSeed(
|
|
83
|
+
* '0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'
|
|
84
|
+
* )
|
|
85
|
+
* ```
|
|
86
|
+
*
|
|
87
|
+
* @param seed - Seed containing at least 32 bytes of cryptographically strong key material.
|
|
88
|
+
* @param options - Options.
|
|
89
|
+
* @returns An Ed25519 private key.
|
|
90
|
+
*/
|
|
91
|
+
export declare function fromSeed<as extends 'Hex' | 'Bytes' = 'Hex'>(seed: Hex.Hex | Bytes.Bytes, options?: fromSeed.Options<as>): fromSeed.ReturnType<as>;
|
|
92
|
+
export declare namespace fromSeed {
|
|
93
|
+
type Options<as extends 'Hex' | 'Bytes' = 'Hex'> = {
|
|
94
|
+
/**
|
|
95
|
+
* Format of the returned private key.
|
|
96
|
+
* @default 'Hex'
|
|
97
|
+
*/
|
|
98
|
+
as?: as | 'Hex' | 'Bytes' | undefined;
|
|
99
|
+
};
|
|
100
|
+
type ReturnType<as extends 'Hex' | 'Bytes'> = (as extends 'Bytes' ? Bytes.Bytes : never) | (as extends 'Hex' ? Hex.Hex : never);
|
|
101
|
+
type ErrorType = Bytes.from.ErrorType | Hex.fromBytes.ErrorType | keyDerivation.derive.ErrorType | InvalidSeedSizeError | Errors.GlobalErrorType;
|
|
102
|
+
}
|
|
34
103
|
/**
|
|
35
104
|
* Computes the Ed25519 public key from a provided private key.
|
|
36
105
|
*
|
|
@@ -217,4 +286,16 @@ export declare namespace toX25519PrivateKey {
|
|
|
217
286
|
type ReturnType<as extends 'Hex' | 'Bytes'> = (as extends 'Bytes' ? Bytes.Bytes : never) | (as extends 'Hex' ? Hex.Hex : never);
|
|
218
287
|
type ErrorType = Bytes.from.ErrorType | Hex.fromBytes.ErrorType | Errors.GlobalErrorType;
|
|
219
288
|
}
|
|
289
|
+
/** Thrown when a seed contains fewer than 32 bytes. */
|
|
290
|
+
export declare class InvalidSeedSizeError extends Errors.BaseError {
|
|
291
|
+
readonly name = "Ed25519.InvalidSeedSizeError";
|
|
292
|
+
constructor(options: InvalidSeedSizeError.Options);
|
|
293
|
+
}
|
|
294
|
+
export declare namespace InvalidSeedSizeError {
|
|
295
|
+
/** Options for `Ed25519.InvalidSeedSizeError`. */
|
|
296
|
+
type Options = {
|
|
297
|
+
/** Received seed size. */
|
|
298
|
+
size: number;
|
|
299
|
+
};
|
|
300
|
+
}
|
|
220
301
|
//# sourceMappingURL=Ed25519.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Ed25519.d.ts","sourceRoot":"","sources":["../../core/Ed25519.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Ed25519.d.ts","sourceRoot":"","sources":["../../core/Ed25519.ts"],"names":[],"mappings":"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"}
|
package/_types/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 `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
|
*
|
|
@@ -222,4 +291,16 @@ export declare namespace verify {
|
|
|
222
291
|
};
|
|
223
292
|
type ErrorType = Errors.GlobalErrorType;
|
|
224
293
|
}
|
|
294
|
+
/** Thrown when a seed contains fewer than 32 bytes. */
|
|
295
|
+
export declare class InvalidSeedSizeError extends Errors.BaseError {
|
|
296
|
+
readonly name = "P256.InvalidSeedSizeError";
|
|
297
|
+
constructor(options: InvalidSeedSizeError.Options);
|
|
298
|
+
}
|
|
299
|
+
export declare namespace InvalidSeedSizeError {
|
|
300
|
+
/** Options for `P256.InvalidSeedSizeError`. */
|
|
301
|
+
type Options = {
|
|
302
|
+
/** Received seed size. */
|
|
303
|
+
size: number;
|
|
304
|
+
};
|
|
305
|
+
}
|
|
225
306
|
//# sourceMappingURL=P256.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"P256.d.ts","sourceRoot":"","sources":["../../core/P256.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"P256.d.ts","sourceRoot":"","sources":["../../core/P256.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import * as Address from './Address.js';
|
|
2
2
|
import * as Bytes from './Bytes.js';
|
|
3
|
-
import
|
|
3
|
+
import * as Errors from './Errors.js';
|
|
4
4
|
import * as Hex from './Hex.js';
|
|
5
|
+
import * as keyDerivation from './internal/keyDerivation.js';
|
|
5
6
|
import type { OneOf } from './internal/types.js';
|
|
7
|
+
import * as Mnemonic from './Mnemonic.js';
|
|
6
8
|
import * as PublicKey from './PublicKey.js';
|
|
7
9
|
import type * as Signature from './Signature.js';
|
|
8
10
|
/** Re-export of noble/curves secp256k1 utilities. */
|
|
@@ -35,6 +37,76 @@ export declare namespace createKeyPair {
|
|
|
35
37
|
};
|
|
36
38
|
type ErrorType = Hex.fromBytes.ErrorType | PublicKey.from.ErrorType | Errors.GlobalErrorType;
|
|
37
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Derives a valid secp256k1 private key from a BIP-39 mnemonic.
|
|
42
|
+
*
|
|
43
|
+
* This is equivalent to `Mnemonic.toPrivateKey`, and derives the
|
|
44
|
+
* private key at `m/44'/60'/0'/0/0` by default.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```ts twoslash
|
|
48
|
+
* import { Secp256k1 } from 'ox'
|
|
49
|
+
*
|
|
50
|
+
* const privateKey = Secp256k1.fromMnemonic(
|
|
51
|
+
* 'test test test test test test test test test test test junk'
|
|
52
|
+
* )
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* @param mnemonic - BIP-39 mnemonic phrase.
|
|
56
|
+
* @param options - Options.
|
|
57
|
+
* @returns A valid secp256k1 private key.
|
|
58
|
+
*/
|
|
59
|
+
export declare function fromMnemonic<as extends 'Hex' | 'Bytes' = 'Hex'>(mnemonic: string, options?: fromMnemonic.Options<as>): fromMnemonic.ReturnType<as>;
|
|
60
|
+
export declare namespace fromMnemonic {
|
|
61
|
+
type Options<as extends 'Hex' | 'Bytes' = 'Hex'> = {
|
|
62
|
+
/**
|
|
63
|
+
* Format of the returned private key.
|
|
64
|
+
* @default 'Hex'
|
|
65
|
+
*/
|
|
66
|
+
as?: as | 'Hex' | 'Bytes' | undefined;
|
|
67
|
+
/** Derivation path. @default `m/44'/60'/0'/0/0` */
|
|
68
|
+
path?: string | undefined;
|
|
69
|
+
/** Optional BIP-39 passphrase. */
|
|
70
|
+
passphrase?: string | undefined;
|
|
71
|
+
};
|
|
72
|
+
type ReturnType<as extends 'Hex' | 'Bytes'> = Mnemonic.toPrivateKey.ReturnType<as>;
|
|
73
|
+
type ErrorType = Mnemonic.toPrivateKey.ErrorType;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Derives a valid secp256k1 private key from a seed.
|
|
77
|
+
*
|
|
78
|
+
* The seed must contain at least 32 bytes of cryptographically strong key
|
|
79
|
+
* material. Do not pass a password directly; use a password KDF first.
|
|
80
|
+
*
|
|
81
|
+
* The permanent derivation contract uses the seed as the HMAC-SHA256
|
|
82
|
+
* key. The HMAC message uses the `ox.secp256k1.fromSeed.v1` domain followed by
|
|
83
|
+
* a 32-bit big-endian counter starting at zero. Invalid scalars are skipped.
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```ts twoslash
|
|
87
|
+
* import { Secp256k1 } from 'ox'
|
|
88
|
+
*
|
|
89
|
+
* const privateKey = Secp256k1.fromSeed(
|
|
90
|
+
* '0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'
|
|
91
|
+
* )
|
|
92
|
+
* ```
|
|
93
|
+
*
|
|
94
|
+
* @param seed - Seed containing at least 32 bytes of cryptographically strong key material.
|
|
95
|
+
* @param options - Options.
|
|
96
|
+
* @returns A valid secp256k1 private key.
|
|
97
|
+
*/
|
|
98
|
+
export declare function fromSeed<as extends 'Hex' | 'Bytes' = 'Hex'>(seed: Hex.Hex | Bytes.Bytes, options?: fromSeed.Options<as>): fromSeed.ReturnType<as>;
|
|
99
|
+
export declare namespace fromSeed {
|
|
100
|
+
type Options<as extends 'Hex' | 'Bytes' = 'Hex'> = {
|
|
101
|
+
/**
|
|
102
|
+
* Format of the returned private key.
|
|
103
|
+
* @default 'Hex'
|
|
104
|
+
*/
|
|
105
|
+
as?: as | 'Hex' | 'Bytes' | undefined;
|
|
106
|
+
};
|
|
107
|
+
type ReturnType<as extends 'Hex' | 'Bytes'> = (as extends 'Bytes' ? Bytes.Bytes : never) | (as extends 'Hex' ? Hex.Hex : never);
|
|
108
|
+
type ErrorType = Bytes.from.ErrorType | Hex.fromBytes.ErrorType | keyDerivation.derive.ErrorType | InvalidSeedSizeError | Errors.GlobalErrorType;
|
|
109
|
+
}
|
|
38
110
|
/**
|
|
39
111
|
* Computes the secp256k1 ECDSA public key from a provided private key.
|
|
40
112
|
*
|
|
@@ -276,4 +348,16 @@ export declare namespace verify {
|
|
|
276
348
|
}>;
|
|
277
349
|
type ErrorType = Errors.GlobalErrorType;
|
|
278
350
|
}
|
|
351
|
+
/** Thrown when a seed contains fewer than 32 bytes. */
|
|
352
|
+
export declare class InvalidSeedSizeError extends Errors.BaseError {
|
|
353
|
+
readonly name = "Secp256k1.InvalidSeedSizeError";
|
|
354
|
+
constructor(options: InvalidSeedSizeError.Options);
|
|
355
|
+
}
|
|
356
|
+
export declare namespace InvalidSeedSizeError {
|
|
357
|
+
/** Options for `Secp256k1.InvalidSeedSizeError`. */
|
|
358
|
+
type Options = {
|
|
359
|
+
/** Received seed size. */
|
|
360
|
+
size: number;
|
|
361
|
+
};
|
|
362
|
+
}
|
|
279
363
|
//# sourceMappingURL=Secp256k1.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Secp256k1.d.ts","sourceRoot":"","sources":["../../core/Secp256k1.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Secp256k1.d.ts","sourceRoot":"","sources":["../../core/Secp256k1.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
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
|
+
export declare namespace derive {
|
|
7
|
+
type Options = {
|
|
8
|
+
validate?: ((key: Bytes.Bytes) => boolean) | undefined;
|
|
9
|
+
};
|
|
10
|
+
type ErrorType = Bytes.concat.ErrorType | Bytes.fromNumber.ErrorType | Hash.hmac256.ErrorType | Errors.GlobalErrorType;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=keyDerivation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyDerivation.d.ts","sourceRoot":"","sources":["../../../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,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"}
|
|
@@ -5,9 +5,9 @@ import * as Hash from '../core/Hash.js';
|
|
|
5
5
|
import * as Hex from '../core/Hex.js';
|
|
6
6
|
import type { Compute, OneOf } from '../core/internal/types.js';
|
|
7
7
|
/** Maximum number of owners allowed in a native multisig config. */
|
|
8
|
-
export declare const maxOwners =
|
|
8
|
+
export declare const maxOwners = 48;
|
|
9
9
|
/** Maximum threshold accepted by a native multisig config. */
|
|
10
|
-
export declare const maxThreshold =
|
|
10
|
+
export declare const maxThreshold = 255;
|
|
11
11
|
/** Maximum number of owner approvals in a native multisig signature. */
|
|
12
12
|
export declare const maxSignatures = 8;
|
|
13
13
|
/**
|
|
@@ -55,7 +55,8 @@ export type Tuple = readonly [
|
|
|
55
55
|
* Mirrors the Tempo `InitMultisig::validate` rules: owners non-empty and
|
|
56
56
|
* `<= maxOwners`, strictly ascending unique nonzero owner addresses, nonzero
|
|
57
57
|
* integer owner weights, integer `threshold` between `1` and `maxThreshold`,
|
|
58
|
-
* total weight `<= 255` (u8 max), and
|
|
58
|
+
* total weight `<= 255` (u8 max), and a threshold reachable by at most
|
|
59
|
+
* `maxSignatures` owners.
|
|
59
60
|
*
|
|
60
61
|
* @example
|
|
61
62
|
* ```ts twoslash
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultisigConfig.d.ts","sourceRoot":"","sources":["../../tempo/MultisigConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AACvC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAE/D,oEAAoE;AACpE,eAAO,MAAM,SAAS,KAAK,CAAA;AAE3B,8DAA8D;AAC9D,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"MultisigConfig.d.ts","sourceRoot":"","sources":["../../tempo/MultisigConfig.ts"],"names":[],"mappings":"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"}
|
package/_types/version.d.ts
CHANGED
package/core/AesGcm.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 Mnemonic from './Mnemonic.js'
|
|
4
5
|
|
|
5
6
|
export const ivLength = 16
|
|
6
7
|
|
|
@@ -130,6 +131,86 @@ export declare namespace encrypt {
|
|
|
130
131
|
| Errors.GlobalErrorType
|
|
131
132
|
}
|
|
132
133
|
|
|
134
|
+
/**
|
|
135
|
+
* Derives an AES-256-GCM key from a BIP-39 mnemonic.
|
|
136
|
+
*
|
|
137
|
+
* This is equivalent to passing `Mnemonic.toSeed(mnemonic, { passphrase })`
|
|
138
|
+
* to `AesGcm.fromSeed`.
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```ts twoslash
|
|
142
|
+
* import { AesGcm } from 'ox'
|
|
143
|
+
*
|
|
144
|
+
* const key = await AesGcm.fromMnemonic(
|
|
145
|
+
* 'test test test test test test test test test test test junk'
|
|
146
|
+
* )
|
|
147
|
+
* ```
|
|
148
|
+
*
|
|
149
|
+
* @param mnemonic - BIP-39 mnemonic phrase.
|
|
150
|
+
* @param options - Options.
|
|
151
|
+
* @returns A nonextractable AES-256-GCM key for encryption and decryption.
|
|
152
|
+
*/
|
|
153
|
+
export async function fromMnemonic(
|
|
154
|
+
mnemonic: string,
|
|
155
|
+
options: fromMnemonic.Options = {},
|
|
156
|
+
): Promise<CryptoKey> {
|
|
157
|
+
const { passphrase } = options
|
|
158
|
+
const seed = Mnemonic.toSeed(mnemonic, { passphrase })
|
|
159
|
+
try {
|
|
160
|
+
return await fromSeed(seed)
|
|
161
|
+
} finally {
|
|
162
|
+
seed.fill(0)
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export declare namespace fromMnemonic {
|
|
167
|
+
type Options = {
|
|
168
|
+
/** Optional BIP-39 passphrase. */
|
|
169
|
+
passphrase?: string | undefined
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
type ErrorType = fromSeed.ErrorType
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Derives an AES-256-GCM key from a seed.
|
|
177
|
+
*
|
|
178
|
+
* The seed must contain at least 32 bytes of cryptographically strong key
|
|
179
|
+
* material. Do not pass a password directly; use a password KDF first.
|
|
180
|
+
*
|
|
181
|
+
* The permanent derivation contract uses the seed as the HMAC-SHA256
|
|
182
|
+
* key. The HMAC message uses the `ox.aesGcm.fromSeed.v1` domain followed by a
|
|
183
|
+
* 32-bit big-endian counter set to zero.
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* ```ts twoslash
|
|
187
|
+
* import { AesGcm } from 'ox'
|
|
188
|
+
*
|
|
189
|
+
* const key = await AesGcm.fromSeed(
|
|
190
|
+
* '0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f'
|
|
191
|
+
* )
|
|
192
|
+
* ```
|
|
193
|
+
*
|
|
194
|
+
* @param seed - Seed containing at least 32 bytes of cryptographically strong key material.
|
|
195
|
+
* @returns A nonextractable AES-256-GCM key for encryption and decryption.
|
|
196
|
+
*/
|
|
197
|
+
export async function fromSeed(
|
|
198
|
+
seed: Hex.Hex | Bytes.Bytes,
|
|
199
|
+
): Promise<CryptoKey> {
|
|
200
|
+
const bytes = Bytes.from(seed)
|
|
201
|
+
if (bytes.length < 32) throw new InvalidSeedSizeError({ size: bytes.length })
|
|
202
|
+
return deriveKey(bytes, fromSeedDomain)
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
export declare namespace fromSeed {
|
|
206
|
+
type ErrorType =
|
|
207
|
+
| Bytes.concat.ErrorType
|
|
208
|
+
| Bytes.from.ErrorType
|
|
209
|
+
| Bytes.fromNumber.ErrorType
|
|
210
|
+
| InvalidSeedSizeError
|
|
211
|
+
| Errors.GlobalErrorType
|
|
212
|
+
}
|
|
213
|
+
|
|
133
214
|
/**
|
|
134
215
|
* Derives an AES-GCM key from a password using PBKDF2.
|
|
135
216
|
*
|
|
@@ -202,3 +283,58 @@ export function randomSalt(size = 32): Bytes.Bytes {
|
|
|
202
283
|
export declare namespace randomSalt {
|
|
203
284
|
type ErrorType = Bytes.random.ErrorType | Errors.GlobalErrorType
|
|
204
285
|
}
|
|
286
|
+
|
|
287
|
+
/** Thrown when a seed contains fewer than 32 bytes. */
|
|
288
|
+
export class InvalidSeedSizeError extends Errors.BaseError {
|
|
289
|
+
override readonly name = 'AesGcm.InvalidSeedSizeError'
|
|
290
|
+
|
|
291
|
+
constructor(options: InvalidSeedSizeError.Options) {
|
|
292
|
+
super(
|
|
293
|
+
`Seed must contain at least 32 bytes. Received ${options.size} bytes.`,
|
|
294
|
+
)
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
export declare namespace InvalidSeedSizeError {
|
|
299
|
+
/** Options for `AesGcm.InvalidSeedSizeError`. */
|
|
300
|
+
type Options = {
|
|
301
|
+
/** Received seed size. */
|
|
302
|
+
size: number
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
async function deriveKey(
|
|
307
|
+
seed: Bytes.Bytes,
|
|
308
|
+
domain: Bytes.Bytes,
|
|
309
|
+
): Promise<CryptoKey> {
|
|
310
|
+
const baseKey = await globalThis.crypto.subtle.importKey(
|
|
311
|
+
'raw',
|
|
312
|
+
seed,
|
|
313
|
+
{
|
|
314
|
+
name: 'HMAC',
|
|
315
|
+
hash: 'SHA-256',
|
|
316
|
+
},
|
|
317
|
+
false,
|
|
318
|
+
['sign'],
|
|
319
|
+
)
|
|
320
|
+
const key = new Uint8Array(
|
|
321
|
+
await globalThis.crypto.subtle.sign(
|
|
322
|
+
'HMAC',
|
|
323
|
+
baseKey,
|
|
324
|
+
Bytes.concat(domain, Bytes.fromNumber(0, { size: 4 })),
|
|
325
|
+
),
|
|
326
|
+
)
|
|
327
|
+
try {
|
|
328
|
+
return await globalThis.crypto.subtle.importKey(
|
|
329
|
+
'raw',
|
|
330
|
+
key,
|
|
331
|
+
{ name: 'AES-GCM' },
|
|
332
|
+
false,
|
|
333
|
+
['encrypt', 'decrypt'],
|
|
334
|
+
)
|
|
335
|
+
} finally {
|
|
336
|
+
key.fill(0)
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
const fromSeedDomain = Bytes.fromString('ox.aesGcm.fromSeed.v1')
|