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
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Module } from './instantiate.js';
|
|
2
|
+
/** WASM exports used by the PBKDF2-HMAC-SHA256 loader. @internal */
|
|
3
|
+
export type Exports = {
|
|
4
|
+
pbkdf2_sha256(password: number, passwordLength: number, salt: number, saltLength: number, iterations: number, out: number, outLength: number, scratch: number): void;
|
|
5
|
+
zero(ptr: number, length: number): void;
|
|
6
|
+
};
|
|
7
|
+
/** Calls PBKDF2-HMAC-SHA256 and clears its complete linear-memory region. */
|
|
8
|
+
export declare function pbkdf2Sha256(module: Module<Exports>, password: Uint8Array, salt: Uint8Array, options: {
|
|
9
|
+
c: number;
|
|
10
|
+
dkLen: number;
|
|
11
|
+
}): Uint8Array;
|
|
12
|
+
//# sourceMappingURL=pbkdf2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pbkdf2.d.ts","sourceRoot":"","sources":["../../../src/wasm/internal/pbkdf2.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE3D,oEAAoE;AACpE,MAAM,MAAM,OAAO,GAAG;IACpB,aAAa,CACX,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,IAAI,CAAA;IACP,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CACxC,CAAA;AAKD,6EAA6E;AAC7E,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,EACvB,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpC,UAAU,CA4CZ"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { pbkdf2Sha256ScratchSize } from './hashes.wasm.js';
|
|
2
|
+
import { MemoryError } from './instantiate.js';
|
|
3
|
+
const maximumUint32 = 0xffff_ffff;
|
|
4
|
+
const wasm32Size = 0x1_0000_0000;
|
|
5
|
+
/** Calls PBKDF2-HMAC-SHA256 and clears its complete linear-memory region. */
|
|
6
|
+
export function pbkdf2Sha256(module, password, salt, options) {
|
|
7
|
+
const { c, dkLen } = options;
|
|
8
|
+
assertPositiveUint32(c, 'c');
|
|
9
|
+
assertPositiveUint32(dkLen, 'dkLen');
|
|
10
|
+
const passwordLength = password.length;
|
|
11
|
+
const saltLength = salt.length;
|
|
12
|
+
if (saltLength > maximumUint32 - 4)
|
|
13
|
+
throw new RangeError(`"salt" length must be <= ${maximumUint32 - 4}, got ${saltLength}`);
|
|
14
|
+
const passwordPtr = module.heapBase;
|
|
15
|
+
const saltPtr = passwordPtr + passwordLength;
|
|
16
|
+
const outPtr = saltPtr + saltLength + 4;
|
|
17
|
+
const scratchPtr = align4(outPtr + dkLen);
|
|
18
|
+
const end = scratchPtr + pbkdf2Sha256ScratchSize;
|
|
19
|
+
if (!Number.isSafeInteger(end) || end > wasm32Size)
|
|
20
|
+
throw new MemoryError({
|
|
21
|
+
bytes: end,
|
|
22
|
+
cause: new RangeError('PBKDF2 workspace exceeds wasm32 memory.'),
|
|
23
|
+
});
|
|
24
|
+
module.reserve(end - passwordPtr);
|
|
25
|
+
const view = module.view();
|
|
26
|
+
try {
|
|
27
|
+
view.set(password, passwordPtr);
|
|
28
|
+
view.set(salt, saltPtr);
|
|
29
|
+
module.exports.pbkdf2_sha256(passwordPtr, passwordLength, saltPtr, saltLength, c, outPtr, dkLen, scratchPtr);
|
|
30
|
+
return module.view().slice(outPtr, outPtr + dkLen);
|
|
31
|
+
}
|
|
32
|
+
finally {
|
|
33
|
+
// This includes the password, salt and counter, staged output, alignment
|
|
34
|
+
// padding, and every byte of PBKDF2/HMAC working state.
|
|
35
|
+
module.exports.zero(passwordPtr, end - passwordPtr);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function align4(value) {
|
|
39
|
+
return Math.ceil(value / 4) * 4;
|
|
40
|
+
}
|
|
41
|
+
function assertPositiveUint32(value, name) {
|
|
42
|
+
if (typeof value !== 'number')
|
|
43
|
+
throw new TypeError(`"${name}" expected number, got ${typeof value}`);
|
|
44
|
+
if (!Number.isSafeInteger(value) || value < 0)
|
|
45
|
+
throw new RangeError(`"${name}" expected integer >= 0, got ${value}`);
|
|
46
|
+
if (value < 1)
|
|
47
|
+
throw new Error(`"${name}" must be >= 1`);
|
|
48
|
+
if (value > maximumUint32)
|
|
49
|
+
throw new RangeError(`"${name}" must be <= ${maximumUint32}, got ${value}`);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=pbkdf2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pbkdf2.js","sourceRoot":"","sources":["../../../src/wasm/internal/pbkdf2.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Module } from './crypto25519.js';
|
|
2
|
+
/** Derives a shared secret and clears both keys and the staged result. */
|
|
3
|
+
export declare function getSharedSecret(module: Module, privateKey: Uint8Array, publicKey: Uint8Array): Uint8Array;
|
|
4
|
+
//# sourceMappingURL=x25519.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x25519.d.ts","sourceRoot":"","sources":["../../../src/wasm/internal/x25519.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAI9C,0EAA0E;AAC1E,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,UAAU,GACpB,UAAU,CAmBZ"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const keySize = 32;
|
|
2
|
+
/** Derives a shared secret and clears both keys and the staged result. */
|
|
3
|
+
export function getSharedSecret(module, privateKey, publicKey) {
|
|
4
|
+
module.reserve(keySize * 3);
|
|
5
|
+
const privateKeyPtr = module.heapBase;
|
|
6
|
+
const publicKeyPtr = privateKeyPtr + keySize;
|
|
7
|
+
const sharedSecretPtr = publicKeyPtr + keySize;
|
|
8
|
+
try {
|
|
9
|
+
const memory = module.view();
|
|
10
|
+
memory.set(privateKey, privateKeyPtr);
|
|
11
|
+
memory.set(publicKey, publicKeyPtr);
|
|
12
|
+
const valid = module.exports.x25519_get_shared_secret(privateKeyPtr, publicKeyPtr, sharedSecretPtr);
|
|
13
|
+
if (valid !== 1)
|
|
14
|
+
throw new Error('invalid private or public key received');
|
|
15
|
+
return module.view().slice(sharedSecretPtr, sharedSecretPtr + keySize);
|
|
16
|
+
}
|
|
17
|
+
finally {
|
|
18
|
+
module.exports.zero(privateKeyPtr, keySize * 3);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=x25519.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x25519.js","sourceRoot":"","sources":["../../../src/wasm/internal/x25519.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,GAAG,EAAE,CAAA;AAElB,0EAA0E;AAC1E,MAAM,UAAU,eAAe,CAC7B,MAAc,EACd,UAAsB,EACtB,SAAqB;IAErB,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA;IAC3B,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAA;IACrC,MAAM,YAAY,GAAG,aAAa,GAAG,OAAO,CAAA;IAC5C,MAAM,eAAe,GAAG,YAAY,GAAG,OAAO,CAAA;IAC9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;QAC5B,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;QACrC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,wBAAwB,CACnD,aAAa,EACb,YAAY,EACZ,eAAe,CAChB,CAAA;QACD,IAAI,KAAK,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;QAC1E,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,CAAA;IACxE,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,CAAC,CAAC,CAAA;IACjD,CAAC;AACH,CAAC"}
|
package/dist/zod/TypedData.d.ts
CHANGED
|
@@ -26,14 +26,14 @@ export declare const TypedData: z.ZodMiniPipe<z.ZodMiniRecord<z.ZodMiniString<st
|
|
|
26
26
|
[x: `bytes2[${string}]`]: undefined;
|
|
27
27
|
[x: `bytes1[${string}]`]: undefined;
|
|
28
28
|
[x: `bytes16[${string}]`]: undefined;
|
|
29
|
+
[x: `bytes32[${string}]`]: undefined;
|
|
29
30
|
[x: `bytes4[${string}]`]: undefined;
|
|
30
31
|
[x: `bytes10[${string}]`]: undefined;
|
|
31
32
|
[x: `bytes6[${string}]`]: undefined;
|
|
32
33
|
[x: `bytes8[${string}]`]: undefined;
|
|
33
34
|
[x: `bytes7[${string}]`]: undefined;
|
|
34
|
-
[x: `bytes32[${string}]`]: undefined;
|
|
35
|
-
[x: `bytes3[${string}]`]: undefined;
|
|
36
35
|
[x: `bytes5[${string}]`]: undefined;
|
|
36
|
+
[x: `bytes3[${string}]`]: undefined;
|
|
37
37
|
[x: `bytes9[${string}]`]: undefined;
|
|
38
38
|
[x: `bytes11[${string}]`]: undefined;
|
|
39
39
|
[x: `bytes12[${string}]`]: undefined;
|
|
@@ -57,10 +57,11 @@ export declare const TypedData: z.ZodMiniPipe<z.ZodMiniRecord<z.ZodMiniString<st
|
|
|
57
57
|
[x: `bytes31[${string}]`]: undefined;
|
|
58
58
|
[x: `int256[${string}]`]: undefined;
|
|
59
59
|
[x: `int16[${string}]`]: undefined;
|
|
60
|
+
[x: `int32[${string}]`]: undefined;
|
|
60
61
|
[x: `int48[${string}]`]: undefined;
|
|
61
62
|
[x: `int120[${string}]`]: undefined;
|
|
63
|
+
[x: `int128[${string}]`]: undefined;
|
|
62
64
|
[x: `int8[${string}]`]: undefined;
|
|
63
|
-
[x: `int32[${string}]`]: undefined;
|
|
64
65
|
[x: `int24[${string}]`]: undefined;
|
|
65
66
|
[x: `int40[${string}]`]: undefined;
|
|
66
67
|
[x: `int56[${string}]`]: undefined;
|
|
@@ -71,7 +72,6 @@ export declare const TypedData: z.ZodMiniPipe<z.ZodMiniRecord<z.ZodMiniString<st
|
|
|
71
72
|
[x: `int96[${string}]`]: undefined;
|
|
72
73
|
[x: `int104[${string}]`]: undefined;
|
|
73
74
|
[x: `int112[${string}]`]: undefined;
|
|
74
|
-
[x: `int128[${string}]`]: undefined;
|
|
75
75
|
[x: `int136[${string}]`]: undefined;
|
|
76
76
|
[x: `int144[${string}]`]: undefined;
|
|
77
77
|
[x: `int152[${string}]`]: undefined;
|
|
@@ -89,10 +89,11 @@ export declare const TypedData: z.ZodMiniPipe<z.ZodMiniRecord<z.ZodMiniString<st
|
|
|
89
89
|
[x: `int248[${string}]`]: undefined;
|
|
90
90
|
[x: `uint256[${string}]`]: undefined;
|
|
91
91
|
[x: `uint16[${string}]`]: undefined;
|
|
92
|
+
[x: `uint32[${string}]`]: undefined;
|
|
92
93
|
[x: `uint48[${string}]`]: undefined;
|
|
93
94
|
[x: `uint120[${string}]`]: undefined;
|
|
95
|
+
[x: `uint128[${string}]`]: undefined;
|
|
94
96
|
[x: `uint8[${string}]`]: undefined;
|
|
95
|
-
[x: `uint32[${string}]`]: undefined;
|
|
96
97
|
[x: `uint24[${string}]`]: undefined;
|
|
97
98
|
[x: `uint40[${string}]`]: undefined;
|
|
98
99
|
[x: `uint56[${string}]`]: undefined;
|
|
@@ -103,7 +104,6 @@ export declare const TypedData: z.ZodMiniPipe<z.ZodMiniRecord<z.ZodMiniString<st
|
|
|
103
104
|
[x: `uint96[${string}]`]: undefined;
|
|
104
105
|
[x: `uint104[${string}]`]: undefined;
|
|
105
106
|
[x: `uint112[${string}]`]: undefined;
|
|
106
|
-
[x: `uint128[${string}]`]: undefined;
|
|
107
107
|
[x: `uint136[${string}]`]: undefined;
|
|
108
108
|
[x: `uint144[${string}]`]: undefined;
|
|
109
109
|
[x: `uint152[${string}]`]: undefined;
|
|
@@ -126,14 +126,14 @@ export declare const TypedData: z.ZodMiniPipe<z.ZodMiniRecord<z.ZodMiniString<st
|
|
|
126
126
|
bytes2?: undefined;
|
|
127
127
|
bytes1?: undefined;
|
|
128
128
|
bytes16?: undefined;
|
|
129
|
+
bytes32?: undefined;
|
|
129
130
|
bytes4?: undefined;
|
|
130
131
|
bytes10?: undefined;
|
|
131
132
|
bytes6?: undefined;
|
|
132
133
|
bytes8?: undefined;
|
|
133
134
|
bytes7?: undefined;
|
|
134
|
-
bytes32?: undefined;
|
|
135
|
-
bytes3?: undefined;
|
|
136
135
|
bytes5?: undefined;
|
|
136
|
+
bytes3?: undefined;
|
|
137
137
|
bytes9?: undefined;
|
|
138
138
|
bytes11?: undefined;
|
|
139
139
|
bytes12?: undefined;
|
|
@@ -157,10 +157,11 @@ export declare const TypedData: z.ZodMiniPipe<z.ZodMiniRecord<z.ZodMiniString<st
|
|
|
157
157
|
bytes31?: undefined;
|
|
158
158
|
int256?: undefined;
|
|
159
159
|
int16?: undefined;
|
|
160
|
+
int32?: undefined;
|
|
160
161
|
int48?: undefined;
|
|
161
162
|
int120?: undefined;
|
|
163
|
+
int128?: undefined;
|
|
162
164
|
int8?: undefined;
|
|
163
|
-
int32?: undefined;
|
|
164
165
|
int24?: undefined;
|
|
165
166
|
int40?: undefined;
|
|
166
167
|
int56?: undefined;
|
|
@@ -171,7 +172,6 @@ export declare const TypedData: z.ZodMiniPipe<z.ZodMiniRecord<z.ZodMiniString<st
|
|
|
171
172
|
int96?: undefined;
|
|
172
173
|
int104?: undefined;
|
|
173
174
|
int112?: undefined;
|
|
174
|
-
int128?: undefined;
|
|
175
175
|
int136?: undefined;
|
|
176
176
|
int144?: undefined;
|
|
177
177
|
int152?: undefined;
|
|
@@ -189,10 +189,11 @@ export declare const TypedData: z.ZodMiniPipe<z.ZodMiniRecord<z.ZodMiniString<st
|
|
|
189
189
|
int248?: undefined;
|
|
190
190
|
uint256?: undefined;
|
|
191
191
|
uint16?: undefined;
|
|
192
|
+
uint32?: undefined;
|
|
192
193
|
uint48?: undefined;
|
|
193
194
|
uint120?: undefined;
|
|
195
|
+
uint128?: undefined;
|
|
194
196
|
uint8?: undefined;
|
|
195
|
-
uint32?: undefined;
|
|
196
197
|
uint24?: undefined;
|
|
197
198
|
uint40?: undefined;
|
|
198
199
|
uint56?: undefined;
|
|
@@ -203,7 +204,6 @@ export declare const TypedData: z.ZodMiniPipe<z.ZodMiniRecord<z.ZodMiniString<st
|
|
|
203
204
|
uint96?: undefined;
|
|
204
205
|
uint104?: undefined;
|
|
205
206
|
uint112?: undefined;
|
|
206
|
-
uint128?: undefined;
|
|
207
207
|
uint136?: undefined;
|
|
208
208
|
uint144?: undefined;
|
|
209
209
|
uint152?: undefined;
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "ox",
|
|
3
3
|
"description": "Ethereum Standard Library",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.1.2",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"sideEffects": false,
|
|
8
8
|
"license": "MIT",
|
|
@@ -220,6 +220,11 @@
|
|
|
220
220
|
"types": "./dist/core/Ed25519.d.ts",
|
|
221
221
|
"default": "./dist/core/Ed25519.js"
|
|
222
222
|
},
|
|
223
|
+
"./Engine": {
|
|
224
|
+
"src": "./src/core/Engine.ts",
|
|
225
|
+
"types": "./dist/core/Engine.d.ts",
|
|
226
|
+
"default": "./dist/core/Engine.js"
|
|
227
|
+
},
|
|
223
228
|
"./Ens": {
|
|
224
229
|
"src": "./src/core/Ens.ts",
|
|
225
230
|
"types": "./dist/core/Ens.d.ts",
|
|
@@ -505,6 +510,46 @@
|
|
|
505
510
|
"types": "./dist/erc8021/Attribution.d.ts",
|
|
506
511
|
"default": "./dist/erc8021/Attribution.js"
|
|
507
512
|
},
|
|
513
|
+
"./node": {
|
|
514
|
+
"src": "./src/node/index.ts",
|
|
515
|
+
"types": "./dist/node/index.d.ts",
|
|
516
|
+
"default": "./dist/node/index.js"
|
|
517
|
+
},
|
|
518
|
+
"./node/Ed25519": {
|
|
519
|
+
"src": "./src/node/Ed25519.ts",
|
|
520
|
+
"types": "./dist/node/Ed25519.d.ts",
|
|
521
|
+
"default": "./dist/node/Ed25519.js"
|
|
522
|
+
},
|
|
523
|
+
"./node/Engine": {
|
|
524
|
+
"src": "./src/node/Engine.ts",
|
|
525
|
+
"types": "./dist/node/Engine.d.ts",
|
|
526
|
+
"default": "./dist/node/Engine.js"
|
|
527
|
+
},
|
|
528
|
+
"./node/Hash": {
|
|
529
|
+
"src": "./src/node/Hash.ts",
|
|
530
|
+
"types": "./dist/node/Hash.d.ts",
|
|
531
|
+
"default": "./dist/node/Hash.js"
|
|
532
|
+
},
|
|
533
|
+
"./node/Keystore": {
|
|
534
|
+
"src": "./src/node/Keystore.ts",
|
|
535
|
+
"types": "./dist/node/Keystore.d.ts",
|
|
536
|
+
"default": "./dist/node/Keystore.js"
|
|
537
|
+
},
|
|
538
|
+
"./node/Mnemonic": {
|
|
539
|
+
"src": "./src/node/Mnemonic.ts",
|
|
540
|
+
"types": "./dist/node/Mnemonic.d.ts",
|
|
541
|
+
"default": "./dist/node/Mnemonic.js"
|
|
542
|
+
},
|
|
543
|
+
"./node/P256": {
|
|
544
|
+
"src": "./src/node/P256.ts",
|
|
545
|
+
"types": "./dist/node/P256.d.ts",
|
|
546
|
+
"default": "./dist/node/P256.js"
|
|
547
|
+
},
|
|
548
|
+
"./node/X25519": {
|
|
549
|
+
"src": "./src/node/X25519.ts",
|
|
550
|
+
"types": "./dist/node/X25519.d.ts",
|
|
551
|
+
"default": "./dist/node/X25519.js"
|
|
552
|
+
},
|
|
508
553
|
"./tempo": {
|
|
509
554
|
"src": "./src/tempo/index.ts",
|
|
510
555
|
"types": "./dist/tempo/index.d.ts",
|
|
@@ -620,6 +665,41 @@
|
|
|
620
665
|
"types": "./dist/trusted-setups/Paths.d.ts",
|
|
621
666
|
"default": "./dist/trusted-setups/Paths.js"
|
|
622
667
|
},
|
|
668
|
+
"./wasm": {
|
|
669
|
+
"src": "./src/wasm/index.ts",
|
|
670
|
+
"types": "./dist/wasm/index.d.ts",
|
|
671
|
+
"default": "./dist/wasm/index.js"
|
|
672
|
+
},
|
|
673
|
+
"./wasm/Ed25519": {
|
|
674
|
+
"src": "./src/wasm/Ed25519.ts",
|
|
675
|
+
"types": "./dist/wasm/Ed25519.d.ts",
|
|
676
|
+
"default": "./dist/wasm/Ed25519.js"
|
|
677
|
+
},
|
|
678
|
+
"./wasm/Engine": {
|
|
679
|
+
"src": "./src/wasm/Engine.ts",
|
|
680
|
+
"types": "./dist/wasm/Engine.d.ts",
|
|
681
|
+
"default": "./dist/wasm/Engine.js"
|
|
682
|
+
},
|
|
683
|
+
"./wasm/Hash": {
|
|
684
|
+
"src": "./src/wasm/Hash.ts",
|
|
685
|
+
"types": "./dist/wasm/Hash.d.ts",
|
|
686
|
+
"default": "./dist/wasm/Hash.js"
|
|
687
|
+
},
|
|
688
|
+
"./wasm/Keystore": {
|
|
689
|
+
"src": "./src/wasm/Keystore.ts",
|
|
690
|
+
"types": "./dist/wasm/Keystore.d.ts",
|
|
691
|
+
"default": "./dist/wasm/Keystore.js"
|
|
692
|
+
},
|
|
693
|
+
"./wasm/Mnemonic": {
|
|
694
|
+
"src": "./src/wasm/Mnemonic.ts",
|
|
695
|
+
"types": "./dist/wasm/Mnemonic.d.ts",
|
|
696
|
+
"default": "./dist/wasm/Mnemonic.js"
|
|
697
|
+
},
|
|
698
|
+
"./wasm/X25519": {
|
|
699
|
+
"src": "./src/wasm/X25519.ts",
|
|
700
|
+
"types": "./dist/wasm/X25519.d.ts",
|
|
701
|
+
"default": "./dist/wasm/X25519.js"
|
|
702
|
+
},
|
|
623
703
|
"./webauthn": {
|
|
624
704
|
"src": "./src/webauthn/index.ts",
|
|
625
705
|
"types": "./dist/webauthn/index.d.ts",
|
package/src/core/Base64.ts
CHANGED
|
@@ -1,66 +1,7 @@
|
|
|
1
1
|
import * as Bytes from './Bytes.js'
|
|
2
|
-
import * as Errors from './Errors.js'
|
|
2
|
+
import type * as Errors from './Errors.js'
|
|
3
3
|
import * as Hex from './Hex.js'
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
// Standard Base64 alphabet (RFC 4648 section 4) and URL-safe alphabet (section 5).
|
|
7
|
-
const stdAlphabet =
|
|
8
|
-
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
|
|
9
|
-
|
|
10
|
-
// Char-code -> 6-bit integer lookup. Sentinel `0xff` = invalid character.
|
|
11
|
-
// Standard alphabet plus URL-safe `-`/`_` (decoders are alphabet-agnostic).
|
|
12
|
-
const characterToInteger = /*#__PURE__*/ (() => {
|
|
13
|
-
const table = new Uint8Array(256).fill(0xff)
|
|
14
|
-
for (let i = 0; i < stdAlphabet.length; i++)
|
|
15
|
-
table[stdAlphabet.charCodeAt(i)] = i
|
|
16
|
-
// URL-safe alternates: `-` for `+` (62), `_` for `/` (63).
|
|
17
|
-
table[45 /* '-' */] = 62
|
|
18
|
-
table[95 /* '_' */] = 63
|
|
19
|
-
return table
|
|
20
|
-
})()
|
|
21
|
-
|
|
22
|
-
// Integer -> char-code table for the standard alphabet, indexed by 6-bit value.
|
|
23
|
-
const integerToCharacter = /*#__PURE__*/ (() => {
|
|
24
|
-
const table = new Uint8Array(64)
|
|
25
|
-
for (let i = 0; i < stdAlphabet.length; i++)
|
|
26
|
-
table[i] = stdAlphabet.charCodeAt(i)
|
|
27
|
-
return table
|
|
28
|
-
})()
|
|
29
|
-
|
|
30
|
-
// Phase 2 native fast-path detection: `Uint8Array.prototype.toBase64` /
|
|
31
|
-
// `Uint8Array.fromBase64` ship in Node 22+, Safari 18+, Firefox 133+.
|
|
32
|
-
const nativeToBase64:
|
|
33
|
-
| ((
|
|
34
|
-
this: Uint8Array,
|
|
35
|
-
options?: { alphabet?: 'base64' | 'base64url'; omitPadding?: boolean },
|
|
36
|
-
) => string)
|
|
37
|
-
| undefined = (
|
|
38
|
-
Uint8Array.prototype as Uint8Array & {
|
|
39
|
-
toBase64?: (options?: {
|
|
40
|
-
alphabet?: 'base64' | 'base64url'
|
|
41
|
-
omitPadding?: boolean
|
|
42
|
-
}) => string
|
|
43
|
-
}
|
|
44
|
-
).toBase64
|
|
45
|
-
const nativeFromBase64:
|
|
46
|
-
| ((
|
|
47
|
-
value: string,
|
|
48
|
-
options?: {
|
|
49
|
-
alphabet?: 'base64' | 'base64url-or-base64'
|
|
50
|
-
lastChunkHandling?: 'loose' | 'strict' | 'stop-before-partial'
|
|
51
|
-
},
|
|
52
|
-
) => Uint8Array)
|
|
53
|
-
| undefined = (
|
|
54
|
-
Uint8Array as typeof Uint8Array & {
|
|
55
|
-
fromBase64?: (
|
|
56
|
-
value: string,
|
|
57
|
-
options?: {
|
|
58
|
-
alphabet?: 'base64' | 'base64url-or-base64'
|
|
59
|
-
lastChunkHandling?: 'loose' | 'strict' | 'stop-before-partial'
|
|
60
|
-
},
|
|
61
|
-
) => Uint8Array
|
|
62
|
-
}
|
|
63
|
-
).fromBase64
|
|
4
|
+
import * as internal from './internal/codec/base64.js'
|
|
64
5
|
|
|
65
6
|
/**
|
|
66
7
|
* Encodes a {@link ox#Bytes.Bytes} to a Base64-encoded string (with optional padding and/or URL-safe characters).
|
|
@@ -109,39 +50,7 @@ const nativeFromBase64:
|
|
|
109
50
|
* @returns The Base64 encoded string.
|
|
110
51
|
*/
|
|
111
52
|
export function fromBytes(value: Bytes.Bytes, options: fromBytes.Options = {}) {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
if (nativeToBase64) {
|
|
115
|
-
const out = nativeToBase64.call(value, {
|
|
116
|
-
alphabet: url ? 'base64url' : 'base64',
|
|
117
|
-
omitPadding: !pad,
|
|
118
|
-
})
|
|
119
|
-
// Native `base64url` already omits padding; if pad was requested, restore it.
|
|
120
|
-
if (url && pad) {
|
|
121
|
-
const k = value.length % 3
|
|
122
|
-
if (k === 1) return `${out}==`
|
|
123
|
-
if (k === 2) return `${out}=`
|
|
124
|
-
}
|
|
125
|
-
return out
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
const encoded = new Uint8Array(Math.ceil(value.length / 3) * 4)
|
|
129
|
-
|
|
130
|
-
for (let i = 0, j = 0; j < value.length; i += 4, j += 3) {
|
|
131
|
-
const y = (value[j]! << 16) + (value[j + 1]! << 8) + (value[j + 2]! | 0)
|
|
132
|
-
encoded[i] = integerToCharacter[y >> 18]!
|
|
133
|
-
encoded[i + 1] = integerToCharacter[(y >> 12) & 0x3f]!
|
|
134
|
-
encoded[i + 2] = integerToCharacter[(y >> 6) & 0x3f]!
|
|
135
|
-
encoded[i + 3] = integerToCharacter[y & 0x3f]!
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
const k = value.length % 3
|
|
139
|
-
const end = Math.floor(value.length / 3) * 4 + (k && k + 1)
|
|
140
|
-
let base64 = decoder.decode(new Uint8Array(encoded.buffer, 0, end))
|
|
141
|
-
if (pad && k === 1) base64 += '=='
|
|
142
|
-
if (pad && k === 2) base64 += '='
|
|
143
|
-
if (url) base64 = base64.replaceAll('+', '-').replaceAll('/', '_')
|
|
144
|
-
return base64
|
|
53
|
+
return internal.fromBytes(value, options)
|
|
145
54
|
}
|
|
146
55
|
|
|
147
56
|
export declare namespace fromBytes {
|
|
@@ -307,54 +216,7 @@ export declare namespace fromString {
|
|
|
307
216
|
* @returns The Base64 decoded {@link ox#Bytes.Bytes}.
|
|
308
217
|
*/
|
|
309
218
|
export function toBytes(value: string): Bytes.Bytes {
|
|
310
|
-
|
|
311
|
-
let bodyEnd = value.length
|
|
312
|
-
let pad = 0
|
|
313
|
-
while (bodyEnd > 0 && value.charCodeAt(bodyEnd - 1) === 61 /* '=' */) {
|
|
314
|
-
bodyEnd--
|
|
315
|
-
pad++
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
const size = bodyEnd
|
|
319
|
-
// Reject impossible lengths and excessive padding.
|
|
320
|
-
if (size % 4 === 1) throw new InvalidLengthError({ length: value.length })
|
|
321
|
-
if (pad > 2) throw new InvalidPaddingError({ padding: pad })
|
|
322
|
-
|
|
323
|
-
if (nativeFromBase64) {
|
|
324
|
-
try {
|
|
325
|
-
// `base64url-or-base64` accepts both alphabets transparently.
|
|
326
|
-
return nativeFromBase64(value.slice(0, bodyEnd), {
|
|
327
|
-
alphabet: 'base64url-or-base64',
|
|
328
|
-
lastChunkHandling: 'loose',
|
|
329
|
-
})
|
|
330
|
-
} catch {
|
|
331
|
-
// Fall through to the JS path so we throw the typed error class.
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
// Validate characters: every char must be in the standard or URL-safe
|
|
336
|
-
// alphabet, and '=' may not appear in the body (only stripped trailing
|
|
337
|
-
// padding).
|
|
338
|
-
const decoded = new Uint8Array(
|
|
339
|
-
(size >> 2) * 3 + (size % 4 ? (size % 4) - 1 : 0),
|
|
340
|
-
)
|
|
341
|
-
let acc = 0
|
|
342
|
-
let bits = 0
|
|
343
|
-
let n = 0
|
|
344
|
-
for (let i = 0; i < size; i++) {
|
|
345
|
-
const code = value.charCodeAt(i)
|
|
346
|
-
if (code === 61 /* '=' */)
|
|
347
|
-
throw new InvalidCharacterError({ character: '=' })
|
|
348
|
-
const v = characterToInteger[code]!
|
|
349
|
-
if (v === 0xff) throw new InvalidCharacterError({ character: value[i]! })
|
|
350
|
-
acc = (acc << 6) | v
|
|
351
|
-
bits += 6
|
|
352
|
-
if (bits >= 8) {
|
|
353
|
-
bits -= 8
|
|
354
|
-
decoded[n++] = (acc >>> bits) & 0xff
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
return decoded
|
|
219
|
+
return internal.toBytes(value)
|
|
358
220
|
}
|
|
359
221
|
|
|
360
222
|
export declare namespace toBytes {
|
|
@@ -409,29 +271,20 @@ export declare namespace toString {
|
|
|
409
271
|
type ErrorType = toBytes.ErrorType | Errors.GlobalErrorType
|
|
410
272
|
}
|
|
411
273
|
|
|
412
|
-
/** Thrown when a Base64 string contains
|
|
413
|
-
export
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
super(`Invalid Base64 character: "${character}".`)
|
|
418
|
-
}
|
|
419
|
-
}
|
|
274
|
+
/** Thrown when a Base64 string contains a character outside its alphabet. */
|
|
275
|
+
export const InvalidCharacterError = internal.InvalidCharacterError
|
|
276
|
+
export type InvalidCharacterError = InstanceType<
|
|
277
|
+
typeof internal.InvalidCharacterError
|
|
278
|
+
>
|
|
420
279
|
|
|
421
280
|
/** Thrown when a Base64 string has an impossible length. */
|
|
422
|
-
export
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
override readonly name = 'Base64.InvalidPaddingError'
|
|
433
|
-
|
|
434
|
-
constructor({ padding }: { padding: number }) {
|
|
435
|
-
super(`Invalid Base64 padding length \`${padding}\` (must be 0, 1, or 2).`)
|
|
436
|
-
}
|
|
437
|
-
}
|
|
281
|
+
export const InvalidLengthError = internal.InvalidLengthError
|
|
282
|
+
export type InvalidLengthError = InstanceType<
|
|
283
|
+
typeof internal.InvalidLengthError
|
|
284
|
+
>
|
|
285
|
+
|
|
286
|
+
/** Thrown when a Base64 string carries more than two padding characters. */
|
|
287
|
+
export const InvalidPaddingError = internal.InvalidPaddingError
|
|
288
|
+
export type InvalidPaddingError = InstanceType<
|
|
289
|
+
typeof internal.InvalidPaddingError
|
|
290
|
+
>
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { blake3 } from '@noble/hashes/blake3.js'
|
|
2
|
-
|
|
3
1
|
import * as Bytes from './Bytes.js'
|
|
2
|
+
import * as engine from './internal/hash.js'
|
|
4
3
|
import type { OneOf } from './internal/types.js'
|
|
5
4
|
|
|
6
5
|
/** Type that defines a Binary State Tree instance. */
|
|
@@ -276,5 +275,5 @@ function bitsToBytes(bits: number[]): Bytes.Bytes {
|
|
|
276
275
|
function hash(bytes: Bytes.Bytes | undefined): Bytes.Bytes {
|
|
277
276
|
if (!bytes) return new Uint8Array(32).fill(0)
|
|
278
277
|
if (!bytes.some((byte) => byte !== 0)) return new Uint8Array(32).fill(0)
|
|
279
|
-
return blake3(bytes)
|
|
278
|
+
return engine.blake3(bytes)
|
|
280
279
|
}
|