ox 1.0.5 → 1.1.2
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 +77 -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 +156 -0
- package/dist/core/Engine.d.ts.map +1 -0
- package/dist/core/Engine.js +210 -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 +38 -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 +38 -0
- package/dist/index.js.map +1 -1
- package/dist/node/Ed25519.d.ts +33 -0
- package/dist/node/Ed25519.d.ts.map +1 -0
- package/dist/node/Ed25519.js +67 -0
- package/dist/node/Ed25519.js.map +1 -0
- package/dist/node/Engine.d.ts +68 -0
- package/dist/node/Engine.d.ts.map +1 -0
- package/dist/node/Engine.js +75 -0
- package/dist/node/Engine.js.map +1 -0
- package/dist/node/Hash.d.ts +37 -0
- package/dist/node/Hash.d.ts.map +1 -0
- package/dist/node/Hash.js +35 -0
- package/dist/node/Hash.js.map +1 -0
- package/dist/node/Keystore.d.ts +36 -0
- package/dist/node/Keystore.d.ts.map +1 -0
- package/dist/node/Keystore.js +72 -0
- package/dist/node/Keystore.js.map +1 -0
- package/dist/node/Mnemonic.d.ts +35 -0
- package/dist/node/Mnemonic.d.ts.map +1 -0
- package/dist/node/Mnemonic.js +46 -0
- package/dist/node/Mnemonic.js.map +1 -0
- package/dist/node/P256.d.ts +32 -0
- package/dist/node/P256.d.ts.map +1 -0
- package/dist/node/P256.js +34 -0
- package/dist/node/P256.js.map +1 -0
- package/dist/node/X25519.d.ts +31 -0
- package/dist/node/X25519.d.ts.map +1 -0
- package/dist/node/X25519.js +71 -0
- package/dist/node/X25519.js.map +1 -0
- package/dist/node/index.d.ts +126 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +126 -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/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/Ed25519.d.ts +35 -0
- package/dist/wasm/Ed25519.d.ts.map +1 -0
- package/dist/wasm/Ed25519.js +88 -0
- package/dist/wasm/Ed25519.js.map +1 -0
- package/dist/wasm/Engine.d.ts +71 -0
- package/dist/wasm/Engine.d.ts.map +1 -0
- package/dist/wasm/Engine.js +76 -0
- package/dist/wasm/Engine.js.map +1 -0
- package/dist/wasm/Hash.d.ts +43 -0
- package/dist/wasm/Hash.d.ts.map +1 -0
- package/dist/wasm/Hash.js +64 -0
- package/dist/wasm/Hash.js.map +1 -0
- package/dist/wasm/Keystore.d.ts +37 -0
- package/dist/wasm/Keystore.d.ts.map +1 -0
- package/dist/wasm/Keystore.js +34 -0
- package/dist/wasm/Keystore.js.map +1 -0
- package/dist/wasm/Mnemonic.d.ts +33 -0
- package/dist/wasm/Mnemonic.d.ts.map +1 -0
- package/dist/wasm/Mnemonic.js +30 -0
- package/dist/wasm/Mnemonic.js.map +1 -0
- package/dist/wasm/X25519.d.ts +33 -0
- package/dist/wasm/X25519.d.ts.map +1 -0
- package/dist/wasm/X25519.js +53 -0
- package/dist/wasm/X25519.js.map +1 -0
- package/dist/wasm/index.d.ts +115 -0
- package/dist/wasm/index.d.ts.map +1 -0
- package/dist/wasm/index.js +115 -0
- package/dist/wasm/index.js.map +1 -0
- package/dist/wasm/internal/blake3.d.ts +11 -0
- package/dist/wasm/internal/blake3.d.ts.map +1 -0
- package/dist/wasm/internal/blake3.js +31 -0
- package/dist/wasm/internal/blake3.js.map +1 -0
- package/dist/wasm/internal/blake3.wasm.d.ts +3 -0
- package/dist/wasm/internal/blake3.wasm.d.ts.map +1 -0
- package/dist/wasm/internal/blake3.wasm.js +10 -0
- package/dist/wasm/internal/blake3.wasm.js.map +1 -0
- package/dist/wasm/internal/crypto25519.d.ts +16 -0
- package/dist/wasm/internal/crypto25519.d.ts.map +1 -0
- package/dist/wasm/internal/crypto25519.js +5 -0
- package/dist/wasm/internal/crypto25519.js.map +1 -0
- package/dist/wasm/internal/crypto25519.wasm.d.ts +3 -0
- package/dist/wasm/internal/crypto25519.wasm.d.ts.map +1 -0
- package/dist/wasm/internal/crypto25519.wasm.js +10 -0
- package/dist/wasm/internal/crypto25519.wasm.js.map +1 -0
- package/dist/wasm/internal/ed25519.d.ts +4 -0
- package/dist/wasm/internal/ed25519.d.ts.map +1 -0
- package/dist/wasm/internal/ed25519.js +21 -0
- package/dist/wasm/internal/ed25519.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.d.ts +12 -0
- package/dist/wasm/internal/hashes.d.ts.map +1 -0
- package/dist/wasm/internal/hashes.js +8 -0
- package/dist/wasm/internal/hashes.js.map +1 -0
- package/dist/wasm/internal/hashes.wasm.d.ts +7 -0
- package/dist/wasm/internal/hashes.wasm.d.ts.map +1 -0
- package/dist/wasm/internal/hashes.wasm.js +14 -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/wasm/internal/mnemonic.d.ts +4 -0
- package/dist/wasm/internal/mnemonic.d.ts.map +1 -0
- package/dist/wasm/internal/mnemonic.js +45 -0
- package/dist/wasm/internal/mnemonic.js.map +1 -0
- package/dist/wasm/internal/pbkdf2.d.ts +12 -0
- package/dist/wasm/internal/pbkdf2.d.ts.map +1 -0
- package/dist/wasm/internal/pbkdf2.js +51 -0
- package/dist/wasm/internal/pbkdf2.js.map +1 -0
- package/dist/wasm/internal/x25519.d.ts +4 -0
- package/dist/wasm/internal/x25519.d.ts.map +1 -0
- package/dist/wasm/internal/x25519.js +21 -0
- package/dist/wasm/internal/x25519.js.map +1 -0
- package/dist/zod/TypedData.d.ts +12 -12
- package/package.json +81 -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 +308 -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 +140 -0
- package/src/core/_test/Engine.test.ts +618 -0
- package/src/core/_test/Hash.vectors.test.ts +64 -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 +39 -0
- package/src/node/Ed25519.ts +87 -0
- package/src/node/Engine.ts +125 -0
- package/src/node/Hash.ts +51 -0
- package/src/node/Keystore.ts +103 -0
- package/src/node/Mnemonic.ts +68 -0
- package/src/node/P256.ts +48 -0
- package/src/node/X25519.ts +93 -0
- package/src/node/_test/Curves.fuzz.ts +76 -0
- package/src/node/_test/Ed25519.test-d.ts +35 -0
- package/src/node/_test/Ed25519.test.ts +220 -0
- package/src/node/_test/Engine.test-d.ts +28 -0
- package/src/node/_test/Engine.test.ts +102 -0
- package/src/node/_test/Hash.test-d.ts +32 -0
- package/src/node/_test/Hash.test.ts +101 -0
- package/src/node/_test/Keystore.fuzz.ts +58 -0
- package/src/node/_test/Keystore.test-d.ts +43 -0
- package/src/node/_test/Keystore.test.ts +198 -0
- package/src/node/_test/Mnemonic.fuzz.ts +31 -0
- package/src/node/_test/Mnemonic.test-d.ts +21 -0
- package/src/node/_test/Mnemonic.test.ts +98 -0
- package/src/node/_test/P256.test-d.ts +29 -0
- package/src/node/_test/P256.test.ts +102 -0
- package/src/node/_test/X25519.test-d.ts +28 -0
- package/src/node/_test/X25519.test.ts +239 -0
- package/src/node/index.ts +132 -0
- package/src/tempo/VirtualMaster.test.ts +75 -0
- package/src/tempo/VirtualMaster.ts +28 -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/Ed25519.ts +114 -0
- package/src/wasm/Engine.ts +121 -0
- package/src/wasm/Hash.bench.ts +60 -0
- package/src/wasm/Hash.ts +88 -0
- package/src/wasm/Keystore.ts +48 -0
- package/src/wasm/Mnemonic.ts +44 -0
- package/src/wasm/X25519.ts +70 -0
- package/src/wasm/_test/Crypto25519.conformance.ts +57 -0
- package/src/wasm/_test/Crypto25519.fuzz.ts +187 -0
- package/src/wasm/_test/Ed25519.test-d.ts +28 -0
- package/src/wasm/_test/Ed25519.test.ts +168 -0
- package/src/wasm/_test/Ed25519.vectors.test.ts +73 -0
- package/src/wasm/_test/Engine.test-d.ts +28 -0
- package/src/wasm/_test/Engine.test.ts +96 -0
- package/src/wasm/_test/Hash.browser.test.ts +54 -0
- package/src/wasm/_test/Hash.fuzz.ts +223 -0
- package/src/wasm/_test/Hash.test-d.ts +33 -0
- package/src/wasm/_test/Hash.test.ts +311 -0
- package/src/wasm/_test/Hash.vectors.test.ts +124 -0
- package/src/wasm/_test/Keystore.browser.test.ts +42 -0
- package/src/wasm/_test/Keystore.fuzz.ts +113 -0
- package/src/wasm/_test/Keystore.test-d.ts +33 -0
- package/src/wasm/_test/Keystore.test.ts +192 -0
- package/src/wasm/_test/Keystore.vectors.test.ts +21 -0
- package/src/wasm/_test/Mnemonic.test-d.ts +17 -0
- package/src/wasm/_test/Mnemonic.test.ts +110 -0
- package/src/wasm/_test/Runtime.test.ts +21 -0
- package/src/wasm/_test/X25519.test-d.ts +21 -0
- package/src/wasm/_test/X25519.test.ts +194 -0
- package/src/wasm/_test/fixtures.ts +4 -0
- package/src/wasm/_test/runtime.wasm.ts +11 -0
- package/src/wasm/index.ts +120 -0
- package/src/wasm/internal/blake3.ts +45 -0
- package/src/wasm/internal/blake3.wasm.ts +11 -0
- package/src/wasm/internal/crypto25519.ts +43 -0
- package/src/wasm/internal/crypto25519.wasm.ts +11 -0
- package/src/wasm/internal/ed25519.ts +31 -0
- package/src/wasm/internal/hash.ts +50 -0
- package/src/wasm/internal/hashes.ts +29 -0
- package/src/wasm/internal/hashes.wasm.ts +17 -0
- package/src/wasm/internal/instantiate.ts +135 -0
- package/src/wasm/internal/mnemonic.ts +56 -0
- package/src/wasm/internal/pbkdf2.ts +86 -0
- package/src/wasm/internal/x25519.ts +29 -0
- package/src/tempo/internal/mine.c +0 -182
package/dist/core/Ed25519.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ed25519 } from '@noble/curves/ed25519.js';
|
|
2
2
|
import * as Bytes from './Bytes.js';
|
|
3
3
|
import * as Hex from './Hex.js';
|
|
4
|
+
import * as engine from './internal/ed25519.js';
|
|
4
5
|
/** Re-export of noble/curves Ed25519 utilities. */
|
|
5
6
|
export const noble = ed25519;
|
|
6
7
|
/**
|
|
@@ -43,7 +44,7 @@ export function createKeyPair(options = {}) {
|
|
|
43
44
|
export function getPublicKey(options) {
|
|
44
45
|
const { as = 'Hex', privateKey } = options;
|
|
45
46
|
const privateKeyBytes = Bytes.from(privateKey);
|
|
46
|
-
const publicKeyBytes =
|
|
47
|
+
const publicKeyBytes = engine.getPublicKey(privateKeyBytes);
|
|
47
48
|
if (as === 'Hex')
|
|
48
49
|
return Hex.fromBytes(publicKeyBytes);
|
|
49
50
|
return publicKeyBytes;
|
|
@@ -63,7 +64,7 @@ export function getPublicKey(options) {
|
|
|
63
64
|
*/
|
|
64
65
|
export function randomPrivateKey(options = {}) {
|
|
65
66
|
const { as = 'Hex' } = options;
|
|
66
|
-
const bytes =
|
|
67
|
+
const bytes = engine.randomSecretKey();
|
|
67
68
|
if (as === 'Hex')
|
|
68
69
|
return Hex.fromBytes(bytes);
|
|
69
70
|
return bytes;
|
|
@@ -89,7 +90,7 @@ export function sign(options) {
|
|
|
89
90
|
const { as = 'Hex', payload, privateKey } = options;
|
|
90
91
|
const payloadBytes = Bytes.from(payload);
|
|
91
92
|
const privateKeyBytes = Bytes.from(privateKey);
|
|
92
|
-
const signatureBytes =
|
|
93
|
+
const signatureBytes = engine.sign(payloadBytes, privateKeyBytes);
|
|
93
94
|
if (as === 'Hex')
|
|
94
95
|
return Hex.fromBytes(signatureBytes);
|
|
95
96
|
return signatureBytes;
|
|
@@ -123,7 +124,7 @@ export function verify(options) {
|
|
|
123
124
|
const payloadBytes = Bytes.from(payload);
|
|
124
125
|
const publicKeyBytes = Bytes.from(publicKey);
|
|
125
126
|
const signatureBytes = Bytes.from(signature);
|
|
126
|
-
return
|
|
127
|
+
return engine.verify(signatureBytes, payloadBytes, publicKeyBytes);
|
|
127
128
|
}
|
|
128
129
|
/**
|
|
129
130
|
* Converts an Ed25519 public key to an X25519 public key.
|
|
@@ -148,7 +149,7 @@ export function verify(options) {
|
|
|
148
149
|
export function toX25519PublicKey(options) {
|
|
149
150
|
const { as = 'Hex', publicKey } = options;
|
|
150
151
|
const publicKeyBytes = Bytes.from(publicKey);
|
|
151
|
-
const x25519PublicKeyBytes =
|
|
152
|
+
const x25519PublicKeyBytes = engine.toMontgomery(publicKeyBytes);
|
|
152
153
|
if (as === 'Hex')
|
|
153
154
|
return Hex.fromBytes(x25519PublicKeyBytes);
|
|
154
155
|
return x25519PublicKeyBytes;
|
|
@@ -176,7 +177,7 @@ export function toX25519PublicKey(options) {
|
|
|
176
177
|
export function toX25519PrivateKey(options) {
|
|
177
178
|
const { as = 'Hex', privateKey } = options;
|
|
178
179
|
const privateKeyBytes = Bytes.from(privateKey);
|
|
179
|
-
const x25519PrivateKeyBytes =
|
|
180
|
+
const x25519PrivateKeyBytes = engine.toMontgomerySecret(privateKeyBytes);
|
|
180
181
|
if (as === 'Hex')
|
|
181
182
|
return Hex.fromBytes(x25519PrivateKeyBytes);
|
|
182
183
|
return x25519PrivateKeyBytes;
|
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;AAEnC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"Ed25519.js","sourceRoot":"","sources":["../../src/core/Ed25519.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import * as Errors from './Errors.js';
|
|
2
|
+
import * as engine from './internal/engine.js';
|
|
3
|
+
export type { Bls, Ecdh, Ecdsa, Eddsa, Engine, Hash, Keystore, Mnemonic, } from './internal/engine.js';
|
|
4
|
+
/**
|
|
5
|
+
* Resolves and installs crypto implementations.
|
|
6
|
+
*
|
|
7
|
+
* Slots resolve in parallel, then use {@link ox#Engine.set} merge semantics:
|
|
8
|
+
* omitted slots and primitives preserve existing overrides. If a slot rejects
|
|
9
|
+
* or validation fails, the installed engine is unchanged.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts twoslash
|
|
13
|
+
* import { Engine } from 'ox'
|
|
14
|
+
* import { Hash } from 'ox/wasm'
|
|
15
|
+
*
|
|
16
|
+
* await Engine.install({
|
|
17
|
+
* Hash: Hash.engine()
|
|
18
|
+
* })
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @param value - Engine slots or promises for engine slots.
|
|
22
|
+
* @returns The resolved engine that was installed.
|
|
23
|
+
*/
|
|
24
|
+
export declare function install<value extends install.Value>(value: value & install.Exact<value>): Promise<install.ReturnType<value>>;
|
|
25
|
+
export declare namespace install {
|
|
26
|
+
/** Rejects slot and primitive names outside the engine contract. */
|
|
27
|
+
type Exact<value extends Value> = {
|
|
28
|
+
[key in keyof value]: key extends keyof engine.Engine ? [NonNullable<Awaited<value[key]>>] extends [never] ? unknown : Exclude<keyof NonNullable<Awaited<value[key]>>, keyof NonNullable<engine.Engine[key]>> extends never ? unknown : never : never;
|
|
29
|
+
};
|
|
30
|
+
/** Engine whose slots can be resolved asynchronously. */
|
|
31
|
+
type Value = {
|
|
32
|
+
[key in keyof engine.Engine]?: engine.Engine[key] | PromiseLike<engine.Engine[key]>;
|
|
33
|
+
};
|
|
34
|
+
/** Resolves the supplied slots while preserving their precise shape. */
|
|
35
|
+
type ReturnType<value extends Value> = {
|
|
36
|
+
[key in keyof value]: Awaited<value[key]>;
|
|
37
|
+
};
|
|
38
|
+
/** Error thrown while installing an engine. */
|
|
39
|
+
type ErrorType = set.ErrorType | Errors.GlobalErrorType;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Installs crypto implementations, replacing the `@noble/*` implementations ox
|
|
43
|
+
* uses by default.
|
|
44
|
+
*
|
|
45
|
+
* Slots and their functions are optional. Omissions preserve earlier
|
|
46
|
+
* overrides, or use Ox's default when none exists. Calls merge, so a later
|
|
47
|
+
* engine can override one primitive.
|
|
48
|
+
*
|
|
49
|
+
* Call this once, during application startup, before any crypto call. ox
|
|
50
|
+
* resolves the engine at call time, so values computed beforehand used whatever
|
|
51
|
+
* implementation was installed then.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```ts twoslash
|
|
55
|
+
* import { Engine, Hash } from 'ox'
|
|
56
|
+
*
|
|
57
|
+
* Engine.set({
|
|
58
|
+
* Hash: { keccak256: () => new Uint8Array(32) }
|
|
59
|
+
* })
|
|
60
|
+
*
|
|
61
|
+
* Hash.keccak256('0xdeadbeef')
|
|
62
|
+
* // @log: '0x0000000000000000000000000000000000000000000000000000000000000000'
|
|
63
|
+
* ```
|
|
64
|
+
*
|
|
65
|
+
* @param value - Engine to install.
|
|
66
|
+
*/
|
|
67
|
+
export declare function set(value: engine.Engine): void;
|
|
68
|
+
export declare namespace set {
|
|
69
|
+
type ErrorType = InvalidSlotValueError | UnknownPrimitiveError | UnknownSlotError | Errors.GlobalErrorType;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Returns the installed engine.
|
|
73
|
+
*
|
|
74
|
+
* Only overrides are returned -- slots left on ox's defaults are absent, so an
|
|
75
|
+
* empty object means ox is entirely on its default implementations.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```ts twoslash
|
|
79
|
+
* import { Engine } from 'ox'
|
|
80
|
+
*
|
|
81
|
+
* Engine.get()
|
|
82
|
+
* // @log: {}
|
|
83
|
+
* ```
|
|
84
|
+
*
|
|
85
|
+
* @returns The installed engine.
|
|
86
|
+
*/
|
|
87
|
+
export declare function get(): engine.Engine;
|
|
88
|
+
export declare namespace get {
|
|
89
|
+
type ErrorType = Errors.GlobalErrorType;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Restores ox's default implementations.
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```ts twoslash
|
|
96
|
+
* import { Engine } from 'ox'
|
|
97
|
+
*
|
|
98
|
+
* Engine.reset('Hash')
|
|
99
|
+
* Engine.reset()
|
|
100
|
+
* ```
|
|
101
|
+
*
|
|
102
|
+
* @param slot - Slot to reset. Resets every slot when omitted.
|
|
103
|
+
*/
|
|
104
|
+
export declare function reset(slot?: keyof engine.Engine): void;
|
|
105
|
+
export declare namespace reset {
|
|
106
|
+
type ErrorType = UnknownSlotError | Errors.GlobalErrorType;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Runs a function with an engine installed, then restores the previous engine.
|
|
110
|
+
*
|
|
111
|
+
* Only safe for synchronous functions: the engine is process-wide for the
|
|
112
|
+
* duration of the call, so concurrent asynchronous work would observe it too.
|
|
113
|
+
* Passing a function that returns a promise throws
|
|
114
|
+
* {@link ox#Engine.AsyncScopeError}.
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```ts twoslash
|
|
118
|
+
* import { Engine, Hash } from 'ox'
|
|
119
|
+
*
|
|
120
|
+
* const hash = Engine.with(
|
|
121
|
+
* { Hash: { keccak256: () => new Uint8Array(32) } },
|
|
122
|
+
* () => Hash.keccak256('0xdeadbeef')
|
|
123
|
+
* )
|
|
124
|
+
* // @log: '0x0000000000000000000000000000000000000000000000000000000000000000'
|
|
125
|
+
* ```
|
|
126
|
+
*
|
|
127
|
+
* @param value - Engine to install for the duration of the call.
|
|
128
|
+
* @param fn - Synchronous function to run.
|
|
129
|
+
* @returns The return value of `fn`.
|
|
130
|
+
*/
|
|
131
|
+
declare function with_<returnType>(value: engine.Engine, fn: () => returnType): returnType;
|
|
132
|
+
export { with_ as with };
|
|
133
|
+
declare namespace with_ {
|
|
134
|
+
type ErrorType = AsyncScopeError | set.ErrorType | get.ErrorType | Errors.GlobalErrorType;
|
|
135
|
+
}
|
|
136
|
+
/** Thrown when an engine slot is not an object or `undefined`. */
|
|
137
|
+
export declare class InvalidSlotValueError extends Errors.BaseError {
|
|
138
|
+
readonly name = "Engine.InvalidSlotValueError";
|
|
139
|
+
constructor(slot: string);
|
|
140
|
+
}
|
|
141
|
+
/** Thrown when an unrecognized engine slot is supplied. */
|
|
142
|
+
export declare class UnknownSlotError extends Errors.BaseError {
|
|
143
|
+
readonly name = "Engine.UnknownSlotError";
|
|
144
|
+
constructor(slot: string);
|
|
145
|
+
}
|
|
146
|
+
/** Thrown when a slot is given an unrecognized primitive name. */
|
|
147
|
+
export declare class UnknownPrimitiveError extends Errors.BaseError {
|
|
148
|
+
readonly name = "Engine.UnknownPrimitiveError";
|
|
149
|
+
constructor(slot: string, primitive: string);
|
|
150
|
+
}
|
|
151
|
+
/** Thrown when {@link ox#Engine.with} is given an asynchronous function. */
|
|
152
|
+
export declare class AsyncScopeError extends Errors.BaseError {
|
|
153
|
+
readonly name = "Engine.AsyncScopeError";
|
|
154
|
+
constructor();
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=Engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../../src/core/Engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import * as Caches from './Caches.js';
|
|
2
|
+
import * as Errors from './Errors.js';
|
|
3
|
+
import * as engine from './internal/engine.js';
|
|
4
|
+
/**
|
|
5
|
+
* Resolves and installs crypto implementations.
|
|
6
|
+
*
|
|
7
|
+
* Slots resolve in parallel, then use {@link ox#Engine.set} merge semantics:
|
|
8
|
+
* omitted slots and primitives preserve existing overrides. If a slot rejects
|
|
9
|
+
* or validation fails, the installed engine is unchanged.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts twoslash
|
|
13
|
+
* import { Engine } from 'ox'
|
|
14
|
+
* import { Hash } from 'ox/wasm'
|
|
15
|
+
*
|
|
16
|
+
* await Engine.install({
|
|
17
|
+
* Hash: Hash.engine()
|
|
18
|
+
* })
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @param value - Engine slots or promises for engine slots.
|
|
22
|
+
* @returns The resolved engine that was installed.
|
|
23
|
+
*/
|
|
24
|
+
export async function install(value) {
|
|
25
|
+
const resolved = Object.fromEntries(await Promise.all(Object.entries(value).map(async ([slot, primitives]) => [
|
|
26
|
+
slot,
|
|
27
|
+
await primitives,
|
|
28
|
+
])));
|
|
29
|
+
set(resolved);
|
|
30
|
+
return resolved;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Installs crypto implementations, replacing the `@noble/*` implementations ox
|
|
34
|
+
* uses by default.
|
|
35
|
+
*
|
|
36
|
+
* Slots and their functions are optional. Omissions preserve earlier
|
|
37
|
+
* overrides, or use Ox's default when none exists. Calls merge, so a later
|
|
38
|
+
* engine can override one primitive.
|
|
39
|
+
*
|
|
40
|
+
* Call this once, during application startup, before any crypto call. ox
|
|
41
|
+
* resolves the engine at call time, so values computed beforehand used whatever
|
|
42
|
+
* implementation was installed then.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts twoslash
|
|
46
|
+
* import { Engine, Hash } from 'ox'
|
|
47
|
+
*
|
|
48
|
+
* Engine.set({
|
|
49
|
+
* Hash: { keccak256: () => new Uint8Array(32) }
|
|
50
|
+
* })
|
|
51
|
+
*
|
|
52
|
+
* Hash.keccak256('0xdeadbeef')
|
|
53
|
+
* // @log: '0x0000000000000000000000000000000000000000000000000000000000000000'
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* @param value - Engine to install.
|
|
57
|
+
*/
|
|
58
|
+
export function set(value) {
|
|
59
|
+
for (const [slot, primitives] of Object.entries(value)) {
|
|
60
|
+
if (!engine.slots.includes(slot))
|
|
61
|
+
throw new UnknownSlotError(slot);
|
|
62
|
+
if (primitives !== undefined &&
|
|
63
|
+
(typeof primitives !== 'object' ||
|
|
64
|
+
primitives === null ||
|
|
65
|
+
Array.isArray(primitives)))
|
|
66
|
+
throw new InvalidSlotValueError(slot);
|
|
67
|
+
const known = engine.primitives[slot];
|
|
68
|
+
// `primitives` is undefined where the caller is clearing the slot.
|
|
69
|
+
for (const primitive of Object.keys(primitives ?? {}))
|
|
70
|
+
if (!known.includes(primitive))
|
|
71
|
+
throw new UnknownPrimitiveError(slot, primitive);
|
|
72
|
+
}
|
|
73
|
+
engine.merge(value);
|
|
74
|
+
Caches.clear();
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Returns the installed engine.
|
|
78
|
+
*
|
|
79
|
+
* Only overrides are returned -- slots left on ox's defaults are absent, so an
|
|
80
|
+
* empty object means ox is entirely on its default implementations.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```ts twoslash
|
|
84
|
+
* import { Engine } from 'ox'
|
|
85
|
+
*
|
|
86
|
+
* Engine.get()
|
|
87
|
+
* // @log: {}
|
|
88
|
+
* ```
|
|
89
|
+
*
|
|
90
|
+
* @returns The installed engine.
|
|
91
|
+
*/
|
|
92
|
+
export function get() {
|
|
93
|
+
// Slots are copied too, not just the root: a shared slot lets a caller write
|
|
94
|
+
// `get().Hash!.keccak256 = …` straight into the live registry, changing what
|
|
95
|
+
// ox calls without going through `set` and so without clearing the caches
|
|
96
|
+
// derived from it.
|
|
97
|
+
const copy = {};
|
|
98
|
+
for (const [name, slot] of Object.entries(engine.overrides))
|
|
99
|
+
copy[name] = { ...slot };
|
|
100
|
+
return copy;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Restores ox's default implementations.
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```ts twoslash
|
|
107
|
+
* import { Engine } from 'ox'
|
|
108
|
+
*
|
|
109
|
+
* Engine.reset('Hash')
|
|
110
|
+
* Engine.reset()
|
|
111
|
+
* ```
|
|
112
|
+
*
|
|
113
|
+
* @param slot - Slot to reset. Resets every slot when omitted.
|
|
114
|
+
*/
|
|
115
|
+
export function reset(slot) {
|
|
116
|
+
// Deleting an unknown key succeeds silently, so without this a misspelled
|
|
117
|
+
// slot reports nothing and leaves the override it was meant to remove
|
|
118
|
+
// installed.
|
|
119
|
+
if (slot !== undefined && !engine.slots.includes(slot))
|
|
120
|
+
throw new UnknownSlotError(slot);
|
|
121
|
+
engine.reset(slot);
|
|
122
|
+
Caches.clear();
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Runs a function with an engine installed, then restores the previous engine.
|
|
126
|
+
*
|
|
127
|
+
* Only safe for synchronous functions: the engine is process-wide for the
|
|
128
|
+
* duration of the call, so concurrent asynchronous work would observe it too.
|
|
129
|
+
* Passing a function that returns a promise throws
|
|
130
|
+
* {@link ox#Engine.AsyncScopeError}.
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```ts twoslash
|
|
134
|
+
* import { Engine, Hash } from 'ox'
|
|
135
|
+
*
|
|
136
|
+
* const hash = Engine.with(
|
|
137
|
+
* { Hash: { keccak256: () => new Uint8Array(32) } },
|
|
138
|
+
* () => Hash.keccak256('0xdeadbeef')
|
|
139
|
+
* )
|
|
140
|
+
* // @log: '0x0000000000000000000000000000000000000000000000000000000000000000'
|
|
141
|
+
* ```
|
|
142
|
+
*
|
|
143
|
+
* @param value - Engine to install for the duration of the call.
|
|
144
|
+
* @param fn - Synchronous function to run.
|
|
145
|
+
* @returns The return value of `fn`.
|
|
146
|
+
*/
|
|
147
|
+
// Declared unexported and surfaced only through the alias below: exporting the
|
|
148
|
+
// backing name too would put an undocumented `Engine.with_` in the public
|
|
149
|
+
// surface, which is then breaking to take away.
|
|
150
|
+
function with_(value, fn) {
|
|
151
|
+
const previous = get();
|
|
152
|
+
try {
|
|
153
|
+
set(value);
|
|
154
|
+
const result = fn();
|
|
155
|
+
const thenable = result;
|
|
156
|
+
if (typeof thenable?.then === 'function') {
|
|
157
|
+
// Settle the promise we are about to discard. Otherwise its rejection is
|
|
158
|
+
// never observed, and Node can take the process down over it after the
|
|
159
|
+
// caller has already handled the `AsyncScopeError` thrown here.
|
|
160
|
+
thenable.then(() => { }, () => { });
|
|
161
|
+
throw new AsyncScopeError();
|
|
162
|
+
}
|
|
163
|
+
return result;
|
|
164
|
+
}
|
|
165
|
+
finally {
|
|
166
|
+
engine.reset();
|
|
167
|
+
engine.merge(previous);
|
|
168
|
+
Caches.clear();
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
export { with_ as with };
|
|
172
|
+
/** Thrown when an engine slot is not an object or `undefined`. */
|
|
173
|
+
export class InvalidSlotValueError extends Errors.BaseError {
|
|
174
|
+
name = 'Engine.InvalidSlotValueError';
|
|
175
|
+
constructor(slot) {
|
|
176
|
+
super(`\`${slot}\` must be an object or \`undefined\`.`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/** Thrown when an unrecognized engine slot is supplied. */
|
|
180
|
+
export class UnknownSlotError extends Errors.BaseError {
|
|
181
|
+
name = 'Engine.UnknownSlotError';
|
|
182
|
+
constructor(slot) {
|
|
183
|
+
super(`\`${slot}\` is not a valid engine slot.`, {
|
|
184
|
+
metaMessages: [`Valid slots: ${engine.slots.join(', ')}`],
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/** Thrown when a slot is given an unrecognized primitive name. */
|
|
189
|
+
export class UnknownPrimitiveError extends Errors.BaseError {
|
|
190
|
+
name = 'Engine.UnknownPrimitiveError';
|
|
191
|
+
constructor(slot, primitive) {
|
|
192
|
+
// The class is public, so `slot` is not necessarily one the table knows;
|
|
193
|
+
// an error that throws while being constructed hides the real failure.
|
|
194
|
+
const known = engine.primitives[slot];
|
|
195
|
+
super(`\`${primitive}\` is not a valid primitive for the \`${slot}\` slot.`, known ? { metaMessages: [`Valid primitives: ${known.join(', ')}`] } : {});
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
/** Thrown when {@link ox#Engine.with} is given an asynchronous function. */
|
|
199
|
+
export class AsyncScopeError extends Errors.BaseError {
|
|
200
|
+
name = 'Engine.AsyncScopeError';
|
|
201
|
+
constructor() {
|
|
202
|
+
super('`Engine.with` cannot be used with an asynchronous function.', {
|
|
203
|
+
metaMessages: [
|
|
204
|
+
'The engine is process-wide, so a scoped override cannot be held across an `await`.',
|
|
205
|
+
'Use `Engine.set` instead.',
|
|
206
|
+
],
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=Engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Engine.js","sourceRoot":"","sources":["../../src/core/Engine.ts"],"names":[],"mappings":"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"}
|
package/dist/core/Hash.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import * as Hex from './Hex.js';
|
|
|
4
4
|
/**
|
|
5
5
|
* Calculates the [Keccak256](https://en.wikipedia.org/wiki/SHA-3) hash of a {@link ox#Bytes.Bytes} or {@link ox#Hex.Hex} value.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
7
|
+
* Backed by `keccak_256` from [`@noble/hashes`](https://github.com/paulmillr/noble-hashes), an audited & minimal JS hashing library, unless another implementation is installed with {@link ox#Engine.set}.
|
|
8
8
|
*
|
|
9
9
|
* @example
|
|
10
10
|
* ```ts twoslash
|
|
@@ -50,7 +50,7 @@ export declare namespace keccak256 {
|
|
|
50
50
|
/**
|
|
51
51
|
* Calculates the [HMAC-SHA256](https://en.wikipedia.org/wiki/HMAC) of a {@link ox#Bytes.Bytes} or {@link ox#Hex.Hex} value.
|
|
52
52
|
*
|
|
53
|
-
*
|
|
53
|
+
* Backed by `hmac` from [`@noble/hashes`](https://github.com/paulmillr/noble-hashes), an audited & minimal JS hashing library, unless another implementation is installed with {@link ox#Engine.set}.
|
|
54
54
|
*
|
|
55
55
|
* @example
|
|
56
56
|
* ```ts twoslash
|
|
@@ -89,7 +89,7 @@ export declare namespace hmac256 {
|
|
|
89
89
|
/**
|
|
90
90
|
* Calculates the [Ripemd160](https://en.wikipedia.org/wiki/RIPEMD) hash of a {@link ox#Bytes.Bytes} or {@link ox#Hex.Hex} value.
|
|
91
91
|
*
|
|
92
|
-
*
|
|
92
|
+
* Backed by `ripemd160` from [`@noble/hashes`](https://github.com/paulmillr/noble-hashes), an audited & minimal JS hashing library, unless another implementation is installed with {@link ox#Engine.set}.
|
|
93
93
|
*
|
|
94
94
|
* @example
|
|
95
95
|
* ```ts twoslash
|
|
@@ -115,7 +115,7 @@ export declare namespace ripemd160 {
|
|
|
115
115
|
/**
|
|
116
116
|
* Calculates the [Sha256](https://en.wikipedia.org/wiki/SHA-256) hash of a {@link ox#Bytes.Bytes} or {@link ox#Hex.Hex} value.
|
|
117
117
|
*
|
|
118
|
-
*
|
|
118
|
+
* Backed by `sha256` from [`@noble/hashes`](https://github.com/paulmillr/noble-hashes), an audited & minimal JS hashing library, unless another implementation is installed with {@link ox#Engine.set}.
|
|
119
119
|
*
|
|
120
120
|
* @example
|
|
121
121
|
* ```ts twoslash
|
package/dist/core/Hash.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hash.d.ts","sourceRoot":"","sources":["../../src/core/Hash.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Hash.d.ts","sourceRoot":"","sources":["../../src/core/Hash.ts"],"names":[],"mappings":"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"}
|
package/dist/core/Hash.js
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import { hmac } from '@noble/hashes/hmac.js';
|
|
2
|
-
import { ripemd160 as noble_ripemd160 } from '@noble/hashes/legacy.js';
|
|
3
|
-
import { sha256 as noble_sha256 } from '@noble/hashes/sha2.js';
|
|
4
|
-
import { keccak_256 as noble_keccak256 } from '@noble/hashes/sha3.js';
|
|
5
1
|
import * as Bytes from './Bytes.js';
|
|
6
2
|
import * as Hex from './Hex.js';
|
|
3
|
+
import * as engine from './internal/hash.js';
|
|
7
4
|
/**
|
|
8
5
|
* Calculates the [Keccak256](https://en.wikipedia.org/wiki/SHA-3) hash of a {@link ox#Bytes.Bytes} or {@link ox#Hex.Hex} value.
|
|
9
6
|
*
|
|
10
|
-
*
|
|
7
|
+
* Backed by `keccak_256` from [`@noble/hashes`](https://github.com/paulmillr/noble-hashes), an audited & minimal JS hashing library, unless another implementation is installed with {@link ox#Engine.set}.
|
|
11
8
|
*
|
|
12
9
|
* @example
|
|
13
10
|
* ```ts twoslash
|
|
@@ -44,7 +41,7 @@ import * as Hex from './Hex.js';
|
|
|
44
41
|
export function keccak256(value, options = {}) {
|
|
45
42
|
const isBytes = value instanceof Uint8Array;
|
|
46
43
|
const { as = isBytes ? 'Bytes' : 'Hex' } = options;
|
|
47
|
-
const bytes =
|
|
44
|
+
const bytes = engine.keccak256(isBytes ? value : Bytes.from(value));
|
|
48
45
|
if (as === 'Bytes')
|
|
49
46
|
return bytes;
|
|
50
47
|
return Hex.fromBytes(bytes);
|
|
@@ -52,7 +49,7 @@ export function keccak256(value, options = {}) {
|
|
|
52
49
|
/**
|
|
53
50
|
* Calculates the [HMAC-SHA256](https://en.wikipedia.org/wiki/HMAC) of a {@link ox#Bytes.Bytes} or {@link ox#Hex.Hex} value.
|
|
54
51
|
*
|
|
55
|
-
*
|
|
52
|
+
* Backed by `hmac` from [`@noble/hashes`](https://github.com/paulmillr/noble-hashes), an audited & minimal JS hashing library, unless another implementation is installed with {@link ox#Engine.set}.
|
|
56
53
|
*
|
|
57
54
|
* @example
|
|
58
55
|
* ```ts twoslash
|
|
@@ -84,7 +81,7 @@ export function hmac256(key, value, options = {}) {
|
|
|
84
81
|
const { as = isBytes ? 'Bytes' : 'Hex' } = options;
|
|
85
82
|
const keyBytes = key instanceof Uint8Array ? key : Bytes.from(key);
|
|
86
83
|
const valueBytes = isBytes ? value : Bytes.from(value);
|
|
87
|
-
const bytes =
|
|
84
|
+
const bytes = engine.hmacSha256(keyBytes, valueBytes);
|
|
88
85
|
if (as === 'Bytes')
|
|
89
86
|
return bytes;
|
|
90
87
|
return Hex.fromBytes(bytes);
|
|
@@ -92,7 +89,7 @@ export function hmac256(key, value, options = {}) {
|
|
|
92
89
|
/**
|
|
93
90
|
* Calculates the [Ripemd160](https://en.wikipedia.org/wiki/RIPEMD) hash of a {@link ox#Bytes.Bytes} or {@link ox#Hex.Hex} value.
|
|
94
91
|
*
|
|
95
|
-
*
|
|
92
|
+
* Backed by `ripemd160` from [`@noble/hashes`](https://github.com/paulmillr/noble-hashes), an audited & minimal JS hashing library, unless another implementation is installed with {@link ox#Engine.set}.
|
|
96
93
|
*
|
|
97
94
|
* @example
|
|
98
95
|
* ```ts twoslash
|
|
@@ -109,7 +106,7 @@ export function hmac256(key, value, options = {}) {
|
|
|
109
106
|
export function ripemd160(value, options = {}) {
|
|
110
107
|
const isBytes = value instanceof Uint8Array;
|
|
111
108
|
const { as = isBytes ? 'Bytes' : 'Hex' } = options;
|
|
112
|
-
const bytes =
|
|
109
|
+
const bytes = engine.ripemd160(isBytes ? value : Bytes.from(value));
|
|
113
110
|
if (as === 'Bytes')
|
|
114
111
|
return bytes;
|
|
115
112
|
return Hex.fromBytes(bytes);
|
|
@@ -117,7 +114,7 @@ export function ripemd160(value, options = {}) {
|
|
|
117
114
|
/**
|
|
118
115
|
* Calculates the [Sha256](https://en.wikipedia.org/wiki/SHA-256) hash of a {@link ox#Bytes.Bytes} or {@link ox#Hex.Hex} value.
|
|
119
116
|
*
|
|
120
|
-
*
|
|
117
|
+
* Backed by `sha256` from [`@noble/hashes`](https://github.com/paulmillr/noble-hashes), an audited & minimal JS hashing library, unless another implementation is installed with {@link ox#Engine.set}.
|
|
121
118
|
*
|
|
122
119
|
* @example
|
|
123
120
|
* ```ts twoslash
|
|
@@ -134,7 +131,7 @@ export function ripemd160(value, options = {}) {
|
|
|
134
131
|
export function sha256(value, options = {}) {
|
|
135
132
|
const isBytes = value instanceof Uint8Array;
|
|
136
133
|
const { as = isBytes ? 'Bytes' : 'Hex' } = options;
|
|
137
|
-
const bytes =
|
|
134
|
+
const bytes = engine.sha256(isBytes ? value : Bytes.from(value));
|
|
138
135
|
if (as === 'Bytes')
|
|
139
136
|
return bytes;
|
|
140
137
|
return Hex.fromBytes(bytes);
|
package/dist/core/Hash.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hash.js","sourceRoot":"","sources":["../../src/core/Hash.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Hash.js","sourceRoot":"","sources":["../../src/core/Hash.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAA;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,UAAU,SAAS,CAMvB,KAAoC,EACpC,UAAiC,EAAE;IAEnC,MAAM,OAAO,GAAG,KAAK,YAAY,UAAU,CAAA;IAC3C,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,OAAO,CAAA;IAClD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IACnE,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAAc,CAAA;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAU,CAAA;AACtC,CAAC;AAkBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,OAAO,CAMrB,GAA0B,EAC1B,KAAoC,EACpC,UAA+B,EAAE;IAEjC,MAAM,OAAO,GAAG,KAAK,YAAY,UAAU,CAAA;IAC3C,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,OAAO,CAAA;IAClD,MAAM,QAAQ,GAAG,GAAG,YAAY,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAClE,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IACrD,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAAc,CAAA;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAU,CAAA;AACtC,CAAC;AAkBD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,SAAS,CAMvB,KAAoC,EACpC,UAAiC,EAAE;IAEnC,MAAM,OAAO,GAAG,KAAK,YAAY,UAAU,CAAA;IAC3C,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,OAAO,CAAA;IAClD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IACnE,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAAc,CAAA;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAU,CAAA;AACtC,CAAC;AAkBD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,MAAM,CAMpB,KAAoC,EACpC,UAA8B,EAAE;IAEhC,MAAM,OAAO,GAAG,KAAK,YAAY,UAAU,CAAA;IAC3C,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,OAAO,CAAA;IAClD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAChE,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAAc,CAAA;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAU,CAAA;AACtC,CAAC;AAkBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;AACtD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Keystore.d.ts","sourceRoot":"","sources":["../../src/core/Keystore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Keystore.d.ts","sourceRoot":"","sources":["../../src/core/Keystore.ts"],"names":[],"mappings":"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"}
|