ox 1.0.4 → 1.1.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 +62 -0
- package/dist/core/Base64.d.ts +10 -21
- package/dist/core/Base64.d.ts.map +1 -1
- package/dist/core/Base64.js +8 -127
- package/dist/core/Base64.js.map +1 -1
- package/dist/core/BinaryStateTree.d.ts.map +1 -1
- package/dist/core/BinaryStateTree.js +2 -2
- package/dist/core/BinaryStateTree.js.map +1 -1
- package/dist/core/Bls.d.ts.map +1 -1
- package/dist/core/Bls.js +19 -44
- package/dist/core/Bls.js.map +1 -1
- package/dist/core/Ed25519.d.ts.map +1 -1
- package/dist/core/Ed25519.js +7 -6
- package/dist/core/Ed25519.js.map +1 -1
- package/dist/core/Engine.d.ts +124 -0
- package/dist/core/Engine.d.ts.map +1 -0
- package/dist/core/Engine.js +180 -0
- package/dist/core/Engine.js.map +1 -0
- package/dist/core/Hash.d.ts +4 -4
- package/dist/core/Hash.d.ts.map +1 -1
- package/dist/core/Hash.js +9 -12
- package/dist/core/Hash.js.map +1 -1
- package/dist/core/Keystore.d.ts.map +1 -1
- package/dist/core/Keystore.js +15 -10
- package/dist/core/Keystore.js.map +1 -1
- package/dist/core/Mnemonic.d.ts.map +1 -1
- package/dist/core/Mnemonic.js +3 -2
- package/dist/core/Mnemonic.js.map +1 -1
- package/dist/core/P256.d.ts.map +1 -1
- package/dist/core/P256.js +8 -9
- package/dist/core/P256.js.map +1 -1
- package/dist/core/Secp256k1.d.ts.map +1 -1
- package/dist/core/Secp256k1.js +8 -9
- package/dist/core/Secp256k1.js.map +1 -1
- package/dist/core/WebCryptoP256.d.ts.map +1 -1
- package/dist/core/WebCryptoP256.js +2 -2
- package/dist/core/WebCryptoP256.js.map +1 -1
- package/dist/core/X25519.d.ts.map +1 -1
- package/dist/core/X25519.js +4 -3
- package/dist/core/X25519.js.map +1 -1
- package/dist/core/internal/bls.d.ts +12 -0
- package/dist/core/internal/bls.d.ts.map +1 -0
- package/dist/core/internal/bls.js +79 -0
- package/dist/core/internal/bls.js.map +1 -0
- package/dist/core/internal/codec/base64.d.ts +84 -0
- package/dist/core/internal/codec/base64.d.ts.map +1 -0
- package/dist/core/internal/codec/base64.js +177 -0
- package/dist/core/internal/codec/base64.js.map +1 -0
- package/dist/core/internal/codec/hex.d.ts +49 -4
- package/dist/core/internal/codec/hex.d.ts.map +1 -1
- package/dist/core/internal/codec/hex.js +109 -35
- package/dist/core/internal/codec/hex.js.map +1 -1
- package/dist/core/internal/curves.d.ts +17 -0
- package/dist/core/internal/curves.d.ts.map +1 -0
- package/dist/core/internal/curves.js +17 -0
- package/dist/core/internal/curves.js.map +1 -0
- package/dist/core/internal/ed25519.d.ts +14 -0
- package/dist/core/internal/ed25519.d.ts.map +1 -0
- package/dist/core/internal/ed25519.js +29 -0
- package/dist/core/internal/ed25519.js.map +1 -0
- package/dist/core/internal/engine.d.ts +278 -0
- package/dist/core/internal/engine.d.ts.map +1 -0
- package/dist/core/internal/engine.js +131 -0
- package/dist/core/internal/engine.js.map +1 -0
- package/dist/core/internal/hash.d.ts +12 -0
- package/dist/core/internal/hash.d.ts.map +1 -0
- package/dist/core/internal/hash.js +30 -0
- package/dist/core/internal/hash.js.map +1 -0
- package/dist/core/internal/keystore.d.ts +14 -0
- package/dist/core/internal/keystore.d.ts.map +1 -0
- package/dist/core/internal/keystore.js +32 -0
- package/dist/core/internal/keystore.js.map +1 -0
- package/dist/core/internal/mnemonic.d.ts +4 -0
- package/dist/core/internal/mnemonic.d.ts.map +1 -0
- package/dist/core/internal/mnemonic.js +14 -0
- package/dist/core/internal/mnemonic.js.map +1 -0
- package/dist/core/internal/p256.d.ts +14 -0
- package/dist/core/internal/p256.d.ts.map +1 -0
- package/dist/core/internal/p256.js +36 -0
- package/dist/core/internal/p256.js.map +1 -0
- package/dist/core/internal/secp256k1.d.ts +14 -0
- package/dist/core/internal/secp256k1.d.ts.map +1 -0
- package/dist/core/internal/secp256k1.js +36 -0
- package/dist/core/internal/secp256k1.js.map +1 -0
- package/dist/core/internal/x25519.d.ts +8 -0
- package/dist/core/internal/x25519.d.ts.map +1 -0
- package/dist/core/internal/x25519.js +20 -0
- package/dist/core/internal/x25519.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.docs.d.ts +2 -0
- package/dist/index.docs.d.ts.map +1 -1
- package/dist/index.docs.js +2 -0
- package/dist/index.docs.js.map +1 -1
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -1
- package/dist/node/Engine.d.ts +55 -0
- package/dist/node/Engine.d.ts.map +1 -0
- package/dist/node/Engine.js +51 -0
- package/dist/node/Engine.js.map +1 -0
- package/dist/node/Hash.d.ts +39 -0
- package/dist/node/Hash.d.ts.map +1 -0
- package/dist/node/Hash.js +37 -0
- package/dist/node/Hash.js.map +1 -0
- package/dist/node/index.d.ts +39 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +39 -0
- package/dist/node/index.js.map +1 -0
- package/dist/tempo/VirtualMaster.d.ts +2 -0
- package/dist/tempo/VirtualMaster.d.ts.map +1 -1
- package/dist/tempo/VirtualMaster.js +19 -5
- package/dist/tempo/VirtualMaster.js.map +1 -1
- package/dist/tempo/ZoneId.d.ts +35 -17
- package/dist/tempo/ZoneId.d.ts.map +1 -1
- package/dist/tempo/ZoneId.js +41 -16
- package/dist/tempo/ZoneId.js.map +1 -1
- package/dist/tempo/index.d.ts +5 -6
- package/dist/tempo/index.d.ts.map +1 -1
- package/dist/tempo/index.js +5 -6
- package/dist/tempo/index.js.map +1 -1
- package/dist/tempo/internal/mine.wasm.d.ts +2 -4
- package/dist/tempo/internal/mine.wasm.d.ts.map +1 -1
- package/dist/tempo/internal/mine.wasm.js +7 -12
- package/dist/tempo/internal/mine.wasm.js.map +1 -1
- package/dist/tempo/internal/virtualMasterPool.js +4 -1
- package/dist/tempo/internal/virtualMasterPool.js.map +1 -1
- package/dist/wasm/Engine.d.ts +62 -0
- package/dist/wasm/Engine.d.ts.map +1 -0
- package/dist/wasm/Engine.js +57 -0
- package/dist/wasm/Engine.js.map +1 -0
- package/dist/wasm/Hash.d.ts +49 -0
- package/dist/wasm/Hash.d.ts.map +1 -0
- package/dist/wasm/Hash.js +70 -0
- package/dist/wasm/Hash.js.map +1 -0
- package/dist/wasm/index.d.ts +46 -0
- package/dist/wasm/index.d.ts.map +1 -0
- package/dist/wasm/index.js +46 -0
- package/dist/wasm/index.js.map +1 -0
- package/dist/wasm/internal/hash.d.ts +9 -0
- package/dist/wasm/internal/hash.d.ts.map +1 -0
- package/dist/wasm/internal/hash.js +26 -0
- package/dist/wasm/internal/hash.js.map +1 -0
- package/dist/wasm/internal/hashes.wasm.d.ts +5 -0
- package/dist/wasm/internal/hashes.wasm.d.ts.map +1 -0
- package/dist/wasm/internal/hashes.wasm.js +12 -0
- package/dist/wasm/internal/hashes.wasm.js.map +1 -0
- package/dist/wasm/internal/instantiate.d.ts +56 -0
- package/dist/wasm/internal/instantiate.d.ts.map +1 -0
- package/dist/wasm/internal/instantiate.js +92 -0
- package/dist/wasm/internal/instantiate.js.map +1 -0
- package/dist/zod/TypedData.d.ts +12 -12
- package/package.json +36 -1
- package/src/core/Base64.ts +19 -166
- package/src/core/BinaryStateTree.ts +2 -3
- package/src/core/Bls.ts +27 -77
- package/src/core/Ed25519.ts +7 -7
- package/src/core/Engine.ts +235 -0
- package/src/core/Hash.ts +9 -12
- package/src/core/Keystore.ts +17 -17
- package/src/core/Mnemonic.ts +3 -6
- package/src/core/P256.ts +15 -24
- package/src/core/Rlp_tx.bench.ts +2 -4
- package/src/core/Secp256k1.ts +9 -14
- package/src/core/TxEnvelopeEip1559.bench.ts +0 -5
- package/src/core/WebCryptoP256.ts +2 -2
- package/src/core/X25519.ts +4 -3
- package/src/core/_test/AbiParameters.adversarial.fuzz.ts +1 -2
- package/src/core/_test/AbiParameters.fuzz.ts +1 -2
- package/src/core/_test/Base.fuzz.ts +1 -2
- package/src/core/_test/Cbor.fuzz.ts +1 -2
- package/src/core/_test/Engine.fuzz.ts +293 -0
- package/src/core/_test/Engine.test-d.ts +84 -0
- package/src/core/_test/Engine.test.ts +523 -0
- package/src/core/_test/Hash.vectors.test.ts +56 -0
- package/src/core/_test/Hex.fuzz.ts +1 -2
- package/src/core/_test/Rlp.fuzz.ts +1 -2
- package/src/core/_test/Signature.fuzz.ts +1 -2
- package/src/core/_test/curves.test.ts +7 -0
- package/src/core/_test/index.test.ts +1 -0
- package/src/core/internal/bls.ts +121 -0
- package/src/core/internal/codec/_test/base64.conformance.ts +156 -0
- package/src/core/internal/codec/_test/hex.conformance.ts +204 -0
- package/src/core/internal/codec/_test/hex.fuzz.ts +234 -0
- package/src/core/internal/codec/_test/hex.test.ts +124 -0
- package/src/core/internal/codec/base64.ts +222 -0
- package/src/core/internal/codec/hex.ts +115 -34
- package/src/core/internal/curves.ts +18 -0
- package/src/core/internal/ed25519.ts +64 -0
- package/src/core/internal/engine.ts +410 -0
- package/src/core/internal/hash.ts +48 -0
- package/src/core/internal/keystore.ts +107 -0
- package/src/core/internal/mnemonic.ts +18 -0
- package/src/core/internal/p256.ts +91 -0
- package/src/core/internal/secp256k1.ts +91 -0
- package/src/core/internal/x25519.ts +40 -0
- package/src/index.docs.ts +2 -0
- package/src/index.ts +36 -0
- package/src/node/Engine.ts +69 -0
- package/src/node/Hash.ts +56 -0
- package/src/node/_test/Engine.test.ts +62 -0
- package/src/node/_test/Hash.test-d.ts +26 -0
- package/src/node/_test/Hash.test.ts +102 -0
- package/src/node/index.ts +40 -0
- package/src/tempo/VirtualMaster.test.ts +75 -0
- package/src/tempo/VirtualMaster.ts +28 -6
- package/src/tempo/ZoneId.test-d.ts +16 -0
- package/src/tempo/ZoneId.test.ts +48 -13
- package/src/tempo/ZoneId.ts +55 -19
- package/src/tempo/index.ts +5 -6
- package/src/tempo/internal/mine.wasm.ts +7 -13
- package/src/tempo/internal/virtualMasterPool.ts +4 -1
- package/src/tsconfig.json +2 -1
- package/src/version.ts +1 -1
- package/src/wasm/Engine.ts +76 -0
- package/src/wasm/Hash.bench.ts +60 -0
- package/src/wasm/Hash.ts +109 -0
- package/src/wasm/_test/Engine.test.ts +62 -0
- package/src/wasm/_test/Hash.browser.test.ts +50 -0
- package/src/wasm/_test/Hash.fuzz.ts +188 -0
- package/src/wasm/_test/Hash.test-d.ts +28 -0
- package/src/wasm/_test/Hash.test.ts +211 -0
- package/src/wasm/_test/Hash.vectors.test.ts +117 -0
- package/src/wasm/_test/Runtime.test.ts +21 -0
- package/src/wasm/_test/runtime.wasm.ts +11 -0
- package/src/wasm/index.ts +47 -0
- package/src/wasm/internal/hash.ts +50 -0
- package/src/wasm/internal/hashes.wasm.ts +14 -0
- package/src/wasm/internal/instantiate.ts +135 -0
- package/src/zod/tempo/_test/ZoneId.test.ts +2 -2
- package/src/tempo/internal/mine.c +0 -182
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Engine slot contracts and the override registry.
|
|
3
|
+
*
|
|
4
|
+
* This module intentionally has **no imports**. It is pulled into the module
|
|
5
|
+
* graph of every crypto module in ox, so it must not drag any dependency along
|
|
6
|
+
* with it. That constraint is also why the contracts speak raw `Uint8Array`
|
|
7
|
+
* rather than `Bytes.Bytes`/`Hex.Hex` -- coercion stays in the public module,
|
|
8
|
+
* and the engine boundary is plain bytes in, plain bytes out.
|
|
9
|
+
*
|
|
10
|
+
* The registry holds **overrides only**. Defaults are never registered here,
|
|
11
|
+
* because a registered default has to live on a complete slot object, and a
|
|
12
|
+
* slot object is a single reachable value: esbuild cannot drop the properties
|
|
13
|
+
* of one, so every default's `@noble/*` import survives into every bundle that
|
|
14
|
+
* touches the slot. Measured on a keccak256-only bundle, that costs 5 kB gzip.
|
|
15
|
+
* Instead each slot has a resolver module under `internal/` holding one binding
|
|
16
|
+
* per primitive, and the fallback is chosen there, per primitive.
|
|
17
|
+
*
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Hash primitives. One-shot, synchronous, bytes in / bytes out.
|
|
22
|
+
*
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export type Hash = {
|
|
26
|
+
/** BLAKE3, 32-byte digest. */
|
|
27
|
+
blake3?: ((input: Uint8Array) => Uint8Array) | undefined;
|
|
28
|
+
/** HMAC-SHA256. */
|
|
29
|
+
hmacSha256?: ((key: Uint8Array, message: Uint8Array) => Uint8Array) | undefined;
|
|
30
|
+
/** Keccak256 (not FIPS-202 SHA3-256). */
|
|
31
|
+
keccak256?: ((input: Uint8Array) => Uint8Array) | undefined;
|
|
32
|
+
/** RIPEMD-160. */
|
|
33
|
+
ripemd160?: ((input: Uint8Array) => Uint8Array) | undefined;
|
|
34
|
+
/** SHA-256. */
|
|
35
|
+
sha256?: ((input: Uint8Array) => Uint8Array) | undefined;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Short-Weierstrass ECDSA. Shared by the `Secp256k1` and `P256` slots.
|
|
39
|
+
*
|
|
40
|
+
* Signatures are always low-S normalized and always returned in 65-byte
|
|
41
|
+
* recovered form -- the contract mandates it, so an engine cannot silently opt
|
|
42
|
+
* out.
|
|
43
|
+
*
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
export type Ecdsa = {
|
|
47
|
+
/** Derives an uncompressed (65-byte) public key. */
|
|
48
|
+
getPublicKey?: ((privateKey: Uint8Array) => Uint8Array) | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* Computes a compressed (33-byte) ECDH shared secret.
|
|
51
|
+
*
|
|
52
|
+
* `publicKey` arrives in whichever SEC1 form the caller supplied, so an
|
|
53
|
+
* implementation has to accept both the compressed 33-byte and uncompressed
|
|
54
|
+
* 65-byte encodings.
|
|
55
|
+
*/
|
|
56
|
+
getSharedSecret?: ((privateKey: Uint8Array, publicKey: Uint8Array) => Uint8Array) | undefined;
|
|
57
|
+
/**
|
|
58
|
+
* Recovers an uncompressed public key from a 65-byte `yParity || r || s`
|
|
59
|
+
* signature, the same layout {@link Ecdsa.sign} returns.
|
|
60
|
+
*/
|
|
61
|
+
recoverPublicKey?: ((signature: Uint8Array, payload: Uint8Array) => Uint8Array) | undefined;
|
|
62
|
+
/** Generates a random private key. */
|
|
63
|
+
randomSecretKey?: (() => Uint8Array) | undefined;
|
|
64
|
+
/** Signs a payload, returning 65 bytes of `yParity || r || s`. */
|
|
65
|
+
sign?: ((payload: Uint8Array, privateKey: Uint8Array, options: {
|
|
66
|
+
/** Extra entropy for hedged signing, or `true` for random. */
|
|
67
|
+
extraEntropy: boolean | Uint8Array;
|
|
68
|
+
/** Whether to hash the payload before signing. */
|
|
69
|
+
prehash: boolean;
|
|
70
|
+
}) => Uint8Array) | undefined;
|
|
71
|
+
/** Verifies a 64-byte compact (`r || s`) signature. */
|
|
72
|
+
verify?: ((signature: Uint8Array, payload: Uint8Array, publicKey: Uint8Array, options: {
|
|
73
|
+
/** Whether to hash the payload before verifying. */
|
|
74
|
+
prehash: boolean;
|
|
75
|
+
}) => boolean) | undefined;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Edwards-curve signatures (Ed25519).
|
|
79
|
+
*
|
|
80
|
+
* @internal
|
|
81
|
+
*/
|
|
82
|
+
export type Eddsa = {
|
|
83
|
+
/** Derives a 32-byte public key. */
|
|
84
|
+
getPublicKey?: ((privateKey: Uint8Array) => Uint8Array) | undefined;
|
|
85
|
+
/** Generates a random private key. */
|
|
86
|
+
randomSecretKey?: (() => Uint8Array) | undefined;
|
|
87
|
+
/** Signs a payload, returning a 64-byte signature. */
|
|
88
|
+
sign?: ((payload: Uint8Array, privateKey: Uint8Array) => Uint8Array) | undefined;
|
|
89
|
+
/** Converts an Ed25519 public key to its X25519 (Montgomery) form. */
|
|
90
|
+
toMontgomery?: ((publicKey: Uint8Array) => Uint8Array) | undefined;
|
|
91
|
+
/** Converts an Ed25519 private key to its X25519 (Montgomery) form. */
|
|
92
|
+
toMontgomerySecret?: ((privateKey: Uint8Array) => Uint8Array) | undefined;
|
|
93
|
+
/** Verifies a 64-byte signature. */
|
|
94
|
+
verify?: ((signature: Uint8Array, payload: Uint8Array, publicKey: Uint8Array) => boolean) | undefined;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Montgomery-curve key agreement (X25519).
|
|
98
|
+
*
|
|
99
|
+
* @internal
|
|
100
|
+
*/
|
|
101
|
+
export type Ecdh = {
|
|
102
|
+
/** Derives a 32-byte public key. */
|
|
103
|
+
getPublicKey?: ((privateKey: Uint8Array) => Uint8Array) | undefined;
|
|
104
|
+
/** Computes a 32-byte shared secret. */
|
|
105
|
+
getSharedSecret?: ((privateKey: Uint8Array, publicKey: Uint8Array) => Uint8Array) | undefined;
|
|
106
|
+
/** Generates a random private key. */
|
|
107
|
+
randomSecretKey?: (() => Uint8Array) | undefined;
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* Key derivation and symmetric primitives used by keystores.
|
|
111
|
+
*
|
|
112
|
+
* The `*Async` functions resolve independently of their synchronous twins --
|
|
113
|
+
* an engine that supplies only `scrypt` leaves `scryptAsync` on the default
|
|
114
|
+
* implementation, because wrapping a long synchronous call in a promise is
|
|
115
|
+
* worse than a genuinely yielding one.
|
|
116
|
+
*
|
|
117
|
+
* @internal
|
|
118
|
+
*/
|
|
119
|
+
export type Keystore = {
|
|
120
|
+
/** AES-CTR decryption (key length selects AES-128/192/256). */
|
|
121
|
+
aesCtrDecrypt?: ((key: Uint8Array, iv: Uint8Array, data: Uint8Array) => Uint8Array) | undefined;
|
|
122
|
+
/** AES-CTR encryption (key length selects AES-128/192/256). */
|
|
123
|
+
aesCtrEncrypt?: ((key: Uint8Array, iv: Uint8Array, data: Uint8Array) => Uint8Array) | undefined;
|
|
124
|
+
/** PBKDF2-HMAC-SHA256. */
|
|
125
|
+
pbkdf2Sha256?: ((password: Uint8Array, salt: Uint8Array, options: {
|
|
126
|
+
c: number;
|
|
127
|
+
dkLen: number;
|
|
128
|
+
}) => Uint8Array) | undefined;
|
|
129
|
+
/** Asynchronous PBKDF2-HMAC-SHA256. */
|
|
130
|
+
pbkdf2Sha256Async?: ((password: Uint8Array, salt: Uint8Array, options: {
|
|
131
|
+
c: number;
|
|
132
|
+
dkLen: number;
|
|
133
|
+
}) => Promise<Uint8Array>) | undefined;
|
|
134
|
+
/** scrypt. */
|
|
135
|
+
scrypt?: ((password: Uint8Array, salt: Uint8Array, options: {
|
|
136
|
+
N: number;
|
|
137
|
+
dkLen: number;
|
|
138
|
+
p: number;
|
|
139
|
+
r: number;
|
|
140
|
+
}) => Uint8Array) | undefined;
|
|
141
|
+
/** Asynchronous scrypt. */
|
|
142
|
+
scryptAsync?: ((password: Uint8Array, salt: Uint8Array, options: {
|
|
143
|
+
N: number;
|
|
144
|
+
dkLen: number;
|
|
145
|
+
p: number;
|
|
146
|
+
r: number;
|
|
147
|
+
}) => Promise<Uint8Array>) | undefined;
|
|
148
|
+
};
|
|
149
|
+
/**
|
|
150
|
+
* BIP-39 seed derivation (PBKDF2-HMAC-SHA512, 2048 iterations).
|
|
151
|
+
*
|
|
152
|
+
* Mnemonic generation, validation, and the wordlists themselves are plain data
|
|
153
|
+
* and string handling, so they are not part of the engine boundary.
|
|
154
|
+
*
|
|
155
|
+
* @internal
|
|
156
|
+
*/
|
|
157
|
+
export type Mnemonic = {
|
|
158
|
+
/** Derives a 64-byte seed from a mnemonic phrase and optional passphrase. */
|
|
159
|
+
toSeed?: ((mnemonic: string, passphrase?: string) => Uint8Array) | undefined;
|
|
160
|
+
};
|
|
161
|
+
/**
|
|
162
|
+
* BLS12-381 operations.
|
|
163
|
+
*
|
|
164
|
+
* Points cross this boundary in their compressed serialized form (48 bytes for
|
|
165
|
+
* G1, 96 for G2), never as projective coordinate triples -- an engine backed by
|
|
166
|
+
* a native library cannot be expected to reproduce another library's internal
|
|
167
|
+
* point representation.
|
|
168
|
+
*
|
|
169
|
+
* @internal
|
|
170
|
+
*/
|
|
171
|
+
export type Bls = {
|
|
172
|
+
/** Aggregates compressed points of the same group. */
|
|
173
|
+
aggregate?: ((points: readonly Uint8Array[], group: 'G1' | 'G2') => Uint8Array) | undefined;
|
|
174
|
+
/** Derives a compressed public key in the given group. */
|
|
175
|
+
getPublicKey?: ((privateKey: Uint8Array, group: 'G1' | 'G2') => Uint8Array) | undefined;
|
|
176
|
+
/** Generates a random private key. */
|
|
177
|
+
randomSecretKey?: (() => Uint8Array) | undefined;
|
|
178
|
+
/** Signs a payload, returning a compressed point in the opposite group. */
|
|
179
|
+
sign?: ((payload: Uint8Array, privateKey: Uint8Array, options: {
|
|
180
|
+
/** Domain separation tag for hash-to-curve. */
|
|
181
|
+
dst?: Uint8Array | undefined;
|
|
182
|
+
/** Group of the signature. */
|
|
183
|
+
group: 'G1' | 'G2';
|
|
184
|
+
}) => Uint8Array) | undefined;
|
|
185
|
+
/** Verifies a compressed signature against a compressed public key. */
|
|
186
|
+
verify?: ((signature: Uint8Array, payload: Uint8Array, publicKey: Uint8Array, options: {
|
|
187
|
+
/** Domain separation tag for hash-to-curve. */
|
|
188
|
+
dst?: Uint8Array | undefined;
|
|
189
|
+
/** Group of the signature. */
|
|
190
|
+
signatureGroup: 'G1' | 'G2';
|
|
191
|
+
}) => boolean) | undefined;
|
|
192
|
+
};
|
|
193
|
+
/**
|
|
194
|
+
* Root engine type. Slots and functions are optional; omissions preserve
|
|
195
|
+
* earlier overrides, or use Ox's default when none exists.
|
|
196
|
+
*
|
|
197
|
+
* @internal
|
|
198
|
+
*/
|
|
199
|
+
export type Engine = {
|
|
200
|
+
/** Implementation for {@link ox#Bls}. */
|
|
201
|
+
Bls?: Bls | undefined;
|
|
202
|
+
/** Implementation for {@link ox#Ed25519}. */
|
|
203
|
+
Ed25519?: Eddsa | undefined;
|
|
204
|
+
/** Implementation for {@link ox#Hash}. */
|
|
205
|
+
Hash?: Hash | undefined;
|
|
206
|
+
/** Implementation for {@link ox#Keystore}. */
|
|
207
|
+
Keystore?: Keystore | undefined;
|
|
208
|
+
/** Implementation for {@link ox#Mnemonic}. */
|
|
209
|
+
Mnemonic?: Mnemonic | undefined;
|
|
210
|
+
/** Implementation for {@link ox#P256}. */
|
|
211
|
+
P256?: Ecdsa | undefined;
|
|
212
|
+
/** Implementation for {@link ox#Secp256k1}. */
|
|
213
|
+
Secp256k1?: Ecdsa | undefined;
|
|
214
|
+
/** Implementation for {@link ox#X25519}. */
|
|
215
|
+
X25519?: Ecdh | undefined;
|
|
216
|
+
};
|
|
217
|
+
/**
|
|
218
|
+
* A slot with every function present.
|
|
219
|
+
*
|
|
220
|
+
* Slots are optional all the way down so that an engine can fill in as little
|
|
221
|
+
* as it likes. ox's own default implementations are held to the opposite
|
|
222
|
+
* standard: they back every function ox routes, so they are declared against
|
|
223
|
+
* this instead, and a default that goes missing or drifts from the contract
|
|
224
|
+
* fails to compile.
|
|
225
|
+
*
|
|
226
|
+
* @internal
|
|
227
|
+
*/
|
|
228
|
+
export type Complete<slot> = {
|
|
229
|
+
[key in keyof slot]-?: NonNullable<slot[key]>;
|
|
230
|
+
};
|
|
231
|
+
/**
|
|
232
|
+
* Recognized slot names, in the order they appear on {@link Engine}.
|
|
233
|
+
*
|
|
234
|
+
* @internal
|
|
235
|
+
*/
|
|
236
|
+
export declare const slots: readonly ["Bls", "Ed25519", "Hash", "Keystore", "Mnemonic", "P256", "Secp256k1", "X25519"];
|
|
237
|
+
/**
|
|
238
|
+
* Recognized primitive names, per slot.
|
|
239
|
+
*
|
|
240
|
+
* An override stored under a name no resolver reads is invisible: the default
|
|
241
|
+
* keeps running and nothing is reported, so a typo looks exactly like success.
|
|
242
|
+
* That is worst for the callers who can least afford it -- someone installing a
|
|
243
|
+
* policy-constrained or hardware-backed implementation silently gets ox's
|
|
244
|
+
* default instead. {@link Engine.set} checks against this to make it loud.
|
|
245
|
+
*
|
|
246
|
+
* @internal
|
|
247
|
+
*/
|
|
248
|
+
export declare const primitives: {
|
|
249
|
+
readonly Bls: readonly ["aggregate", "getPublicKey", "randomSecretKey", "sign", "verify"];
|
|
250
|
+
readonly Ed25519: readonly ["getPublicKey", "randomSecretKey", "sign", "toMontgomery", "toMontgomerySecret", "verify"];
|
|
251
|
+
readonly Hash: readonly ["blake3", "hmacSha256", "keccak256", "ripemd160", "sha256"];
|
|
252
|
+
readonly Keystore: readonly ["aesCtrDecrypt", "aesCtrEncrypt", "pbkdf2Sha256", "pbkdf2Sha256Async", "scrypt", "scryptAsync"];
|
|
253
|
+
readonly Mnemonic: readonly ["toSeed"];
|
|
254
|
+
readonly P256: readonly ["getPublicKey", "getSharedSecret", "recoverPublicKey", "randomSecretKey", "sign", "verify"];
|
|
255
|
+
readonly Secp256k1: readonly ["getPublicKey", "getSharedSecret", "recoverPublicKey", "randomSecretKey", "sign", "verify"];
|
|
256
|
+
readonly X25519: readonly ["getPublicKey", "getSharedSecret", "randomSecretKey"];
|
|
257
|
+
};
|
|
258
|
+
/**
|
|
259
|
+
* The installed overrides. Empty by default -- a bare object literal, so
|
|
260
|
+
* bundlers treat it as side-effect free.
|
|
261
|
+
*
|
|
262
|
+
* @internal
|
|
263
|
+
*/
|
|
264
|
+
export declare const overrides: Engine;
|
|
265
|
+
/**
|
|
266
|
+
* Merges overrides into the registry, one level deep. A slot set to `undefined`
|
|
267
|
+
* is removed.
|
|
268
|
+
*
|
|
269
|
+
* @internal
|
|
270
|
+
*/
|
|
271
|
+
export declare function merge(value: Engine): void;
|
|
272
|
+
/**
|
|
273
|
+
* Removes one slot, or every slot when `slot` is omitted.
|
|
274
|
+
*
|
|
275
|
+
* @internal
|
|
276
|
+
*/
|
|
277
|
+
export declare function reset(slot?: keyof Engine): void;
|
|
278
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/core/internal/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Engine slot contracts and the override registry.
|
|
3
|
+
*
|
|
4
|
+
* This module intentionally has **no imports**. It is pulled into the module
|
|
5
|
+
* graph of every crypto module in ox, so it must not drag any dependency along
|
|
6
|
+
* with it. That constraint is also why the contracts speak raw `Uint8Array`
|
|
7
|
+
* rather than `Bytes.Bytes`/`Hex.Hex` -- coercion stays in the public module,
|
|
8
|
+
* and the engine boundary is plain bytes in, plain bytes out.
|
|
9
|
+
*
|
|
10
|
+
* The registry holds **overrides only**. Defaults are never registered here,
|
|
11
|
+
* because a registered default has to live on a complete slot object, and a
|
|
12
|
+
* slot object is a single reachable value: esbuild cannot drop the properties
|
|
13
|
+
* of one, so every default's `@noble/*` import survives into every bundle that
|
|
14
|
+
* touches the slot. Measured on a keccak256-only bundle, that costs 5 kB gzip.
|
|
15
|
+
* Instead each slot has a resolver module under `internal/` holding one binding
|
|
16
|
+
* per primitive, and the fallback is chosen there, per primitive.
|
|
17
|
+
*
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Recognized slot names, in the order they appear on {@link Engine}.
|
|
22
|
+
*
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export const slots = [
|
|
26
|
+
'Bls',
|
|
27
|
+
'Ed25519',
|
|
28
|
+
'Hash',
|
|
29
|
+
'Keystore',
|
|
30
|
+
'Mnemonic',
|
|
31
|
+
'P256',
|
|
32
|
+
'Secp256k1',
|
|
33
|
+
'X25519',
|
|
34
|
+
];
|
|
35
|
+
/**
|
|
36
|
+
* Recognized primitive names, per slot.
|
|
37
|
+
*
|
|
38
|
+
* An override stored under a name no resolver reads is invisible: the default
|
|
39
|
+
* keeps running and nothing is reported, so a typo looks exactly like success.
|
|
40
|
+
* That is worst for the callers who can least afford it -- someone installing a
|
|
41
|
+
* policy-constrained or hardware-backed implementation silently gets ox's
|
|
42
|
+
* default instead. {@link Engine.set} checks against this to make it loud.
|
|
43
|
+
*
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
export const primitives = {
|
|
47
|
+
Bls: ['aggregate', 'getPublicKey', 'randomSecretKey', 'sign', 'verify'],
|
|
48
|
+
Ed25519: [
|
|
49
|
+
'getPublicKey',
|
|
50
|
+
'randomSecretKey',
|
|
51
|
+
'sign',
|
|
52
|
+
'toMontgomery',
|
|
53
|
+
'toMontgomerySecret',
|
|
54
|
+
'verify',
|
|
55
|
+
],
|
|
56
|
+
Hash: ['blake3', 'hmacSha256', 'keccak256', 'ripemd160', 'sha256'],
|
|
57
|
+
Keystore: [
|
|
58
|
+
'aesCtrDecrypt',
|
|
59
|
+
'aesCtrEncrypt',
|
|
60
|
+
'pbkdf2Sha256',
|
|
61
|
+
'pbkdf2Sha256Async',
|
|
62
|
+
'scrypt',
|
|
63
|
+
'scryptAsync',
|
|
64
|
+
],
|
|
65
|
+
Mnemonic: ['toSeed'],
|
|
66
|
+
P256: [
|
|
67
|
+
'getPublicKey',
|
|
68
|
+
'getSharedSecret',
|
|
69
|
+
'recoverPublicKey',
|
|
70
|
+
'randomSecretKey',
|
|
71
|
+
'sign',
|
|
72
|
+
'verify',
|
|
73
|
+
],
|
|
74
|
+
Secp256k1: [
|
|
75
|
+
'getPublicKey',
|
|
76
|
+
'getSharedSecret',
|
|
77
|
+
'recoverPublicKey',
|
|
78
|
+
'randomSecretKey',
|
|
79
|
+
'sign',
|
|
80
|
+
'verify',
|
|
81
|
+
],
|
|
82
|
+
X25519: ['getPublicKey', 'getSharedSecret', 'randomSecretKey'],
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* The installed overrides. Empty by default -- a bare object literal, so
|
|
86
|
+
* bundlers treat it as side-effect free.
|
|
87
|
+
*
|
|
88
|
+
* @internal
|
|
89
|
+
*/
|
|
90
|
+
export const overrides = {};
|
|
91
|
+
/**
|
|
92
|
+
* Merges overrides into the registry, one level deep. A slot set to `undefined`
|
|
93
|
+
* is removed.
|
|
94
|
+
*
|
|
95
|
+
* @internal
|
|
96
|
+
*/
|
|
97
|
+
export function merge(value) {
|
|
98
|
+
for (const key of Object.keys(value)) {
|
|
99
|
+
const slot = value[key];
|
|
100
|
+
if (slot === undefined) {
|
|
101
|
+
delete overrides[key];
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
// A member set to `undefined` clears that primitive. Spreading would keep
|
|
105
|
+
// it as an own property: calls still fall through to the default, but
|
|
106
|
+
// `get` would report an override that is not there.
|
|
107
|
+
const merged = { ...overrides[key] };
|
|
108
|
+
for (const [name, fn] of Object.entries(slot)) {
|
|
109
|
+
if (fn === undefined)
|
|
110
|
+
delete merged[name];
|
|
111
|
+
else
|
|
112
|
+
merged[name] = fn;
|
|
113
|
+
}
|
|
114
|
+
// An empty slot stays: `set({ Hash: {} })` is a no-op a caller wrote
|
|
115
|
+
// deliberately, and `get` has always reported it.
|
|
116
|
+
overrides[key] = merged;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Removes one slot, or every slot when `slot` is omitted.
|
|
121
|
+
*
|
|
122
|
+
* @internal
|
|
123
|
+
*/
|
|
124
|
+
export function reset(slot) {
|
|
125
|
+
if (slot)
|
|
126
|
+
delete overrides[slot];
|
|
127
|
+
else
|
|
128
|
+
for (const key of Object.keys(overrides))
|
|
129
|
+
delete overrides[key];
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/core/internal/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAsRH;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,KAAK;IACL,SAAS;IACT,MAAM;IACN,UAAU;IACV,UAAU;IACV,MAAM;IACN,WAAW;IACX,QAAQ;CACoC,CAAA;AAE9C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,GAAG,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,CAAC;IACvE,OAAO,EAAE;QACP,cAAc;QACd,iBAAiB;QACjB,MAAM;QACN,cAAc;QACd,oBAAoB;QACpB,QAAQ;KACT;IACD,IAAI,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC;IAClE,QAAQ,EAAE;QACR,eAAe;QACf,eAAe;QACf,cAAc;QACd,mBAAmB;QACnB,QAAQ;QACR,aAAa;KACd;IACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;IACpB,IAAI,EAAE;QACJ,cAAc;QACd,iBAAiB;QACjB,kBAAkB;QAClB,iBAAiB;QACjB,MAAM;QACN,QAAQ;KACT;IACD,SAAS,EAAE;QACT,cAAc;QACd,iBAAiB;QACjB,kBAAkB;QAClB,iBAAiB;QACjB,MAAM;QACN,QAAQ;KACT;IACD,MAAM,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,CAAC;CAG/D,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAW,EAAE,CAAA;AAEnC;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAqB,EAAE,CAAC;QACzD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;QACvB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC,GAAG,CAAC,CAAA;YACrB,SAAQ;QACV,CAAC;QACD,0EAA0E;QAC1E,sEAAsE;QACtE,oDAAoD;QACpD,MAAM,MAAM,GAA4B,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAA;QAC7D,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,IAAI,EAAE,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAA;;gBACpC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;QACxB,CAAC;QACD,qEAAqE;QACrE,kDAAkD;QAClD,SAAS,CAAC,GAAG,CAAC,GAAG,MAAe,CAAA;IAClC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,IAAmB;IACvC,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC,IAAI,CAAC,CAAA;;QAE9B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAqB;YAC1D,OAAO,SAAS,CAAC,GAAG,CAAC,CAAA;AAC3B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Complete, type Hash } from './engine.js';
|
|
2
|
+
/** @internal */
|
|
3
|
+
export declare const blake3: Complete<Hash>['blake3'];
|
|
4
|
+
/** @internal */
|
|
5
|
+
export declare const hmacSha256: Complete<Hash>['hmacSha256'];
|
|
6
|
+
/** @internal */
|
|
7
|
+
export declare const keccak256: Complete<Hash>['keccak256'];
|
|
8
|
+
/** @internal */
|
|
9
|
+
export declare const ripemd160: Complete<Hash>['ripemd160'];
|
|
10
|
+
/** @internal */
|
|
11
|
+
export declare const sha256: Complete<Hash>['sha256'];
|
|
12
|
+
//# sourceMappingURL=hash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../../src/core/internal/hash.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,IAAI,EAAa,MAAM,aAAa,CAAA;AAwBjE,gBAAgB;AAChB,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CACM,CAAA;AAElD,gBAAgB;AAChB,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,CACa,CAAA;AAEjE,gBAAgB;AAChB,eAAO,MAAM,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,CACM,CAAA;AAExD,gBAAgB;AAChB,eAAO,MAAM,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,CACM,CAAA;AAExD,gBAAgB;AAChB,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CACM,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { blake3 as noble_blake3 } from '@noble/hashes/blake3.js';
|
|
2
|
+
import { hmac } from '@noble/hashes/hmac.js';
|
|
3
|
+
import { ripemd160 as noble_ripemd160 } from '@noble/hashes/legacy.js';
|
|
4
|
+
import { sha256 as noble_sha256 } from '@noble/hashes/sha2.js';
|
|
5
|
+
import { keccak_256 as noble_keccak256 } from '@noble/hashes/sha3.js';
|
|
6
|
+
import { overrides } from './engine.js';
|
|
7
|
+
/**
|
|
8
|
+
* Resolvers for the `Hash` slot, and ox's defaults for it, backed by
|
|
9
|
+
* `@noble/hashes`.
|
|
10
|
+
*
|
|
11
|
+
* Declaring the defaults against the slot contract is what keeps them honest: a
|
|
12
|
+
* default that goes missing, or whose signature drifts, fails to compile rather
|
|
13
|
+
* than failing at the call site.
|
|
14
|
+
*/
|
|
15
|
+
const blake3Default = (input) => noble_blake3(input);
|
|
16
|
+
const hmacSha256Default = (key, message) => hmac(noble_sha256, key, message);
|
|
17
|
+
const keccak256Default = (input) => noble_keccak256(input);
|
|
18
|
+
const ripemd160Default = (input) => noble_ripemd160(input);
|
|
19
|
+
const sha256Default = (input) => noble_sha256(input);
|
|
20
|
+
/** @internal */
|
|
21
|
+
export const blake3 = (input) => (overrides.Hash?.blake3 ?? blake3Default)(input);
|
|
22
|
+
/** @internal */
|
|
23
|
+
export const hmacSha256 = (key, message) => (overrides.Hash?.hmacSha256 ?? hmacSha256Default)(key, message);
|
|
24
|
+
/** @internal */
|
|
25
|
+
export const keccak256 = (input) => (overrides.Hash?.keccak256 ?? keccak256Default)(input);
|
|
26
|
+
/** @internal */
|
|
27
|
+
export const ripemd160 = (input) => (overrides.Hash?.ripemd160 ?? ripemd160Default)(input);
|
|
28
|
+
/** @internal */
|
|
29
|
+
export const sha256 = (input) => (overrides.Hash?.sha256 ?? sha256Default)(input);
|
|
30
|
+
//# sourceMappingURL=hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../src/core/internal/hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,EAA4B,SAAS,EAAE,MAAM,aAAa,CAAA;AAEjE;;;;;;;GAOG;AAEH,MAAM,aAAa,GAA6B,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;AAE9E,MAAM,iBAAiB,GAAiC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CACvE,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;AAElC,MAAM,gBAAgB,GAAgC,CAAC,KAAK,EAAE,EAAE,CAC9D,eAAe,CAAC,KAAK,CAAC,CAAA;AAExB,MAAM,gBAAgB,GAAgC,CAAC,KAAK,EAAE,EAAE,CAC9D,eAAe,CAAC,KAAK,CAAC,CAAA;AAExB,MAAM,aAAa,GAA6B,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;AAE9E,gBAAgB;AAChB,MAAM,CAAC,MAAM,MAAM,GAA6B,CAAC,KAAK,EAAE,EAAE,CACxD,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,IAAI,aAAa,CAAC,CAAC,KAAK,CAAC,CAAA;AAElD,gBAAgB;AAChB,MAAM,CAAC,MAAM,UAAU,GAAiC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CACvE,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,IAAI,iBAAiB,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AAEjE,gBAAgB;AAChB,MAAM,CAAC,MAAM,SAAS,GAAgC,CAAC,KAAK,EAAE,EAAE,CAC9D,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,IAAI,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAA;AAExD,gBAAgB;AAChB,MAAM,CAAC,MAAM,SAAS,GAAgC,CAAC,KAAK,EAAE,EAAE,CAC9D,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,IAAI,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAA;AAExD,gBAAgB;AAChB,MAAM,CAAC,MAAM,MAAM,GAA6B,CAAC,KAAK,EAAE,EAAE,CACxD,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,IAAI,aAAa,CAAC,CAAC,KAAK,CAAC,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type Complete, type Keystore } from './engine.js';
|
|
2
|
+
/** @internal */
|
|
3
|
+
export declare const aesCtrDecrypt: Complete<Keystore>['aesCtrDecrypt'];
|
|
4
|
+
/** @internal */
|
|
5
|
+
export declare const aesCtrEncrypt: Complete<Keystore>['aesCtrEncrypt'];
|
|
6
|
+
/** @internal */
|
|
7
|
+
export declare const pbkdf2Sha256: Complete<Keystore>['pbkdf2Sha256'];
|
|
8
|
+
/** @internal */
|
|
9
|
+
export declare const pbkdf2Sha256Async: Complete<Keystore>['pbkdf2Sha256Async'];
|
|
10
|
+
/** @internal */
|
|
11
|
+
export declare const scrypt: Complete<Keystore>['scrypt'];
|
|
12
|
+
/** @internal */
|
|
13
|
+
export declare const scryptAsync: Complete<Keystore>['scryptAsync'];
|
|
14
|
+
//# sourceMappingURL=keystore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keystore.d.ts","sourceRoot":"","sources":["../../../src/core/internal/keystore.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAa,MAAM,aAAa,CAAA;AA4CrE,gBAAgB;AAChB,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,eAAe,CAIiB,CAAA;AAE/E,gBAAgB;AAChB,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,eAAe,CAIiB,CAAA;AAE/E,gBAAgB;AAChB,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,cAAc,CASzD,CAAA;AAEH,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,mBAAmB,CASnE,CAAA;AAEH,gBAAgB;AAChB,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CACwB,CAAA;AAExE,gBAAgB;AAChB,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,aAAa,CASvD,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ctr } from '@noble/ciphers/aes.js';
|
|
2
|
+
import { pbkdf2 as pbkdf2_noble, pbkdf2Async as pbkdf2Async_noble, } from '@noble/hashes/pbkdf2.js';
|
|
3
|
+
import { scrypt as scrypt_noble, scryptAsync as scryptAsync_noble, } from '@noble/hashes/scrypt.js';
|
|
4
|
+
import { sha256 } from '@noble/hashes/sha2.js';
|
|
5
|
+
import { overrides } from './engine.js';
|
|
6
|
+
/**
|
|
7
|
+
* Resolvers for the `Keystore` slot, and ox's defaults for it, backed by
|
|
8
|
+
* `@noble/ciphers` and `@noble/hashes`.
|
|
9
|
+
*
|
|
10
|
+
* Declaring the defaults against the slot contract is what keeps them honest: a
|
|
11
|
+
* default that goes missing, or whose signature drifts, fails to compile rather
|
|
12
|
+
* than failing at the call site.
|
|
13
|
+
*/
|
|
14
|
+
const aesCtrDecryptDefault = (key, iv, data) => ctr(key, iv).decrypt(data);
|
|
15
|
+
const aesCtrEncryptDefault = (key, iv, data) => ctr(key, iv).encrypt(data);
|
|
16
|
+
const pbkdf2Sha256Default = (password, salt, options) => pbkdf2_noble(sha256, password, salt, options);
|
|
17
|
+
const pbkdf2Sha256AsyncDefault = (password, salt, options) => pbkdf2Async_noble(sha256, password, salt, options);
|
|
18
|
+
const scryptDefault = (password, salt, options) => scrypt_noble(password, salt, options);
|
|
19
|
+
const scryptAsyncDefault = (password, salt, options) => scryptAsync_noble(password, salt, options);
|
|
20
|
+
/** @internal */
|
|
21
|
+
export const aesCtrDecrypt = (key, iv, data) => (overrides.Keystore?.aesCtrDecrypt ?? aesCtrDecryptDefault)(key, iv, data);
|
|
22
|
+
/** @internal */
|
|
23
|
+
export const aesCtrEncrypt = (key, iv, data) => (overrides.Keystore?.aesCtrEncrypt ?? aesCtrEncryptDefault)(key, iv, data);
|
|
24
|
+
/** @internal */
|
|
25
|
+
export const pbkdf2Sha256 = (password, salt, options) => (overrides.Keystore?.pbkdf2Sha256 ?? pbkdf2Sha256Default)(password, salt, options);
|
|
26
|
+
/** @internal */
|
|
27
|
+
export const pbkdf2Sha256Async = (password, salt, options) => (overrides.Keystore?.pbkdf2Sha256Async ?? pbkdf2Sha256AsyncDefault)(password, salt, options);
|
|
28
|
+
/** @internal */
|
|
29
|
+
export const scrypt = (password, salt, options) => (overrides.Keystore?.scrypt ?? scryptDefault)(password, salt, options);
|
|
30
|
+
/** @internal */
|
|
31
|
+
export const scryptAsync = (password, salt, options) => (overrides.Keystore?.scryptAsync ?? scryptAsyncDefault)(password, salt, options);
|
|
32
|
+
//# sourceMappingURL=keystore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keystore.js","sourceRoot":"","sources":["../../../src/core/internal/keystore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mnemonic.d.ts","sourceRoot":"","sources":["../../../src/core/internal/mnemonic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAa,MAAM,aAAa,CAAA;AAcrE,gBAAgB;AAChB,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CACqB,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { mnemonicToSeedSync } from '@scure/bip39';
|
|
2
|
+
import { overrides } from './engine.js';
|
|
3
|
+
/**
|
|
4
|
+
* Resolvers for the `Mnemonic` slot, and ox's defaults for it, backed by
|
|
5
|
+
* `@scure/bip39`.
|
|
6
|
+
*
|
|
7
|
+
* Declaring the defaults against the slot contract is what keeps them honest: a
|
|
8
|
+
* default that goes missing, or whose signature drifts, fails to compile rather
|
|
9
|
+
* than failing at the call site.
|
|
10
|
+
*/
|
|
11
|
+
const toSeedDefault = (mnemonic, passphrase) => mnemonicToSeedSync(mnemonic, passphrase);
|
|
12
|
+
/** @internal */
|
|
13
|
+
export const toSeed = (mnemonic, passphrase) => (overrides.Mnemonic?.toSeed ?? toSeedDefault)(mnemonic, passphrase);
|
|
14
|
+
//# sourceMappingURL=mnemonic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mnemonic.js","sourceRoot":"","sources":["../../../src/core/internal/mnemonic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAgC,SAAS,EAAE,MAAM,aAAa,CAAA;AAErE;;;;;;;GAOG;AAEH,MAAM,aAAa,GAAiC,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,CAC3E,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;AAE1C,gBAAgB;AAChB,MAAM,CAAC,MAAM,MAAM,GAAiC,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,CAC3E,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,aAAa,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type Complete, type Ecdsa } from './engine.js';
|
|
2
|
+
/** @internal */
|
|
3
|
+
export declare const getPublicKey: Complete<Ecdsa>['getPublicKey'];
|
|
4
|
+
/** @internal */
|
|
5
|
+
export declare const getSharedSecret: Complete<Ecdsa>['getSharedSecret'];
|
|
6
|
+
/** @internal */
|
|
7
|
+
export declare const randomSecretKey: Complete<Ecdsa>['randomSecretKey'];
|
|
8
|
+
/** @internal */
|
|
9
|
+
export declare const recoverPublicKey: Complete<Ecdsa>['recoverPublicKey'];
|
|
10
|
+
/** @internal */
|
|
11
|
+
export declare const sign: Complete<Ecdsa>['sign'];
|
|
12
|
+
/** @internal */
|
|
13
|
+
export declare const verify: Complete<Ecdsa>['verify'];
|
|
14
|
+
//# sourceMappingURL=p256.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"p256.d.ts","sourceRoot":"","sources":["../../../src/core/internal/p256.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAa,MAAM,aAAa,CAAA;AA6ClE,gBAAgB;AAChB,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,cAAc,CACU,CAAA;AAEnE,gBAAgB;AAChB,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAO5D,CAAA;AAEH,gBAAgB;AAChB,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,iBAAiB,CACA,CAAA;AAE/D,gBAAgB;AAChB,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAO9D,CAAA;AAEH,gBAAgB;AAChB,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAC4B,CAAA;AAErE,gBAAgB;AAChB,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAW1C,CAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { p256 } from '@noble/curves/nist.js';
|
|
2
|
+
import { overrides } from './engine.js';
|
|
3
|
+
/**
|
|
4
|
+
* Resolvers for the `P256` slot, and ox's defaults for it, backed by
|
|
5
|
+
* `@noble/curves`.
|
|
6
|
+
*
|
|
7
|
+
* Declaring the defaults against the slot contract is what keeps them honest: a
|
|
8
|
+
* default that goes missing, or whose signature drifts, fails to compile rather
|
|
9
|
+
* than failing at the call site. `lowS` and the recovered signature format are
|
|
10
|
+
* pinned here rather than in the contract, so an engine cannot opt out of them.
|
|
11
|
+
*/
|
|
12
|
+
const getPublicKeyDefault = (privateKey) => p256.getPublicKey(privateKey, false);
|
|
13
|
+
const getSharedSecretDefault = (privateKey, publicKey) => p256.getSharedSecret(privateKey, publicKey, true);
|
|
14
|
+
const randomSecretKeyDefault = () => p256.utils.randomSecretKey();
|
|
15
|
+
const recoverPublicKeyDefault = (signature, payload) => p256.Signature.fromBytes(signature, 'recovered')
|
|
16
|
+
.recoverPublicKey(payload)
|
|
17
|
+
.toBytes(false);
|
|
18
|
+
const signDefault = (payload, privateKey, options) => p256.sign(payload, privateKey, {
|
|
19
|
+
...options,
|
|
20
|
+
format: 'recovered',
|
|
21
|
+
lowS: true,
|
|
22
|
+
});
|
|
23
|
+
const verifyDefault = (signature, payload, publicKey, options) => p256.verify(signature, payload, publicKey, { ...options, lowS: true });
|
|
24
|
+
/** @internal */
|
|
25
|
+
export const getPublicKey = (privateKey) => (overrides.P256?.getPublicKey ?? getPublicKeyDefault)(privateKey);
|
|
26
|
+
/** @internal */
|
|
27
|
+
export const getSharedSecret = (privateKey, publicKey) => (overrides.P256?.getSharedSecret ?? getSharedSecretDefault)(privateKey, publicKey);
|
|
28
|
+
/** @internal */
|
|
29
|
+
export const randomSecretKey = () => (overrides.P256?.randomSecretKey ?? randomSecretKeyDefault)();
|
|
30
|
+
/** @internal */
|
|
31
|
+
export const recoverPublicKey = (signature, payload) => (overrides.P256?.recoverPublicKey ?? recoverPublicKeyDefault)(signature, payload);
|
|
32
|
+
/** @internal */
|
|
33
|
+
export const sign = (payload, privateKey, options) => (overrides.P256?.sign ?? signDefault)(payload, privateKey, options);
|
|
34
|
+
/** @internal */
|
|
35
|
+
export const verify = (signature, payload, publicKey, options) => (overrides.P256?.verify ?? verifyDefault)(signature, payload, publicKey, options);
|
|
36
|
+
//# sourceMappingURL=p256.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"p256.js","sourceRoot":"","sources":["../../../src/core/internal/p256.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,EAA6B,SAAS,EAAE,MAAM,aAAa,CAAA;AAElE;;;;;;;;GAQG;AAEH,MAAM,mBAAmB,GAAoC,CAAC,UAAU,EAAE,EAAE,CAC1E,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;AAEtC,MAAM,sBAAsB,GAAuC,CACjE,UAAU,EACV,SAAS,EACT,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;AAEtD,MAAM,sBAAsB,GAAuC,GAAG,EAAE,CACtE,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAA;AAE9B,MAAM,uBAAuB,GAAwC,CACnE,SAAS,EACT,OAAO,EACP,EAAE,CACF,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC;KAC7C,gBAAgB,CAAC,OAAO,CAAC;KACzB,OAAO,CAAC,KAAK,CAAC,CAAA;AAEnB,MAAM,WAAW,GAA4B,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,CAC5E,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE;IAC7B,GAAG,OAAO;IACV,MAAM,EAAE,WAAW;IACnB,IAAI,EAAE,IAAI;CACX,CAAC,CAAA;AAEJ,MAAM,aAAa,GAA8B,CAC/C,SAAS,EACT,OAAO,EACP,SAAS,EACT,OAAO,EACP,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;AAE3E,gBAAgB;AAChB,MAAM,CAAC,MAAM,YAAY,GAAoC,CAAC,UAAU,EAAE,EAAE,CAC1E,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,IAAI,mBAAmB,CAAC,CAAC,UAAU,CAAC,CAAA;AAEnE,gBAAgB;AAChB,MAAM,CAAC,MAAM,eAAe,GAAuC,CACjE,UAAU,EACV,SAAS,EACT,EAAE,CACF,CAAC,SAAS,CAAC,IAAI,EAAE,eAAe,IAAI,sBAAsB,CAAC,CACzD,UAAU,EACV,SAAS,CACV,CAAA;AAEH,gBAAgB;AAChB,MAAM,CAAC,MAAM,eAAe,GAAuC,GAAG,EAAE,CACtE,CAAC,SAAS,CAAC,IAAI,EAAE,eAAe,IAAI,sBAAsB,CAAC,EAAE,CAAA;AAE/D,gBAAgB;AAChB,MAAM,CAAC,MAAM,gBAAgB,GAAwC,CACnE,SAAS,EACT,OAAO,EACP,EAAE,CACF,CAAC,SAAS,CAAC,IAAI,EAAE,gBAAgB,IAAI,uBAAuB,CAAC,CAC3D,SAAS,EACT,OAAO,CACR,CAAA;AAEH,gBAAgB;AAChB,MAAM,CAAC,MAAM,IAAI,GAA4B,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,CAC5E,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,WAAW,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;AAErE,gBAAgB;AAChB,MAAM,CAAC,MAAM,MAAM,GAA8B,CAC/C,SAAS,EACT,OAAO,EACP,SAAS,EACT,OAAO,EACP,EAAE,CACF,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,IAAI,aAAa,CAAC,CACvC,SAAS,EACT,OAAO,EACP,SAAS,EACT,OAAO,CACR,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type Complete, type Ecdsa } from './engine.js';
|
|
2
|
+
/** @internal */
|
|
3
|
+
export declare const getPublicKey: Complete<Ecdsa>['getPublicKey'];
|
|
4
|
+
/** @internal */
|
|
5
|
+
export declare const getSharedSecret: Complete<Ecdsa>['getSharedSecret'];
|
|
6
|
+
/** @internal */
|
|
7
|
+
export declare const randomSecretKey: Complete<Ecdsa>['randomSecretKey'];
|
|
8
|
+
/** @internal */
|
|
9
|
+
export declare const recoverPublicKey: Complete<Ecdsa>['recoverPublicKey'];
|
|
10
|
+
/** @internal */
|
|
11
|
+
export declare const sign: Complete<Ecdsa>['sign'];
|
|
12
|
+
/** @internal */
|
|
13
|
+
export declare const verify: Complete<Ecdsa>['verify'];
|
|
14
|
+
//# sourceMappingURL=secp256k1.d.ts.map
|