@noble/hashes
Advanced tools
+0
-1
@@ -21,2 +21,1 @@ /** | ||
| export declare function G2s(a: number, b: number, c: number, d: number, x: number): Num4; | ||
| //# sourceMappingURL=_blake.d.ts.map |
+8
-1
@@ -6,2 +6,5 @@ /** | ||
| import { rotr } from "./utils.js"; | ||
| // Unrealized speed-up: a file-local copy of rotr measured ~1-2% faster blake2s/blake256/blake3 | ||
| // on Node 24 (V8 does not inline it into G1s/G2s across the module boundary). Reused from | ||
| // utils for deduplication. | ||
| /** | ||
@@ -33,2 +36,7 @@ * Internal blake permutation table. | ||
| ]); | ||
| // Unrealized speed-up: G1s/G2s return a fresh {a,b,c,d} per call (160×/blake2s block), which | ||
| // V8's escape analysis does not eliminate when G stays a real call. Writing into one reused | ||
| // module-level slot instead measured +4-6% blake2s/blake256 1MB throughput on Node 24 — but | ||
| // ~2% slower blake3 (whose profile inlines G and scalar-replaces the fresh object) and no | ||
| // difference on 32-byte inputs. Kept simple. | ||
| // 32-bit / BLAKE2s first half of G, with the fixed `(16, 12)` rotation pair. | ||
@@ -54,2 +62,1 @@ // Parameter `x` is the RFC 7693 first-half message word, or Blake1's pre-mixed | ||
| } | ||
| //# sourceMappingURL=_blake.js.map |
+2
-6
@@ -1,5 +0,1 @@ | ||
| /** | ||
| * Internal Merkle-Damgard hash utils. | ||
| * @module | ||
| */ | ||
| import { type Hash, type TArg, type TRet } from './utils.ts'; | ||
@@ -58,2 +54,3 @@ /** | ||
| protected abstract set(...args: number[]): void; | ||
| abstract _cloneInto(to?: T): T; | ||
| abstract destroy(): void; | ||
@@ -76,3 +73,3 @@ protected abstract roundClean(): void; | ||
| digest(): TRet<Uint8Array>; | ||
| _cloneInto(to?: T): T; | ||
| protected _cloneIntoMeta(to: T): T; | ||
| clone(): T; | ||
@@ -101,2 +98,1 @@ } | ||
| export declare const SHA512_IV: TRet<Uint32Array>; | ||
| //# sourceMappingURL=_md.d.ts.map |
+30
-23
@@ -5,3 +5,4 @@ /** | ||
| */ | ||
| import { abytes, aexists, aoutput, clean, createView, } from "./utils.js"; | ||
| import { setU64FromNum } from "./_u64.js"; | ||
| import { abytes, aexists, aoutput, createView } from "./utils.js"; | ||
| /** | ||
@@ -85,2 +86,3 @@ * Shared 32-bit conditional boolean primitive reused by SHA-256, SHA-1, and MD5 `F`. | ||
| const len = data.length; | ||
| let processed = false; | ||
| for (let pos = 0; pos < len;) { | ||
@@ -94,5 +96,8 @@ const take = Math.min(blockLen - this.pos, len - pos); | ||
| this.process(dataView, pos); | ||
| processed = true; | ||
| continue; | ||
| } | ||
| buffer.set(data.subarray(pos, pos + take), this.pos); | ||
| // When the whole input is buffered in one go (common for short messages), passing `data` | ||
| // directly avoids allocating a subarray view. | ||
| buffer.set(pos === 0 && take === len ? data : data.subarray(pos, pos + take), this.pos); | ||
| this.pos += take; | ||
@@ -103,6 +108,10 @@ pos += take; | ||
| this.pos = 0; | ||
| processed = true; | ||
| } | ||
| } | ||
| this.length += data.length; | ||
| this.roundClean(); | ||
| // Shared schedule buffers only pick up input-derived words inside process(); if everything | ||
| // was buffered without processing, there is nothing to zero. | ||
| if (processed) | ||
| this.roundClean(); | ||
| return this; | ||
@@ -119,5 +128,5 @@ } | ||
| let { pos } = this; | ||
| // append the bit '1' to the message | ||
| // append the bit '1' to the message, then zero-pad the rest of the block | ||
| buffer[pos++] = 0b10000000; | ||
| clean(this.buffer.subarray(pos)); | ||
| buffer.fill(0, pos); | ||
| // we have less than padOffset left in buffer, so we cannot put length in | ||
@@ -127,21 +136,22 @@ // current block, need process it and pad again | ||
| this.process(view, 0); | ||
| pos = 0; | ||
| buffer.fill(0); | ||
| } | ||
| // Pad until full block byte with zeros | ||
| for (let i = pos; i < blockLen; i++) | ||
| buffer[i] = 0; | ||
| // `padOffset` reserves the whole length field. For SHA-384/512 the high 64 bits stay zero from | ||
| // the padding fill above, and JS will overflow before user input can make that half non-zero. | ||
| // So we only need to write the low 64 bits here. | ||
| view.setBigUint64(blockLen - 8, BigInt(this.length * 8), isLE); | ||
| // So we only need to write the low 64 bits here (`length * 8` only scales the exponent of an | ||
| // integer below 2**53, so the split inside the helper stays exact). | ||
| setU64FromNum(view, blockLen - 8, this.length * 8, isLE); | ||
| this.process(view, 0); | ||
| const oview = createView(out); | ||
| // The final block above is processed outside update(), so the shared message-schedule | ||
| // buffers (e.g. SHA256_W) would otherwise retain input-derived words after digest(). | ||
| this.roundClean(); | ||
| // digest() passes our own `buffer` as `out`; reuse its cached view instead of allocating one. | ||
| const oview = out === buffer ? view : createView(out); | ||
| const len = this.outputLen; | ||
| // NOTE: we do division by 4 later, which must be fused in single op with modulo by JIT | ||
| if (len % 4) | ||
| throw new Error('_sha2: outputLen must be aligned to 32bit'); | ||
| const outLen = len / 4; | ||
| const state = this.get(); | ||
| if (outLen > state.length) | ||
| throw new Error('_sha2: outputLen bigger than state'); | ||
| // Subclass-misconfiguration invariant: outputLen must be 32-bit aligned and fit the state. | ||
| if (len % 4 || outLen > state.length) | ||
| throw new Error('invalid outputLen'); | ||
| for (let i = 0; i < outLen; i++) | ||
@@ -159,6 +169,4 @@ oview.setUint32(4 * i, state[i], isLE); | ||
| } | ||
| _cloneInto(to) { | ||
| to ||= new this.constructor(); | ||
| to.set(...this.get()); | ||
| const { blockLen, buffer, length, finished, destroyed, pos } = this; | ||
| _cloneIntoMeta(to) { | ||
| const { buffer, length, finished, destroyed, pos } = this; | ||
| to.destroyed = destroyed; | ||
@@ -170,4 +178,4 @@ to.finished = finished; | ||
| // later `update()` / `digestInto()` overwrite `to.buffer` from the start before reading it. | ||
| if (length % blockLen) | ||
| to.buffer.set(buffer); | ||
| if (pos) | ||
| to.buffer.set(buffer); // Avoid a hot modulo guard. | ||
| return to; | ||
@@ -210,2 +218,1 @@ } | ||
| ]); | ||
| //# sourceMappingURL=_md.js.map |
+4
-31
@@ -15,2 +15,5 @@ /** | ||
| declare const toBig: (h: number, l: number) => bigint; | ||
| declare const fromNumH: (n: number) => number; | ||
| declare const fromNumL: (n: number) => number; | ||
| declare function setU64FromNum(view: DataView, byteOffset: number, n: number, isLE: boolean): void; | ||
| declare const shrSH: (h: number, _l: number, s: number) => number; | ||
@@ -24,6 +27,2 @@ declare const shrSL: (h: number, l: number, s: number) => number; | ||
| declare const rotr32L: (h: number, _l: number) => number; | ||
| declare const rotlSH: (h: number, l: number, s: number) => number; | ||
| declare const rotlSL: (h: number, l: number, s: number) => number; | ||
| declare const rotlBH: (h: number, l: number, s: number) => number; | ||
| declare const rotlBL: (h: number, l: number, s: number) => number; | ||
| declare function add(Ah: number, Al: number, Bh: number, Bl: number): { | ||
@@ -39,28 +38,2 @@ h: number; | ||
| declare const add5H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) => number; | ||
| export { add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig }; | ||
| declare const u64: { | ||
| fromBig: typeof fromBig; | ||
| split: typeof split; | ||
| toBig: (h: number, l: number) => bigint; | ||
| shrSH: (h: number, _l: number, s: number) => number; | ||
| shrSL: (h: number, l: number, s: number) => number; | ||
| rotrSH: (h: number, l: number, s: number) => number; | ||
| rotrSL: (h: number, l: number, s: number) => number; | ||
| rotrBH: (h: number, l: number, s: number) => number; | ||
| rotrBL: (h: number, l: number, s: number) => number; | ||
| rotr32H: (_h: number, l: number) => number; | ||
| rotr32L: (h: number, _l: number) => number; | ||
| rotlSH: (h: number, l: number, s: number) => number; | ||
| rotlSL: (h: number, l: number, s: number) => number; | ||
| rotlBH: (h: number, l: number, s: number) => number; | ||
| rotlBL: (h: number, l: number, s: number) => number; | ||
| add: typeof add; | ||
| add3L: (Al: number, Bl: number, Cl: number) => number; | ||
| add3H: (low: number, Ah: number, Bh: number, Ch: number) => number; | ||
| add4L: (Al: number, Bl: number, Cl: number, Dl: number) => number; | ||
| add4H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number) => number; | ||
| add5H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) => number; | ||
| add5L: (Al: number, Bl: number, Cl: number, Dl: number, El: number) => number; | ||
| }; | ||
| export default u64; | ||
| //# sourceMappingURL=_u64.d.ts.map | ||
| export { add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, fromNumH, fromNumL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, setU64FromNum, shrSH, shrSL, split, toBig }; |
+17
-24
@@ -1,2 +0,2 @@ | ||
| const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1); | ||
| const U32_MASK64 = /* @__PURE__ */ (() => BigInt(2 ** 32 - 1))(); | ||
| const _32n = /* @__PURE__ */ BigInt(32); | ||
@@ -25,2 +25,15 @@ // Split bigint into two 32-bit halves. With `le=true`, returned fields become `{ h: low, l: high | ||
| const toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0); | ||
| // Split a JS number into u32 halves without a BigInt allocation. Exact only for integers | ||
| // `0 <= n < 2**53`; callers use it on byte / bit counters, which JS length math caps far below | ||
| // that (an ArrayBuffer cannot exceed 2**53 - 1 bytes). | ||
| const fromNumH = (n) => (n / 2 ** 32) | 0; | ||
| const fromNumL = (n) => n >>> 0; | ||
| // Drop-in replacement for `view.setBigUint64(byteOffset, BigInt(n), isLE)` without the per-call | ||
| // BigInt allocation. Same `n < 2**53` precondition as `fromNumH`/`fromNumL`. | ||
| function setU64FromNum(view, byteOffset, n, isLE) { | ||
| const h = fromNumH(n); | ||
| const l = fromNumL(n); | ||
| view.setUint32(byteOffset, isLE ? l : h, isLE); | ||
| view.setUint32(byteOffset + 4, isLE ? h : l, isLE); | ||
| } | ||
| // High 32-bit half of a 64-bit logical right shift for `s` in `0..31`. | ||
@@ -42,10 +55,4 @@ const shrSH = (h, _l, s) => h >>> s; | ||
| const rotr32L = (h, _l) => h; | ||
| // High 32-bit half of a 64-bit left rotate, valid for `s` in `1..31`. | ||
| const rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s)); | ||
| // Low 32-bit half of a 64-bit left rotate, valid for `s` in `1..31`. | ||
| const rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s)); | ||
| // High 32-bit half of a 64-bit left rotate, valid for `s` in `33..63`; `32` uses `rotr32*`. | ||
| const rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s)); | ||
| // Low 32-bit half of a 64-bit left rotate, valid for `s` in `33..63`; `32` uses `rotr32*`. | ||
| const rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s)); | ||
| // 64-bit left rotates (rotl*) are not defined here: sha3.ts, their only consumer, keeps | ||
| // local copies so V8 inlines them into keccakP. | ||
| // Add two split 64-bit words and return the split `{ h, l }` sum. | ||
@@ -72,16 +79,2 @@ // JS uses 32-bit signed integers for bitwise operations, so we cannot simply shift the carry out | ||
| // prettier-ignore | ||
| export { add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig }; | ||
| // Canonical grouped namespace for callers that prefer one object. | ||
| // Named exports stay for direct imports. | ||
| // prettier-ignore | ||
| const u64 = { | ||
| fromBig, split, toBig, | ||
| shrSH, shrSL, | ||
| rotrSH, rotrSL, rotrBH, rotrBL, | ||
| rotr32H, rotr32L, | ||
| rotlSH, rotlSL, rotlBH, rotlBL, | ||
| add, add3L, add3H, add4L, add4H, add5H, add5L, | ||
| }; | ||
| // Default export mirrors named `u64` for compatibility with object-style imports. | ||
| export default u64; | ||
| //# sourceMappingURL=_u64.js.map | ||
| export { add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, fromNumH, fromNumL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, setU64FromNum, shrSH, shrSL, split, toBig }; |
+38
-2
@@ -24,3 +24,3 @@ import { type KDFInput, type TArg, type TRet } from './utils.ts'; | ||
| * Optional progress callback invoked during long-running derivations. | ||
| * param progress - completion fraction in the `0..1` range | ||
| * @param progress - completion fraction in the `0..1` range | ||
| */ | ||
@@ -41,2 +41,21 @@ onProgress?: (progress: number) => void; | ||
| * ``` | ||
| * @example | ||
| * Derive a key with optional secret and scheduler controls. | ||
| * ```ts | ||
| * const progressLog: number[] = []; | ||
| * argon2d('password', 'salt1234', { | ||
| * t: 1, | ||
| * m: 8, | ||
| * p: 1, | ||
| * dkLen: 32, | ||
| * version: 0x13, | ||
| * key: 'secret', | ||
| * personalization: 'application', | ||
| * maxmem: 1024 * 1024, | ||
| * asyncTick: 1, | ||
| * onProgress(progress) { | ||
| * progressLog.push(progress); | ||
| * }, | ||
| * }); | ||
| * ``` | ||
| */ | ||
@@ -84,2 +103,20 @@ export declare const argon2d: (password: TArg<KDFInput>, salt: TArg<KDFInput>, opts: TArg<ArgonOpts>) => TRet<Uint8Array>; | ||
| * ``` | ||
| * @example | ||
| * Derive a key asynchronously with optional secret and scheduler controls. | ||
| * ```ts | ||
| * await argon2dAsync('password', 'salt1234', { | ||
| * t: 1, | ||
| * m: 8, | ||
| * p: 1, | ||
| * dkLen: 32, | ||
| * version: 0x13, | ||
| * key: 'secret', | ||
| * personalization: 'application', | ||
| * maxmem: 1024 * 1024, | ||
| * asyncTick: 1, | ||
| * onProgress(progress) { | ||
| * if (progress > 1) throw new Error('invalid progress'); | ||
| * }, | ||
| * }); | ||
| * ``` | ||
| */ | ||
@@ -115,2 +152,1 @@ export declare const argon2dAsync: (password: TArg<KDFInput>, salt: TArg<KDFInput>, opts: TArg<ArgonOpts>) => Promise<TRet<Uint8Array>>; | ||
| export declare const argon2idAsync: (password: TArg<KDFInput>, salt: TArg<KDFInput>, opts: TArg<ArgonOpts>) => Promise<TRet<Uint8Array>>; | ||
| //# sourceMappingURL=argon2.d.ts.map |
+152
-119
@@ -11,8 +11,8 @@ /** | ||
| */ | ||
| import { add3H, add3L, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL } from "./_u64.js"; | ||
| import { rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL } from "./_u64.js"; | ||
| import { blake2b } from "./blake2.js"; | ||
| import { anumber, clean, kdfInputToBytes, nextTick, swap32IfBE, swap8IfBE, u32, u8, } from "./utils.js"; | ||
| import { anumber, checkOpts, clean, kdfInputToBytes, nextTick, swap32IfBE, swap8IfBE, u32, u8, } from "./utils.js"; | ||
| // RFC 9106 §3.1 type `y`: 0 = Argon2d, 1 = Argon2i, 2 = Argon2id. The numeric values are the | ||
| // spec-bound part here; the object keys are internal labels. | ||
| const AT = { Argond2d: 0, Argon2i: 1, Argon2id: 2 }; | ||
| const AT = { Argon2d: 0, Argon2i: 1, Argon2id: 2 }; | ||
| // RFC 9106 sync points constant `SL = 4`, fixed by the design rather than exposed as a tuning knob. | ||
@@ -43,15 +43,11 @@ const ARGON2_SYNC_POINTS = 4; | ||
| } | ||
| function mul2(a, b) { | ||
| // Double the split 64-bit product; carry from `l` is folded back into `h` via `l >>> 31`. | ||
| const { h, l } = mul(a, b); | ||
| return { h: ((h << 1) | (l >>> 31)) & 0xffff_ffff, l: (l << 1) & 0xffff_ffff }; | ||
| // High 32 bits of unsigned u32 multiply, via the same 16-bit limb split as `mul` below. | ||
| // Kept single-purpose and number-returning so V8 inlines it (object-returning | ||
| // helpers here cost 2.2x of the whole derivation, measured; small helpers | ||
| // returning one number are free — see rotr* usage everywhere). | ||
| function mulHi(a, b) { | ||
| const aL = a & 0xffff, aH = a >>> 16, bL = b & 0xffff, bH = b >>> 16; // prettier-ignore | ||
| const carry = (Math.imul(aL, bL) >>> 16) + (Math.imul(aH, bL) & 0xffff) + Math.imul(aL, bH); | ||
| return (Math.imul(aH, bH) + (Math.imul(aH, bL) >>> 16) + (carry >>> 16)) | 0; | ||
| } | ||
| // BlaMka permutation for Argon2 | ||
| // `A + B + 2 * trunc(A) * trunc(B)`, where `trunc(...)` means the low 32-bit halves. | ||
| function blamka(Ah, Al, Bh, Bl) { | ||
| const { h: Ch, l: Cl } = mul2(Al, Bl); | ||
| // A + B + (2 * A * B) | ||
| const Rll = add3L(Al, Bl, Cl); | ||
| return { h: add3H(Rll, Ah, Bh, Ch), l: Rll | 0 }; | ||
| } | ||
| // Temporary block buffer. | ||
@@ -62,2 +58,5 @@ // 1024-byte block: 256 u32 = 128 interleaved low/high halves = RFC's | ||
| // Quarter-round over 64-bit word indices into `A2_BUF`; each index maps to adjacent low/high u32s. | ||
| // Each BlaMka step `X = X + Y + 2 * trunc(X) * trunc(Y)` (trunc = low 32 bits) is three lines: | ||
| // `Math.imul` is the low product half, `mulHi` the high half, then a split 64-bit add with the | ||
| // doubling folded in. RFC 9106 Figure 19 GB rotates by 32, 24, 16, and 63 bits after each XOR. | ||
| function G(a, b, c, d) { | ||
@@ -68,15 +67,43 @@ let Al = A2_BUF[2 * a], Ah = A2_BUF[2 * a + 1]; // prettier-ignore | ||
| let Dl = A2_BUF[2 * d], Dh = A2_BUF[2 * d + 1]; // prettier-ignore | ||
| // RFC 9106 Figure 19 GB rotates by 32, 24, 16, and 63 bits after each XOR step. | ||
| ({ h: Ah, l: Al } = blamka(Ah, Al, Bh, Bl)); | ||
| ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al }); | ||
| ({ Dh, Dl } = { Dh: rotr32H(Dh, Dl), Dl: rotr32L(Dh, Dl) }); | ||
| ({ h: Ch, l: Cl } = blamka(Ch, Cl, Dh, Dl)); | ||
| ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl }); | ||
| ({ Bh, Bl } = { Bh: rotrSH(Bh, Bl, 24), Bl: rotrSL(Bh, Bl, 24) }); | ||
| ({ h: Ah, l: Al } = blamka(Ah, Al, Bh, Bl)); | ||
| ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al }); | ||
| ({ Dh, Dl } = { Dh: rotrSH(Dh, Dl, 16), Dl: rotrSL(Dh, Dl, 16) }); | ||
| ({ h: Ch, l: Cl } = blamka(Ch, Cl, Dh, Dl)); | ||
| ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl }); | ||
| ({ Bh, Bl } = { Bh: rotrBH(Bh, Bl, 63), Bl: rotrBL(Bh, Bl, 63) }); | ||
| let ml = 0, mh = 0, rl = 0, xh = 0, xl = 0; // prettier-ignore | ||
| // A = blamka(A, B); D = rotr64(D ^ A, 32) | ||
| ml = Math.imul(Al, Bl); | ||
| mh = mulHi(Al, Bl); // prettier-ignore | ||
| rl = (Al >>> 0) + (Bl >>> 0) + ((ml << 1) >>> 0); | ||
| Ah = (Ah + Bh + ((mh << 1) | (ml >>> 31)) + ((rl / 0x100000000) | 0)) | 0; | ||
| Al = rl | 0; // prettier-ignore | ||
| xh = Dh ^ Ah; | ||
| xl = Dl ^ Al; // prettier-ignore | ||
| Dh = rotr32H(xh, xl); | ||
| Dl = rotr32L(xh, xl); // prettier-ignore | ||
| // C = blamka(C, D); B = rotr64(B ^ C, 24) | ||
| ml = Math.imul(Cl, Dl); | ||
| mh = mulHi(Cl, Dl); // prettier-ignore | ||
| rl = (Cl >>> 0) + (Dl >>> 0) + ((ml << 1) >>> 0); | ||
| Ch = (Ch + Dh + ((mh << 1) | (ml >>> 31)) + ((rl / 0x100000000) | 0)) | 0; | ||
| Cl = rl | 0; // prettier-ignore | ||
| xh = Bh ^ Ch; | ||
| xl = Bl ^ Cl; // prettier-ignore | ||
| Bh = rotrSH(xh, xl, 24); | ||
| Bl = rotrSL(xh, xl, 24); // prettier-ignore | ||
| // A = blamka(A, B); D = rotr64(D ^ A, 16) | ||
| ml = Math.imul(Al, Bl); | ||
| mh = mulHi(Al, Bl); // prettier-ignore | ||
| rl = (Al >>> 0) + (Bl >>> 0) + ((ml << 1) >>> 0); | ||
| Ah = (Ah + Bh + ((mh << 1) | (ml >>> 31)) + ((rl / 0x100000000) | 0)) | 0; | ||
| Al = rl | 0; // prettier-ignore | ||
| xh = Dh ^ Ah; | ||
| xl = Dl ^ Al; // prettier-ignore | ||
| Dh = rotrSH(xh, xl, 16); | ||
| Dl = rotrSL(xh, xl, 16); // prettier-ignore | ||
| // C = blamka(C, D); B = rotr64(B ^ C, 63) | ||
| ml = Math.imul(Cl, Dl); | ||
| mh = mulHi(Cl, Dl); // prettier-ignore | ||
| rl = (Cl >>> 0) + (Dl >>> 0) + ((ml << 1) >>> 0); | ||
| Ch = (Ch + Dh + ((mh << 1) | (ml >>> 31)) + ((rl / 0x100000000) | 0)) | 0; | ||
| Cl = rl | 0; // prettier-ignore | ||
| xh = Bh ^ Ch; | ||
| xl = Bl ^ Cl; // prettier-ignore | ||
| Bh = rotrBH(xh, xl, 63); | ||
| Bl = rotrBL(xh, xl, 63); // prettier-ignore | ||
| ((A2_BUF[2 * a] = Al), (A2_BUF[2 * a + 1] = Ah)); | ||
@@ -155,3 +182,3 @@ ((A2_BUF[2 * b] = Bl), (A2_BUF[2 * b + 1] = Bh)); | ||
| } | ||
| // Used only inside process block! | ||
| // Used only inside argon2Blocks! | ||
| function indexAlpha(r, s, laneLen, segmentLen, index, randL, sameLane = false) { | ||
@@ -185,2 +212,3 @@ // RFC 9106 §3.4.2 Figures 12-13: map `J1` / `J2` into the current lane's reference area `W`. | ||
| function argon2Opts(opts) { | ||
| opts = checkOpts({}, opts); | ||
| const merged = { | ||
@@ -208,3 +236,3 @@ version: 0x13, | ||
| if (onProgress !== undefined && typeof onProgress !== 'function') | ||
| throw new Error('"progressCb" must be a function'); | ||
| throw new Error('"onProgress" must be a function'); | ||
| anumber(asyncTick, 'asyncTick'); | ||
@@ -315,34 +343,9 @@ /* | ||
| } | ||
| function processBlock(B, address, l, r, s, index, laneLen, segmentLen, lanes, offset, prev, dataIndependent, needXor) { | ||
| if (offset % laneLen) | ||
| prev = offset - 1; | ||
| let randL, randH; | ||
| if (dataIndependent) { | ||
| let i128 = index % 128; | ||
| // RFC 9106 §3.4.1.2: each 1024-byte address block yields 128 `(J1, J2)` pairs, so regenerate | ||
| // it whenever the segment index crosses a multiple of 128. | ||
| if (i128 === 0) { | ||
| address[256 + 12]++; | ||
| block(address, 256, 2 * 256, 0, false); | ||
| block(address, 0, 2 * 256, 0, false); | ||
| } | ||
| randL = address[2 * i128]; | ||
| randH = address[2 * i128 + 1]; | ||
| } | ||
| else { | ||
| const T = 256 * prev; | ||
| randL = B[T]; | ||
| randH = B[T + 1]; | ||
| } | ||
| // Address-block path selects `J1` / `J2`, then maps them to the reference | ||
| // lane/block per RFC 9106 §3.4. | ||
| const refLane = r === 0 && s === 0 ? l : randH % lanes; | ||
| const refPos = indexAlpha(r, s, laneLen, segmentLen, index, randL, refLane == l); | ||
| const refBlock = laneLen * refLane + refPos; | ||
| // B[i][j] = G(B[i][j-1], B[l][z]) | ||
| block(B, 256 * prev, 256 * refBlock, offset * 256, needXor); | ||
| } | ||
| function argon2(type, password, salt, opts) { | ||
| const { mP, p, t, version, B, laneLen, lanes, segmentLen, dkLen, perBlock } = argon2Init(password, salt, type, opts); | ||
| // Pre-loop setup | ||
| /** | ||
| * Fills every Argon2 block for all passes / slices / lanes, yielding once per | ||
| * processed block so callers control pacing: the sync driver just drains the | ||
| * generator, while the async driver awaits `nextTick()` between time slices. | ||
| */ | ||
| function* argon2Blocks(ctx) { | ||
| const { type, mP, p, t, version, B, laneLen, lanes, segmentLen, perBlock } = ctx; | ||
| // [address, input, zero_block] format so we can pass single U32 to block function | ||
@@ -375,9 +378,35 @@ const address = new Uint32Array(3 * 256); | ||
| } | ||
| // current block postion | ||
| // current block position | ||
| let offset = l * laneLen + s * segmentLen + startPos; | ||
| // previous block position | ||
| let prev = offset % laneLen ? offset - 1 : offset + laneLen - 1; | ||
| for (let index = startPos; index < segmentLen; index++, offset++, prev++) { | ||
| for (let index = startPos; index < segmentLen; index++, offset++) { | ||
| perBlock(); | ||
| processBlock(B, address, l, r, s, index, laneLen, segmentLen, lanes, offset, prev, dataIndependent, needXor); | ||
| // Previous block position: wraps to the lane's last block only at lane start, | ||
| // which can happen here only for the first block of slice 0 on passes > 0. | ||
| const prev = offset % laneLen ? offset - 1 : offset + laneLen - 1; | ||
| let randL, randH; | ||
| if (dataIndependent) { | ||
| let i128 = index % 128; | ||
| // RFC 9106 §3.4.1.2: each 1024-byte address block yields 128 `(J1, J2)` pairs, so | ||
| // regenerate it whenever the segment index crosses a multiple of 128. | ||
| if (i128 === 0) { | ||
| address[256 + 12]++; | ||
| block(address, 256, 2 * 256, 0, false); | ||
| block(address, 0, 2 * 256, 0, false); | ||
| } | ||
| randL = address[2 * i128]; | ||
| randH = address[2 * i128 + 1]; | ||
| } | ||
| else { | ||
| const T = 256 * prev; | ||
| randL = B[T]; | ||
| randH = B[T + 1]; | ||
| } | ||
| // Address-block path selects `J1` / `J2`, then maps them to the reference | ||
| // lane/block per RFC 9106 §3.4. | ||
| const refLane = r === 0 && s === 0 ? l : randH % lanes; | ||
| const refPos = indexAlpha(r, s, laneLen, segmentLen, index, randL, refLane == l); | ||
| const refBlock = laneLen * refLane + refPos; | ||
| // B[i][j] = G(B[i][j-1], B[l][z]) | ||
| block(B, 256 * prev, 256 * refBlock, offset * 256, needXor); | ||
| yield; | ||
| } | ||
@@ -388,4 +417,9 @@ } | ||
| clean(address); | ||
| return argon2Output(B, p, laneLen, dkLen); | ||
| } | ||
| function argon2(type, password, salt, opts) { | ||
| const ctx = argon2Init(password, salt, type, opts); | ||
| const blocks = argon2Blocks(ctx); | ||
| while (!blocks.next().done) { } | ||
| return argon2Output(ctx.B, ctx.p, ctx.laneLen, ctx.dkLen); | ||
| } | ||
| /** | ||
@@ -403,4 +437,23 @@ * Argon2d GPU-resistant version. | ||
| * ``` | ||
| * @example | ||
| * Derive a key with optional secret and scheduler controls. | ||
| * ```ts | ||
| * const progressLog: number[] = []; | ||
| * argon2d('password', 'salt1234', { | ||
| * t: 1, | ||
| * m: 8, | ||
| * p: 1, | ||
| * dkLen: 32, | ||
| * version: 0x13, | ||
| * key: 'secret', | ||
| * personalization: 'application', | ||
| * maxmem: 1024 * 1024, | ||
| * asyncTick: 1, | ||
| * onProgress(progress) { | ||
| * progressLog.push(progress); | ||
| * }, | ||
| * }); | ||
| * ``` | ||
| */ | ||
| export const argon2d = (password, salt, opts) => argon2(AT.Argond2d, password, salt, opts); | ||
| export const argon2d = (password, salt, opts) => argon2(AT.Argon2d, password, salt, opts); | ||
| /** | ||
@@ -435,52 +488,15 @@ * Argon2i side-channel-resistant version. | ||
| async function argon2Async(type, password, salt, opts) { | ||
| const { mP, p, t, version, B, laneLen, lanes, segmentLen, dkLen, perBlock, asyncTick } = argon2Init(password, salt, type, opts); | ||
| // Pre-loop setup | ||
| // [address, input, zero_block] format so we can pass single U32 to block function | ||
| const address = new Uint32Array(3 * 256); | ||
| address[256 + 6] = mP; | ||
| address[256 + 8] = t; | ||
| address[256 + 10] = type; | ||
| const ctx = argon2Init(password, salt, type, opts); | ||
| const blocks = argon2Blocks(ctx); | ||
| let ts = Date.now(); | ||
| for (let r = 0; r < t; r++) { | ||
| // RFC 9106 step 6 applies the XOR-on-later-passes rule only for version `0x13`; legacy | ||
| // `0x10` keeps the older overwrite behavior used by the v16 test vectors. | ||
| const needXor = r !== 0 && version === 0x13; | ||
| address[256 + 0] = r; | ||
| for (let s = 0; s < ARGON2_SYNC_POINTS; s++) { | ||
| address[256 + 4] = s; | ||
| // RFC 9106 §3.4.1.3: Argon2id uses Argon2i's data-independent `J1` / `J2` generation only | ||
| // in pass 0, slices 0 and 1; Argon2i uses it in every segment. | ||
| const dataIndependent = type == AT.Argon2i || (type == AT.Argon2id && r === 0 && s < 2); | ||
| for (let l = 0; l < p; l++) { | ||
| address[256 + 2] = l; | ||
| address[256 + 12] = 0; | ||
| let startPos = 0; | ||
| if (r === 0 && s === 0) { | ||
| startPos = 2; | ||
| if (dataIndependent) { | ||
| address[256 + 12]++; | ||
| block(address, 256, 2 * 256, 0, false); | ||
| block(address, 0, 2 * 256, 0, false); | ||
| } | ||
| } | ||
| // current block postion | ||
| let offset = l * laneLen + s * segmentLen + startPos; | ||
| // previous block position | ||
| let prev = offset % laneLen ? offset - 1 : offset + laneLen - 1; | ||
| for (let index = startPos; index < segmentLen; index++, offset++, prev++) { | ||
| perBlock(); | ||
| processBlock(B, address, l, r, s, index, laneLen, segmentLen, lanes, offset, prev, dataIndependent, needXor); | ||
| // Date.now() is not monotonic. If the clock goes backwards, | ||
| // still yield control. | ||
| const diff = Date.now() - ts; | ||
| if (!(diff >= 0 && diff < asyncTick)) { | ||
| await nextTick(); | ||
| ts += diff; | ||
| } | ||
| } | ||
| } | ||
| } | ||
| while (!blocks.next().done) { | ||
| // Date.now() is not monotonic. If the clock goes backwards, | ||
| // still yield control. | ||
| const diff = Date.now() - ts; | ||
| if (diff >= 0 && diff < ctx.asyncTick) | ||
| continue; | ||
| await nextTick(); | ||
| ts += diff; | ||
| } | ||
| clean(address); | ||
| return argon2Output(B, p, laneLen, dkLen); | ||
| return argon2Output(ctx.B, ctx.p, ctx.laneLen, ctx.dkLen); | ||
| } | ||
@@ -499,4 +515,22 @@ /** | ||
| * ``` | ||
| * @example | ||
| * Derive a key asynchronously with optional secret and scheduler controls. | ||
| * ```ts | ||
| * await argon2dAsync('password', 'salt1234', { | ||
| * t: 1, | ||
| * m: 8, | ||
| * p: 1, | ||
| * dkLen: 32, | ||
| * version: 0x13, | ||
| * key: 'secret', | ||
| * personalization: 'application', | ||
| * maxmem: 1024 * 1024, | ||
| * asyncTick: 1, | ||
| * onProgress(progress) { | ||
| * if (progress > 1) throw new Error('invalid progress'); | ||
| * }, | ||
| * }); | ||
| * ``` | ||
| */ | ||
| export const argon2dAsync = (password, salt, opts) => argon2Async(AT.Argond2d, password, salt, opts); | ||
| export const argon2dAsync = (password, salt, opts) => argon2Async(AT.Argon2d, password, salt, opts); | ||
| /** | ||
@@ -530,2 +564,1 @@ * Argon2i async side-channel-resistant version. | ||
| export const argon2idAsync = (password, salt, opts) => argon2Async(AT.Argon2id, password, salt, opts); | ||
| //# sourceMappingURL=argon2.js.map |
+9
-3
@@ -18,3 +18,3 @@ import { type CHash, type Hash, type TArg, type TRet } from './utils.ts'; | ||
| protected abstract get(): number[]; | ||
| protected abstract set(...args: number[]): void; | ||
| abstract _cloneInto(to?: T): T; | ||
| readonly blockLen: number; | ||
@@ -28,3 +28,3 @@ readonly outputLen: number; | ||
| destroy(): void; | ||
| _cloneInto(to?: T): T; | ||
| protected _cloneIntoMeta(to: T): T; | ||
| clone(): T; | ||
@@ -46,2 +46,3 @@ digestInto(out: TArg<Uint8Array>): void; | ||
| protected set(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number): void; | ||
| _cloneInto(to?: BLAKE1_32B): BLAKE1_32B; | ||
| destroy(): void; | ||
@@ -87,2 +88,3 @@ compress(view: DataView, offset: number, withLength?: boolean): void; | ||
| protected set(v0l: number, v0h: number, v1l: number, v1h: number, v2l: number, v2h: number, v3l: number, v3h: number, v4l: number, v4h: number, v5l: number, v5h: number, v6l: number, v6h: number, v7l: number, v7h: number): void; | ||
| _cloneInto(to?: BLAKE1_64B): BLAKE1_64B; | ||
| destroy(): void; | ||
@@ -131,2 +133,7 @@ compress(view: DataView, offset: number, withLength?: boolean): void; | ||
| * ``` | ||
| * @example | ||
| * Hash a message with Blake1-256 and a 16-byte salt. | ||
| * ```ts | ||
| * blake256(new Uint8Array([97, 98, 99]), { salt: new Uint8Array(16) }); | ||
| * ``` | ||
| */ | ||
@@ -161,2 +168,1 @@ export declare const blake256: TRet<CHash<_BLAKE256, BlakeOpts>>; | ||
| export {}; | ||
| //# sourceMappingURL=blake1.d.ts.map |
+103
-34
@@ -29,3 +29,3 @@ /** | ||
| // prettier-ignore | ||
| import { abytes, aexists, aoutput, clean, createHasher, createView } from "./utils.js"; | ||
| import { abytes, aexists, aoutput, checkOpts, clean, createHasher, createView } from "./utils.js"; | ||
| // Shared unsalted sentinel, sized for the 64-bit path and reused by the 32-bit path via prefix. | ||
@@ -51,2 +51,3 @@ const EMPTY_SALT = /* @__PURE__ */ new Uint32Array(8); | ||
| constructor(blockLen, outputLen, lengthFlag, counterLen, saltLen, constants, opts = {}) { | ||
| opts = checkOpts({}, opts); | ||
| const { salt } = opts; | ||
@@ -96,3 +97,5 @@ this.blockLen = blockLen; | ||
| } | ||
| buffer.set(data.subarray(pos, pos + take), this.pos); | ||
| // When the whole input is buffered in one go (common for short messages), passing `data` | ||
| // directly avoids allocating a subarray view. | ||
| buffer.set(pos === 0 && take === len ? data : data.subarray(pos, pos + take), this.pos); | ||
| this.pos += take; | ||
@@ -114,9 +117,23 @@ pos += take; | ||
| } | ||
| _cloneInto(to) { | ||
| to ||= new this.constructor(); | ||
| to.set(...this.get()); | ||
| _cloneIntoMeta(to) { | ||
| const { buffer, length, finished, destroyed, constants, salt, pos } = this; | ||
| to.buffer.set(buffer); | ||
| if (pos) | ||
| to.buffer.set(buffer); | ||
| // At pos=0 the source buffer is dead. Discard an unfinished destination's old message bytes; | ||
| // finished digestInto() workers are already clean, so hot KDF resets skip this fill. | ||
| else if (to.destroyed || (!to.finished && (to.length || to.pos))) | ||
| clean(to.buffer); | ||
| // Clone salt-derived arrays by value so destroying the clone cannot wipe the source instance. | ||
| to.constants = constants.slice(); | ||
| if (salt === EMPTY_SALT) { | ||
| to.constants = constants; // Immutable; sentinel keeps destroy() from wiping it. | ||
| to.salt = EMPTY_SALT; | ||
| } | ||
| else if (to.salt === EMPTY_SALT) { | ||
| to.constants = constants.slice(); | ||
| to.salt = salt.slice(); | ||
| } | ||
| else { | ||
| to.constants.set(constants); // Reuse independently owned salted arrays. | ||
| to.salt.set(salt); | ||
| } | ||
| to.destroyed = destroyed; | ||
@@ -126,3 +143,2 @@ to.finished = finished; | ||
| to.pos = pos; | ||
| to.salt = salt.slice(); | ||
| return to; | ||
@@ -139,4 +155,4 @@ } | ||
| const { buffer, blockLen, counterLen, lengthFlag, view } = this; | ||
| clean(buffer.subarray(this.pos)); // clean buf | ||
| const counter = BigInt((this.length + this.pos) * 8); | ||
| buffer.fill(0, this.pos); // clean buf | ||
| const counterBits = (this.length + this.pos) * 8; | ||
| const counterPos = blockLen - counterLen - 1; | ||
@@ -154,3 +170,3 @@ buffer[this.pos] |= 0b1000_0000; // End block flag | ||
| // We always set 8 byte length flag. Because length will overflow significantly sooner. | ||
| view.setBigUint64(blockLen - 8, counter, false); | ||
| u64.setU64FromNum(view, blockLen - 8, counterBits, false); | ||
| // Blake1 omits the counter from the extra all-padding block; only the block that still carries | ||
@@ -161,3 +177,4 @@ // message bytes mixes in the final bit length. | ||
| clean(buffer); | ||
| const v = createView(out); | ||
| // digest() passes our own `buffer` as `out`; reuse its cached view instead of allocating one. | ||
| const v = out === buffer ? view : createView(out); | ||
| const state = this.get(); | ||
@@ -247,2 +264,6 @@ for (let i = 0; i < this.outputLen / 4; ++i) | ||
| } | ||
| _cloneInto(to) { | ||
| (to ||= new this.constructor()).set(...this.get()); | ||
| return this._cloneIntoMeta(to); | ||
| } | ||
| destroy() { | ||
@@ -271,3 +292,5 @@ super.destroy(); | ||
| // final all-padding block passes `withLength = false`, leaving these lanes as raw constants. | ||
| const { h, l } = u64.fromBig(BigInt(withLength ? this.length * 8 : 0)); | ||
| const bits = withLength ? this.length * 8 : 0; | ||
| const h = u64.fromNumH(bits); | ||
| const l = u64.fromNumL(bits); | ||
| let v12 = (this.constants[4] ^ l) >>> 0; | ||
@@ -336,17 +359,24 @@ let v13 = (this.constants[5] ^ l) >>> 0; | ||
| // v[a] = (v[a] + v[b] + x) | 0; | ||
| let ll = u64.add3L(Al, Bl, Xl); | ||
| const ll = u64.add3L(Al, Bl, Xl); | ||
| Ah = u64.add3H(ll, Ah, Bh, Xh) >>> 0; | ||
| Al = (ll | 0) >>> 0; | ||
| // v[d] = rotr(v[d] ^ v[a], 32) | ||
| ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al }); | ||
| ({ Dh, Dl } = { Dh: u64.rotr32H(Dh, Dl), Dl: u64.rotr32L(Dh, Dl) }); | ||
| let xh = Dh ^ Ah, xl = Dl ^ Al; // prettier-ignore | ||
| Dh = u64.rotr32H(xh, xl); | ||
| Dl = u64.rotr32L(xh, xl); | ||
| // v[c] = (v[c] + v[d]) | 0; | ||
| ({ h: Ch, l: Cl } = u64.add(Ch, Cl, Dh, Dl)); | ||
| // v[b] = rotr(v[b] ^ v[c], 25) | ||
| ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl }); | ||
| ({ Bh, Bl } = { Bh: u64.rotrSH(Bh, Bl, 25), Bl: u64.rotrSL(Bh, Bl, 25) }); | ||
| ((BBUF[2 * a + 1] = Al), (BBUF[2 * a] = Ah)); | ||
| ((BBUF[2 * b + 1] = Bl), (BBUF[2 * b] = Bh)); | ||
| ((BBUF[2 * c + 1] = Cl), (BBUF[2 * c] = Ch)); | ||
| ((BBUF[2 * d + 1] = Dl), (BBUF[2 * d] = Dh)); | ||
| xh = Bh ^ Ch; | ||
| xl = Bl ^ Cl; | ||
| Bh = u64.rotrSH(xh, xl, 25); | ||
| Bl = u64.rotrSL(xh, xl, 25); | ||
| BBUF[2 * a + 1] = Al; | ||
| BBUF[2 * a] = Ah; | ||
| BBUF[2 * b + 1] = Bl; | ||
| BBUF[2 * b] = Bh; | ||
| BBUF[2 * c + 1] = Cl; | ||
| BBUF[2 * c] = Ch; | ||
| BBUF[2 * d + 1] = Dl; | ||
| BBUF[2 * d] = Dh; | ||
| } | ||
@@ -362,17 +392,24 @@ // Blake1-64 second half-round with rotations `16` and `11`; `k` is the half-call schedule index. | ||
| // v[a] = (v[a] + v[b] + x) | 0; | ||
| let ll = u64.add3L(Al, Bl, Xl); | ||
| const ll = u64.add3L(Al, Bl, Xl); | ||
| Ah = u64.add3H(ll, Ah, Bh, Xh); | ||
| Al = ll | 0; | ||
| // v[d] = rotr(v[d] ^ v[a], 16) | ||
| ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al }); | ||
| ({ Dh, Dl } = { Dh: u64.rotrSH(Dh, Dl, 16), Dl: u64.rotrSL(Dh, Dl, 16) }); | ||
| let xh = Dh ^ Ah, xl = Dl ^ Al; // prettier-ignore | ||
| Dh = u64.rotrSH(xh, xl, 16); | ||
| Dl = u64.rotrSL(xh, xl, 16); | ||
| // v[c] = (v[c] + v[d]) | 0; | ||
| ({ h: Ch, l: Cl } = u64.add(Ch, Cl, Dh, Dl)); | ||
| // v[b] = rotr(v[b] ^ v[c], 11) | ||
| ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl }); | ||
| ({ Bh, Bl } = { Bh: u64.rotrSH(Bh, Bl, 11), Bl: u64.rotrSL(Bh, Bl, 11) }); | ||
| ((BBUF[2 * a + 1] = Al), (BBUF[2 * a] = Ah)); | ||
| ((BBUF[2 * b + 1] = Bl), (BBUF[2 * b] = Bh)); | ||
| ((BBUF[2 * c + 1] = Cl), (BBUF[2 * c] = Ch)); | ||
| ((BBUF[2 * d + 1] = Dl), (BBUF[2 * d] = Dh)); | ||
| xh = Bh ^ Ch; | ||
| xl = Bl ^ Cl; | ||
| Bh = u64.rotrSH(xh, xl, 11); | ||
| Bl = u64.rotrSL(xh, xl, 11); | ||
| BBUF[2 * a + 1] = Al; | ||
| BBUF[2 * a] = Ah; | ||
| BBUF[2 * b + 1] = Bl; | ||
| BBUF[2 * b] = Bh; | ||
| BBUF[2 * c + 1] = Cl; | ||
| BBUF[2 * c] = Ch; | ||
| BBUF[2 * d + 1] = Dl; | ||
| BBUF[2 * d] = Dh; | ||
| } | ||
@@ -441,2 +478,6 @@ // Legacy field names keep the local `l/h` spelling, but array/state order stays `[high, low]` to | ||
| } | ||
| _cloneInto(to) { | ||
| (to ||= new this.constructor()).set(...this.get()); | ||
| return this._cloneIntoMeta(to); | ||
| } | ||
| destroy() { | ||
@@ -449,3 +490,25 @@ super.destroy(); | ||
| BLAKE512_W[i] = view.getUint32(offset, false); | ||
| this.get().forEach((v, i) => (BBUF[i] = v)); // First half from state. | ||
| // First half from state. Direct writes: get() would allocate an array + | ||
| // closure per block (same reasoning as blake2b's compress). | ||
| // prettier-ignore | ||
| const { v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h } = this; | ||
| // prettier-ignore | ||
| { | ||
| BBUF[0] = v0l; | ||
| BBUF[1] = v0h; | ||
| BBUF[2] = v1l; | ||
| BBUF[3] = v1h; | ||
| BBUF[4] = v2l; | ||
| BBUF[5] = v2h; | ||
| BBUF[6] = v3l; | ||
| BBUF[7] = v3h; | ||
| BBUF[8] = v4l; | ||
| BBUF[9] = v4h; | ||
| BBUF[10] = v5l; | ||
| BBUF[11] = v5h; | ||
| BBUF[12] = v6l; | ||
| BBUF[13] = v6h; | ||
| BBUF[14] = v7l; | ||
| BBUF[15] = v7h; | ||
| } | ||
| BBUF.set(this.constants.subarray(0, 16), 16); | ||
@@ -455,3 +518,5 @@ if (withLength) { | ||
| // block passes `withLength = false`, leaving the trailing constant lanes untouched. | ||
| const { h, l } = u64.fromBig(BigInt(this.length * 8)); | ||
| const bits = this.length * 8; | ||
| const h = u64.fromNumH(bits); | ||
| const l = u64.fromNumL(bits); | ||
| BBUF[24] = (BBUF[24] ^ h) >>> 0; | ||
@@ -547,2 +612,7 @@ BBUF[25] = (BBUF[25] ^ l) >>> 0; | ||
| * ``` | ||
| * @example | ||
| * Hash a message with Blake1-256 and a 16-byte salt. | ||
| * ```ts | ||
| * blake256(new Uint8Array([97, 98, 99]), { salt: new Uint8Array(16) }); | ||
| * ``` | ||
| */ | ||
@@ -576,2 +646,1 @@ export const blake256 = /* @__PURE__ */ createHasher((opts) => new _BLAKE256(opts)); | ||
| export const blake512 = /* @__PURE__ */ createHasher((opts) => new _BLAKE512(opts)); | ||
| //# sourceMappingURL=blake1.js.map |
+23
-4
@@ -92,2 +92,12 @@ import { type CHash, type Hash, type TArg, type TRet } from './utils.ts'; | ||
| * ``` | ||
| * @example | ||
| * Hash a message with Blake2b while selecting output, MAC, salt, and personalization settings. | ||
| * ```ts | ||
| * blake2b(new Uint8Array([97, 98, 99]), { | ||
| * dkLen: 32, | ||
| * key: new Uint8Array(32), | ||
| * salt: new Uint8Array(16), | ||
| * personalization: new Uint8Array(16), | ||
| * }); | ||
| * ``` | ||
| */ | ||
@@ -142,4 +152,4 @@ export declare const blake2b: TRet<CHash<_BLAKE2b, Blake2Opts>>; | ||
| * ```ts | ||
| * import { compress } from '@noble/hashes/blake2.js'; | ||
| * const state = compress( | ||
| * import { _compress } from '@noble/hashes/blake2.js'; | ||
| * const state = _compress( | ||
| * new Uint8Array(16), | ||
@@ -155,3 +165,3 @@ * 0, | ||
| */ | ||
| export declare function compress(s: TArg<Uint8Array>, offset: number, msg: TArg<Uint32Array>, rounds: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number): _Num16; | ||
| export declare function _compress(s: TArg<Uint8Array>, offset: number, msg: TArg<Uint32Array>, rounds: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number): _Num16; | ||
| /** Internal blake2s hash class. */ | ||
@@ -185,4 +195,13 @@ export declare class _BLAKE2s extends _BLAKE2<_BLAKE2s> { | ||
| * ``` | ||
| * @example | ||
| * Hash a message with Blake2s while selecting output, MAC, salt, and personalization settings. | ||
| * ```ts | ||
| * blake2s(new Uint8Array([97, 98, 99]), { | ||
| * dkLen: 16, | ||
| * key: new Uint8Array(32), | ||
| * salt: new Uint8Array(8), | ||
| * personalization: new Uint8Array(8), | ||
| * }); | ||
| * ``` | ||
| */ | ||
| export declare const blake2s: TRet<CHash<_BLAKE2s, Blake2Opts>>; | ||
| //# sourceMappingURL=blake2.d.ts.map |
+111
-39
@@ -10,3 +10,3 @@ /** | ||
| // prettier-ignore | ||
| import { abytes, aexists, anumber, aoutput, clean, createHasher, swap32IfBE, swap8IfBE, u32 } from "./utils.js"; | ||
| import { abytes, aexists, anumber, aoutput, checkOpts, clean, copyBytes, createHasher, swap32IfBE, swap8IfBE, u32 } from "./utils.js"; | ||
| // Same IV words as `SHA512_IV`, but endian-swapped into LE u32 low/high halves | ||
@@ -29,17 +29,24 @@ // for the BLAKE2b u64 helpers below. | ||
| // v[a] = (v[a] + v[b] + x) | 0; | ||
| let ll = u64.add3L(Al, Bl, Xl); | ||
| const ll = u64.add3L(Al, Bl, Xl); | ||
| Ah = u64.add3H(ll, Ah, Bh, Xh); | ||
| Al = ll | 0; | ||
| // v[d] = rotr(v[d] ^ v[a], 32) | ||
| ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al }); | ||
| ({ Dh, Dl } = { Dh: u64.rotr32H(Dh, Dl), Dl: u64.rotr32L(Dh, Dl) }); | ||
| let xh = Dh ^ Ah, xl = Dl ^ Al; // prettier-ignore | ||
| Dh = u64.rotr32H(xh, xl); | ||
| Dl = u64.rotr32L(xh, xl); | ||
| // v[c] = (v[c] + v[d]) | 0; | ||
| ({ h: Ch, l: Cl } = u64.add(Ch, Cl, Dh, Dl)); | ||
| // v[b] = rotr(v[b] ^ v[c], 24) | ||
| ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl }); | ||
| ({ Bh, Bl } = { Bh: u64.rotrSH(Bh, Bl, 24), Bl: u64.rotrSL(Bh, Bl, 24) }); | ||
| ((BBUF[2 * a] = Al), (BBUF[2 * a + 1] = Ah)); | ||
| ((BBUF[2 * b] = Bl), (BBUF[2 * b + 1] = Bh)); | ||
| ((BBUF[2 * c] = Cl), (BBUF[2 * c + 1] = Ch)); | ||
| ((BBUF[2 * d] = Dl), (BBUF[2 * d + 1] = Dh)); | ||
| xh = Bh ^ Ch; | ||
| xl = Bl ^ Cl; | ||
| Bh = u64.rotrSH(xh, xl, 24); | ||
| Bl = u64.rotrSL(xh, xl, 24); | ||
| BBUF[2 * a] = Al; | ||
| BBUF[2 * a + 1] = Ah; | ||
| BBUF[2 * b] = Bl; | ||
| BBUF[2 * b + 1] = Bh; | ||
| BBUF[2 * c] = Cl; | ||
| BBUF[2 * c + 1] = Ch; | ||
| BBUF[2 * d] = Dl; | ||
| BBUF[2 * d + 1] = Dh; | ||
| } | ||
@@ -55,23 +62,31 @@ // Second half-round of the same LE-limb BLAKE2b G mix; `x` is the message word offset. | ||
| // v[a] = (v[a] + v[b] + x) | 0; | ||
| let ll = u64.add3L(Al, Bl, Xl); | ||
| const ll = u64.add3L(Al, Bl, Xl); | ||
| Ah = u64.add3H(ll, Ah, Bh, Xh); | ||
| Al = ll | 0; | ||
| // v[d] = rotr(v[d] ^ v[a], 16) | ||
| ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al }); | ||
| ({ Dh, Dl } = { Dh: u64.rotrSH(Dh, Dl, 16), Dl: u64.rotrSL(Dh, Dl, 16) }); | ||
| let xh = Dh ^ Ah, xl = Dl ^ Al; // prettier-ignore | ||
| Dh = u64.rotrSH(xh, xl, 16); | ||
| Dl = u64.rotrSL(xh, xl, 16); | ||
| // v[c] = (v[c] + v[d]) | 0; | ||
| ({ h: Ch, l: Cl } = u64.add(Ch, Cl, Dh, Dl)); | ||
| // v[b] = rotr(v[b] ^ v[c], 63) | ||
| ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl }); | ||
| ({ Bh, Bl } = { Bh: u64.rotrBH(Bh, Bl, 63), Bl: u64.rotrBL(Bh, Bl, 63) }); | ||
| ((BBUF[2 * a] = Al), (BBUF[2 * a + 1] = Ah)); | ||
| ((BBUF[2 * b] = Bl), (BBUF[2 * b + 1] = Bh)); | ||
| ((BBUF[2 * c] = Cl), (BBUF[2 * c + 1] = Ch)); | ||
| ((BBUF[2 * d] = Dl), (BBUF[2 * d + 1] = Dh)); | ||
| xh = Bh ^ Ch; | ||
| xl = Bl ^ Cl; | ||
| Bh = u64.rotrBH(xh, xl, 63); | ||
| Bl = u64.rotrBL(xh, xl, 63); | ||
| BBUF[2 * a] = Al; | ||
| BBUF[2 * a + 1] = Ah; | ||
| BBUF[2 * b] = Bl; | ||
| BBUF[2 * b + 1] = Bh; | ||
| BBUF[2 * c] = Cl; | ||
| BBUF[2 * c + 1] = Ch; | ||
| BBUF[2 * d] = Dl; | ||
| BBUF[2 * d + 1] = Dh; | ||
| } | ||
| function checkBlake2Opts(outputLen, opts = {}, keyLen, saltLen, persLen) { | ||
| anumber(keyLen); | ||
| // RFC 7693 §2.1 requires digest length nn in 1..keyLen. | ||
| // RFC 7693 §2.1 requires digest length nn in 1..keyLen (keyLen doubles as | ||
| // the per-variant max for both key and digest lengths: 64 for b, 32 for s). | ||
| if (outputLen <= 0 || outputLen > keyLen) | ||
| throw new Error('outputLen bigger than keyLen'); | ||
| throw new Error('"dkLen" must be 1..' + keyLen + ', got ' + outputLen); | ||
| const { key, salt, personalization } = opts; | ||
@@ -137,3 +152,5 @@ // This API uses `undefined` for the RFC 7693 `kk = 0` case, so a provided key must be non-empty. | ||
| } | ||
| buffer.set(data.subarray(pos, pos + take), this.pos); | ||
| // When the whole input is buffered in one go (common for short messages), passing `data` | ||
| // directly avoids allocating a subarray view. | ||
| buffer.set(pos === 0 && take === len ? data : data.subarray(pos, pos + take), this.pos); | ||
| this.pos += take; | ||
@@ -148,14 +165,15 @@ this.length += take; | ||
| aoutput(out, this); | ||
| // Reject unaligned views explicitly instead of hiding them behind a full scratch copy. | ||
| if (out.byteOffset & 3) | ||
| throw new RangeError('"output" expected 4-byte aligned byteOffset, got ' + out.byteOffset); | ||
| const { pos, buffer32 } = this; | ||
| this.finished = true; | ||
| // Padding | ||
| clean(this.buffer.subarray(pos)); | ||
| this.buffer.fill(0, pos); | ||
| swap32IfBE(buffer32); | ||
| this.compress(buffer32, 0, true); | ||
| swap32IfBE(buffer32); | ||
| // Reject unaligned views explicitly instead of hiding them behind a full scratch copy. | ||
| if (out.byteOffset & 3) | ||
| throw new RangeError('"digestInto() output" expected 4-byte aligned byteOffset, got ' + out.byteOffset); | ||
| const state = this.get(); | ||
| const out32 = u32(out); | ||
| // digest() passes our own `buffer` as `out`; reuse its cached u32 view instead of allocating. | ||
| const out32 = out === this.buffer ? buffer32 : u32(out); | ||
| const full = Math.floor(this.outputLen / 4); | ||
@@ -185,2 +203,3 @@ for (let i = 0; i < full; i++) | ||
| to.set(...this.get()); | ||
| // Last-block-aware lazy compression keeps the pending block live even when full. | ||
| to.buffer.set(buffer); | ||
@@ -219,2 +238,3 @@ to.destroyed = destroyed; | ||
| constructor(opts = {}) { | ||
| opts = checkOpts({}, opts); | ||
| const olen = opts.dkLen === undefined ? 64 : opts.dkLen; | ||
@@ -234,3 +254,4 @@ super(128, olen); | ||
| abytes(salt, undefined, 'salt'); | ||
| const slt = u32(salt); | ||
| // Copy: u32() would throw on views with byteOffset not divisible by 4. | ||
| const slt = u32(copyBytes(salt)); | ||
| this.v4l ^= swap8IfBE(slt[0]); | ||
@@ -243,3 +264,4 @@ this.v4h ^= swap8IfBE(slt[1]); | ||
| abytes(personalization, undefined, 'personalization'); | ||
| const pers = u32(personalization); | ||
| // Copy: u32() would throw on views with byteOffset not divisible by 4. | ||
| const pers = u32(copyBytes(personalization)); | ||
| this.v6l ^= swap8IfBE(pers[0]); | ||
@@ -255,2 +277,4 @@ this.v6h ^= swap8IfBE(pers[1]); | ||
| this.update(tmp); | ||
| // The padded copy holds key material; buffer/state keep what they need. | ||
| clean(tmp); | ||
| } | ||
@@ -283,5 +307,28 @@ } | ||
| compress(msg, offset, isLast) { | ||
| this.get().forEach((v, i) => (BBUF[i] = v)); // First half from state. | ||
| // First half from state. Direct writes: get() would allocate an array + | ||
| // closure per block. | ||
| // prettier-ignore | ||
| const { v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h } = this; | ||
| // prettier-ignore | ||
| { | ||
| BBUF[0] = v0l; | ||
| BBUF[1] = v0h; | ||
| BBUF[2] = v1l; | ||
| BBUF[3] = v1h; | ||
| BBUF[4] = v2l; | ||
| BBUF[5] = v2h; | ||
| BBUF[6] = v3l; | ||
| BBUF[7] = v3h; | ||
| BBUF[8] = v4l; | ||
| BBUF[9] = v4h; | ||
| BBUF[10] = v5l; | ||
| BBUF[11] = v5h; | ||
| BBUF[12] = v6l; | ||
| BBUF[13] = v6h; | ||
| BBUF[14] = v7l; | ||
| BBUF[15] = v7h; | ||
| } | ||
| BBUF.set(B2B_IV, 16); // Second half from IV. | ||
| let { h, l } = u64.fromBig(BigInt(this.length)); | ||
| const l = u64.fromNumL(this.length); | ||
| const h = u64.fromNumH(this.length); | ||
| BBUF[24] = B2B_IV[8] ^ l; // Low word of the offset. | ||
@@ -352,2 +399,12 @@ BBUF[25] = B2B_IV[9] ^ h; // High word. | ||
| * ``` | ||
| * @example | ||
| * Hash a message with Blake2b while selecting output, MAC, salt, and personalization settings. | ||
| * ```ts | ||
| * blake2b(new Uint8Array([97, 98, 99]), { | ||
| * dkLen: 32, | ||
| * key: new Uint8Array(32), | ||
| * salt: new Uint8Array(16), | ||
| * personalization: new Uint8Array(16), | ||
| * }); | ||
| * ``` | ||
| */ | ||
@@ -383,4 +440,4 @@ export const blake2b = /* @__PURE__ */ createHasher((opts) => new _BLAKE2b(opts)); | ||
| * ```ts | ||
| * import { compress } from '@noble/hashes/blake2.js'; | ||
| * const state = compress( | ||
| * import { _compress } from '@noble/hashes/blake2.js'; | ||
| * const state = _compress( | ||
| * new Uint8Array(16), | ||
@@ -397,3 +454,3 @@ * 0, | ||
| // prettier-ignore | ||
| export function compress(s, offset, msg, rounds, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) { | ||
| export function _compress(s, offset, msg, rounds, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) { | ||
| let j = 0; | ||
@@ -434,2 +491,3 @@ for (let i = 0; i < rounds; i++) { | ||
| constructor(opts = {}) { | ||
| opts = checkOpts({}, opts); | ||
| const olen = opts.dkLen === undefined ? 32 : opts.dkLen; | ||
@@ -449,3 +507,4 @@ super(64, olen); | ||
| abytes(salt, undefined, 'salt'); | ||
| const slt = u32(salt); | ||
| // Copy: u32() would throw on views with byteOffset not divisible by 4. | ||
| const slt = u32(copyBytes(salt)); | ||
| this.v4 ^= swap8IfBE(slt[0]); | ||
@@ -456,3 +515,4 @@ this.v5 ^= swap8IfBE(slt[1]); | ||
| abytes(personalization, undefined, 'personalization'); | ||
| const pers = u32(personalization); | ||
| // Copy: u32() would throw on views with byteOffset not divisible by 4. | ||
| const pers = u32(copyBytes(personalization)); | ||
| this.v6 ^= swap8IfBE(pers[0]); | ||
@@ -466,2 +526,4 @@ this.v7 ^= swap8IfBE(pers[1]); | ||
| this.update(tmp); | ||
| // The padded copy holds key material; buffer/state keep what they need. | ||
| clean(tmp); | ||
| } | ||
@@ -485,7 +547,8 @@ } | ||
| compress(msg, offset, isLast) { | ||
| const { h, l } = u64.fromBig(BigInt(this.length)); | ||
| const l = u64.fromNumL(this.length); | ||
| const h = u64.fromNumH(this.length); | ||
| // Seed v8..v15 from the IV, xor the low/high 32-bit byte counter into | ||
| // v12/v13, and invert v14 on the final block. | ||
| // prettier-ignore | ||
| const { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 } = compress(BSIGMA, offset, msg, 10, this.v0, this.v1, this.v2, this.v3, this.v4, this.v5, this.v6, this.v7, B2S_IV[0], B2S_IV[1], B2S_IV[2], B2S_IV[3], l ^ B2S_IV[4], h ^ B2S_IV[5], isLast ? ~B2S_IV[6] : B2S_IV[6], B2S_IV[7]); | ||
| const { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 } = _compress(BSIGMA, offset, msg, 10, this.v0, this.v1, this.v2, this.v3, this.v4, this.v5, this.v6, this.v7, B2S_IV[0], B2S_IV[1], B2S_IV[2], B2S_IV[3], l ^ B2S_IV[4], h ^ B2S_IV[5], isLast ? ~B2S_IV[6] : B2S_IV[6], B2S_IV[7]); | ||
| this.v0 ^= v0 ^ v8; | ||
@@ -518,4 +581,13 @@ this.v1 ^= v1 ^ v9; | ||
| * ``` | ||
| * @example | ||
| * Hash a message with Blake2s while selecting output, MAC, salt, and personalization settings. | ||
| * ```ts | ||
| * blake2s(new Uint8Array([97, 98, 99]), { | ||
| * dkLen: 16, | ||
| * key: new Uint8Array(32), | ||
| * salt: new Uint8Array(8), | ||
| * personalization: new Uint8Array(8), | ||
| * }); | ||
| * ``` | ||
| */ | ||
| export const blake2s = /* @__PURE__ */ createHasher((opts) => new _BLAKE2s(opts)); | ||
| //# sourceMappingURL=blake2.js.map |
+1
-1
@@ -65,5 +65,5 @@ import { _BLAKE2 } from './blake2.ts'; | ||
| * const kdf = blake3(data, { context: utf8ToBytes('application name') }); | ||
| * const xof = blake3(data, { dkLen: 64 }); | ||
| * ``` | ||
| */ | ||
| export declare const blake3: TRet<CHashXOF<_BLAKE3, Blake3Opts>>; | ||
| //# sourceMappingURL=blake3.d.ts.map |
+41
-17
@@ -15,6 +15,6 @@ /** | ||
| import { SHA256_IV } from "./_md.js"; | ||
| import { fromBig } from "./_u64.js"; | ||
| import { _BLAKE2, compress } from "./blake2.js"; | ||
| import { fromNumH, fromNumL } from "./_u64.js"; | ||
| import { _BLAKE2, _compress } from "./blake2.js"; | ||
| // prettier-ignore | ||
| import { abytes, aexists, anumber, aoutput, clean, copyBytes, createHasher, swap32IfBE, u32, u8 } from "./utils.js"; | ||
| import { abytes, aexists, anumber, aoutput, checkOpts, clean, copyBytes, createHasher, swap32IfBE, u32, u8 } from "./utils.js"; | ||
| // Constructor-time mode flags (`KEYED_HASH`, `DERIVE_*`) plus per-node tree | ||
@@ -63,2 +63,3 @@ // flags (`CHUNK_*`, `PARENT`, `ROOT`). | ||
| constructor(opts = {}, flags = 0) { | ||
| opts = checkOpts({}, opts); | ||
| super(64, opts.dkLen === undefined ? 32 : opts.dkLen); | ||
@@ -69,3 +70,3 @@ const { key, context } = opts; | ||
| if (hasContext) | ||
| throw new Error('Only "key" or "context" can be specified at same time'); | ||
| throw new Error('cannot use both "key" and "context"'); | ||
| abytes(key, 32, 'key'); | ||
@@ -88,3 +89,3 @@ const k = copyBytes(key); | ||
| else { | ||
| this.IV = B3_IV.slice(); | ||
| this.IV = B3_IV; // Share the module-private immutable default IV. | ||
| this.flags = flags; | ||
@@ -105,5 +106,6 @@ } | ||
| const { state: s, pos } = this; | ||
| const { h, l } = fromBig(BigInt(counter), true); | ||
| const t0 = fromNumL(counter); | ||
| const t1 = fromNumH(counter); | ||
| // prettier-ignore | ||
| const { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 } = compress(B3_SIGMA, bufPos, buf, 7, s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7], B3_IV[0], B3_IV[1], B3_IV[2], B3_IV[3], h, l, pos, flags); | ||
| const { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 } = _compress(B3_SIGMA, bufPos, buf, 7, s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7], B3_IV[0], B3_IV[1], B3_IV[2], B3_IV[3], t0, t1, pos, flags); | ||
| s[0] = v0 ^ v8; | ||
@@ -156,10 +158,23 @@ s[1] = v1 ^ v9; | ||
| } | ||
| // Overriding hides _BLAKE2's flat implementation, which would otherwise be inherited | ||
| // and silently miss the tree state (CV stack, chunk counters; get()/set() are stubs here). | ||
| _cloneInto(to) { | ||
| const staleOutput = !!to && to.finished && !to.destroyed; // Save before super copies lifecycle. | ||
| to = super._cloneInto(to); | ||
| const { IV, flags, state, chunkPos, posOut, chunkOut, stack, chunksDone } = this; | ||
| to.state.set(state.slice()); | ||
| to.state.set(state); | ||
| // Clone each CV stack entry by value so extending or destroying the clone | ||
| // cannot alias the source tree state. | ||
| to.stack = stack.map((i) => Uint32Array.from(i)); | ||
| to.IV.set(IV); | ||
| if (IV === B3_IV) { | ||
| if (to.IV !== B3_IV) | ||
| clean(to.IV); | ||
| to.IV = B3_IV; // Share immutable default; configured IVs stay private. | ||
| } | ||
| else if (to.IV === B3_IV) { | ||
| to.IV = IV.slice(); | ||
| } | ||
| else { | ||
| to.IV.set(IV); | ||
| } | ||
| to.flags = flags; | ||
@@ -171,3 +186,8 @@ to.chunkPos = chunkPos; | ||
| to.enableXOF = this.enableXOF; | ||
| to.bufferOut32.set(this.bufferOut32); | ||
| if (this.finished) { | ||
| to.bufferOut32.set(this.bufferOut32); | ||
| } | ||
| else if (staleOutput) { | ||
| clean(to.bufferOut32); // Wipe stale output; finish() overwrites scratch. | ||
| } | ||
| return to; | ||
@@ -177,3 +197,5 @@ } | ||
| this.destroyed = true; | ||
| clean(this.state, this.buffer32, this.IV, this.bufferOut32); | ||
| clean(this.state, this.buffer32, this.bufferOut32); | ||
| if (this.IV !== B3_IV) | ||
| clean(this.IV); | ||
| clean(...this.stack); | ||
@@ -186,6 +208,8 @@ } | ||
| const { state: s, pos, flags, buffer32, bufferOut32: out32 } = this; | ||
| const { h, l } = fromBig(BigInt(this.chunkOut++)); | ||
| const outCounter = this.chunkOut++; | ||
| const t0 = fromNumL(outCounter); | ||
| const t1 = fromNumH(outCounter); | ||
| swap32IfBE(buffer32); | ||
| // prettier-ignore | ||
| const { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 } = compress(B3_SIGMA, 0, buffer32, 7, s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7], B3_IV[0], B3_IV[1], B3_IV[2], B3_IV[3], l, h, pos, flags); | ||
| const { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 } = _compress(B3_SIGMA, 0, buffer32, 7, s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7], B3_IV[0], B3_IV[1], B3_IV[2], B3_IV[3], t0, t1, pos, flags); | ||
| out32[0] = v0 ^ v8; | ||
@@ -216,3 +240,3 @@ out32[1] = v1 ^ v9; | ||
| // Padding | ||
| clean(this.buffer.subarray(this.pos)); | ||
| this.buffer.fill(0, this.pos); | ||
| // Process last chunk | ||
@@ -253,3 +277,3 @@ let flags = this.flags | B3_Flags.ROOT; | ||
| if (!this.enableXOF) | ||
| throw new Error('XOF is not possible after digest call'); | ||
| throw new Error('no XOF after digest()'); | ||
| return this.writeInto(out); | ||
@@ -267,3 +291,3 @@ } | ||
| // `aoutput(...)` allows oversized buffers; digestInto() must fill only the configured digest. | ||
| this.writeInto(out.subarray(0, this.outputLen)); | ||
| this.writeInto(out.length === this.outputLen ? out : out.subarray(0, this.outputLen)); | ||
| this.destroy(); | ||
@@ -293,5 +317,5 @@ } | ||
| * const kdf = blake3(data, { context: utf8ToBytes('application name') }); | ||
| * const xof = blake3(data, { dkLen: 64 }); | ||
| * ``` | ||
| */ | ||
| export const blake3 = /* @__PURE__ */ createHasher((opts = {}) => new _BLAKE3(opts)); | ||
| //# sourceMappingURL=blake3.js.map |
+0
-1
@@ -92,2 +92,1 @@ import { type TRet } from './utils.ts'; | ||
| export {}; | ||
| //# sourceMappingURL=eskdf.d.ts.map |
+8
-1
@@ -79,2 +79,6 @@ /** | ||
| export function deriveMainSeed(username, password) { | ||
| if (typeof username !== 'string') | ||
| kdfInputToBytes(username, 'username'); | ||
| if (typeof password !== 'string') | ||
| kdfInputToBytes(password, 'password'); | ||
| if (!strHasLength(username, 8, 255)) | ||
@@ -99,2 +103,5 @@ throw new Error('invalid username'); | ||
| * and string ids become UTF-8 `salt` bytes. | ||
| * Numeric and string account ids share the existing salt byte namespace; | ||
| * changing this would require a new ESKDF encoding, so callers should use one account | ||
| * id kind per application. | ||
| */ | ||
@@ -153,2 +160,3 @@ function getSaltInfo(protocol, accountId = 0) { | ||
| const l = hasMod ? countBytes(options.modulus) + 8 : options.keyLength; | ||
| // HKDF-SHA256 ultimately caps output at 8160 bytes; values above that still fail in hkdf(). | ||
| if (!(typeof l === 'number' && l >= 16 && l <= 8192)) | ||
@@ -221,2 +229,1 @@ throw new Error('invalid keyLength'); | ||
| } | ||
| //# sourceMappingURL=eskdf.js.map |
+8
-2
@@ -0,1 +1,7 @@ | ||
| /** | ||
| * HKDF (RFC 5869): extract + expand in one step. | ||
| * See {@link https://soatok.blog/2021/11/17/understanding-hkdf/}. | ||
| * @module | ||
| */ | ||
| import { type _HMAC } from './hmac.ts'; | ||
| import { type CHash, type TArg, type TRet } from './utils.ts'; | ||
@@ -27,2 +33,3 @@ /** | ||
| * RFC 5869 §2.3 allows `0..255*HashLen`, so `0` returns an empty OKM. | ||
| * @param _recycled - Internal destroyed extract hashes owned by the combined `hkdf()` call. | ||
| * @returns Output keying material with the requested length. | ||
@@ -39,3 +46,3 @@ * @throws If the requested output length exceeds the HKDF limit | ||
| */ | ||
| export declare function expand(hash: TArg<CHash>, prk: TArg<Uint8Array>, info?: TArg<Uint8Array>, length?: number): TRet<Uint8Array>; | ||
| export declare function expand(hash: TArg<CHash>, prk: TArg<Uint8Array>, info?: TArg<Uint8Array>, length?: number, _recycled?: _HMAC<any>): TRet<Uint8Array>; | ||
| /** | ||
@@ -66,2 +73,1 @@ * HKDF (RFC 5869): derive keys from an initial input. | ||
| export declare const hkdf: (hash: TArg<CHash>, ikm: TArg<Uint8Array>, salt: TArg<Uint8Array | undefined>, info: TArg<Uint8Array | undefined>, length: number) => TRet<Uint8Array>; | ||
| //# sourceMappingURL=hkdf.d.ts.map |
+50
-18
@@ -46,2 +46,3 @@ /** | ||
| * RFC 5869 §2.3 allows `0..255*HashLen`, so `0` returns an empty OKM. | ||
| * @param _recycled - Internal destroyed extract hashes owned by the combined `hkdf()` call. | ||
| * @returns Output keying material with the requested length. | ||
@@ -58,3 +59,3 @@ * @throws If the requested output length exceeds the HKDF limit | ||
| */ | ||
| export function expand(hash, prk, info, length = 32) { | ||
| export function expand(hash, prk, info, length = 32, _recycled) { | ||
| ahash(hash); | ||
@@ -75,23 +76,47 @@ anumber(length, 'length'); | ||
| abytes(info, undefined, 'info'); | ||
| if (!blocks) { | ||
| if (_recycled) | ||
| clean(prk); // Full hkdf() owns this intermediate PRK. | ||
| return new Uint8Array(); | ||
| } | ||
| // first L(ength) octets of T | ||
| const okm = new Uint8Array(blocks * olen); | ||
| // Re-use HMAC instance between blocks | ||
| const HMAC = hmac.create(hash, prk); | ||
| const HMACTmp = HMAC._cloneInto(); | ||
| const T = new Uint8Array(HMAC.outputLen); | ||
| for (let counter = 0; counter < blocks; counter++) { | ||
| // The private PRK can become both T and a one-block result after HMAC consumes the key. | ||
| const okm = _recycled && blocks === 1 ? prk : new Uint8Array(blocks * olen); | ||
| const { iHash, oHash } = hmac.create(hash, prk); | ||
| // Driving them directly also skips `_HMAC.digestInto`'s per-digest destroy. | ||
| const T = _recycled ? prk : new Uint8Array(olen); | ||
| // Full hkdf() donates one destroyed extract hash; standalone creates one alternating worker. | ||
| const worker = blocks > 1 ? _recycled?.iHash || hash.create() : undefined; | ||
| for (let counter = 0; counter < blocks - 1; counter++) { | ||
| HKDF_COUNTER[0] = counter + 1; | ||
| const iWork = iHash._cloneInto(worker); | ||
| // T(0) = empty string (zero length) | ||
| // T(N) = HMAC-Hash(PRK, T(N-1) | info | N) | ||
| HMACTmp.update(counter === 0 ? EMPTY_BUFFER : T) | ||
| .update(info) | ||
| .update(HKDF_COUNTER) | ||
| .digestInto(T); | ||
| if (counter) | ||
| iWork.update(T); | ||
| iWork.update(info).update(HKDF_COUNTER).digestInto(T); | ||
| oHash._cloneInto(worker).update(T).digestInto(T); | ||
| okm.set(T, olen * counter); | ||
| HMAC._cloneInto(HMACTmp); | ||
| } | ||
| HMAC.destroy(); | ||
| HMACTmp.destroy(); | ||
| clean(T, HKDF_COUNTER); | ||
| return okm.slice(0, length); | ||
| // Midstates are key-equivalent: they allow computing HMAC(prk, ...) for any message. | ||
| HKDF_COUNTER[0] = blocks; // Final block consumes them; retain worker for cleanup. | ||
| if (blocks > 1) | ||
| iHash.update(T); | ||
| iHash.update(info).update(HKDF_COUNTER).digestInto(T); | ||
| oHash.update(T).digestInto(T); | ||
| okm.set(T, olen * (blocks - 1)); | ||
| iHash.destroy(); // Raw digests may leave key-derived base/worker state; wipe all explicitly. | ||
| oHash.destroy(); | ||
| worker?.destroy(); | ||
| if (T !== okm) | ||
| clean(T); // Wipe private T/PRK; standalone preserves caller-owned PRK. | ||
| clean(HKDF_COUNTER); | ||
| // Exact fit: return without the extra copy. | ||
| if (length === okm.length) | ||
| return okm; | ||
| // Copy the requested prefix, then wipe the full buffer: its tail holds | ||
| // up to HashLen-1 bytes of derived key material past `length`. | ||
| const res = okm.slice(0, length); | ||
| clean(okm); | ||
| return res; | ||
| } | ||
@@ -122,3 +147,10 @@ /** | ||
| */ | ||
| export const hkdf = (hash, ikm, salt, info, length) => expand(hash, extract(hash, ikm, salt), info, length); | ||
| //# sourceMappingURL=hkdf.js.map | ||
| export const hkdf = (hash, ikm, salt, info, length) => { | ||
| ahash(hash); | ||
| if (salt === undefined) | ||
| salt = new Uint8Array(hash.outputLen); | ||
| const HMAC = hmac.create(hash, salt).update(ikm); | ||
| // The intermediate PRK is secret key material; wipe it instead of | ||
| // leaving it for GC. | ||
| return expand(hash, HMAC.digest(), info, length, HMAC); // expand() owns and consumes it. | ||
| }; |
+6
-3
@@ -34,7 +34,11 @@ /** | ||
| * @example | ||
| * Compute an RFC 2104 HMAC. | ||
| * Compute an RFC 2104 HMAC directly and with an incremental state. | ||
| * ```ts | ||
| * import { hmac } from '@noble/hashes/hmac.js'; | ||
| * import { sha256 } from '@noble/hashes/sha2.js'; | ||
| * const mac = hmac(sha256, new Uint8Array([1, 2, 3]), new Uint8Array([4, 5, 6])); | ||
| * const key = new Uint8Array([1, 2, 3]); | ||
| * const message = new Uint8Array([4, 5, 6]); | ||
| * const mac = hmac(sha256, key, message); | ||
| * const out = new Uint8Array(sha256.outputLen); | ||
| * hmac.create(sha256, key).update(message).digestInto(out); | ||
| * ``` | ||
@@ -48,2 +52,1 @@ */ | ||
| export {}; | ||
| //# sourceMappingURL=hmac.d.ts.map |
+3
-3
@@ -24,3 +24,3 @@ /** | ||
| if (typeof this.iHash.update !== 'function') | ||
| throw new Error('Expected instance of class which extends utils.Hash'); | ||
| throw new Error('expected Hash instance'); | ||
| this.blockLen = this.iHash.blockLen; | ||
@@ -70,3 +70,3 @@ this.outputLen = this.iHash.outputLen; | ||
| to ||= Object.create(Object.getPrototypeOf(this), {}); | ||
| const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this; | ||
| const { oHash, iHash, finished, destroyed, blockLen, outputLen, canXOF } = this; | ||
| to = to; | ||
@@ -77,2 +77,3 @@ to.finished = finished; | ||
| to.outputLen = outputLen; | ||
| to.canXOF = canXOF; | ||
| to.oHash = oHash._cloneInto(to.oHash); | ||
@@ -96,2 +97,1 @@ to.iHash = iHash._cloneInto(to.iHash); | ||
| })(); | ||
| //# sourceMappingURL=hmac.js.map |
+0
-1
| export {}; | ||
| //# sourceMappingURL=index.d.ts.map |
+0
-1
@@ -35,2 +35,1 @@ /** | ||
| export {}; | ||
| //# sourceMappingURL=index.js.map |
+6
-1
@@ -25,2 +25,3 @@ /** | ||
| protected set(A: number, B: number, C: number, D: number, E: number): void; | ||
| _cloneInto(to?: _SHA1): _SHA1; | ||
| protected process(view: DataView, offset: number): void; | ||
@@ -33,2 +34,3 @@ protected roundClean(): void; | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -51,2 +53,3 @@ * @example | ||
| protected set(A: number, B: number, C: number, D: number): void; | ||
| _cloneInto(to?: _MD5): _MD5; | ||
| protected process(view: DataView, offset: number): void; | ||
@@ -65,2 +68,3 @@ protected roundClean(): void; | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -87,2 +91,3 @@ * @example | ||
| protected set(h0: number, h1: number, h2: number, h3: number, h4: number): void; | ||
| _cloneInto(to?: _RIPEMD160): _RIPEMD160; | ||
| protected process(view: DataView, offset: number): void; | ||
@@ -99,2 +104,3 @@ protected roundClean(): void; | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -108,2 +114,1 @@ * @example | ||
| export declare const ripemd160: TRet<CHash>; | ||
| //# sourceMappingURL=legacy.d.ts.map |
+28
-7
@@ -42,2 +42,6 @@ /** | ||
| } | ||
| _cloneInto(to) { | ||
| (to ||= new this.constructor()).set(...this.get()); | ||
| return this._cloneIntoMeta(to); | ||
| } | ||
| process(view, offset) { | ||
@@ -97,2 +101,3 @@ for (let i = 0; i < 16; i++, offset += 4) | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -114,2 +119,13 @@ * @example | ||
| const MD5_W = /* @__PURE__ */ new Uint32Array(16); | ||
| // RFC 1321 §3.4 per-round rotate amounts, flattened to 64 entries so the round loop | ||
| // avoids allocating a 4-element array literal every round (measured ~5% of md5). | ||
| const MD5_SHIFTS = /* @__PURE__ */ (() => { | ||
| const S = [ | ||
| [7, 12, 17, 22], | ||
| [5, 9, 14, 20], | ||
| [4, 11, 16, 23], | ||
| [6, 10, 15, 21], | ||
| ]; | ||
| return Uint8Array.from({ length: 64 }, (_, i) => S[Math.floor(i / 16)][i % 4]); | ||
| })(); | ||
| /** Internal MD5 legacy hash class. */ | ||
@@ -134,2 +150,6 @@ export class _MD5 extends HashMD { | ||
| } | ||
| _cloneInto(to) { | ||
| (to ||= new this.constructor()).set(...this.get()); | ||
| return this._cloneIntoMeta(to); | ||
| } | ||
| process(view, offset) { | ||
@@ -141,7 +161,6 @@ for (let i = 0; i < 16; i++, offset += 4) | ||
| for (let i = 0; i < 64; i++) { | ||
| let F, g, s; | ||
| let F, g; | ||
| if (i < 16) { | ||
| F = Chi(B, C, D); | ||
| g = i; | ||
| s = [7, 12, 17, 22]; | ||
| } | ||
@@ -152,3 +171,2 @@ else if (i < 32) { | ||
| g = (5 * i + 1) % 16; | ||
| s = [5, 9, 14, 20]; | ||
| } | ||
@@ -158,3 +176,2 @@ else if (i < 48) { | ||
| g = (3 * i + 5) % 16; | ||
| s = [4, 11, 16, 23]; | ||
| } | ||
@@ -164,3 +181,2 @@ else { | ||
| g = (7 * i) % 16; | ||
| s = [6, 10, 15, 21]; | ||
| } | ||
@@ -171,3 +187,3 @@ F = F + A + K[i] + MD5_W[g]; | ||
| C = B; | ||
| B = B + rotl(F, s[i % 4]); | ||
| B = B + rotl(F, MD5_SHIFTS[i]); | ||
| } | ||
@@ -201,2 +217,3 @@ // Add the compressed chunk to the current hash value | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -287,2 +304,6 @@ * @example | ||
| } | ||
| _cloneInto(to) { | ||
| (to ||= new this.constructor()).set(...this.get()); | ||
| return this._cloneIntoMeta(to); | ||
| } | ||
| process(view, offset) { | ||
@@ -330,2 +351,3 @@ for (let i = 0; i < 16; i++, offset += 4) | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -339,2 +361,1 @@ * @example | ||
| export const ripemd160 = /* @__PURE__ */ createHasher(() => new _RIPEMD160()); | ||
| //# sourceMappingURL=legacy.js.map |
+7
-17
| { | ||
| "name": "@noble/hashes", | ||
| "version": "2.2.0", | ||
| "version": "2.3.0", | ||
| "description": "Audited & minimal 0-dependency JS implementation of SHA, RIPEMD, BLAKE, HMAC, HKDF, PBKDF & Scrypt", | ||
| "files": [ | ||
| "*.js", | ||
| "*.js.map", | ||
| "*.d.ts", | ||
| "*.d.ts.map", | ||
| "src" | ||
| ], | ||
| "devDependencies": { | ||
| "@paulmillr/jsbt": "0.5.0", | ||
| "@paulmillr/jsbt": "0.6.5", | ||
| "@types/node": "25.3.0", | ||
@@ -20,18 +18,10 @@ "fast-check": "4.2.0", | ||
| "scripts": { | ||
| "bench": "node test/benchmark/noble.ts", | ||
| "bench:compare": "MBENCH_DIMS='algorithm,buffer,library' node test/benchmark/hashes.ts", | ||
| "bench:compare-scrypt": "MBENCH_DIMS='iters,library' MBENCH_FILTER='async' node test/benchmark/scrypt.ts", | ||
| "bench:install": "cd test/benchmark; npm install", | ||
| "benchmark": "node benchmark/hashes.ts", | ||
| "benchmark:thirdparty": "cd benchmark/thirdparty; npm ci; JSBT_BENCHMARK_DIMENSIONS='algorithm,buffer,library' node hashes.ts", | ||
| "benchmark:thirdparty-scrypt": "cd benchmark/thirdparty; npm ci; JSBT_BENCHMARK_DIMENSIONS='iters,library' JSBT_BENCHMARK_FILTER='async' node scrypt.ts", | ||
| "build": "tsc", | ||
| "build:release": "npx --no @paulmillr/jsbt esbuild test/build", | ||
| "check": "npm run check:readme && npm run check:treeshake && npm run check:jsdoc", | ||
| "check:readme": "npx --no @paulmillr/jsbt readme package.json", | ||
| "check:treeshake": "npx --no @paulmillr/jsbt treeshake package.json test/build/out-treeshake", | ||
| "check:jsdoc": "npx --no @paulmillr/jsbt tsdoc package.json", | ||
| "build:clean": "rm *.{js,js.map,d.ts,d.ts.map} 2> /dev/null", | ||
| "build:clean": "rm *.{js,d.ts} 2> /dev/null", | ||
| "check": "jsbt-check", | ||
| "format": "prettier --write 'src/**/*.{js,ts}' 'test/**/*.{js,ts}'", | ||
| "test": "node test/index.ts", | ||
| "test:bun": "bun test/index.ts", | ||
| "test:deno": "deno --allow-env --allow-read test/index.ts", | ||
| "test:node20": "cd test; npx tsc; node compiled/test/index.js", | ||
| "test:dos": "node test/slow-dos.test.ts", | ||
@@ -38,0 +28,0 @@ "test:slow": "node test/slow-big.test.ts", |
+13
-3
@@ -34,3 +34,3 @@ import { type CHash, type KDFInput, type TArg, type TRet } from './utils.ts'; | ||
| */ | ||
| export declare function pbkdf2(hash: TArg<CHash>, password: TArg<KDFInput>, salt: TArg<KDFInput>, opts: TArg<Pbkdf2Opt>): TRet<Uint8Array>; | ||
| export declare function pbkdf2(hash: TArg<CHash>, password: TArg<KDFInput>, salt: TArg<KDFInput>, opts: Pbkdf2Opt): TRet<Uint8Array>; | ||
| /** | ||
@@ -55,4 +55,14 @@ * PBKDF2-HMAC: RFC 8018 key derivation function. Async version. | ||
| * ``` | ||
| * @example | ||
| * Tune the async PBKDF2 scheduler for short UI tasks. | ||
| * ```ts | ||
| * import { pbkdf2Async } from '@noble/hashes/pbkdf2.js'; | ||
| * import { sha256 } from '@noble/hashes/sha2.js'; | ||
| * const key = await pbkdf2Async(sha256, 'password', 'salt', { | ||
| * dkLen: 32, | ||
| * c: 32, | ||
| * asyncTick: 1, | ||
| * }); | ||
| * ``` | ||
| */ | ||
| export declare function pbkdf2Async(hash: TArg<CHash>, password: TArg<KDFInput>, salt: TArg<KDFInput>, opts: TArg<Pbkdf2Opt>): Promise<TRet<Uint8Array>>; | ||
| //# sourceMappingURL=pbkdf2.d.ts.map | ||
| export declare function pbkdf2Async(hash: TArg<CHash>, password: TArg<KDFInput>, salt: TArg<KDFInput>, opts: Pbkdf2Opt): Promise<TRet<Uint8Array>>; |
+73
-50
@@ -8,3 +8,3 @@ /** | ||
| import { ahash, anumber, asyncLoop, checkOpts, clean, createView, kdfInputToBytes } from "./utils.js"; | ||
| // Common start and end for sync/async functions | ||
| // Common validation and per-call state setup for sync/async functions. | ||
| function pbkdf2Init(hash, _password, _salt, _opts) { | ||
@@ -18,3 +18,3 @@ ahash(hash); | ||
| if (c < 1) | ||
| throw new Error('iterations (c) must be >= 1'); | ||
| throw new Error('"c" (iterations) must be >= 1'); | ||
| // RFC 8018 §5.2 defines `dkLen` as "a positive integer". | ||
@@ -27,21 +27,52 @@ if (dkLen < 1) | ||
| throw new Error('derived key too long'); | ||
| const password = kdfInputToBytes(_password, 'password'); | ||
| const salt = kdfInputToBytes(_salt, 'salt'); | ||
| const p = kdfInputToBytes(_password, 'password'); | ||
| const s = kdfInputToBytes(_salt, 'salt'); | ||
| // DK = PBKDF2(PRF, Password, Salt, c, dkLen); | ||
| const DK = new Uint8Array(dkLen); | ||
| // U1 = PRF(Password, Salt + INT_32_BE(i)) | ||
| const PRF = hmac.create(hash, password); | ||
| // Cache PRF(P, S || ...) prefix state so each block only appends INT_32_BE(i). | ||
| const PRFSalt = PRF._cloneInto().update(salt); | ||
| return { c, dkLen, asyncTick, DK, PRF, PRFSalt }; | ||
| const { iHash, oHash, outputLen } = hmac.create(hash, p); | ||
| // Drive keyed hashes directly; the wrapper is only needed to initialize their HMAC midstates. | ||
| const u = new Uint8Array(outputLen); | ||
| const eng = pbkdf2Engine(iHash, oHash, s, u); | ||
| return { c, dkLen, asyncTick, DK, outputLen, eng }; | ||
| } | ||
| function pbkdf2Output(PRF, PRFSalt, DK, prfW, u) { | ||
| // Shared sync/async cleanup point: wipe transient PRF state | ||
| // while preserving the derived key buffer. | ||
| PRF.destroy(); | ||
| PRFSalt.destroy(); | ||
| if (prfW) | ||
| prfW.destroy(); | ||
| clean(u); | ||
| return DK; | ||
| // Per-call PRF driver writes U1 into both `u` and `Ti`, then later digests into `u`; | ||
| // shared by the sync and async variants. | ||
| function pbkdf2Engine(iHash, oHash, salt, u) { | ||
| const counter = new Uint8Array(4); | ||
| const view = createView(counter); | ||
| // Full clones retain tree/config state; absorb salt before async yields without cloning input. | ||
| const salted = iHash._cloneInto().update(salt); | ||
| // u1() overwrites the worker before reading it. Seed from the outer midstate so a long salt | ||
| // cannot pre-populate a tree stack that the first reset would abandon without wiping. | ||
| const work = oHash._cloneInto(); | ||
| const iClone = iHash._cloneInto; // Capture before mixed feedback can materialize state tuples. | ||
| const oClone = oHash._cloneInto; | ||
| return { | ||
| u1: (ti, Ti) => { | ||
| view.setInt32(0, ti, false); | ||
| salted._cloneInto(work).update(counter).digestInto(u); | ||
| oHash._cloneInto(work).update(u).digestInto(u); | ||
| Ti.set(u.subarray(0, Ti.length)); | ||
| }, | ||
| // Whole `F` inner loop for the sync variant: one optimized function owns the hot loop. | ||
| rounds: (c, Ti) => { | ||
| for (let ui = 1; ui < c; ui++) { | ||
| iClone.call(iHash, work).update(u).digestInto(u); | ||
| oClone.call(oHash, work).update(u).digestInto(u); | ||
| for (let i = 0; i < Ti.length; i++) | ||
| Ti[i] ^= u[i]; | ||
| } | ||
| }, | ||
| output: (DK) => { | ||
| // Keyed templates and derived worker states are secret material. | ||
| iHash.destroy(); | ||
| oHash.destroy(); | ||
| salted.destroy(); | ||
| work.destroy(); | ||
| // Shared sync/async cleanup point: wipe transient PRF state | ||
| // while preserving the derived key buffer. | ||
| clean(u); | ||
| return DK; | ||
| }, | ||
| }; | ||
| } | ||
@@ -67,26 +98,16 @@ /** | ||
| export function pbkdf2(hash, password, salt, opts) { | ||
| const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts); | ||
| let prfW; // Working copy | ||
| const arr = new Uint8Array(4); | ||
| const view = createView(arr); | ||
| const u = new Uint8Array(PRF.outputLen); | ||
| const { c, dkLen, DK, outputLen, eng } = pbkdf2Init(hash, password, salt, opts); | ||
| // DK = T1 + T2 + ⋯ + Tdklen/hlen | ||
| for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) { | ||
| for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += outputLen) { | ||
| // Ti = F(Password, Salt, c, i) | ||
| // The last Ti view can be shorter than hLen, which applies | ||
| // RFC 8018 §5.2 step 4's T_l<0..r-1> truncation without extra copies. | ||
| const Ti = DK.subarray(pos, pos + PRF.outputLen); | ||
| view.setInt32(0, ti, false); | ||
| const Ti = DK.subarray(pos, pos + outputLen); | ||
| // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc | ||
| // U1 = PRF(Password, Salt + INT_32_BE(i)) | ||
| (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u); | ||
| Ti.set(u.subarray(0, Ti.length)); | ||
| for (let ui = 1; ui < c; ui++) { | ||
| // Uc = PRF(Password, Uc−1) | ||
| PRF._cloneInto(prfW).update(u).digestInto(u); | ||
| for (let i = 0; i < Ti.length; i++) | ||
| Ti[i] ^= u[i]; | ||
| } | ||
| eng.u1(ti, Ti); | ||
| // Uc = PRF(Password, Uc−1); Ti ^= Uc | ||
| eng.rounds(c, Ti); | ||
| } | ||
| return pbkdf2Output(PRF, PRFSalt, DK, prfW, u); | ||
| return eng.output(DK); | ||
| } | ||
@@ -112,29 +133,31 @@ /** | ||
| * ``` | ||
| * @example | ||
| * Tune the async PBKDF2 scheduler for short UI tasks. | ||
| * ```ts | ||
| * import { pbkdf2Async } from '@noble/hashes/pbkdf2.js'; | ||
| * import { sha256 } from '@noble/hashes/sha2.js'; | ||
| * const key = await pbkdf2Async(sha256, 'password', 'salt', { | ||
| * dkLen: 32, | ||
| * c: 32, | ||
| * asyncTick: 1, | ||
| * }); | ||
| * ``` | ||
| */ | ||
| export async function pbkdf2Async(hash, password, salt, opts) { | ||
| const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts); | ||
| let prfW; // Working copy | ||
| const arr = new Uint8Array(4); | ||
| const view = createView(arr); | ||
| const u = new Uint8Array(PRF.outputLen); | ||
| const { c, dkLen, asyncTick, DK, outputLen, eng } = pbkdf2Init(hash, password, salt, opts); | ||
| // DK = T1 + T2 + ⋯ + Tdklen/hlen | ||
| for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) { | ||
| for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += outputLen) { | ||
| // Ti = F(Password, Salt, c, i) | ||
| // The last Ti view can be shorter than hLen, which applies | ||
| // RFC 8018 §5.2 step 4's T_l<0..r-1> truncation without extra copies. | ||
| const Ti = DK.subarray(pos, pos + PRF.outputLen); | ||
| view.setInt32(0, ti, false); | ||
| const Ti = DK.subarray(pos, pos + outputLen); | ||
| // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc | ||
| // U1 = PRF(Password, Salt + INT_32_BE(i)) | ||
| (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u); | ||
| Ti.set(u.subarray(0, Ti.length)); | ||
| eng.u1(ti, Ti); | ||
| await asyncLoop(c - 1, asyncTick, () => { | ||
| // Uc = PRF(Password, Uc−1) | ||
| PRF._cloneInto(prfW).update(u).digestInto(u); | ||
| for (let i = 0; i < Ti.length; i++) | ||
| Ti[i] ^= u[i]; | ||
| eng.rounds(2, Ti); // c=2 runs exactly one PRF iteration per callback. | ||
| }); | ||
| } | ||
| return pbkdf2Output(PRF, PRFSalt, DK, prfW, u); | ||
| return eng.output(DK); | ||
| } | ||
| //# sourceMappingURL=pbkdf2.js.map |
+46
-30
@@ -6,14 +6,9 @@ # noble-hashes | ||
| - 🔒 [**Audited**](#security) by an independent security firm | ||
| - 🔻 Tree-shakeable: unused code is excluded from your builds | ||
| - 🪶 Minimal: 2.7KB (gzipped) sha256, unused code is excluded from your builds | ||
| - 🏎 Fast: hand-optimized for caveats of JS engines | ||
| - 🔍 Reliable: chained / sliding window / DoS / ACVP tests and fuzzing | ||
| - 🔍 Reliable: chained / ACVP tests ensure correctness | ||
| - 🔁 No unrolled loops: makes it easier to verify and reduces source code size up to 5x | ||
| - 🦘 Includes SHA, RIPEMD, BLAKE, HMAC, HKDF, PBKDF, Scrypt, Argon2 | ||
| - 🥈 Optional, friendly wrapper over native WebCrypto | ||
| - 🪶 22KB (gzipped) for everything, 2.4KB for single-hash build | ||
| - 🥈 Wrapper with identical API over native WebCrypto | ||
| Use [awasm-noble](https://github.com/paulmillr/awasm-noble) if you need an even faster (WASM) alternative. | ||
| Check out [Upgrading](#upgrading) for information about upgrading from previous versions. | ||
| Take a glance at [GitHub Discussions](https://github.com/paulmillr/noble-hashes/discussions) for questions and support. | ||
| The library's initial development was funded by [Ethereum Foundation](https://ethereum.org/). | ||
@@ -35,2 +30,3 @@ | ||
| [ed25519](https://github.com/paulmillr/noble-ed25519) | ||
| - WASM version: [awasm-noble](https://github.com/paulmillr/awasm-noble) | ||
| - [Check out the homepage](https://paulmillr.com/noble/) | ||
@@ -74,2 +70,3 @@ for reading resources, documentation, and apps built with noble | ||
| import { argon2d, argon2i, argon2id } from '@noble/hashes/argon2.js'; | ||
| import { eskdf } from '@noble/hashes/eskdf.js'; | ||
| import * as webcrypto from '@noble/hashes/webcrypto.js'; | ||
@@ -87,3 +84,3 @@ // const { sha256, sha384, sha512, hmac, hkdf, pbkdf2 } = webcrypto; | ||
| - MACs: [hmac](#hmac) | [kmac](#sha3-addons-cshake-kmac-kt128-turboshake) | [blake3 key mode](#blake1-blake2-blake3) | ||
| - KDFs: [hkdf](#hkdf) | [pbkdf2](#pbkdf2) | [scrypt](#scrypt) | [argon2](#argon2) | ||
| - KDFs: [hkdf](#hkdf) | [pbkdf2](#pbkdf2) | [scrypt](#scrypt) | [argon2](#argon2) | [eskdf](#eskdf) | ||
| - [webcrypto: friendly wrapper](#webcrypto-friendly-wrapper) | ||
@@ -115,3 +112,3 @@ - [utils](#utils) | ||
| Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and | ||
| Check out [RFC 6234](https://datatracker.ietf.org/doc/html/rfc6234) and | ||
| [the paper on truncated SHA512/256](https://eprint.iacr.org/2010/548.pdf). | ||
@@ -144,3 +141,3 @@ | ||
| #### sha3-addons: cSHAKE, KMAC, K12, TurboSHAKE | ||
| #### sha3-addons: cSHAKE, KMAC, KT128, TurboSHAKE | ||
@@ -170,3 +167,2 @@ ```typescript | ||
| // pseudo-random generator, first argument is capacity. XKCP recommends 254 bits capacity for 128-bit security strength. | ||
| // * with a capacity of 254 bits. | ||
| const p = keccakprg(254); | ||
@@ -221,6 +217,6 @@ p.addEntropy(Uint8Array.from([1, 2, 3])); | ||
| SHA1 (RFC 3174), MD5 (RFC 1321) and RIPEMD160 (RFC 2286) legacy, weak hash functions. | ||
| SHA1 (RFC 3174), MD5 (RFC 1321) and RIPEMD160 (ISO/IEC 10118-3) legacy, weak hash functions. | ||
| Don't use them in a new protocol. What "weak" means: | ||
| - Collisions can be made with 2^18 effort in MD5, 2^60 in SHA1, 2^80 in RIPEMD160. | ||
| - Collisions can be made with 2^24 effort in MD5 (seconds on commodity hardware), 2^61 in SHA1 (demonstrated in practice), 2^80 in RIPEMD160. | ||
| - No practical pre-image attacks (only theoretical, 2^123.4) | ||
@@ -283,3 +279,3 @@ - HMAC seems kinda ok: https://datatracker.ietf.org/doc/html/rfc6151 | ||
| Conforms to [RFC 2898](https://datatracker.ietf.org/doc/html/rfc2898). | ||
| Conforms to [RFC 8018](https://datatracker.ietf.org/doc/html/rfc8018). | ||
@@ -300,3 +296,3 @@ #### scrypt | ||
| }, | ||
| maxmem: 2 ** 32 + 128 * 8 * 1, // N * r * p * 128 + (128*r*p) | ||
| maxmem: 128 * 8 * (2 ** 17 + 1 + 1), // 128 * r * (N + p + 1) | ||
| }); | ||
@@ -313,3 +309,3 @@ ``` | ||
| - `onProgress` can be used with async version of the function to report progress to a user. | ||
| - `maxmem` prevents DoS and is limited to `1GB + 1KB` (`2**30 + 2**10`), but can be adjusted using formula: `N * r * p * 128 + (128 * r * p)` | ||
| - `maxmem` prevents DoS and is limited to `1GB + 1KB` (`2**30 + 2**10`), but can be adjusted using formula: `128 * r * (N + p + 1)` | ||
@@ -350,2 +346,16 @@ Time it takes to derive Scrypt key under different values of N (2\*\*N) on Apple M4 (mobile phones can be 1x-4x slower): | ||
| #### eskdf | ||
| ```ts | ||
| import { eskdf } from '@noble/hashes/eskdf.js'; | ||
| const kdf = await eskdf('example-university', 'beginning-new-example'); | ||
| console.log(kdf.fingerprint); | ||
| const key = kdf.deriveChildKey('aes', 0); | ||
| kdf.expire(); | ||
| ``` | ||
| Experimental KDF for deriving application-specific child keys from a username + password pair, | ||
| built on scrypt, pbkdf2 and hkdf with fixed work factors. | ||
| Non-standard: prefer [scrypt](#scrypt) or [argon2](#argon2) for new designs. | ||
| #### webcrypto: friendly wrapper | ||
@@ -401,3 +411,4 @@ | ||
| It is tested against property-based, cross-library and Wycheproof vectors, | ||
| It is tested against official (ACVP / KAT) vectors, cross-library chained hashing, | ||
| sliding-window length sweeps and property-based tests (fast-check), | ||
| and is being fuzzed in [the separate repo](https://github.com/paulmillr/fuzzing). | ||
@@ -497,9 +508,11 @@ | ||
| `test/misc` directory contains implementations of loop unrolling and md5. | ||
| `test/misc` directory contains unrolled implementations (sha3, argon2) and misc helper scripts. | ||
| - `npm install && npm run build && npm test` will build the code and run tests. | ||
| - `npm run lint` / `npm run format` will run linter / fix linter issues. | ||
| - `npm run bench` will run benchmarks | ||
| - `npm run build:release` will build single file | ||
| - There is **additional** 20-min DoS test `npm run test:dos` and 2-hour multicore test `npm run test:slow`. | ||
| - `npm run check` / `npm run format` will run linter / fix linter issues. | ||
| - `npm run benchmark` will run benchmarks | ||
| - `npm run bundle` will build single file | ||
| - There are **additional** slow suites: 20-min DoS test `npm run test:dos`, | ||
| multi-hour 4GB-input test `npm run test:slow`, ACVP vectors `npm run test:acvp` | ||
| and KDF vectors `npm run test:kdf`. | ||
| See [our approach to testing](./test/README.md) | ||
@@ -517,7 +530,14 @@ | ||
| ```sh | ||
| npm run bench | ||
| npm run benchmark | ||
| ``` | ||
| Benchmarks measured on Apple M4. If you need truly exemplar performance, switch to [awasm-noble](https://github.com/paulmillr/awasm-noble). | ||
| Benchmarks measured on Apple M4. | ||
| The library could be 3x faster by utilizing loop unrolling. It isn't used because | ||
| unrolling a) would increase bundle size b) make lib un-readable c) current perf is "fast enough" | ||
| for most use-cases. | ||
| If you need truly exemplar performance, switch to [awasm-noble](https://github.com/paulmillr/awasm-noble), | ||
| which does unrolling in an auditable way and allows to achieve 10GB/s BLAKE3. | ||
| ``` | ||
@@ -529,3 +549,3 @@ # 32B | ||
| sha3_512 x 288,267 ops/sec @ 3μs/op | ||
| k12 x 476,190 ops/sec @ 2μs/op | ||
| kt128 x 476,190 ops/sec @ 2μs/op | ||
| blake2b x 410,340 ops/sec @ 2μs/op | ||
@@ -569,6 +589,2 @@ blake2s x 942,507 ops/sec @ 1μs/op | ||
| The library could be 3x faster by utilizing loop unrolling. It isn't used because | ||
| unrolling a) would increase bundle size b) make lib un-readable c) current perf is "fast enough" | ||
| for most use-cases. | ||
| ## License | ||
@@ -575,0 +591,0 @@ |
+36
-4
@@ -27,3 +27,5 @@ import { type KDFInput, type TArg, type TRet } from './utils.ts'; | ||
| * Optional progress callback invoked during long-running derivations. | ||
| * param progress - completion fraction in the `0..1` range | ||
| * @param progress - completion fraction in the `0..1` range | ||
| * Should not throw; if it does, derivation is aborted and scrypt work | ||
| * buffers are wiped before the error propagates. | ||
| */ | ||
@@ -46,4 +48,20 @@ onProgress?: (progress: number) => void; | ||
| * ``` | ||
| * @example | ||
| * Derive a key with small demo costs and progress/memory controls. | ||
| * ```ts | ||
| * const progressLog: number[] = []; | ||
| * scrypt('password', 'salt', { | ||
| * N: 16, | ||
| * r: 8, | ||
| * p: 1, | ||
| * dkLen: 32, | ||
| * maxmem: 1024 * 1024, | ||
| * asyncTick: 10, | ||
| * onProgress(progress) { | ||
| * progressLog.push(progress); | ||
| * }, | ||
| * }); | ||
| * ``` | ||
| */ | ||
| export declare function scrypt(password: TArg<KDFInput>, salt: TArg<KDFInput>, opts: TArg<ScryptOpts>): TRet<Uint8Array>; | ||
| export declare function scrypt(password: TArg<KDFInput>, salt: TArg<KDFInput>, opts: ScryptOpts): TRet<Uint8Array>; | ||
| /** | ||
@@ -65,4 +83,18 @@ * Scrypt KDF from RFC 7914. Async version. See {@link ScryptOpts}. | ||
| * ``` | ||
| * @example | ||
| * Derive a key asynchronously with small demo costs and progress/memory controls. | ||
| * ```ts | ||
| * await scryptAsync('password', 'salt', { | ||
| * N: 16, | ||
| * r: 8, | ||
| * p: 1, | ||
| * dkLen: 32, | ||
| * maxmem: 1024 * 1024, | ||
| * asyncTick: 1, | ||
| * onProgress(progress) { | ||
| * if (progress > 1) throw new Error('invalid progress'); | ||
| * }, | ||
| * }); | ||
| * ``` | ||
| */ | ||
| export declare function scryptAsync(password: TArg<KDFInput>, salt: TArg<KDFInput>, opts: TArg<ScryptOpts>): Promise<TRet<Uint8Array>>; | ||
| //# sourceMappingURL=scrypt.d.ts.map | ||
| export declare function scryptAsync(password: TArg<KDFInput>, salt: TArg<KDFInput>, opts: ScryptOpts): Promise<TRet<Uint8Array>>; |
+48
-4
@@ -113,3 +113,7 @@ /** | ||
| if (onProgress !== undefined && typeof onProgress !== 'function') | ||
| throw new Error('progressCb must be a function'); | ||
| throw new Error('"onProgress" must be a function'); | ||
| // Without this, r=0 slips through: blockSize=0 turns the `p` upper bound into | ||
| // Infinity and the failure surfaces later as a confusing pbkdf2 dkLen error. | ||
| if (r < 1) | ||
| throw new Error('"r" expected integer >= 1'); | ||
| const blockSize = 128 * r; | ||
@@ -151,4 +155,14 @@ const blockSize32 = blockSize / 4; | ||
| blockMixCnt++; | ||
| if (onProgress && (!(blockMixCnt % callbackPer) || blockMixCnt === totalBlockMix)) | ||
| onProgress(blockMixCnt / totalBlockMix); | ||
| if (onProgress && (!(blockMixCnt % callbackPer) || blockMixCnt === totalBlockMix)) { | ||
| // Wiping here instead of a try/catch around the main loops keeps them | ||
| // try-free: measured ~1% slower at N=2^21 with the loops inside a try. | ||
| // onProgress is the only user code that can throw mid-derivation. | ||
| try { | ||
| onProgress(blockMixCnt / totalBlockMix); | ||
| } | ||
| catch (e) { | ||
| clean(B, V, tmp); | ||
| throw e; | ||
| } | ||
| } | ||
| }; | ||
@@ -178,2 +192,18 @@ } | ||
| * ``` | ||
| * @example | ||
| * Derive a key with small demo costs and progress/memory controls. | ||
| * ```ts | ||
| * const progressLog: number[] = []; | ||
| * scrypt('password', 'salt', { | ||
| * N: 16, | ||
| * r: 8, | ||
| * p: 1, | ||
| * dkLen: 32, | ||
| * maxmem: 1024 * 1024, | ||
| * asyncTick: 10, | ||
| * onProgress(progress) { | ||
| * progressLog.push(progress); | ||
| * }, | ||
| * }); | ||
| * ``` | ||
| */ | ||
@@ -227,2 +257,17 @@ export function scrypt(password, salt, opts) { | ||
| * ``` | ||
| * @example | ||
| * Derive a key asynchronously with small demo costs and progress/memory controls. | ||
| * ```ts | ||
| * await scryptAsync('password', 'salt', { | ||
| * N: 16, | ||
| * r: 8, | ||
| * p: 1, | ||
| * dkLen: 32, | ||
| * maxmem: 1024 * 1024, | ||
| * asyncTick: 1, | ||
| * onProgress(progress) { | ||
| * if (progress > 1) throw new Error('invalid progress'); | ||
| * }, | ||
| * }); | ||
| * ``` | ||
| */ | ||
@@ -261,2 +306,1 @@ export async function scryptAsync(password, salt, opts) { | ||
| } | ||
| //# sourceMappingURL=scrypt.js.map |
+34
-107
@@ -12,13 +12,14 @@ /** | ||
| declare abstract class SHA2_32B<T extends SHA2_32B<T>> extends HashMD<T> { | ||
| protected abstract A: number; | ||
| protected abstract B: number; | ||
| protected abstract C: number; | ||
| protected abstract D: number; | ||
| protected abstract E: number; | ||
| protected abstract F: number; | ||
| protected abstract G: number; | ||
| protected abstract H: number; | ||
| constructor(outputLen: number); | ||
| protected A: number; | ||
| protected B: number; | ||
| protected C: number; | ||
| protected D: number; | ||
| protected E: number; | ||
| protected F: number; | ||
| protected G: number; | ||
| protected H: number; | ||
| constructor(outputLen: number, IV: Uint32Array); | ||
| protected get(): [number, number, number, number, number, number, number, number]; | ||
| protected set(A: number, B: number, C: number, D: number, E: number, F: number, G: number, H: number): void; | ||
| _cloneInto(to?: T): T; | ||
| protected process(view: DataView, offset: number): void; | ||
@@ -30,10 +31,2 @@ protected roundClean(): void; | ||
| export declare class _SHA256 extends SHA2_32B<_SHA256> { | ||
| protected A: number; | ||
| protected B: number; | ||
| protected C: number; | ||
| protected D: number; | ||
| protected E: number; | ||
| protected F: number; | ||
| protected G: number; | ||
| protected H: number; | ||
| constructor(); | ||
@@ -43,10 +36,2 @@ } | ||
| export declare class _SHA224 extends SHA2_32B<_SHA224> { | ||
| protected A: number; | ||
| protected B: number; | ||
| protected C: number; | ||
| protected D: number; | ||
| protected E: number; | ||
| protected F: number; | ||
| protected G: number; | ||
| protected H: number; | ||
| constructor(); | ||
@@ -56,19 +41,19 @@ } | ||
| declare abstract class SHA2_64B<T extends SHA2_64B<T>> extends HashMD<T> { | ||
| protected abstract Ah: number; | ||
| protected abstract Al: number; | ||
| protected abstract Bh: number; | ||
| protected abstract Bl: number; | ||
| protected abstract Ch: number; | ||
| protected abstract Cl: number; | ||
| protected abstract Dh: number; | ||
| protected abstract Dl: number; | ||
| protected abstract Eh: number; | ||
| protected abstract El: number; | ||
| protected abstract Fh: number; | ||
| protected abstract Fl: number; | ||
| protected abstract Gh: number; | ||
| protected abstract Gl: number; | ||
| protected abstract Hh: number; | ||
| protected abstract Hl: number; | ||
| constructor(outputLen: number); | ||
| protected Ah: number; | ||
| protected Al: number; | ||
| protected Bh: number; | ||
| protected Bl: number; | ||
| protected Ch: number; | ||
| protected Cl: number; | ||
| protected Dh: number; | ||
| protected Dl: number; | ||
| protected Eh: number; | ||
| protected El: number; | ||
| protected Fh: number; | ||
| protected Fl: number; | ||
| protected Gh: number; | ||
| protected Gl: number; | ||
| protected Hh: number; | ||
| protected Hl: number; | ||
| constructor(outputLen: number, IV: Uint32Array); | ||
| protected get(): [ | ||
@@ -93,2 +78,3 @@ number, | ||
| protected set(Ah: number, Al: number, Bh: number, Bl: number, Ch: number, Cl: number, Dh: number, Dl: number, Eh: number, El: number, Fh: number, Fl: number, Gh: number, Gl: number, Hh: number, Hl: number): void; | ||
| _cloneInto(to?: T): T; | ||
| protected process(view: DataView, offset: number): void; | ||
@@ -100,18 +86,2 @@ protected roundClean(): void; | ||
| export declare class _SHA512 extends SHA2_64B<_SHA512> { | ||
| protected Ah: number; | ||
| protected Al: number; | ||
| protected Bh: number; | ||
| protected Bl: number; | ||
| protected Ch: number; | ||
| protected Cl: number; | ||
| protected Dh: number; | ||
| protected Dl: number; | ||
| protected Eh: number; | ||
| protected El: number; | ||
| protected Fh: number; | ||
| protected Fl: number; | ||
| protected Gh: number; | ||
| protected Gl: number; | ||
| protected Hh: number; | ||
| protected Hl: number; | ||
| constructor(); | ||
@@ -121,18 +91,2 @@ } | ||
| export declare class _SHA384 extends SHA2_64B<_SHA384> { | ||
| protected Ah: number; | ||
| protected Al: number; | ||
| protected Bh: number; | ||
| protected Bl: number; | ||
| protected Ch: number; | ||
| protected Cl: number; | ||
| protected Dh: number; | ||
| protected Dl: number; | ||
| protected Eh: number; | ||
| protected El: number; | ||
| protected Fh: number; | ||
| protected Fl: number; | ||
| protected Gh: number; | ||
| protected Gl: number; | ||
| protected Hh: number; | ||
| protected Hl: number; | ||
| constructor(); | ||
@@ -143,18 +97,2 @@ } | ||
| export declare class _SHA512_224 extends SHA2_64B<_SHA512_224> { | ||
| protected Ah: number; | ||
| protected Al: number; | ||
| protected Bh: number; | ||
| protected Bl: number; | ||
| protected Ch: number; | ||
| protected Cl: number; | ||
| protected Dh: number; | ||
| protected Dl: number; | ||
| protected Eh: number; | ||
| protected El: number; | ||
| protected Fh: number; | ||
| protected Fl: number; | ||
| protected Gh: number; | ||
| protected Gl: number; | ||
| protected Hh: number; | ||
| protected Hl: number; | ||
| constructor(); | ||
@@ -165,18 +103,2 @@ } | ||
| export declare class _SHA512_256 extends SHA2_64B<_SHA512_256> { | ||
| protected Ah: number; | ||
| protected Al: number; | ||
| protected Bh: number; | ||
| protected Bl: number; | ||
| protected Ch: number; | ||
| protected Cl: number; | ||
| protected Dh: number; | ||
| protected Dl: number; | ||
| protected Eh: number; | ||
| protected El: number; | ||
| protected Fh: number; | ||
| protected Fl: number; | ||
| protected Gh: number; | ||
| protected Gl: number; | ||
| protected Hh: number; | ||
| protected Hl: number; | ||
| constructor(); | ||
@@ -192,2 +114,3 @@ } | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -204,2 +127,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -216,2 +140,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -228,2 +153,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -241,2 +167,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -254,2 +181,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -264,2 +192,1 @@ * @example | ||
| export {}; | ||
| //# sourceMappingURL=sha2.d.ts.map |
+79
-91
@@ -30,4 +30,24 @@ /** | ||
| class SHA2_32B extends HashMD { | ||
| constructor(outputLen) { | ||
| // We cannot use array here since array allows indexing by variable | ||
| // which means optimizer/compiler cannot use registers. | ||
| // Numeric initializers matter: starting the fields as `undefined` changes | ||
| // V8's field representation and makes sha256 3x slower (measured). | ||
| A = 0; | ||
| B = 0; | ||
| C = 0; | ||
| D = 0; | ||
| E = 0; | ||
| F = 0; | ||
| G = 0; | ||
| H = 0; | ||
| constructor(outputLen, IV) { | ||
| super(64, outputLen, 8, false); | ||
| this.A = IV[0] | 0; | ||
| this.B = IV[1] | 0; | ||
| this.C = IV[2] | 0; | ||
| this.D = IV[3] | 0; | ||
| this.E = IV[4] | 0; | ||
| this.F = IV[5] | 0; | ||
| this.G = IV[6] | 0; | ||
| this.H = IV[7] | 0; | ||
| } | ||
@@ -49,2 +69,6 @@ get() { | ||
| } | ||
| _cloneInto(to) { | ||
| (to ||= new this.constructor()).set(...this.get()); | ||
| return this._cloneIntoMeta(to); | ||
| } | ||
| process(view, offset) { | ||
@@ -101,14 +125,4 @@ // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array | ||
| export class _SHA256 extends SHA2_32B { | ||
| // We cannot use array here since array allows indexing by variable | ||
| // which means optimizer/compiler cannot use registers. | ||
| A = SHA256_IV[0] | 0; | ||
| B = SHA256_IV[1] | 0; | ||
| C = SHA256_IV[2] | 0; | ||
| D = SHA256_IV[3] | 0; | ||
| E = SHA256_IV[4] | 0; | ||
| F = SHA256_IV[5] | 0; | ||
| G = SHA256_IV[6] | 0; | ||
| H = SHA256_IV[7] | 0; | ||
| constructor() { | ||
| super(32); | ||
| super(32, SHA256_IV); | ||
| } | ||
@@ -118,12 +132,4 @@ } | ||
| export class _SHA224 extends SHA2_32B { | ||
| A = SHA224_IV[0] | 0; | ||
| B = SHA224_IV[1] | 0; | ||
| C = SHA224_IV[2] | 0; | ||
| D = SHA224_IV[3] | 0; | ||
| E = SHA224_IV[4] | 0; | ||
| F = SHA224_IV[5] | 0; | ||
| G = SHA224_IV[6] | 0; | ||
| H = SHA224_IV[7] | 0; | ||
| constructor() { | ||
| super(28); | ||
| super(28, SHA224_IV); | ||
| } | ||
@@ -165,4 +171,41 @@ } | ||
| class SHA2_64B extends HashMD { | ||
| constructor(outputLen) { | ||
| // We cannot use array here since array allows indexing by variable | ||
| // which means optimizer/compiler cannot use registers. | ||
| // h -- high 32 bits, l -- low 32 bits | ||
| // Numeric initializers matter: starting the fields as `undefined` changes | ||
| // V8's field representation and slows hashing down (measured on sha256). | ||
| Ah = 0; | ||
| Al = 0; | ||
| Bh = 0; | ||
| Bl = 0; | ||
| Ch = 0; | ||
| Cl = 0; | ||
| Dh = 0; | ||
| Dl = 0; | ||
| Eh = 0; | ||
| El = 0; | ||
| Fh = 0; | ||
| Fl = 0; | ||
| Gh = 0; | ||
| Gl = 0; | ||
| Hh = 0; | ||
| Hl = 0; | ||
| constructor(outputLen, IV) { | ||
| super(128, outputLen, 16, false); | ||
| this.Ah = IV[0] | 0; | ||
| this.Al = IV[1] | 0; | ||
| this.Bh = IV[2] | 0; | ||
| this.Bl = IV[3] | 0; | ||
| this.Ch = IV[4] | 0; | ||
| this.Cl = IV[5] | 0; | ||
| this.Dh = IV[6] | 0; | ||
| this.Dl = IV[7] | 0; | ||
| this.Eh = IV[8] | 0; | ||
| this.El = IV[9] | 0; | ||
| this.Fh = IV[10] | 0; | ||
| this.Fl = IV[11] | 0; | ||
| this.Gh = IV[12] | 0; | ||
| this.Gl = IV[13] | 0; | ||
| this.Hh = IV[14] | 0; | ||
| this.Hl = IV[15] | 0; | ||
| } | ||
@@ -193,2 +236,6 @@ // prettier-ignore | ||
| } | ||
| _cloneInto(to) { | ||
| (to ||= new this.constructor()).set(...this.get()); | ||
| return this._cloneIntoMeta(to); | ||
| } | ||
| process(view, offset) { | ||
@@ -277,20 +324,4 @@ // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array | ||
| export class _SHA512 extends SHA2_64B { | ||
| Ah = SHA512_IV[0] | 0; | ||
| Al = SHA512_IV[1] | 0; | ||
| Bh = SHA512_IV[2] | 0; | ||
| Bl = SHA512_IV[3] | 0; | ||
| Ch = SHA512_IV[4] | 0; | ||
| Cl = SHA512_IV[5] | 0; | ||
| Dh = SHA512_IV[6] | 0; | ||
| Dl = SHA512_IV[7] | 0; | ||
| Eh = SHA512_IV[8] | 0; | ||
| El = SHA512_IV[9] | 0; | ||
| Fh = SHA512_IV[10] | 0; | ||
| Fl = SHA512_IV[11] | 0; | ||
| Gh = SHA512_IV[12] | 0; | ||
| Gl = SHA512_IV[13] | 0; | ||
| Hh = SHA512_IV[14] | 0; | ||
| Hl = SHA512_IV[15] | 0; | ||
| constructor() { | ||
| super(64); | ||
| super(64, SHA512_IV); | ||
| } | ||
@@ -300,20 +331,4 @@ } | ||
| export class _SHA384 extends SHA2_64B { | ||
| Ah = SHA384_IV[0] | 0; | ||
| Al = SHA384_IV[1] | 0; | ||
| Bh = SHA384_IV[2] | 0; | ||
| Bl = SHA384_IV[3] | 0; | ||
| Ch = SHA384_IV[4] | 0; | ||
| Cl = SHA384_IV[5] | 0; | ||
| Dh = SHA384_IV[6] | 0; | ||
| Dl = SHA384_IV[7] | 0; | ||
| Eh = SHA384_IV[8] | 0; | ||
| El = SHA384_IV[9] | 0; | ||
| Fh = SHA384_IV[10] | 0; | ||
| Fl = SHA384_IV[11] | 0; | ||
| Gh = SHA384_IV[12] | 0; | ||
| Gl = SHA384_IV[13] | 0; | ||
| Hh = SHA384_IV[14] | 0; | ||
| Hl = SHA384_IV[15] | 0; | ||
| constructor() { | ||
| super(48); | ||
| super(48, SHA384_IV); | ||
| } | ||
@@ -344,20 +359,4 @@ } | ||
| export class _SHA512_224 extends SHA2_64B { | ||
| Ah = T224_IV[0] | 0; | ||
| Al = T224_IV[1] | 0; | ||
| Bh = T224_IV[2] | 0; | ||
| Bl = T224_IV[3] | 0; | ||
| Ch = T224_IV[4] | 0; | ||
| Cl = T224_IV[5] | 0; | ||
| Dh = T224_IV[6] | 0; | ||
| Dl = T224_IV[7] | 0; | ||
| Eh = T224_IV[8] | 0; | ||
| El = T224_IV[9] | 0; | ||
| Fh = T224_IV[10] | 0; | ||
| Fl = T224_IV[11] | 0; | ||
| Gh = T224_IV[12] | 0; | ||
| Gl = T224_IV[13] | 0; | ||
| Hh = T224_IV[14] | 0; | ||
| Hl = T224_IV[15] | 0; | ||
| constructor() { | ||
| super(28); | ||
| super(28, T224_IV); | ||
| } | ||
@@ -368,20 +367,4 @@ } | ||
| export class _SHA512_256 extends SHA2_64B { | ||
| Ah = T256_IV[0] | 0; | ||
| Al = T256_IV[1] | 0; | ||
| Bh = T256_IV[2] | 0; | ||
| Bl = T256_IV[3] | 0; | ||
| Ch = T256_IV[4] | 0; | ||
| Cl = T256_IV[5] | 0; | ||
| Dh = T256_IV[6] | 0; | ||
| Dl = T256_IV[7] | 0; | ||
| Eh = T256_IV[8] | 0; | ||
| El = T256_IV[9] | 0; | ||
| Fh = T256_IV[10] | 0; | ||
| Fl = T256_IV[11] | 0; | ||
| Gh = T256_IV[12] | 0; | ||
| Gl = T256_IV[13] | 0; | ||
| Hh = T256_IV[14] | 0; | ||
| Hl = T256_IV[15] | 0; | ||
| constructor() { | ||
| super(32); | ||
| super(32, T256_IV); | ||
| } | ||
@@ -397,2 +380,3 @@ } | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -410,2 +394,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -423,2 +408,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -436,2 +422,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -450,2 +437,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -464,2 +452,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -474,2 +463,1 @@ * @example | ||
| /* @__PURE__ */ oidNist(0x05)); | ||
| //# sourceMappingURL=sha2.js.map |
+74
-10
@@ -33,3 +33,3 @@ /** | ||
| */ | ||
| (messages: TArg<Uint8Array[]>, opts?: TArg<cShakeOpts>): TRet<Uint8Array>; | ||
| (messages: TArg<Uint8Array[]>, opts?: cShakeOpts): TRet<Uint8Array>; | ||
| /** | ||
@@ -41,2 +41,8 @@ * Creates an incremental TupleHash state. | ||
| create(opts?: cShakeOpts): _TupleHash; | ||
| /** Default digest size in bytes. */ | ||
| outputLen: number; | ||
| /** Input block size in bytes. */ | ||
| blockLen: number; | ||
| /** Whether `.create()` returns an XOF-capable instance. */ | ||
| canXOF: boolean; | ||
| }; | ||
@@ -56,2 +62,11 @@ /** | ||
| * ``` | ||
| * @example | ||
| * Hash a message with SP 800-185 domain separation. | ||
| * ```ts | ||
| * cshake128(new Uint8Array([1, 2, 3]), { | ||
| * dkLen: 32, | ||
| * NISTfn: 'Email Signature', | ||
| * personalization: new Uint8Array([1, 2, 3]), | ||
| * }); | ||
| * ``` | ||
| */ | ||
@@ -80,3 +95,3 @@ export declare const cshake128: TRet<CHashXOF<Keccak, cShakeOpts>>; | ||
| export declare class _KMAC extends Keccak implements HashXOF<_KMAC> { | ||
| constructor(blockLen: number, outputLen: number, enableXOF: boolean, key: TArg<Uint8Array>, opts?: TArg<cShakeOpts>); | ||
| constructor(blockLen: number, outputLen: number, enableXOF: boolean, key: TArg<Uint8Array>, opts?: cShakeOpts); | ||
| protected finish(): void; | ||
@@ -92,6 +107,6 @@ _cloneInto(to?: _KMAC): _KMAC; | ||
| * @param message - Message bytes to authenticate. | ||
| * @param opts - KMAC output and personalization options. See {@link KangarooOpts}. | ||
| * @param opts - KMAC output and personalization options. See {@link cShakeOpts}. | ||
| * @returns Authentication tag bytes. | ||
| */ | ||
| (key: TArg<Uint8Array>, message: TArg<Uint8Array>, opts?: TArg<KangarooOpts>): TRet<Uint8Array>; | ||
| (key: TArg<Uint8Array>, message: TArg<Uint8Array>, opts?: cShakeOpts): TRet<Uint8Array>; | ||
| /** | ||
@@ -103,3 +118,9 @@ * Creates an incremental KMAC state. | ||
| */ | ||
| create(key: TArg<Uint8Array>, opts?: TArg<cShakeOpts>): _KMAC; | ||
| create(key: TArg<Uint8Array>, opts?: cShakeOpts): _KMAC; | ||
| /** Default tag size in bytes. */ | ||
| outputLen: number; | ||
| /** Input block size in bytes. */ | ||
| blockLen: number; | ||
| /** Whether `.create()` returns an XOF-capable instance. */ | ||
| canXOF: boolean; | ||
| }; | ||
@@ -116,4 +137,16 @@ /** | ||
| * ```ts | ||
| * kmac128(new Uint8Array([1, 2, 3]), new Uint8Array([4, 5, 6])); | ||
| * const key = new Uint8Array([1, 2, 3]); | ||
| * const message = new Uint8Array([4, 5, 6]); | ||
| * kmac128(key, message); | ||
| * ``` | ||
| * @example | ||
| * Authenticate a message with output options and an incremental state. | ||
| * ```ts | ||
| * const key = new Uint8Array([1, 2, 3]); | ||
| * const message = new Uint8Array([4, 5, 6]); | ||
| * const opts = { dkLen: 32, personalization: new Uint8Array([7, 8, 9]) }; | ||
| * const tag = kmac128(key, message, opts); | ||
| * const out = new Uint8Array(32); | ||
| * kmac128.create(key, { dkLen: 32 }).update(message).digestInto(out); | ||
| * ``` | ||
| */ | ||
@@ -169,3 +202,5 @@ export declare const kmac128: TRet<IKMAC>; | ||
| export declare class _TupleHash extends Keccak implements HashXOF<_TupleHash> { | ||
| constructor(blockLen: number, outputLen: number, enableXOF: boolean, opts?: TArg<cShakeOpts>); | ||
| private tupleMode; | ||
| constructor(blockLen: number, outputLen: number, enableXOF: boolean, opts?: cShakeOpts); | ||
| update(data: TArg<Uint8Array>): this; | ||
| protected finish(): void; | ||
@@ -234,6 +269,11 @@ _cloneInto(to?: _TupleHash): _TupleHash; | ||
| protected leafCons: () => Hash<Keccak>; | ||
| private leafTemplate?; | ||
| private leafCV?; | ||
| private chunkPos; | ||
| private chunksDone; | ||
| private chunkLen; | ||
| constructor(blockLen: number, outputLen: number, leafCons: () => Hash<Keccak>, enableXOF: boolean, opts?: TArg<ParallelOpts>); | ||
| private leafMode; | ||
| constructor(blockLen: number, outputLen: number, leafCons: () => Hash<Keccak>, enableXOF: boolean, opts?: ParallelOpts); | ||
| private flushLeaf; | ||
| update(data: TArg<Uint8Array>): this; | ||
| protected finish(): void; | ||
@@ -256,2 +296,11 @@ _cloneInto(to?: _ParallelHash): _ParallelHash; | ||
| * ``` | ||
| * @example | ||
| * Hash a message with chunking and personalization settings. | ||
| * ```ts | ||
| * parallelhash128(new Uint8Array([1, 2, 3]), { | ||
| * blockLen: 8, | ||
| * dkLen: 32, | ||
| * personalization: new Uint8Array([4, 5, 6]), | ||
| * }); | ||
| * ``` | ||
| */ | ||
@@ -324,2 +373,7 @@ export declare const parallelhash128: TRet<CHash<Keccak, ParallelOpts>>; | ||
| * ``` | ||
| * @example | ||
| * Hash a message with an explicit domain-separation byte. | ||
| * ```ts | ||
| * turboshake128(new Uint8Array([1, 2, 3]), { dkLen: 32, D: 0x1f }); | ||
| * ``` | ||
| */ | ||
@@ -359,2 +413,4 @@ export declare const turboshake128: TRet<CHashXOF<Keccak, TurboshakeOpts>>; | ||
| private leafHash?; | ||
| private leafTemplate?; | ||
| private leafCV?; | ||
| protected leafLen: number; | ||
@@ -364,4 +420,5 @@ private personalization; | ||
| private chunksDone; | ||
| constructor(blockLen: number, leafLen: number, outputLen: number, rounds: number, opts: TArg<KangarooOpts>); | ||
| constructor(blockLen: number, leafLen: number, outputLen: number, rounds: number, opts: KangarooOpts); | ||
| update(data: TArg<Uint8Array>): this; | ||
| private flushLeaf; | ||
| protected finish(): void; | ||
@@ -383,2 +440,10 @@ destroy(): void; | ||
| * ``` | ||
| * @example | ||
| * Hash a message with KangarooTwelve-128 personalization. | ||
| * ```ts | ||
| * kt128(new Uint8Array([1, 2, 3]), { | ||
| * dkLen: 64, | ||
| * personalization: new Uint8Array([4, 5, 6]), | ||
| * }); | ||
| * ``` | ||
| */ | ||
@@ -475,2 +540,1 @@ export declare const kt128: TRet<CHash<_KangarooTwelve, KangarooOpts>>; | ||
| export {}; | ||
| //# sourceMappingURL=sha3-addons.d.ts.map |
+251
-92
@@ -13,3 +13,3 @@ /** | ||
| import { Keccak } from "./sha3.js"; | ||
| import { abytes, aexists, anumber, clean, copyBytes, createHasher, kdfInputToBytes, u32, } from "./utils.js"; | ||
| import { abytes, aexists, anumber, checkOpts, clean, copyBytes, createHasher, kdfInputToBytes, u32, } from "./utils.js"; | ||
| // cSHAKE && KMAC (NIST SP800-185) | ||
@@ -22,3 +22,4 @@ const _8n = /* @__PURE__ */ BigInt(8); | ||
| // (`0 <= x < 2^2040`); this helper does not enforce that bound. | ||
| function leftEncode(n) { | ||
| // Minimal big-endian bytes of `n`, at least one byte long (SP 800-185 §2.3.1). | ||
| function encodeBytes(n) { | ||
| n = BigInt(n); | ||
@@ -29,17 +30,19 @@ const res = [Number(n & _ffn)]; | ||
| res.unshift(Number(n & _ffn)); | ||
| return res; | ||
| } | ||
| // left_encode(n): byte count is prepended. | ||
| function leftEncode(n) { | ||
| const res = encodeBytes(n); | ||
| res.unshift(res.length); | ||
| return new Uint8Array(res); | ||
| } | ||
| // Same caller contract as `leftEncode(...)`: lengths must already satisfy SP 800-185 §2.3.1. | ||
| // right_encode(n): byte count is appended. | ||
| function rightEncode(n) { | ||
| n = BigInt(n); | ||
| const res = [Number(n & _ffn)]; | ||
| n >>= _8n; | ||
| for (; n > 0; n >>= _8n) | ||
| res.unshift(Number(n & _ffn)); | ||
| const res = encodeBytes(n); | ||
| res.push(res.length); | ||
| return new Uint8Array(res); | ||
| } | ||
| // `dkLen` validation is deferred to the downstream Keccak constructor. | ||
| // `dkLen` range validation is deferred to the downstream Keccak constructor. | ||
| function chooseLen(opts, outputLen) { | ||
| opts = checkOpts({}, opts); | ||
| return opts.dkLen === undefined ? outputLen : opts.dkLen; | ||
@@ -58,12 +61,25 @@ } | ||
| const getPadding = (len, block) => new Uint8Array((block - (len % block)) % block); | ||
| // bytepad(X1 || X2 || ..., rate): absorbs left_encode(rate), then each chunk, then zero-pads | ||
| // to a rate boundary. Encode and pad inplace to avoid unneccesary memory copies/slices so we | ||
| // don't need to zero them later. `rate` is the current cSHAKE/KMAC/TupleHash/ParallelHash | ||
| // block length. | ||
| function bytepadUpdate(h, ...chunks) { | ||
| const hash = h; | ||
| const blockLenBytes = leftEncode(hash.blockLen); | ||
| hash.update(blockLenBytes); | ||
| let totalLen = blockLenBytes.length; | ||
| for (const chunk of chunks) { | ||
| hash.update(chunk); | ||
| totalLen += chunk.length; | ||
| } | ||
| hash.update(getPadding(totalLen, hash.blockLen)); | ||
| return hash; | ||
| } | ||
| // Personalization | ||
| function cshakePers(hash, opts = {}) { | ||
| const h = hash; | ||
| if (!opts || (opts.personalization === undefined && opts.NISTfn === undefined)) | ||
| return h; | ||
| // Encode and pad inplace to avoid unneccesary memory copies/slices so we | ||
| // don't need to zero them later. | ||
| // bytepad(encode_string(N) || encode_string(S), rate), where `rate` is the | ||
| // current cSHAKE/KMAC/TupleHash/ParallelHash block length. | ||
| const blockLenBytes = leftEncode(h.blockLen); | ||
| function cshakePers(h, opts = {}) { | ||
| const hash = h; | ||
| opts = checkOpts({}, opts); | ||
| if (opts.personalization === undefined && opts.NISTfn === undefined) | ||
| return hash; | ||
| // bytepad(encode_string(N) || encode_string(S), rate) | ||
| const fn = opts.NISTfn === undefined ? EMPTY_BUFFER : kdfInputToBytes(opts.NISTfn); | ||
@@ -74,10 +90,7 @@ const fnLen = leftEncode(_8n * BigInt(fn.length)); // length in bits | ||
| if (!fn.length && !pers.length) | ||
| return h; | ||
| return hash; | ||
| // SP 800-185 cSHAKE appends `00` instead of SHAKE's `1111`; in this Keccak implementation | ||
| // that changes the delimited suffix byte from `0x1f` to `0x04` once N or S is non-empty. | ||
| h.suffix = 0x04; | ||
| h.update(blockLenBytes).update(fnLen).update(fn).update(persLen).update(pers); | ||
| let totalLen = blockLenBytes.length + fnLen.length + fn.length + persLen.length + pers.length; | ||
| h.update(getPadding(totalLen, h.blockLen)); | ||
| return h; | ||
| hash.suffix = 0x04; | ||
| return bytepadUpdate(hash, fnLen, fn, persLen, pers); | ||
| } | ||
@@ -98,2 +111,11 @@ const gencShake = (suffix, blockLen, outputLen) => createHasher((opts = {}) => cshakePers(new Keccak(blockLen, suffix, chooseLen(opts, outputLen), true), opts)); | ||
| * ``` | ||
| * @example | ||
| * Hash a message with SP 800-185 domain separation. | ||
| * ```ts | ||
| * cshake128(new Uint8Array([1, 2, 3]), { | ||
| * dkLen: 32, | ||
| * NISTfn: 'Email Signature', | ||
| * personalization: new Uint8Array([1, 2, 3]), | ||
| * }); | ||
| * ``` | ||
| */ | ||
@@ -126,14 +148,7 @@ export const cshake128 = /* @__PURE__ */ gencShake(0x1f, 168, 16); | ||
| // newX = bytepad(encode_string(K), rate) || X and `finish()` appends right_encode(L or 0). | ||
| cshakePers(this, { | ||
| NISTfn: 'KMAC', | ||
| personalization: opts.personalization, | ||
| }); | ||
| cshakePers(this, { NISTfn: 'KMAC', personalization: opts.personalization }); | ||
| abytes(key, undefined, 'key'); | ||
| // 1. newX = bytepad(encode_string(K), rate) || X || right_encode(L), | ||
| // with `rate = this.blockLen`. | ||
| const blockLenBytes = leftEncode(this.blockLen); | ||
| const keyLen = leftEncode(_8n * BigInt(key.length)); | ||
| this.update(blockLenBytes).update(keyLen).update(key); | ||
| const totalLen = blockLenBytes.length + keyLen.length + key.length; | ||
| this.update(getPadding(totalLen, this.blockLen)); | ||
| bytepadUpdate(this, leftEncode(_8n * BigInt(key.length)), key); | ||
| } | ||
@@ -168,3 +183,8 @@ finish() { | ||
| kmac.create = (key, opts = {}) => new _KMAC(blockLen, chooseLen(opts, outputLen), xof, key, opts); | ||
| return kmac; | ||
| // Same metadata + freeze as `createHasher()` wrappers, so duck-typed | ||
| // consumers (e.g. `ahash()`) treat all wrappers alike. | ||
| kmac.outputLen = outputLen; | ||
| kmac.blockLen = blockLen; | ||
| kmac.canXOF = xof; | ||
| return Object.freeze(kmac); | ||
| } | ||
@@ -181,4 +201,16 @@ /** | ||
| * ```ts | ||
| * kmac128(new Uint8Array([1, 2, 3]), new Uint8Array([4, 5, 6])); | ||
| * const key = new Uint8Array([1, 2, 3]); | ||
| * const message = new Uint8Array([4, 5, 6]); | ||
| * kmac128(key, message); | ||
| * ``` | ||
| * @example | ||
| * Authenticate a message with output options and an incremental state. | ||
| * ```ts | ||
| * const key = new Uint8Array([1, 2, 3]); | ||
| * const message = new Uint8Array([4, 5, 6]); | ||
| * const opts = { dkLen: 32, personalization: new Uint8Array([7, 8, 9]) }; | ||
| * const tag = kmac128(key, message, opts); | ||
| * const out = new Uint8Array(32); | ||
| * kmac128.create(key, { dkLen: 32 }).update(message).digestInto(out); | ||
| * ``` | ||
| */ | ||
@@ -234,18 +266,20 @@ export const kmac128 = /* @__PURE__ */ genKmac(168, 16); | ||
| export class _TupleHash extends Keccak { | ||
| // Cheaper than a per-instance `this.update = ...` closure: switches the class-method | ||
| // update from plain absorption (during the cSHAKE preload) to tuple-element encoding. | ||
| tupleMode = false; | ||
| constructor(blockLen, outputLen, enableXOF, opts = {}) { | ||
| super(blockLen, 0x1f, outputLen, enableXOF); | ||
| cshakePers(this, { | ||
| NISTfn: 'TupleHash', | ||
| personalization: opts.personalization, | ||
| }); | ||
| // Change update after cshake processed | ||
| this.update = (data) => { | ||
| abytes(data); | ||
| // SP 800-185 encodes each tuple element as | ||
| // encode_string(X[i]) = left_encode(len(X[i])) || X[i]. | ||
| super.update(leftEncode(_8n * BigInt(data.length))); | ||
| super.update(data); | ||
| return this; | ||
| }; | ||
| cshakePers(this, { NISTfn: 'TupleHash', personalization: opts.personalization }); | ||
| this.tupleMode = true; | ||
| } | ||
| update(data) { | ||
| if (!this.tupleMode) | ||
| return super.update(data); | ||
| abytes(data); | ||
| // SP 800-185 encodes each tuple element as | ||
| // encode_string(X[i]) = left_encode(len(X[i])) || X[i]. | ||
| super.update(leftEncode(_8n * BigInt(data.length))); | ||
| super.update(data); | ||
| return this; | ||
| } | ||
| finish() { | ||
@@ -261,2 +295,3 @@ // SP 800-185 uses right_encode(L) for fixed-length TupleHash | ||
| to ||= new _TupleHash(this.blockLen, this.outputLen, this.enableXOF); | ||
| to.tupleMode = this.tupleMode; | ||
| return super._cloneInto(to); | ||
@@ -280,3 +315,8 @@ } | ||
| tuple.create = (opts = {}) => new _TupleHash(blockLen, chooseLen(opts, outputLen), xof, opts); | ||
| return tuple; | ||
| // Same metadata + freeze as `createHasher()` wrappers, so duck-typed | ||
| // consumers (e.g. `ahash()`) treat all wrappers alike. | ||
| tuple.outputLen = outputLen; | ||
| tuple.blockLen = blockLen; | ||
| tuple.canXOF = xof; | ||
| return Object.freeze(tuple); | ||
| } | ||
@@ -339,11 +379,16 @@ /** | ||
| leafCons; | ||
| // Pristine leaf instance cloned into `leafHash` per chunk: with the default | ||
| // 8-byte chunks, constructing a fresh leaf per chunk costs ~15% (measured). | ||
| leafTemplate; | ||
| // Reused chaining-value buffer for leaf digests. | ||
| leafCV; | ||
| chunkPos = 0; // Position of current block in chunk | ||
| chunksDone = 0; // How many chunks we already have | ||
| chunkLen; | ||
| // Cheaper than a per-instance `this.update = ...` closure: switches the class-method | ||
| // update from plain absorption (during the cSHAKE preload) to leaf chunking. | ||
| leafMode = false; | ||
| constructor(blockLen, outputLen, leafCons, enableXOF, opts = {}) { | ||
| super(blockLen, 0x1f, outputLen, enableXOF); | ||
| cshakePers(this, { | ||
| NISTfn: 'ParallelHash', | ||
| personalization: opts.personalization, | ||
| }); | ||
| cshakePers(this, { NISTfn: 'ParallelHash', personalization: opts.personalization }); | ||
| this.leafCons = leafCons; | ||
@@ -360,22 +405,32 @@ let { blockLen: B = 8 } = opts; | ||
| super.update(leftEncode(B)); | ||
| // Change update after cshake processed | ||
| this.update = (data) => { | ||
| abytes(data); | ||
| const { chunkLen, leafCons } = this; | ||
| for (let pos = 0, len = data.length; pos < len;) { | ||
| if (this.chunkPos == chunkLen || !this.leafHash) { | ||
| if (this.leafHash) { | ||
| super.update(this.leafHash.digest()); | ||
| this.chunksDone++; | ||
| } | ||
| this.leafHash = leafCons(); | ||
| this.chunkPos = 0; | ||
| } | ||
| const take = Math.min(chunkLen - this.chunkPos, len - pos); | ||
| this.leafHash.update(data.subarray(pos, pos + take)); | ||
| this.chunkPos += take; | ||
| pos += take; | ||
| this.leafMode = true; | ||
| } | ||
| flushLeaf() { | ||
| const cv = (this.leafCV ||= new Uint8Array(this.leafHash.outputLen)); | ||
| this.leafHash.digestInto(cv); | ||
| super.update(cv); | ||
| this.chunksDone++; | ||
| } | ||
| update(data) { | ||
| if (!this.leafMode) | ||
| return super.update(data); | ||
| aexists(this); | ||
| abytes(data); | ||
| const { chunkLen, leafCons } = this; | ||
| for (let pos = 0, len = data.length; pos < len;) { | ||
| if (this.chunkPos == chunkLen || !this.leafHash) { | ||
| if (this.leafHash) | ||
| this.flushLeaf(); | ||
| // Clone a pristine template instead of re-running the constructor; | ||
| // resurrects the just-digested leaf allocation in place. | ||
| this.leafTemplate ||= leafCons(); | ||
| this.leafHash = this.leafTemplate._cloneInto(this.leafHash); | ||
| this.chunkPos = 0; | ||
| } | ||
| return this; | ||
| }; | ||
| const take = Math.min(chunkLen - this.chunkPos, len - pos); | ||
| this.leafHash.update(data.subarray(pos, pos + take)); | ||
| this.chunkPos += take; | ||
| pos += take; | ||
| } | ||
| return this; | ||
| } | ||
@@ -385,6 +440,4 @@ finish() { | ||
| return; | ||
| if (this.leafHash) { | ||
| super.update(this.leafHash.digest()); | ||
| this.chunksDone++; | ||
| } | ||
| if (this.leafHash) | ||
| this.flushLeaf(); | ||
| // SP 800-185 finishes ParallelHash as | ||
@@ -398,5 +451,23 @@ // z || right_encode(n) || right_encode(L); XOF mode replaces | ||
| } | ||
| // Overriding hides Keccak's flat implementation, which would otherwise be inherited | ||
| // and silently miss the tree state (leaf hash, chunk counters). | ||
| _cloneInto(to) { | ||
| to ||= new _ParallelHash(this.blockLen, this.outputLen, this.leafCons, this.enableXOF); | ||
| to.leafCons = this.leafCons; | ||
| // Clone the cached template/CV as regular state: this also overwrites | ||
| // stale wrong-variant values on reused destinations. | ||
| if (this.leafTemplate) | ||
| to.leafTemplate = this.leafTemplate._cloneInto(to.leafTemplate); | ||
| else if (to.leafTemplate) { | ||
| to.leafTemplate.destroy(); | ||
| to.leafTemplate = undefined; | ||
| } | ||
| if (this.leafCV) { | ||
| if (to.leafCV && to.leafCV.length === this.leafCV.length) | ||
| to.leafCV.set(this.leafCV); | ||
| else | ||
| to.leafCV = this.leafCV.slice(); | ||
| } | ||
| else | ||
| to.leafCV = undefined; | ||
| // Reused destinations can carry a stale partial leaf | ||
@@ -413,2 +484,3 @@ // when the source is still on the root sponge. | ||
| to.chunksDone = this.chunksDone; | ||
| to.leafMode = this.leafMode; | ||
| return super._cloneInto(to); | ||
@@ -420,2 +492,6 @@ } | ||
| this.leafHash.destroy(); | ||
| if (this.leafTemplate) | ||
| this.leafTemplate.destroy(); | ||
| if (this.leafCV) | ||
| clean(this.leafCV); | ||
| } | ||
@@ -433,6 +509,7 @@ clone() { | ||
| () => leaf.create({ dkLen: 2 * outputLen }), xof, opts); | ||
| // Same metadata + freeze as `createHasher()` wrappers. | ||
| parallel.outputLen = outputLen; | ||
| parallel.blockLen = blockLen; | ||
| parallel.canXOF = xof; | ||
| return parallel; | ||
| return Object.freeze(parallel); | ||
| } | ||
@@ -451,2 +528,11 @@ /** | ||
| * ``` | ||
| * @example | ||
| * Hash a message with chunking and personalization settings. | ||
| * ```ts | ||
| * parallelhash128(new Uint8Array([1, 2, 3]), { | ||
| * blockLen: 8, | ||
| * dkLen: 32, | ||
| * personalization: new Uint8Array([4, 5, 6]), | ||
| * }); | ||
| * ``` | ||
| */ | ||
@@ -497,2 +583,3 @@ export const parallelhash128 = /* @__PURE__ */ genPrl(168, 16, cshake128); | ||
| const genTurbo = (blockLen, outputLen) => createHasher((opts = {}) => { | ||
| opts = checkOpts({}, opts); | ||
| const D = opts.D === undefined ? 0x1f : opts.D; | ||
@@ -503,3 +590,3 @@ // RFC 9861 §2.1 fixes the default `D = 0x1f`; §2.2 defines the 12-round | ||
| throw new Error('"D" (domain separation byte) must be 0x01..0x7f, got: ' + D); | ||
| const dkLen = opts.dkLen === undefined ? outputLen : opts.dkLen; | ||
| const dkLen = chooseLen(opts, outputLen); | ||
| // RFC 9861 §§2.1-2.2 define output length L as a positive integer. | ||
@@ -524,2 +611,7 @@ if (dkLen < 1) | ||
| * ``` | ||
| * @example | ||
| * Hash a message with an explicit domain-separation byte. | ||
| * ```ts | ||
| * turboshake128(new Uint8Array([1, 2, 3]), { dkLen: 32, D: 0x1f }); | ||
| * ``` | ||
| */ | ||
@@ -552,2 +644,5 @@ export const turboshake128 = /* @__PURE__ */ genTurbo(168, 32); | ||
| const EMPTY_BUFFER = /* @__PURE__ */ Uint8Array.of(); | ||
| // RFC 9861 §3.2 FinalNode prefix for S_0 and the CV-list terminator. | ||
| const K12_TREE = /* @__PURE__ */ Uint8Array.from([3, 0, 0, 0, 0, 0, 0, 0]); | ||
| const K12_FINAL = /* @__PURE__ */ Uint8Array.from([0xff, 0xff]); | ||
| /** Internal K12 hash class. */ | ||
@@ -557,2 +652,7 @@ export class _KangarooTwelve extends Keccak { | ||
| leafHash; | ||
| // Pristine leaf instance cloned into `leafHash` per chunk, same pattern as _ParallelHash: | ||
| // streaming reuses two leaf allocations total instead of one per 8KB chunk. | ||
| leafTemplate; | ||
| // Reused chaining-value buffer for leaf digests. | ||
| leafCV; | ||
| leafLen; | ||
@@ -564,2 +664,3 @@ personalization; | ||
| super(blockLen, 0x07, outputLen, true, rounds); | ||
| opts = checkOpts({}, opts); | ||
| // RFC 9861 §3 defines output length L as a positive integer. | ||
@@ -575,2 +676,3 @@ if (outputLen < 1) | ||
| update(data) { | ||
| aexists(this); | ||
| abytes(data); | ||
@@ -581,3 +683,3 @@ const { chunkLen, blockLen, leafLen, rounds } = this; | ||
| if (this.leafHash) | ||
| super.update(this.leafHash.digest()); | ||
| this.flushLeaf(); | ||
| else { | ||
@@ -588,7 +690,10 @@ // RFC 9861 §3.2 switches from SingleNode (`07`) to FinalNode (`06`) | ||
| this.suffix = 0x06; // Its safe to change suffix here since its used only in digest() | ||
| super.update(Uint8Array.from([3, 0, 0, 0, 0, 0, 0, 0])); | ||
| super.update(K12_TREE); | ||
| } | ||
| // Secondary chunks S_1..S_(n-1) become fixed-length | ||
| // CV_i = TurboSHAKE*(S_i, `0B`, 32|64) chaining values. | ||
| this.leafHash = new Keccak(blockLen, 0x0b, leafLen, false, rounds); | ||
| // Clone a pristine template instead of re-running the constructor; | ||
| // resurrects the just-digested leaf allocation in place. | ||
| this.leafTemplate ??= new Keccak(blockLen, 0x0b, leafLen, false, rounds); | ||
| this.leafHash = this.leafTemplate._cloneInto(this.leafHash); | ||
| this.chunksDone++; | ||
@@ -608,2 +713,8 @@ this.chunkPos = 0; | ||
| } | ||
| flushLeaf() { | ||
| const leafHash = this.leafHash; | ||
| const cv = (this.leafCV ||= new Uint8Array(leafHash.outputLen)); | ||
| leafHash.digestInto(cv); | ||
| super.update(cv); | ||
| } | ||
| finish() { | ||
@@ -620,5 +731,5 @@ if (this.finished) | ||
| // before the final TurboSHAKE call. | ||
| super.update(this.leafHash.digest()); | ||
| this.flushLeaf(); | ||
| super.update(rightEncodeK12(this.chunksDone)); | ||
| super.update(Uint8Array.from([0xff, 0xff])); | ||
| super.update(K12_FINAL); | ||
| } | ||
@@ -631,2 +742,6 @@ super.finish.call(this); | ||
| this.leafHash.destroy(); | ||
| if (this.leafTemplate) | ||
| this.leafTemplate.destroy(); | ||
| if (this.leafCV) | ||
| clean(this.leafCV); | ||
| // Personalization is copied on create/clone, so destroy can wipe it | ||
@@ -638,8 +753,10 @@ // without touching caller input. | ||
| } | ||
| // Overriding hides Keccak's flat implementation, which would otherwise be inherited | ||
| // and silently miss the tree state (leaf hash, chunk counters). | ||
| _cloneInto(to) { | ||
| const { blockLen, leafLen, leafHash, outputLen, rounds } = this; | ||
| const personalization = this.personalization === EMPTY_BUFFER ? EMPTY_BUFFER : copyBytes(this.personalization); | ||
| const { blockLen, leafLen, leafHash, outputLen, personalization, rounds } = this; | ||
| const fresh = to === undefined; | ||
| // Personalization is absorbed only during finish(), so clones need the same pending value. | ||
| to ||= new _KangarooTwelve(blockLen, leafLen, outputLen, rounds, { | ||
| personalization, | ||
| personalization: personalization === EMPTY_BUFFER ? undefined : personalization, | ||
| }); | ||
@@ -654,4 +771,38 @@ super._cloneInto(to); | ||
| } | ||
| // Snapshot the pending personalization so clone state does not alias caller-owned input. | ||
| to.personalization = personalization; | ||
| // Cached leaf state is part of a reusable clone: stale destroyed or wrong-variant values | ||
| // otherwise fail or change the digest only after the replacement crosses a tree boundary. | ||
| if (this.leafTemplate) | ||
| to.leafTemplate = this.leafTemplate._cloneInto(to.leafTemplate); | ||
| else if (to.leafTemplate) { | ||
| to.leafTemplate.destroy(); | ||
| to.leafTemplate = undefined; | ||
| } | ||
| if (this.leafCV) { | ||
| if (to.leafCV && to.leafCV.length === this.leafCV.length) | ||
| to.leafCV.set(this.leafCV); | ||
| else | ||
| to.leafCV = this.leafCV.slice(); | ||
| } | ||
| else | ||
| to.leafCV = undefined; | ||
| // Snapshot the pending personalization without aliasing source or caller-owned input. | ||
| if (!fresh) { | ||
| const old = to.personalization; | ||
| if (personalization === EMPTY_BUFFER) { | ||
| if (old !== EMPTY_BUFFER) | ||
| clean(old); | ||
| to.personalization = EMPTY_BUFFER; | ||
| } | ||
| else if (old === EMPTY_BUFFER || old.length !== personalization.length) { | ||
| const copy = copyBytes(personalization); | ||
| if (old !== EMPTY_BUFFER) | ||
| clean(old); | ||
| to.personalization = copy; | ||
| } | ||
| else { | ||
| // Reuse compatible private storage so live-destination clones neither allocate | ||
| // nor abandon user data. | ||
| old.set(personalization); | ||
| } | ||
| } | ||
| to.leafLen = this.leafLen; | ||
@@ -677,2 +828,10 @@ to.chunkPos = this.chunkPos; | ||
| * ``` | ||
| * @example | ||
| * Hash a message with KangarooTwelve-128 personalization. | ||
| * ```ts | ||
| * kt128(new Uint8Array([1, 2, 3]), { | ||
| * dkLen: 64, | ||
| * personalization: new Uint8Array([4, 5, 6]), | ||
| * }); | ||
| * ``` | ||
| */ | ||
@@ -693,5 +852,5 @@ export const kt128 = /* @__PURE__ */ createHasher((opts = {}) => new _KangarooTwelve(168, 32, chooseLen(opts, 32), 12, opts)); | ||
| export const kt256 = /* @__PURE__ */ createHasher((opts = {}) => new _KangarooTwelve(136, 64, chooseLen(opts, 64), 12, opts)); | ||
| const genHopMAC = (hash) => (key, message, personalization, dkLen) => { | ||
| const h = hash; | ||
| return h(key, { personalization: h(message, { personalization }), dkLen }); | ||
| const genHopMAC = (hash) => { | ||
| const kt = hash; | ||
| return ((key, message, personalization, dkLen) => kt(key, { personalization: kt(message, { personalization }), dkLen })); | ||
| }; | ||
@@ -792,2 +951,3 @@ /** | ||
| } | ||
| // Keccak cloning includes `posOut`, which preserves the PRG's current output phase. | ||
| _cloneInto(to) { | ||
@@ -820,2 +980,1 @@ const { rate } = this; | ||
| export const keccakprg = (capacity = 254) => new _KeccakPRG(capacity); | ||
| //# sourceMappingURL=sha3-addons.js.map |
+10
-1
@@ -7,2 +7,4 @@ import { type CHash, type CHashXOF, type Hash, type HashXOF, type TArg, type TRet } from './utils.ts'; | ||
| * @param rounds - number of rounds to execute | ||
| * @throws On wrong argument types. {@link TypeError} | ||
| * @throws On wrong argument ranges or values. {@link RangeError} | ||
| * @throws If `rounds` is outside the supported `1..24` range. {@link Error} | ||
@@ -62,2 +64,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -74,2 +77,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -86,2 +90,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -98,2 +103,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -110,2 +116,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -122,2 +129,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -134,2 +142,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -146,2 +155,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -208,2 +218,1 @@ * @example | ||
| export declare const shake256_64: TRet<CHashXOF<Keccak, ShakeOpts>>; | ||
| //# sourceMappingURL=sha3.d.ts.map |
+56
-12
@@ -14,5 +14,5 @@ /** | ||
| */ | ||
| import { rotlBH, rotlBL, rotlSH, rotlSL, split } from "./_u64.js"; | ||
| import { split } from "./_u64.js"; | ||
| // prettier-ignore | ||
| import { abytes, aexists, anumber, aoutput, clean, createHasher, oidNist, swap32IfBE, u32 } from "./utils.js"; | ||
| import { abool, abytes, aexists, anumber, aoutput, checkOpts, clean, createHasher, oidNist, swap32IfBE, u32 } from "./utils.js"; | ||
| // No __PURE__ annotations in sha3 header: | ||
@@ -53,5 +53,15 @@ // EVERYTHING is in fact used on every export. | ||
| const SHA3_IOTA_L = IOTAS[1]; | ||
| // Left rotation (without 0, 32, 64) | ||
| // 64-bit left rotates as u32 pairs. Inlined here (not imported from _u64) so V8 can | ||
| // inline them into keccakP — the import path costs ~24% on sha3_256. SHA3 is the only | ||
| // consumer of left-rotates; other hashes use right-rotates from _u64. | ||
| // Valid for s in 1..31 (SH/SL) and 33..63 (BH/BL); keccak never rotates by 0/32/64. | ||
| const rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s)); | ||
| const rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s)); | ||
| const rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s)); | ||
| const rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s)); | ||
| const rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s)); | ||
| const rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s)); | ||
| // Reused Theta scratch buffer (column parities), same pattern as SHA256_W in sha2. | ||
| // keccakP never calls user code, so the shared buffer cannot be observed mid-permutation. | ||
| const B = new Uint32Array(5 * 2); | ||
| /** | ||
@@ -62,2 +72,4 @@ * `keccakf1600` internal permutation, additionally allows adjusting the round count. | ||
| * @param rounds - number of rounds to execute | ||
| * @throws On wrong argument types. {@link TypeError} | ||
| * @throws On wrong argument ranges or values. {@link RangeError} | ||
| * @throws If `rounds` is outside the supported `1..24` range. {@link Error} | ||
@@ -71,2 +83,6 @@ * @example | ||
| export function keccakP(s, rounds = 24) { | ||
| if (!(s instanceof Uint32Array)) | ||
| throw new TypeError('"s" expected Uint32Array(50), got type=' + typeof s); | ||
| if (s.length !== 50) | ||
| throw new RangeError('"s" expected Uint32Array(50), got length=' + s.length); | ||
| anumber(rounds, 'rounds'); | ||
@@ -76,3 +92,2 @@ // This implementation precomputes only the standard Keccak-f[1600] 24-round Iota table. | ||
| throw new Error('"rounds" expected integer 1..24'); | ||
| const B = new Uint32Array(5 * 2); | ||
| // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js) | ||
@@ -163,2 +178,6 @@ for (let round = 24 - rounds; round < 24; round++) { | ||
| constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) { | ||
| anumber(blockLen, 'blockLen'); | ||
| anumber(suffix, 'suffix'); | ||
| anumber(rounds, 'rounds'); | ||
| abool(enableXOF, 'enableXOF'); | ||
| this.blockLen = blockLen; | ||
@@ -172,6 +191,5 @@ this.suffix = suffix; | ||
| anumber(outputLen, 'outputLen'); | ||
| // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes | ||
| // 0 < blockLen < 200 | ||
| // Only keccak-f1600 is supported: 1600 bits (5x5 matrix of 64bit) === 200 bytes of state. | ||
| if (!(0 < blockLen && blockLen < 200)) | ||
| throw new Error('only keccak-f1600 function is supported'); | ||
| throw new Error('"blockLen" must be 1..199'); | ||
| this.state = new Uint8Array(200); | ||
@@ -193,5 +211,20 @@ this.state32 = u32(this.state); | ||
| abytes(data); | ||
| const { blockLen, state } = this; | ||
| const { blockLen, state, state32 } = this; | ||
| const len = data.length; | ||
| // Absorb full blocks with u32 XORs when both sides are 4-byte aligned. | ||
| // XOR of same-position words equals XOR of same-position bytes, so this is endianness-safe. | ||
| const canUseU32 = blockLen % 4 === 0 && data.byteOffset % 4 === 0; | ||
| const blockLen32 = blockLen / 4; | ||
| const data32 = canUseU32 && len >= blockLen ? u32(data) : undefined; | ||
| for (let pos = 0; pos < len;) { | ||
| if (data32 !== undefined && this.pos === 0 && pos % 4 === 0 && len - pos >= blockLen) { | ||
| for (let i = 0, o = pos / 4; i < blockLen32; i++) | ||
| state32[i] ^= data32[o + i]; | ||
| pos += blockLen; | ||
| // Subclasses (_KeccakPRG) read `this.pos` inside their `keccak()` override, | ||
| // so it must reflect the fully-absorbed block before the permutation fires. | ||
| this.pos = blockLen; | ||
| this.keccak(); | ||
| continue; | ||
| } | ||
| const take = Math.min(blockLen - this.pos, len - pos); | ||
@@ -243,3 +276,3 @@ for (let i = 0; i < take; i++) | ||
| if (!this.enableXOF) | ||
| throw new Error('XOF is not possible for this instance'); | ||
| throw new Error('XOF is not enabled'); | ||
| return this.writeInto(out); | ||
@@ -256,3 +289,3 @@ } | ||
| // `aoutput(...)` allows oversized buffers; digestInto() must fill only the advertised digest. | ||
| this.writeInto(out.subarray(0, this.outputLen)); | ||
| this.writeInto(out.length === this.outputLen ? out : out.subarray(0, this.outputLen)); | ||
| this.destroy(); | ||
@@ -276,2 +309,3 @@ } | ||
| to.state32.set(this.state32); | ||
| // Sponge padding and XOF output are positional, so both offsets are part of the clone state. | ||
| to.pos = this.pos; | ||
@@ -296,2 +330,3 @@ to.posOut = this.posOut; | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -309,2 +344,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -322,2 +358,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -335,2 +372,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -348,2 +386,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -360,2 +399,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -372,2 +412,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -384,2 +425,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -393,3 +435,6 @@ * @example | ||
| export const keccak_512 = /* @__PURE__ */ genKeccak(0x01, 72, 64); | ||
| const genShake = (suffix, blockLen, outputLen, info = {}) => createHasher((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true), info); | ||
| const genShake = (suffix, blockLen, outputLen, info = {}) => createHasher((opts = {}) => { | ||
| opts = checkOpts({}, opts); | ||
| return new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true); | ||
| }, info); | ||
| /** | ||
@@ -451,2 +496,1 @@ * SHAKE128 XOF with 128-bit security and a 16-byte default output. | ||
| genShake(0x1f, 136, 64, /* @__PURE__ */ oidNist(0x0c)); | ||
| //# sourceMappingURL=sha3.js.map |
+10
-0
@@ -7,2 +7,6 @@ /** | ||
| // Unrealized speed-up: a file-local copy of rotr measured ~1-2% faster blake2s/blake256/blake3 | ||
| // on Node 24 (V8 does not inline it into G1s/G2s across the module boundary). Reused from | ||
| // utils for deduplication. | ||
| /** | ||
@@ -38,2 +42,8 @@ * Internal blake permutation table. | ||
| // Unrealized speed-up: G1s/G2s return a fresh {a,b,c,d} per call (160×/blake2s block), which | ||
| // V8's escape analysis does not eliminate when G stays a real call. Writing into one reused | ||
| // module-level slot instead measured +4-6% blake2s/blake256 1MB throughput on Node 24 — but | ||
| // ~2% slower blake3 (whose profile inlines G and scalar-replaces the fresh object) and no | ||
| // difference on 32-byte inputs. Kept simple. | ||
| // 32-bit / BLAKE2s first half of G, with the fixed `(16, 12)` rotation pair. | ||
@@ -40,0 +50,0 @@ // Parameter `x` is the RFC 7693 first-half message word, or Blake1's pre-mixed |
+32
-27
@@ -5,12 +5,4 @@ /** | ||
| */ | ||
| import { | ||
| abytes, | ||
| aexists, | ||
| aoutput, | ||
| clean, | ||
| createView, | ||
| type Hash, | ||
| type TArg, | ||
| type TRet, | ||
| } from './utils.ts'; | ||
| import { setU64FromNum } from './_u64.ts'; | ||
| import { abytes, aexists, aoutput, createView, type Hash, type TArg, type TRet } from './utils.ts'; | ||
@@ -77,2 +69,7 @@ /** | ||
| protected abstract set(...args: number[]): void; | ||
| // Each state layout must own this call site. At a monomorphic site TurboFan inlines get()/set() | ||
| // and scalar-replaces the tuple, so no secret-bearing array is allocated. Sharing this site | ||
| // across HashMD shapes makes it megamorphic: the tuple is materialized, cannot be explicitly | ||
| // wiped, and clone-heavy KDFs regress. | ||
| abstract _cloneInto(to?: T): T; | ||
| abstract destroy(): void; | ||
@@ -108,2 +105,3 @@ protected abstract roundClean(): void; | ||
| const len = data.length; | ||
| let processed = false; | ||
| for (let pos = 0; pos < len; ) { | ||
@@ -116,5 +114,8 @@ const take = Math.min(blockLen - this.pos, len - pos); | ||
| for (; blockLen <= len - pos; pos += blockLen) this.process(dataView, pos); | ||
| processed = true; | ||
| continue; | ||
| } | ||
| buffer.set(data.subarray(pos, pos + take), this.pos); | ||
| // When the whole input is buffered in one go (common for short messages), passing `data` | ||
| // directly avoids allocating a subarray view. | ||
| buffer.set(pos === 0 && take === len ? data : data.subarray(pos, pos + take), this.pos); | ||
| this.pos += take; | ||
@@ -125,6 +126,9 @@ pos += take; | ||
| this.pos = 0; | ||
| processed = true; | ||
| } | ||
| } | ||
| this.length += data.length; | ||
| this.roundClean(); | ||
| // Shared schedule buffers only pick up input-derived words inside process(); if everything | ||
| // was buffered without processing, there is nothing to zero. | ||
| if (processed) this.roundClean(); | ||
| return this; | ||
@@ -141,5 +145,5 @@ } | ||
| let { pos } = this; | ||
| // append the bit '1' to the message | ||
| // append the bit '1' to the message, then zero-pad the rest of the block | ||
| buffer[pos++] = 0b10000000; | ||
| clean(this.buffer.subarray(pos)); | ||
| buffer.fill(0, pos); | ||
| // we have less than padOffset left in buffer, so we cannot put length in | ||
@@ -149,18 +153,21 @@ // current block, need process it and pad again | ||
| this.process(view, 0); | ||
| pos = 0; | ||
| buffer.fill(0); | ||
| } | ||
| // Pad until full block byte with zeros | ||
| for (let i = pos; i < blockLen; i++) buffer[i] = 0; | ||
| // `padOffset` reserves the whole length field. For SHA-384/512 the high 64 bits stay zero from | ||
| // the padding fill above, and JS will overflow before user input can make that half non-zero. | ||
| // So we only need to write the low 64 bits here. | ||
| view.setBigUint64(blockLen - 8, BigInt(this.length * 8), isLE); | ||
| // So we only need to write the low 64 bits here (`length * 8` only scales the exponent of an | ||
| // integer below 2**53, so the split inside the helper stays exact). | ||
| setU64FromNum(view, blockLen - 8, this.length * 8, isLE); | ||
| this.process(view, 0); | ||
| const oview = createView(out); | ||
| // The final block above is processed outside update(), so the shared message-schedule | ||
| // buffers (e.g. SHA256_W) would otherwise retain input-derived words after digest(). | ||
| this.roundClean(); | ||
| // digest() passes our own `buffer` as `out`; reuse its cached view instead of allocating one. | ||
| const oview = out === buffer ? view : createView(out); | ||
| const len = this.outputLen; | ||
| // NOTE: we do division by 4 later, which must be fused in single op with modulo by JIT | ||
| if (len % 4) throw new Error('_sha2: outputLen must be aligned to 32bit'); | ||
| const outLen = len / 4; | ||
| const state = this.get(); | ||
| if (outLen > state.length) throw new Error('_sha2: outputLen bigger than state'); | ||
| // Subclass-misconfiguration invariant: outputLen must be 32-bit aligned and fit the state. | ||
| if (len % 4 || outLen > state.length) throw new Error('invalid outputLen'); | ||
| for (let i = 0; i < outLen; i++) oview.setUint32(4 * i, state[i], isLE); | ||
@@ -177,6 +184,4 @@ } | ||
| } | ||
| _cloneInto(to?: T): T { | ||
| to ||= new (this.constructor as any)() as T; | ||
| to.set(...this.get()); | ||
| const { blockLen, buffer, length, finished, destroyed, pos } = this; | ||
| protected _cloneIntoMeta(to: T): T { | ||
| const { buffer, length, finished, destroyed, pos } = this; | ||
| to.destroyed = destroyed; | ||
@@ -188,3 +193,3 @@ to.finished = finished; | ||
| // later `update()` / `digestInto()` overwrite `to.buffer` from the start before reading it. | ||
| if (length % blockLen) to.buffer.set(buffer); | ||
| if (pos) to.buffer.set(buffer); // Avoid a hot modulo guard. | ||
| return to as unknown as any; | ||
@@ -191,0 +196,0 @@ } |
+17
-23
@@ -10,3 +10,3 @@ /** | ||
| const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1); | ||
| const U32_MASK64 = /* @__PURE__ */ (() => BigInt(2 ** 32 - 1))(); | ||
| const _32n = /* @__PURE__ */ BigInt(32); | ||
@@ -43,2 +43,15 @@ | ||
| const toBig = (h: number, l: number): bigint => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0); | ||
| // Split a JS number into u32 halves without a BigInt allocation. Exact only for integers | ||
| // `0 <= n < 2**53`; callers use it on byte / bit counters, which JS length math caps far below | ||
| // that (an ArrayBuffer cannot exceed 2**53 - 1 bytes). | ||
| const fromNumH = (n: number): number => (n / 2 ** 32) | 0; | ||
| const fromNumL = (n: number): number => n >>> 0; | ||
| // Drop-in replacement for `view.setBigUint64(byteOffset, BigInt(n), isLE)` without the per-call | ||
| // BigInt allocation. Same `n < 2**53` precondition as `fromNumH`/`fromNumL`. | ||
| function setU64FromNum(view: DataView, byteOffset: number, n: number, isLE: boolean): void { | ||
| const h = fromNumH(n); | ||
| const l = fromNumL(n); | ||
| view.setUint32(byteOffset, isLE ? l : h, isLE); | ||
| view.setUint32(byteOffset + 4, isLE ? h : l, isLE); | ||
| } | ||
| // High 32-bit half of a 64-bit logical right shift for `s` in `0..31`. | ||
@@ -60,10 +73,4 @@ const shrSH = (h: number, _l: number, s: number): number => h >>> s; | ||
| const rotr32L = (h: number, _l: number): number => h; | ||
| // High 32-bit half of a 64-bit left rotate, valid for `s` in `1..31`. | ||
| const rotlSH = (h: number, l: number, s: number): number => (h << s) | (l >>> (32 - s)); | ||
| // Low 32-bit half of a 64-bit left rotate, valid for `s` in `1..31`. | ||
| const rotlSL = (h: number, l: number, s: number): number => (l << s) | (h >>> (32 - s)); | ||
| // High 32-bit half of a 64-bit left rotate, valid for `s` in `33..63`; `32` uses `rotr32*`. | ||
| const rotlBH = (h: number, l: number, s: number): number => (l << (s - 32)) | (h >>> (64 - s)); | ||
| // Low 32-bit half of a 64-bit left rotate, valid for `s` in `33..63`; `32` uses `rotr32*`. | ||
| const rotlBL = (h: number, l: number, s: number): number => (h << (s - 32)) | (l >>> (64 - s)); | ||
| // 64-bit left rotates (rotl*) are not defined here: sha3.ts, their only consumer, keeps | ||
| // local copies so V8 inlines them into keccakP. | ||
@@ -106,16 +113,3 @@ // Add two split 64-bit words and return the split `{ h, l }` sum. | ||
| export { | ||
| add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig | ||
| add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, fromNumH, fromNumL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, setU64FromNum, shrSH, shrSL, split, toBig | ||
| }; | ||
| // Canonical grouped namespace for callers that prefer one object. | ||
| // Named exports stay for direct imports. | ||
| // prettier-ignore | ||
| const u64: { fromBig: typeof fromBig; split: typeof split; toBig: (h: number, l: number) => bigint; shrSH: (h: number, _l: number, s: number) => number; shrSL: (h: number, l: number, s: number) => number; rotrSH: (h: number, l: number, s: number) => number; rotrSL: (h: number, l: number, s: number) => number; rotrBH: (h: number, l: number, s: number) => number; rotrBL: (h: number, l: number, s: number) => number; rotr32H: (_h: number, l: number) => number; rotr32L: (h: number, _l: number) => number; rotlSH: (h: number, l: number, s: number) => number; rotlSL: (h: number, l: number, s: number) => number; rotlBH: (h: number, l: number, s: number) => number; rotlBL: (h: number, l: number, s: number) => number; add: typeof add; add3L: (Al: number, Bl: number, Cl: number) => number; add3H: (low: number, Ah: number, Bh: number, Ch: number) => number; add4L: (Al: number, Bl: number, Cl: number, Dl: number) => number; add4H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number) => number; add5H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) => number; add5L: (Al: number, Bl: number, Cl: number, Dl: number, El: number) => number; } = { | ||
| fromBig, split, toBig, | ||
| shrSH, shrSL, | ||
| rotrSH, rotrSL, rotrBH, rotrBL, | ||
| rotr32H, rotr32L, | ||
| rotlSH, rotlSL, rotlBH, rotlBL, | ||
| add, add3L, add3H, add4L, add4H, add5H, add5L, | ||
| }; | ||
| // Default export mirrors named `u64` for compatibility with object-style imports. | ||
| export default u64; |
+157
-171
@@ -11,6 +11,7 @@ /** | ||
| */ | ||
| import { add3H, add3L, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL } from './_u64.ts'; | ||
| import { rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL } from './_u64.ts'; | ||
| import { blake2b } from './blake2.ts'; | ||
| import { | ||
| anumber, | ||
| checkOpts, | ||
| clean, | ||
@@ -30,3 +31,3 @@ kdfInputToBytes, | ||
| // spec-bound part here; the object keys are internal labels. | ||
| const AT = { Argond2d: 0, Argon2i: 1, Argon2id: 2 } as const; | ||
| const AT = { Argon2d: 0, Argon2i: 1, Argon2id: 2 } as const; | ||
| type Types = (typeof AT)[keyof typeof AT]; | ||
@@ -60,17 +61,12 @@ | ||
| function mul2(a: number, b: number) { | ||
| // Double the split 64-bit product; carry from `l` is folded back into `h` via `l >>> 31`. | ||
| const { h, l } = mul(a, b); | ||
| return { h: ((h << 1) | (l >>> 31)) & 0xffff_ffff, l: (l << 1) & 0xffff_ffff }; | ||
| // High 32 bits of unsigned u32 multiply, via the same 16-bit limb split as `mul` below. | ||
| // Kept single-purpose and number-returning so V8 inlines it (object-returning | ||
| // helpers here cost 2.2x of the whole derivation, measured; small helpers | ||
| // returning one number are free — see rotr* usage everywhere). | ||
| function mulHi(a: number, b: number): number { | ||
| const aL = a & 0xffff, aH = a >>> 16, bL = b & 0xffff, bH = b >>> 16; // prettier-ignore | ||
| const carry = (Math.imul(aL, bL) >>> 16) + (Math.imul(aH, bL) & 0xffff) + Math.imul(aL, bH); | ||
| return (Math.imul(aH, bH) + (Math.imul(aH, bL) >>> 16) + (carry >>> 16)) | 0; | ||
| } | ||
| // BlaMka permutation for Argon2 | ||
| // `A + B + 2 * trunc(A) * trunc(B)`, where `trunc(...)` means the low 32-bit halves. | ||
| function blamka(Ah: number, Al: number, Bh: number, Bl: number) { | ||
| const { h: Ch, l: Cl } = mul2(Al, Bl); | ||
| // A + B + (2 * A * B) | ||
| const Rll = add3L(Al, Bl, Cl); | ||
| return { h: add3H(Rll, Ah, Bh, Ch), l: Rll | 0 }; | ||
| } | ||
| // Temporary block buffer. | ||
@@ -82,2 +78,5 @@ // 1024-byte block: 256 u32 = 128 interleaved low/high halves = RFC's | ||
| // Quarter-round over 64-bit word indices into `A2_BUF`; each index maps to adjacent low/high u32s. | ||
| // Each BlaMka step `X = X + Y + 2 * trunc(X) * trunc(Y)` (trunc = low 32 bits) is three lines: | ||
| // `Math.imul` is the low product half, `mulHi` the high half, then a split 64-bit add with the | ||
| // doubling folded in. RFC 9106 Figure 19 GB rotates by 32, 24, 16, and 63 bits after each XOR. | ||
| function G(a: number, b: number, c: number, d: number) { | ||
@@ -88,19 +87,47 @@ let Al = A2_BUF[2*a], Ah = A2_BUF[2*a + 1]; // prettier-ignore | ||
| let Dl = A2_BUF[2*d], Dh = A2_BUF[2*d + 1]; // prettier-ignore | ||
| let ml = 0, mh = 0, rl = 0, xh = 0, xl = 0; // prettier-ignore | ||
| // RFC 9106 Figure 19 GB rotates by 32, 24, 16, and 63 bits after each XOR step. | ||
| ({ h: Ah, l: Al } = blamka(Ah, Al, Bh, Bl)); | ||
| ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al }); | ||
| ({ Dh, Dl } = { Dh: rotr32H(Dh, Dl), Dl: rotr32L(Dh, Dl) }); | ||
| // A = blamka(A, B); D = rotr64(D ^ A, 32) | ||
| ml = Math.imul(Al, Bl); | ||
| mh = mulHi(Al, Bl); // prettier-ignore | ||
| rl = (Al >>> 0) + (Bl >>> 0) + ((ml << 1) >>> 0); | ||
| Ah = (Ah + Bh + ((mh << 1) | (ml >>> 31)) + ((rl / 0x100000000) | 0)) | 0; | ||
| Al = rl | 0; // prettier-ignore | ||
| xh = Dh ^ Ah; | ||
| xl = Dl ^ Al; // prettier-ignore | ||
| Dh = rotr32H(xh, xl); | ||
| Dl = rotr32L(xh, xl); // prettier-ignore | ||
| ({ h: Ch, l: Cl } = blamka(Ch, Cl, Dh, Dl)); | ||
| ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl }); | ||
| ({ Bh, Bl } = { Bh: rotrSH(Bh, Bl, 24), Bl: rotrSL(Bh, Bl, 24) }); | ||
| // C = blamka(C, D); B = rotr64(B ^ C, 24) | ||
| ml = Math.imul(Cl, Dl); | ||
| mh = mulHi(Cl, Dl); // prettier-ignore | ||
| rl = (Cl >>> 0) + (Dl >>> 0) + ((ml << 1) >>> 0); | ||
| Ch = (Ch + Dh + ((mh << 1) | (ml >>> 31)) + ((rl / 0x100000000) | 0)) | 0; | ||
| Cl = rl | 0; // prettier-ignore | ||
| xh = Bh ^ Ch; | ||
| xl = Bl ^ Cl; // prettier-ignore | ||
| Bh = rotrSH(xh, xl, 24); | ||
| Bl = rotrSL(xh, xl, 24); // prettier-ignore | ||
| ({ h: Ah, l: Al } = blamka(Ah, Al, Bh, Bl)); | ||
| ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al }); | ||
| ({ Dh, Dl } = { Dh: rotrSH(Dh, Dl, 16), Dl: rotrSL(Dh, Dl, 16) }); | ||
| // A = blamka(A, B); D = rotr64(D ^ A, 16) | ||
| ml = Math.imul(Al, Bl); | ||
| mh = mulHi(Al, Bl); // prettier-ignore | ||
| rl = (Al >>> 0) + (Bl >>> 0) + ((ml << 1) >>> 0); | ||
| Ah = (Ah + Bh + ((mh << 1) | (ml >>> 31)) + ((rl / 0x100000000) | 0)) | 0; | ||
| Al = rl | 0; // prettier-ignore | ||
| xh = Dh ^ Ah; | ||
| xl = Dl ^ Al; // prettier-ignore | ||
| Dh = rotrSH(xh, xl, 16); | ||
| Dl = rotrSL(xh, xl, 16); // prettier-ignore | ||
| ({ h: Ch, l: Cl } = blamka(Ch, Cl, Dh, Dl)); | ||
| ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl }); | ||
| ({ Bh, Bl } = { Bh: rotrBH(Bh, Bl, 63), Bl: rotrBL(Bh, Bl, 63) }); | ||
| // C = blamka(C, D); B = rotr64(B ^ C, 63) | ||
| ml = Math.imul(Cl, Dl); | ||
| mh = mulHi(Cl, Dl); // prettier-ignore | ||
| rl = (Cl >>> 0) + (Dl >>> 0) + ((ml << 1) >>> 0); | ||
| Ch = (Ch + Dh + ((mh << 1) | (ml >>> 31)) + ((rl / 0x100000000) | 0)) | 0; | ||
| Cl = rl | 0; // prettier-ignore | ||
| xh = Bh ^ Ch; | ||
| xl = Bl ^ Cl; // prettier-ignore | ||
| Bh = rotrBH(xh, xl, 63); | ||
| Bl = rotrBL(xh, xl, 63); // prettier-ignore | ||
@@ -188,3 +215,3 @@ ((A2_BUF[2 * a] = Al), (A2_BUF[2 * a + 1] = Ah)); | ||
| // Used only inside process block! | ||
| // Used only inside argon2Blocks! | ||
| function indexAlpha( | ||
@@ -236,3 +263,3 @@ r: number, | ||
| * Optional progress callback invoked during long-running derivations. | ||
| * param progress - completion fraction in the `0..1` range | ||
| * @param progress - completion fraction in the `0..1` range | ||
| */ | ||
@@ -250,2 +277,3 @@ onProgress?: (progress: number) => void; | ||
| function argon2Opts(opts: TArg<ArgonOpts>) { | ||
| opts = checkOpts({}, opts); | ||
| const merged: any = { | ||
@@ -268,3 +296,3 @@ version: 0x13, | ||
| if (onProgress !== undefined && typeof onProgress !== 'function') | ||
| throw new Error('"progressCb" must be a function'); | ||
| throw new Error('"onProgress" must be a function'); | ||
| anumber(asyncTick, 'asyncTick'); | ||
@@ -384,57 +412,9 @@ /* | ||
| function processBlock( | ||
| B: TArg<Uint32Array>, | ||
| address: TArg<Uint32Array>, | ||
| l: number, | ||
| r: number, | ||
| s: number, | ||
| index: number, | ||
| laneLen: number, | ||
| segmentLen: number, | ||
| lanes: number, | ||
| offset: number, | ||
| prev: number, | ||
| dataIndependent: boolean, | ||
| needXor: boolean | ||
| ) { | ||
| if (offset % laneLen) prev = offset - 1; | ||
| let randL, randH; | ||
| if (dataIndependent) { | ||
| let i128 = index % 128; | ||
| // RFC 9106 §3.4.1.2: each 1024-byte address block yields 128 `(J1, J2)` pairs, so regenerate | ||
| // it whenever the segment index crosses a multiple of 128. | ||
| if (i128 === 0) { | ||
| address[256 + 12]++; | ||
| block(address, 256, 2 * 256, 0, false); | ||
| block(address, 0, 2 * 256, 0, false); | ||
| } | ||
| randL = address[2 * i128]; | ||
| randH = address[2 * i128 + 1]; | ||
| } else { | ||
| const T = 256 * prev; | ||
| randL = B[T]; | ||
| randH = B[T + 1]; | ||
| } | ||
| // Address-block path selects `J1` / `J2`, then maps them to the reference | ||
| // lane/block per RFC 9106 §3.4. | ||
| const refLane = r === 0 && s === 0 ? l : randH % lanes; | ||
| const refPos = indexAlpha(r, s, laneLen, segmentLen, index, randL, refLane == l); | ||
| const refBlock = laneLen * refLane + refPos; | ||
| // B[i][j] = G(B[i][j-1], B[l][z]) | ||
| block(B, 256 * prev, 256 * refBlock, offset * 256, needXor); | ||
| } | ||
| function argon2( | ||
| type: Types, | ||
| password: TArg<KDFInput>, | ||
| salt: TArg<KDFInput>, | ||
| opts: TArg<ArgonOpts> | ||
| ): TRet<Uint8Array> { | ||
| const { mP, p, t, version, B, laneLen, lanes, segmentLen, dkLen, perBlock } = argon2Init( | ||
| password, | ||
| salt, | ||
| type, | ||
| opts | ||
| ); | ||
| // Pre-loop setup | ||
| /** | ||
| * Fills every Argon2 block for all passes / slices / lanes, yielding once per | ||
| * processed block so callers control pacing: the sync driver just drains the | ||
| * generator, while the async driver awaits `nextTick()` between time slices. | ||
| */ | ||
| function* argon2Blocks(ctx: ReturnType<typeof argon2Init>): Generator<void, void> { | ||
| const { type, mP, p, t, version, B, laneLen, lanes, segmentLen, perBlock } = ctx; | ||
| // [address, input, zero_block] format so we can pass single U32 to block function | ||
@@ -467,23 +447,34 @@ const address = new Uint32Array(3 * 256); | ||
| } | ||
| // current block postion | ||
| // current block position | ||
| let offset = l * laneLen + s * segmentLen + startPos; | ||
| // previous block position | ||
| let prev = offset % laneLen ? offset - 1 : offset + laneLen - 1; | ||
| for (let index = startPos; index < segmentLen; index++, offset++, prev++) { | ||
| for (let index = startPos; index < segmentLen; index++, offset++) { | ||
| perBlock(); | ||
| processBlock( | ||
| B, | ||
| address, | ||
| l, | ||
| r, | ||
| s, | ||
| index, | ||
| laneLen, | ||
| segmentLen, | ||
| lanes, | ||
| offset, | ||
| prev, | ||
| dataIndependent, | ||
| needXor | ||
| ); | ||
| // Previous block position: wraps to the lane's last block only at lane start, | ||
| // which can happen here only for the first block of slice 0 on passes > 0. | ||
| const prev = offset % laneLen ? offset - 1 : offset + laneLen - 1; | ||
| let randL, randH; | ||
| if (dataIndependent) { | ||
| let i128 = index % 128; | ||
| // RFC 9106 §3.4.1.2: each 1024-byte address block yields 128 `(J1, J2)` pairs, so | ||
| // regenerate it whenever the segment index crosses a multiple of 128. | ||
| if (i128 === 0) { | ||
| address[256 + 12]++; | ||
| block(address, 256, 2 * 256, 0, false); | ||
| block(address, 0, 2 * 256, 0, false); | ||
| } | ||
| randL = address[2 * i128]; | ||
| randH = address[2 * i128 + 1]; | ||
| } else { | ||
| const T = 256 * prev; | ||
| randL = B[T]; | ||
| randH = B[T + 1]; | ||
| } | ||
| // Address-block path selects `J1` / `J2`, then maps them to the reference | ||
| // lane/block per RFC 9106 §3.4. | ||
| const refLane = r === 0 && s === 0 ? l : randH % lanes; | ||
| const refPos = indexAlpha(r, s, laneLen, segmentLen, index, randL, refLane == l); | ||
| const refBlock = laneLen * refLane + refPos; | ||
| // B[i][j] = G(B[i][j-1], B[l][z]) | ||
| block(B, 256 * prev, 256 * refBlock, offset * 256, needXor); | ||
| yield; | ||
| } | ||
@@ -494,5 +485,16 @@ } | ||
| clean(address); | ||
| return argon2Output(B, p, laneLen, dkLen); | ||
| } | ||
| function argon2( | ||
| type: Types, | ||
| password: TArg<KDFInput>, | ||
| salt: TArg<KDFInput>, | ||
| opts: TArg<ArgonOpts> | ||
| ): TRet<Uint8Array> { | ||
| const ctx = argon2Init(password, salt, type, opts); | ||
| const blocks = argon2Blocks(ctx); | ||
| while (!blocks.next().done) {} | ||
| return argon2Output(ctx.B, ctx.p, ctx.laneLen, ctx.dkLen); | ||
| } | ||
| /** | ||
@@ -510,2 +512,21 @@ * Argon2d GPU-resistant version. | ||
| * ``` | ||
| * @example | ||
| * Derive a key with optional secret and scheduler controls. | ||
| * ```ts | ||
| * const progressLog: number[] = []; | ||
| * argon2d('password', 'salt1234', { | ||
| * t: 1, | ||
| * m: 8, | ||
| * p: 1, | ||
| * dkLen: 32, | ||
| * version: 0x13, | ||
| * key: 'secret', | ||
| * personalization: 'application', | ||
| * maxmem: 1024 * 1024, | ||
| * asyncTick: 1, | ||
| * onProgress(progress) { | ||
| * progressLog.push(progress); | ||
| * }, | ||
| * }); | ||
| * ``` | ||
| */ | ||
@@ -516,3 +537,3 @@ export const argon2d = ( | ||
| opts: TArg<ArgonOpts> | ||
| ): TRet<Uint8Array> => argon2(AT.Argond2d, password, salt, opts); | ||
| ): TRet<Uint8Array> => argon2(AT.Argon2d, password, salt, opts); | ||
| /** | ||
@@ -561,67 +582,14 @@ * Argon2i side-channel-resistant version. | ||
| ): Promise<TRet<Uint8Array>> { | ||
| const { mP, p, t, version, B, laneLen, lanes, segmentLen, dkLen, perBlock, asyncTick } = | ||
| argon2Init(password, salt, type, opts); | ||
| // Pre-loop setup | ||
| // [address, input, zero_block] format so we can pass single U32 to block function | ||
| const address = new Uint32Array(3 * 256); | ||
| address[256 + 6] = mP; | ||
| address[256 + 8] = t; | ||
| address[256 + 10] = type; | ||
| const ctx = argon2Init(password, salt, type, opts); | ||
| const blocks = argon2Blocks(ctx); | ||
| let ts = Date.now(); | ||
| for (let r = 0; r < t; r++) { | ||
| // RFC 9106 step 6 applies the XOR-on-later-passes rule only for version `0x13`; legacy | ||
| // `0x10` keeps the older overwrite behavior used by the v16 test vectors. | ||
| const needXor = r !== 0 && version === 0x13; | ||
| address[256 + 0] = r; | ||
| for (let s = 0; s < ARGON2_SYNC_POINTS; s++) { | ||
| address[256 + 4] = s; | ||
| // RFC 9106 §3.4.1.3: Argon2id uses Argon2i's data-independent `J1` / `J2` generation only | ||
| // in pass 0, slices 0 and 1; Argon2i uses it in every segment. | ||
| const dataIndependent = type == AT.Argon2i || (type == AT.Argon2id && r === 0 && s < 2); | ||
| for (let l = 0; l < p; l++) { | ||
| address[256 + 2] = l; | ||
| address[256 + 12] = 0; | ||
| let startPos = 0; | ||
| if (r === 0 && s === 0) { | ||
| startPos = 2; | ||
| if (dataIndependent) { | ||
| address[256 + 12]++; | ||
| block(address, 256, 2 * 256, 0, false); | ||
| block(address, 0, 2 * 256, 0, false); | ||
| } | ||
| } | ||
| // current block postion | ||
| let offset = l * laneLen + s * segmentLen + startPos; | ||
| // previous block position | ||
| let prev = offset % laneLen ? offset - 1 : offset + laneLen - 1; | ||
| for (let index = startPos; index < segmentLen; index++, offset++, prev++) { | ||
| perBlock(); | ||
| processBlock( | ||
| B, | ||
| address, | ||
| l, | ||
| r, | ||
| s, | ||
| index, | ||
| laneLen, | ||
| segmentLen, | ||
| lanes, | ||
| offset, | ||
| prev, | ||
| dataIndependent, | ||
| needXor | ||
| ); | ||
| // Date.now() is not monotonic. If the clock goes backwards, | ||
| // still yield control. | ||
| const diff = Date.now() - ts; | ||
| if (!(diff >= 0 && diff < asyncTick)) { | ||
| await nextTick(); | ||
| ts += diff; | ||
| } | ||
| } | ||
| } | ||
| } | ||
| while (!blocks.next().done) { | ||
| // Date.now() is not monotonic. If the clock goes backwards, | ||
| // still yield control. | ||
| const diff = Date.now() - ts; | ||
| if (diff >= 0 && diff < ctx.asyncTick) continue; | ||
| await nextTick(); | ||
| ts += diff; | ||
| } | ||
| clean(address); | ||
| return argon2Output(B, p, laneLen, dkLen); | ||
| return argon2Output(ctx.B, ctx.p, ctx.laneLen, ctx.dkLen); | ||
| } | ||
@@ -641,2 +609,20 @@ | ||
| * ``` | ||
| * @example | ||
| * Derive a key asynchronously with optional secret and scheduler controls. | ||
| * ```ts | ||
| * await argon2dAsync('password', 'salt1234', { | ||
| * t: 1, | ||
| * m: 8, | ||
| * p: 1, | ||
| * dkLen: 32, | ||
| * version: 0x13, | ||
| * key: 'secret', | ||
| * personalization: 'application', | ||
| * maxmem: 1024 * 1024, | ||
| * asyncTick: 1, | ||
| * onProgress(progress) { | ||
| * if (progress > 1) throw new Error('invalid progress'); | ||
| * }, | ||
| * }); | ||
| * ``` | ||
| */ | ||
@@ -647,3 +633,3 @@ export const argon2dAsync = ( | ||
| opts: TArg<ArgonOpts> | ||
| ): Promise<TRet<Uint8Array>> => argon2Async(AT.Argond2d, password, salt, opts); | ||
| ): Promise<TRet<Uint8Array>> => argon2Async(AT.Argon2d, password, salt, opts); | ||
| /** | ||
@@ -650,0 +636,0 @@ * Argon2i async side-channel-resistant version. |
+96
-34
@@ -31,2 +31,3 @@ /** | ||
| abytes, aexists, aoutput, | ||
| checkOpts, | ||
| clean, createHasher, | ||
@@ -40,2 +41,8 @@ createView, | ||
| // Unrealized speed-up: G1b/G2b call the tiny u64.* helpers (rotations, split adds) across | ||
| // the module boundary, which V8 does not inline — u64.add's {h,l} return even allocates | ||
| // per call. File-local copies of the helpers measured ~15% faster blake512 on Node 24. | ||
| // Kept deduplicated in _u64 for auditability. Also doesn't matter for bundles | ||
| // which don't do `import`. | ||
| /** Blake1 options. Basically just `salt`. */ | ||
@@ -64,3 +71,7 @@ export type BlakeOpts = { | ||
| protected abstract get(): number[]; | ||
| protected abstract set(...args: number[]): void; | ||
| // Each state layout must own this call site. At a monomorphic site TurboFan inlines get()/set() | ||
| // and scalar-replaces the tuple, so no secret-bearing array is allocated. Sharing this site | ||
| // across the 32/64-bit layouts materializes the tuple, which cannot be explicitly wiped, and | ||
| // regresses clone-heavy KDFs. | ||
| abstract _cloneInto(to?: T): T; | ||
@@ -82,2 +93,3 @@ readonly blockLen: number; | ||
| ) { | ||
| opts = checkOpts({}, opts); | ||
| const { salt } = opts; | ||
@@ -125,3 +137,5 @@ this.blockLen = blockLen; | ||
| } | ||
| buffer.set(data.subarray(pos, pos + take), this.pos); | ||
| // When the whole input is buffered in one go (common for short messages), passing `data` | ||
| // directly avoids allocating a subarray view. | ||
| buffer.set(pos === 0 && take === len ? data : data.subarray(pos, pos + take), this.pos); | ||
| this.pos += take; | ||
@@ -143,9 +157,19 @@ pos += take; | ||
| } | ||
| _cloneInto(to?: T): T { | ||
| to ||= new (this.constructor as any)() as T; | ||
| to.set(...this.get()); | ||
| protected _cloneIntoMeta(to: T): T { | ||
| const { buffer, length, finished, destroyed, constants, salt, pos } = this; | ||
| to.buffer.set(buffer); | ||
| if (pos) to.buffer.set(buffer); | ||
| // At pos=0 the source buffer is dead. Discard an unfinished destination's old message bytes; | ||
| // finished digestInto() workers are already clean, so hot KDF resets skip this fill. | ||
| else if (to.destroyed || (!to.finished && (to.length || to.pos))) clean(to.buffer); | ||
| // Clone salt-derived arrays by value so destroying the clone cannot wipe the source instance. | ||
| to.constants = constants.slice(); | ||
| if (salt === EMPTY_SALT) { | ||
| to.constants = constants; // Immutable; sentinel keeps destroy() from wiping it. | ||
| to.salt = EMPTY_SALT; | ||
| } else if (to.salt === EMPTY_SALT) { | ||
| to.constants = constants.slice(); | ||
| to.salt = salt.slice(); | ||
| } else { | ||
| to.constants.set(constants); // Reuse independently owned salted arrays. | ||
| to.salt.set(salt); | ||
| } | ||
| to.destroyed = destroyed; | ||
@@ -155,3 +179,2 @@ to.finished = finished; | ||
| to.pos = pos; | ||
| to.salt = salt.slice(); | ||
| return to; | ||
@@ -168,4 +191,4 @@ } | ||
| const { buffer, blockLen, counterLen, lengthFlag, view } = this; | ||
| clean(buffer.subarray(this.pos)); // clean buf | ||
| const counter = BigInt((this.length + this.pos) * 8); | ||
| buffer.fill(0, this.pos); // clean buf | ||
| const counterBits = (this.length + this.pos) * 8; | ||
| const counterPos = blockLen - counterLen - 1; | ||
@@ -183,3 +206,3 @@ buffer[this.pos] |= 0b1000_0000; // End block flag | ||
| // We always set 8 byte length flag. Because length will overflow significantly sooner. | ||
| view.setBigUint64(blockLen - 8, counter, false); | ||
| u64.setU64FromNum(view, blockLen - 8, counterBits, false); | ||
| // Blake1 omits the counter from the extra all-padding block; only the block that still carries | ||
@@ -190,3 +213,4 @@ // message bytes mixes in the final bit length. | ||
| clean(buffer); | ||
| const v = createView(out); | ||
| // digest() passes our own `buffer` as `out`; reuse its cached view instead of allocating one. | ||
| const v = out === buffer ? view : createView(out); | ||
| const state = this.get(); | ||
@@ -282,2 +306,6 @@ for (let i = 0; i < this.outputLen / 4; ++i) v.setUint32(i * 4, state[i]); | ||
| } | ||
| _cloneInto(to?: BLAKE1_32B): BLAKE1_32B { | ||
| (to ||= new (this.constructor as any)() as BLAKE1_32B).set(...this.get()); | ||
| return this._cloneIntoMeta(to); | ||
| } | ||
| destroy(): void { | ||
@@ -305,3 +333,5 @@ super.destroy(); | ||
| // final all-padding block passes `withLength = false`, leaving these lanes as raw constants. | ||
| const { h, l } = u64.fromBig(BigInt(withLength ? this.length * 8 : 0)); | ||
| const bits = withLength ? this.length * 8 : 0; | ||
| const h = u64.fromNumH(bits); | ||
| const l = u64.fromNumL(bits); | ||
| let v12 = (this.constants[4] ^ l) >>> 0; | ||
@@ -373,17 +403,24 @@ let v13 = (this.constants[5] ^ l) >>> 0; | ||
| // v[a] = (v[a] + v[b] + x) | 0; | ||
| let ll = u64.add3L(Al, Bl, Xl); | ||
| const ll = u64.add3L(Al, Bl, Xl); | ||
| Ah = u64.add3H(ll, Ah, Bh, Xh) >>> 0; | ||
| Al = (ll | 0) >>> 0; | ||
| // v[d] = rotr(v[d] ^ v[a], 32) | ||
| ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al }); | ||
| ({ Dh, Dl } = { Dh: u64.rotr32H(Dh, Dl), Dl: u64.rotr32L(Dh, Dl) }); | ||
| let xh = Dh ^ Ah, xl = Dl ^ Al; // prettier-ignore | ||
| Dh = u64.rotr32H(xh, xl); | ||
| Dl = u64.rotr32L(xh, xl); | ||
| // v[c] = (v[c] + v[d]) | 0; | ||
| ({ h: Ch, l: Cl } = u64.add(Ch, Cl, Dh, Dl)); | ||
| // v[b] = rotr(v[b] ^ v[c], 25) | ||
| ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl }); | ||
| ({ Bh, Bl } = { Bh: u64.rotrSH(Bh, Bl, 25), Bl: u64.rotrSL(Bh, Bl, 25) }); | ||
| ((BBUF[2 * a + 1] = Al), (BBUF[2 * a] = Ah)); | ||
| ((BBUF[2 * b + 1] = Bl), (BBUF[2 * b] = Bh)); | ||
| ((BBUF[2 * c + 1] = Cl), (BBUF[2 * c] = Ch)); | ||
| ((BBUF[2 * d + 1] = Dl), (BBUF[2 * d] = Dh)); | ||
| xh = Bh ^ Ch; | ||
| xl = Bl ^ Cl; | ||
| Bh = u64.rotrSH(xh, xl, 25); | ||
| Bl = u64.rotrSL(xh, xl, 25); | ||
| BBUF[2 * a + 1] = Al; | ||
| BBUF[2 * a] = Ah; | ||
| BBUF[2 * b + 1] = Bl; | ||
| BBUF[2 * b] = Bh; | ||
| BBUF[2 * c + 1] = Cl; | ||
| BBUF[2 * c] = Ch; | ||
| BBUF[2 * d + 1] = Dl; | ||
| BBUF[2 * d] = Dh; | ||
| } | ||
@@ -400,17 +437,24 @@ | ||
| // v[a] = (v[a] + v[b] + x) | 0; | ||
| let ll = u64.add3L(Al, Bl, Xl); | ||
| const ll = u64.add3L(Al, Bl, Xl); | ||
| Ah = u64.add3H(ll, Ah, Bh, Xh); | ||
| Al = ll | 0; | ||
| // v[d] = rotr(v[d] ^ v[a], 16) | ||
| ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al }); | ||
| ({ Dh, Dl } = { Dh: u64.rotrSH(Dh, Dl, 16), Dl: u64.rotrSL(Dh, Dl, 16) }); | ||
| let xh = Dh ^ Ah, xl = Dl ^ Al; // prettier-ignore | ||
| Dh = u64.rotrSH(xh, xl, 16); | ||
| Dl = u64.rotrSL(xh, xl, 16); | ||
| // v[c] = (v[c] + v[d]) | 0; | ||
| ({ h: Ch, l: Cl } = u64.add(Ch, Cl, Dh, Dl)); | ||
| // v[b] = rotr(v[b] ^ v[c], 11) | ||
| ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl }); | ||
| ({ Bh, Bl } = { Bh: u64.rotrSH(Bh, Bl, 11), Bl: u64.rotrSL(Bh, Bl, 11) }); | ||
| ((BBUF[2 * a + 1] = Al), (BBUF[2 * a] = Ah)); | ||
| ((BBUF[2 * b + 1] = Bl), (BBUF[2 * b] = Bh)); | ||
| ((BBUF[2 * c + 1] = Cl), (BBUF[2 * c] = Ch)); | ||
| ((BBUF[2 * d + 1] = Dl), (BBUF[2 * d] = Dh)); | ||
| xh = Bh ^ Ch; | ||
| xl = Bl ^ Cl; | ||
| Bh = u64.rotrSH(xh, xl, 11); | ||
| Bl = u64.rotrSL(xh, xl, 11); | ||
| BBUF[2 * a + 1] = Al; | ||
| BBUF[2 * a] = Ah; | ||
| BBUF[2 * b + 1] = Bl; | ||
| BBUF[2 * b] = Bh; | ||
| BBUF[2 * c + 1] = Cl; | ||
| BBUF[2 * c] = Ch; | ||
| BBUF[2 * d + 1] = Dl; | ||
| BBUF[2 * d] = Dh; | ||
| } | ||
@@ -488,2 +532,6 @@ | ||
| } | ||
| _cloneInto(to?: BLAKE1_64B): BLAKE1_64B { | ||
| (to ||= new (this.constructor as any)() as BLAKE1_64B).set(...this.get()); | ||
| return this._cloneIntoMeta(to); | ||
| } | ||
| destroy(): void { | ||
@@ -495,4 +543,11 @@ super.destroy(); | ||
| for (let i = 0; i < 32; i++, offset += 4) BLAKE512_W[i] = view.getUint32(offset, false); | ||
| this.get().forEach((v, i) => (BBUF[i] = v)); // First half from state. | ||
| // First half from state. Direct writes: get() would allocate an array + | ||
| // closure per block (same reasoning as blake2b's compress). | ||
| // prettier-ignore | ||
| const { v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h } = this; | ||
| // prettier-ignore | ||
| { BBUF[0] = v0l; BBUF[1] = v0h; BBUF[2] = v1l; BBUF[3] = v1h; | ||
| BBUF[4] = v2l; BBUF[5] = v2h; BBUF[6] = v3l; BBUF[7] = v3h; | ||
| BBUF[8] = v4l; BBUF[9] = v4h; BBUF[10] = v5l; BBUF[11] = v5h; | ||
| BBUF[12] = v6l; BBUF[13] = v6h; BBUF[14] = v7l; BBUF[15] = v7h; } | ||
| BBUF.set(this.constants.subarray(0, 16), 16); | ||
@@ -502,3 +557,5 @@ if (withLength) { | ||
| // block passes `withLength = false`, leaving the trailing constant lanes untouched. | ||
| const { h, l } = u64.fromBig(BigInt(this.length * 8)); | ||
| const bits = this.length * 8; | ||
| const h = u64.fromNumH(bits); | ||
| const l = u64.fromNumL(bits); | ||
| BBUF[24] = (BBUF[24] ^ h) >>> 0; | ||
@@ -598,2 +655,7 @@ BBUF[25] = (BBUF[25] ^ l) >>> 0; | ||
| * ``` | ||
| * @example | ||
| * Hash a message with Blake1-256 and a 16-byte salt. | ||
| * ```ts | ||
| * blake256(new Uint8Array([97, 98, 99]), { salt: new Uint8Array(16) }); | ||
| * ``` | ||
| */ | ||
@@ -600,0 +662,0 @@ export const blake256: TRet<CHash<_BLAKE256, BlakeOpts>> = /* @__PURE__ */ createHasher( |
+106
-40
@@ -12,3 +12,4 @@ /** | ||
| abytes, aexists, anumber, aoutput, | ||
| clean, createHasher, | ||
| checkOpts, | ||
| clean, copyBytes, createHasher, | ||
| swap32IfBE, swap8IfBE, | ||
@@ -22,2 +23,8 @@ u32, | ||
| // Unrealized speed-up: G1b/G2b call the tiny u64.* helpers (rotations, split adds) across | ||
| // the module boundary, which V8 does not inline — u64.add's {h,l} return even allocates | ||
| // per call. File-local copies of the helpers measured ~15-20% faster blake2b on Node 24. | ||
| // Kept deduplicated in _u64 for auditability. Also doesn't matter for bundles | ||
| // which don't do `import`. | ||
| /** | ||
@@ -57,17 +64,24 @@ * Blake hash options. | ||
| // v[a] = (v[a] + v[b] + x) | 0; | ||
| let ll = u64.add3L(Al, Bl, Xl); | ||
| const ll = u64.add3L(Al, Bl, Xl); | ||
| Ah = u64.add3H(ll, Ah, Bh, Xh); | ||
| Al = ll | 0; | ||
| // v[d] = rotr(v[d] ^ v[a], 32) | ||
| ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al }); | ||
| ({ Dh, Dl } = { Dh: u64.rotr32H(Dh, Dl), Dl: u64.rotr32L(Dh, Dl) }); | ||
| let xh = Dh ^ Ah, xl = Dl ^ Al; // prettier-ignore | ||
| Dh = u64.rotr32H(xh, xl); | ||
| Dl = u64.rotr32L(xh, xl); | ||
| // v[c] = (v[c] + v[d]) | 0; | ||
| ({ h: Ch, l: Cl } = u64.add(Ch, Cl, Dh, Dl)); | ||
| // v[b] = rotr(v[b] ^ v[c], 24) | ||
| ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl }); | ||
| ({ Bh, Bl } = { Bh: u64.rotrSH(Bh, Bl, 24), Bl: u64.rotrSL(Bh, Bl, 24) }); | ||
| ((BBUF[2 * a] = Al), (BBUF[2 * a + 1] = Ah)); | ||
| ((BBUF[2 * b] = Bl), (BBUF[2 * b + 1] = Bh)); | ||
| ((BBUF[2 * c] = Cl), (BBUF[2 * c + 1] = Ch)); | ||
| ((BBUF[2 * d] = Dl), (BBUF[2 * d + 1] = Dh)); | ||
| xh = Bh ^ Ch; | ||
| xl = Bl ^ Cl; | ||
| Bh = u64.rotrSH(xh, xl, 24); | ||
| Bl = u64.rotrSL(xh, xl, 24); | ||
| BBUF[2 * a] = Al; | ||
| BBUF[2 * a + 1] = Ah; | ||
| BBUF[2 * b] = Bl; | ||
| BBUF[2 * b + 1] = Bh; | ||
| BBUF[2 * c] = Cl; | ||
| BBUF[2 * c + 1] = Ch; | ||
| BBUF[2 * d] = Dl; | ||
| BBUF[2 * d + 1] = Dh; | ||
| } | ||
@@ -84,17 +98,24 @@ | ||
| // v[a] = (v[a] + v[b] + x) | 0; | ||
| let ll = u64.add3L(Al, Bl, Xl); | ||
| const ll = u64.add3L(Al, Bl, Xl); | ||
| Ah = u64.add3H(ll, Ah, Bh, Xh); | ||
| Al = ll | 0; | ||
| // v[d] = rotr(v[d] ^ v[a], 16) | ||
| ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al }); | ||
| ({ Dh, Dl } = { Dh: u64.rotrSH(Dh, Dl, 16), Dl: u64.rotrSL(Dh, Dl, 16) }); | ||
| let xh = Dh ^ Ah, xl = Dl ^ Al; // prettier-ignore | ||
| Dh = u64.rotrSH(xh, xl, 16); | ||
| Dl = u64.rotrSL(xh, xl, 16); | ||
| // v[c] = (v[c] + v[d]) | 0; | ||
| ({ h: Ch, l: Cl } = u64.add(Ch, Cl, Dh, Dl)); | ||
| // v[b] = rotr(v[b] ^ v[c], 63) | ||
| ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl }); | ||
| ({ Bh, Bl } = { Bh: u64.rotrBH(Bh, Bl, 63), Bl: u64.rotrBL(Bh, Bl, 63) }); | ||
| ((BBUF[2 * a] = Al), (BBUF[2 * a + 1] = Ah)); | ||
| ((BBUF[2 * b] = Bl), (BBUF[2 * b + 1] = Bh)); | ||
| ((BBUF[2 * c] = Cl), (BBUF[2 * c + 1] = Ch)); | ||
| ((BBUF[2 * d] = Dl), (BBUF[2 * d + 1] = Dh)); | ||
| xh = Bh ^ Ch; | ||
| xl = Bl ^ Cl; | ||
| Bh = u64.rotrBH(xh, xl, 63); | ||
| Bl = u64.rotrBL(xh, xl, 63); | ||
| BBUF[2 * a] = Al; | ||
| BBUF[2 * a + 1] = Ah; | ||
| BBUF[2 * b] = Bl; | ||
| BBUF[2 * b + 1] = Bh; | ||
| BBUF[2 * c] = Cl; | ||
| BBUF[2 * c + 1] = Ch; | ||
| BBUF[2 * d] = Dl; | ||
| BBUF[2 * d + 1] = Dh; | ||
| } | ||
@@ -110,4 +131,6 @@ | ||
| anumber(keyLen); | ||
| // RFC 7693 §2.1 requires digest length nn in 1..keyLen. | ||
| if (outputLen <= 0 || outputLen > keyLen) throw new Error('outputLen bigger than keyLen'); | ||
| // RFC 7693 §2.1 requires digest length nn in 1..keyLen (keyLen doubles as | ||
| // the per-variant max for both key and digest lengths: 64 for b, 32 for s). | ||
| if (outputLen <= 0 || outputLen > keyLen) | ||
| throw new Error('"dkLen" must be 1..' + keyLen + ', got ' + outputLen); | ||
| const { key, salt, personalization } = opts; | ||
@@ -177,3 +200,5 @@ // This API uses `undefined` for the RFC 7693 `kk = 0` case, so a provided key must be non-empty. | ||
| } | ||
| buffer.set(data.subarray(pos, pos + take), this.pos); | ||
| // When the whole input is buffered in one go (common for short messages), passing `data` | ||
| // directly avoids allocating a subarray view. | ||
| buffer.set(pos === 0 && take === len ? data : data.subarray(pos, pos + take), this.pos); | ||
| this.pos += take; | ||
@@ -188,16 +213,15 @@ this.length += take; | ||
| aoutput(out, this); | ||
| // Reject unaligned views explicitly instead of hiding them behind a full scratch copy. | ||
| if (out.byteOffset & 3) | ||
| throw new RangeError('"output" expected 4-byte aligned byteOffset, got ' + out.byteOffset); | ||
| const { pos, buffer32 } = this; | ||
| this.finished = true; | ||
| // Padding | ||
| clean(this.buffer.subarray(pos)); | ||
| this.buffer.fill(0, pos); | ||
| swap32IfBE(buffer32); | ||
| this.compress(buffer32, 0, true); | ||
| swap32IfBE(buffer32); | ||
| // Reject unaligned views explicitly instead of hiding them behind a full scratch copy. | ||
| if (out.byteOffset & 3) | ||
| throw new RangeError( | ||
| '"digestInto() output" expected 4-byte aligned byteOffset, got ' + out.byteOffset | ||
| ); | ||
| const state = this.get(); | ||
| const out32 = u32(out); | ||
| // digest() passes our own `buffer` as `out`; reuse its cached u32 view instead of allocating. | ||
| const out32 = out === this.buffer ? buffer32 : u32(out); | ||
| const full = Math.floor(this.outputLen / 4); | ||
@@ -224,2 +248,3 @@ for (let i = 0; i < full; i++) out32[i] = swap8IfBE(state[i]); | ||
| to.set(...this.get()); | ||
| // Last-block-aware lazy compression keeps the pending block live even when full. | ||
| to.buffer.set(buffer); | ||
@@ -260,2 +285,3 @@ to.destroyed = destroyed; | ||
| constructor(opts: Blake2Opts = {}) { | ||
| opts = checkOpts({}, opts); | ||
| const olen = opts.dkLen === undefined ? 64 : opts.dkLen; | ||
@@ -275,3 +301,4 @@ super(128, olen); | ||
| abytes(salt, undefined, 'salt'); | ||
| const slt = u32(salt); | ||
| // Copy: u32() would throw on views with byteOffset not divisible by 4. | ||
| const slt = u32(copyBytes(salt)); | ||
| this.v4l ^= swap8IfBE(slt[0]); | ||
@@ -284,3 +311,4 @@ this.v4h ^= swap8IfBE(slt[1]); | ||
| abytes(personalization, undefined, 'personalization'); | ||
| const pers = u32(personalization); | ||
| // Copy: u32() would throw on views with byteOffset not divisible by 4. | ||
| const pers = u32(copyBytes(personalization)); | ||
| this.v6l ^= swap8IfBE(pers[0]); | ||
@@ -296,2 +324,4 @@ this.v6h ^= swap8IfBE(pers[1]); | ||
| this.update(tmp); | ||
| // The padded copy holds key material; buffer/state keep what they need. | ||
| clean(tmp); | ||
| } | ||
@@ -332,5 +362,14 @@ } | ||
| protected compress(msg: Uint32Array, offset: number, isLast: boolean): void { | ||
| this.get().forEach((v, i) => (BBUF[i] = v)); // First half from state. | ||
| // First half from state. Direct writes: get() would allocate an array + | ||
| // closure per block. | ||
| // prettier-ignore | ||
| const { v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h } = this; | ||
| // prettier-ignore | ||
| { BBUF[0] = v0l; BBUF[1] = v0h; BBUF[2] = v1l; BBUF[3] = v1h; | ||
| BBUF[4] = v2l; BBUF[5] = v2h; BBUF[6] = v3l; BBUF[7] = v3h; | ||
| BBUF[8] = v4l; BBUF[9] = v4h; BBUF[10] = v5l; BBUF[11] = v5h; | ||
| BBUF[12] = v6l; BBUF[13] = v6h; BBUF[14] = v7l; BBUF[15] = v7h; } | ||
| BBUF.set(B2B_IV, 16); // Second half from IV. | ||
| let { h, l } = u64.fromBig(BigInt(this.length)); | ||
| const l = u64.fromNumL(this.length); | ||
| const h = u64.fromNumH(this.length); | ||
| BBUF[24] = B2B_IV[8] ^ l; // Low word of the offset. | ||
@@ -403,2 +442,12 @@ BBUF[25] = B2B_IV[9] ^ h; // High word. | ||
| * ``` | ||
| * @example | ||
| * Hash a message with Blake2b while selecting output, MAC, salt, and personalization settings. | ||
| * ```ts | ||
| * blake2b(new Uint8Array([97, 98, 99]), { | ||
| * dkLen: 32, | ||
| * key: new Uint8Array(32), | ||
| * salt: new Uint8Array(16), | ||
| * personalization: new Uint8Array(16), | ||
| * }); | ||
| * ``` | ||
| */ | ||
@@ -450,4 +499,4 @@ export const blake2b: TRet<CHash<_BLAKE2b, Blake2Opts>> = /* @__PURE__ */ createHasher( | ||
| * ```ts | ||
| * import { compress } from '@noble/hashes/blake2.js'; | ||
| * const state = compress( | ||
| * import { _compress } from '@noble/hashes/blake2.js'; | ||
| * const state = _compress( | ||
| * new Uint8Array(16), | ||
@@ -464,3 +513,4 @@ * 0, | ||
| // prettier-ignore | ||
| export function compress(s: TArg<Uint8Array>, offset: number, msg: TArg<Uint32Array>, rounds: number, | ||
| export function _compress( | ||
| s: TArg<Uint8Array>, offset: number, msg: TArg<Uint32Array>, rounds: number, | ||
| v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, | ||
@@ -508,2 +558,3 @@ v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, | ||
| constructor(opts: Blake2Opts = {}) { | ||
| opts = checkOpts({}, opts); | ||
| const olen = opts.dkLen === undefined ? 32 : opts.dkLen; | ||
@@ -523,3 +574,4 @@ super(64, olen); | ||
| abytes(salt, undefined, 'salt'); | ||
| const slt = u32(salt as Uint8Array); | ||
| // Copy: u32() would throw on views with byteOffset not divisible by 4. | ||
| const slt = u32(copyBytes(salt as Uint8Array)); | ||
| this.v4 ^= swap8IfBE(slt[0]); | ||
@@ -530,3 +582,4 @@ this.v5 ^= swap8IfBE(slt[1]); | ||
| abytes(personalization, undefined, 'personalization'); | ||
| const pers = u32(personalization as Uint8Array); | ||
| // Copy: u32() would throw on views with byteOffset not divisible by 4. | ||
| const pers = u32(copyBytes(personalization as Uint8Array)); | ||
| this.v6 ^= swap8IfBE(pers[0]); | ||
@@ -540,2 +593,4 @@ this.v7 ^= swap8IfBE(pers[1]); | ||
| this.update(tmp); | ||
| // The padded copy holds key material; buffer/state keep what they need. | ||
| clean(tmp); | ||
| } | ||
@@ -561,3 +616,4 @@ } | ||
| protected compress(msg: Uint32Array, offset: number, isLast: boolean): void { | ||
| const { h, l } = u64.fromBig(BigInt(this.length)); | ||
| const l = u64.fromNumL(this.length); | ||
| const h = u64.fromNumH(this.length); | ||
| // Seed v8..v15 from the IV, xor the low/high 32-bit byte counter into | ||
@@ -567,3 +623,3 @@ // v12/v13, and invert v14 on the final block. | ||
| const { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 } = | ||
| compress( | ||
| _compress( | ||
| BSIGMA, offset, msg, 10, | ||
@@ -601,2 +657,12 @@ this.v0, this.v1, this.v2, this.v3, this.v4, this.v5, this.v6, this.v7, | ||
| * ``` | ||
| * @example | ||
| * Hash a message with Blake2s while selecting output, MAC, salt, and personalization settings. | ||
| * ```ts | ||
| * blake2s(new Uint8Array([97, 98, 99]), { | ||
| * dkLen: 16, | ||
| * key: new Uint8Array(32), | ||
| * salt: new Uint8Array(8), | ||
| * personalization: new Uint8Array(8), | ||
| * }); | ||
| * ``` | ||
| */ | ||
@@ -603,0 +669,0 @@ export const blake2s: TRet<CHash<_BLAKE2s, Blake2Opts>> = /* @__PURE__ */ createHasher( |
+38
-17
@@ -15,7 +15,8 @@ /** | ||
| import { SHA256_IV } from './_md.ts'; | ||
| import { fromBig } from './_u64.ts'; | ||
| import { _BLAKE2, compress } from './blake2.ts'; | ||
| import { fromNumH, fromNumL } from './_u64.ts'; | ||
| import { _BLAKE2, _compress } from './blake2.ts'; | ||
| // prettier-ignore | ||
| import { | ||
| abytes, aexists, anumber, aoutput, | ||
| checkOpts, | ||
| clean, | ||
@@ -96,2 +97,3 @@ copyBytes, | ||
| constructor(opts: Blake3Opts = {}, flags = 0) { | ||
| opts = checkOpts({}, opts); | ||
| super(64, opts.dkLen === undefined ? 32 : opts.dkLen); | ||
@@ -101,3 +103,3 @@ const { key, context } = opts; | ||
| if (key !== undefined) { | ||
| if (hasContext) throw new Error('Only "key" or "context" can be specified at same time'); | ||
| if (hasContext) throw new Error('cannot use both "key" and "context"'); | ||
| abytes(key, 32, 'key'); | ||
@@ -118,3 +120,3 @@ const k = copyBytes(key); | ||
| } else { | ||
| this.IV = B3_IV.slice(); | ||
| this.IV = B3_IV; // Share the module-private immutable default IV. | ||
| this.flags = flags; | ||
@@ -135,9 +137,10 @@ } | ||
| const { state: s, pos } = this; | ||
| const { h, l } = fromBig(BigInt(counter), true); | ||
| const t0 = fromNumL(counter); | ||
| const t1 = fromNumH(counter); | ||
| // prettier-ignore | ||
| const { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 } = | ||
| compress( | ||
| _compress( | ||
| B3_SIGMA, bufPos, buf, 7, | ||
| s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7], | ||
| B3_IV[0], B3_IV[1], B3_IV[2], B3_IV[3], h, l, pos, flags | ||
| B3_IV[0], B3_IV[1], B3_IV[2], B3_IV[3], t0, t1, pos, flags | ||
| ); | ||
@@ -187,10 +190,20 @@ s[0] = v0 ^ v8; | ||
| } | ||
| // Overriding hides _BLAKE2's flat implementation, which would otherwise be inherited | ||
| // and silently miss the tree state (CV stack, chunk counters; get()/set() are stubs here). | ||
| _cloneInto(to?: _BLAKE3): _BLAKE3 { | ||
| const staleOutput = !!to && to.finished && !to.destroyed; // Save before super copies lifecycle. | ||
| to = super._cloneInto(to) as _BLAKE3; | ||
| const { IV, flags, state, chunkPos, posOut, chunkOut, stack, chunksDone } = this; | ||
| to.state.set(state.slice()); | ||
| to.state.set(state); | ||
| // Clone each CV stack entry by value so extending or destroying the clone | ||
| // cannot alias the source tree state. | ||
| to.stack = stack.map((i) => Uint32Array.from(i)); | ||
| to.IV.set(IV); | ||
| if (IV === B3_IV) { | ||
| if (to.IV !== B3_IV) clean(to.IV); | ||
| to.IV = B3_IV; // Share immutable default; configured IVs stay private. | ||
| } else if (to.IV === B3_IV) { | ||
| to.IV = IV.slice(); | ||
| } else { | ||
| to.IV.set(IV); | ||
| } | ||
| to.flags = flags; | ||
@@ -202,3 +215,7 @@ to.chunkPos = chunkPos; | ||
| to.enableXOF = this.enableXOF; | ||
| to.bufferOut32.set(this.bufferOut32); | ||
| if (this.finished) { | ||
| to.bufferOut32.set(this.bufferOut32); | ||
| } else if (staleOutput) { | ||
| clean(to.bufferOut32); // Wipe stale output; finish() overwrites scratch. | ||
| } | ||
| return to; | ||
@@ -208,3 +225,4 @@ } | ||
| this.destroyed = true; | ||
| clean(this.state, this.buffer32, this.IV, this.bufferOut32); | ||
| clean(this.state, this.buffer32, this.bufferOut32); | ||
| if (this.IV !== B3_IV) clean(this.IV); | ||
| clean(...this.stack); | ||
@@ -217,10 +235,12 @@ } | ||
| const { state: s, pos, flags, buffer32, bufferOut32: out32 } = this; | ||
| const { h, l } = fromBig(BigInt(this.chunkOut++)); | ||
| const outCounter = this.chunkOut++; | ||
| const t0 = fromNumL(outCounter); | ||
| const t1 = fromNumH(outCounter); | ||
| swap32IfBE(buffer32); | ||
| // prettier-ignore | ||
| const { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 } = | ||
| compress( | ||
| _compress( | ||
| B3_SIGMA, 0, buffer32, 7, | ||
| s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7], | ||
| B3_IV[0], B3_IV[1], B3_IV[2], B3_IV[3], l, h, pos, flags | ||
| B3_IV[0], B3_IV[1], B3_IV[2], B3_IV[3], t0, t1, pos, flags | ||
| ); | ||
@@ -251,3 +271,3 @@ out32[0] = v0 ^ v8; | ||
| // Padding | ||
| clean(this.buffer.subarray(this.pos)); | ||
| this.buffer.fill(0, this.pos); | ||
| // Process last chunk | ||
@@ -285,3 +305,3 @@ let flags = this.flags | B3_Flags.ROOT; | ||
| xofInto(out: TArg<Uint8Array>): TRet<Uint8Array> { | ||
| if (!this.enableXOF) throw new Error('XOF is not possible after digest call'); | ||
| if (!this.enableXOF) throw new Error('no XOF after digest()'); | ||
| return this.writeInto(out); | ||
@@ -298,3 +318,3 @@ } | ||
| // `aoutput(...)` allows oversized buffers; digestInto() must fill only the configured digest. | ||
| this.writeInto(out.subarray(0, this.outputLen)); | ||
| this.writeInto(out.length === this.outputLen ? out : out.subarray(0, this.outputLen)); | ||
| this.destroy(); | ||
@@ -325,2 +345,3 @@ } | ||
| * const kdf = blake3(data, { context: utf8ToBytes('application name') }); | ||
| * const xof = blake3(data, { dkLen: 64 }); | ||
| * ``` | ||
@@ -327,0 +348,0 @@ */ |
+6
-0
@@ -95,2 +95,4 @@ /** | ||
| export function deriveMainSeed(username: string, password: string): TRet<Uint8Array> { | ||
| if (typeof username !== 'string') kdfInputToBytes(username, 'username'); | ||
| if (typeof password !== 'string') kdfInputToBytes(password, 'password'); | ||
| if (!strHasLength(username, 8, 255)) throw new Error('invalid username'); | ||
@@ -116,2 +118,5 @@ if (!strHasLength(password, 8, 255)) throw new Error('invalid password'); | ||
| * and string ids become UTF-8 `salt` bytes. | ||
| * Numeric and string account ids share the existing salt byte namespace; | ||
| * changing this would require a new ESKDF encoding, so callers should use one account | ||
| * id kind per application. | ||
| */ | ||
@@ -169,2 +174,3 @@ function getSaltInfo(protocol: string, accountId: AccountID = 0) { | ||
| const l = hasMod ? countBytes(options.modulus) + 8 : options.keyLength; | ||
| // HKDF-SHA256 ultimately caps output at 8160 bytes; values above that still fail in hkdf(). | ||
| if (!(typeof l === 'number' && l >= 16 && l <= 8192)) throw new Error('invalid keyLength'); | ||
@@ -171,0 +177,0 @@ return l; |
+46
-18
@@ -6,3 +6,3 @@ /** | ||
| */ | ||
| import { hmac } from './hmac.ts'; | ||
| import { hmac, type _HMAC } from './hmac.ts'; | ||
| import { abytes, ahash, anumber, type CHash, clean, type TArg, type TRet } from './utils.ts'; | ||
@@ -53,2 +53,3 @@ | ||
| * RFC 5869 §2.3 allows `0..255*HashLen`, so `0` returns an empty OKM. | ||
| * @param _recycled - Internal destroyed extract hashes owned by the combined `hkdf()` call. | ||
| * @returns Output keying material with the requested length. | ||
@@ -69,3 +70,4 @@ * @throws If the requested output length exceeds the HKDF limit | ||
| info?: TArg<Uint8Array>, | ||
| length: number = 32 | ||
| length: number = 32, | ||
| _recycled?: _HMAC<any> | ||
| ): TRet<Uint8Array> { | ||
@@ -83,23 +85,42 @@ ahash(hash); | ||
| else abytes(info, undefined, 'info'); | ||
| if (!blocks) { | ||
| if (_recycled) clean(prk); // Full hkdf() owns this intermediate PRK. | ||
| return new Uint8Array() as TRet<Uint8Array>; | ||
| } | ||
| // first L(ength) octets of T | ||
| const okm = new Uint8Array(blocks * olen); | ||
| // Re-use HMAC instance between blocks | ||
| const HMAC = hmac.create(hash, prk); | ||
| const HMACTmp = HMAC._cloneInto(); | ||
| const T = new Uint8Array(HMAC.outputLen); | ||
| for (let counter = 0; counter < blocks; counter++) { | ||
| // The private PRK can become both T and a one-block result after HMAC consumes the key. | ||
| const okm = _recycled && blocks === 1 ? prk : new Uint8Array(blocks * olen); | ||
| const { iHash, oHash } = hmac.create(hash, prk); | ||
| // Driving them directly also skips `_HMAC.digestInto`'s per-digest destroy. | ||
| const T = _recycled ? prk : new Uint8Array(olen); | ||
| // Full hkdf() donates one destroyed extract hash; standalone creates one alternating worker. | ||
| const worker = blocks > 1 ? _recycled?.iHash || hash.create() : undefined; | ||
| for (let counter = 0; counter < blocks - 1; counter++) { | ||
| HKDF_COUNTER[0] = counter + 1; | ||
| const iWork = iHash._cloneInto(worker); | ||
| // T(0) = empty string (zero length) | ||
| // T(N) = HMAC-Hash(PRK, T(N-1) | info | N) | ||
| HMACTmp.update(counter === 0 ? EMPTY_BUFFER : T) | ||
| .update(info) | ||
| .update(HKDF_COUNTER) | ||
| .digestInto(T); | ||
| if (counter) iWork.update(T); | ||
| iWork.update(info).update(HKDF_COUNTER).digestInto(T); | ||
| oHash._cloneInto(worker).update(T).digestInto(T); | ||
| okm.set(T, olen * counter); | ||
| HMAC._cloneInto(HMACTmp); | ||
| } | ||
| HMAC.destroy(); | ||
| HMACTmp.destroy(); | ||
| clean(T, HKDF_COUNTER); | ||
| return okm.slice(0, length) as TRet<Uint8Array>; | ||
| // Midstates are key-equivalent: they allow computing HMAC(prk, ...) for any message. | ||
| HKDF_COUNTER[0] = blocks; // Final block consumes them; retain worker for cleanup. | ||
| if (blocks > 1) iHash.update(T); | ||
| iHash.update(info).update(HKDF_COUNTER).digestInto(T); | ||
| oHash.update(T).digestInto(T); | ||
| okm.set(T, olen * (blocks - 1)); | ||
| iHash.destroy(); // Raw digests may leave key-derived base/worker state; wipe all explicitly. | ||
| oHash.destroy(); | ||
| worker?.destroy(); | ||
| if (T !== okm) clean(T); // Wipe private T/PRK; standalone preserves caller-owned PRK. | ||
| clean(HKDF_COUNTER); | ||
| // Exact fit: return without the extra copy. | ||
| if (length === okm.length) return okm as TRet<Uint8Array>; | ||
| // Copy the requested prefix, then wipe the full buffer: its tail holds | ||
| // up to HashLen-1 bytes of derived key material past `length`. | ||
| const res = okm.slice(0, length); | ||
| clean(okm); | ||
| return res as TRet<Uint8Array>; | ||
| } | ||
@@ -137,2 +158,9 @@ | ||
| length: number | ||
| ): TRet<Uint8Array> => expand(hash, extract(hash, ikm, salt), info, length); | ||
| ): TRet<Uint8Array> => { | ||
| ahash(hash); | ||
| if (salt === undefined) salt = new Uint8Array(hash.outputLen); | ||
| const HMAC = hmac.create(hash, salt).update(ikm); | ||
| // The intermediate PRK is secret key material; wipe it instead of | ||
| // leaving it for GC. | ||
| return expand(hash, HMAC.digest(), info, length, HMAC); // expand() owns and consumes it. | ||
| }; |
+9
-5
@@ -35,4 +35,3 @@ /** | ||
| this.iHash = hash.create() as T; | ||
| if (typeof this.iHash.update !== 'function') | ||
| throw new Error('Expected instance of class which extends utils.Hash'); | ||
| if (typeof this.iHash.update !== 'function') throw new Error('expected Hash instance'); | ||
| this.blockLen = this.iHash.blockLen; | ||
@@ -80,3 +79,3 @@ this.outputLen = this.iHash.outputLen; | ||
| to ||= Object.create(Object.getPrototypeOf(this), {}); | ||
| const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this; | ||
| const { oHash, iHash, finished, destroyed, blockLen, outputLen, canXOF } = this; | ||
| to = to as this; | ||
@@ -87,2 +86,3 @@ to.finished = finished; | ||
| to.outputLen = outputLen; | ||
| to.canXOF = canXOF; | ||
| to.oHash = oHash._cloneInto(to.oHash); | ||
@@ -109,7 +109,11 @@ to.iHash = iHash._cloneInto(to.iHash); | ||
| * @example | ||
| * Compute an RFC 2104 HMAC. | ||
| * Compute an RFC 2104 HMAC directly and with an incremental state. | ||
| * ```ts | ||
| * import { hmac } from '@noble/hashes/hmac.js'; | ||
| * import { sha256 } from '@noble/hashes/sha2.js'; | ||
| * const mac = hmac(sha256, new Uint8Array([1, 2, 3]), new Uint8Array([4, 5, 6])); | ||
| * const key = new Uint8Array([1, 2, 3]); | ||
| * const message = new Uint8Array([4, 5, 6]); | ||
| * const mac = hmac(sha256, key, message); | ||
| * const out = new Uint8Array(sha256.outputLen); | ||
| * hmac.create(sha256, key).update(message).digestInto(out); | ||
| * ``` | ||
@@ -116,0 +120,0 @@ */ |
+28
-6
@@ -46,2 +46,6 @@ /** | ||
| } | ||
| _cloneInto(to?: _SHA1): _SHA1 { | ||
| (to ||= new (this.constructor as any)() as _SHA1).set(...this.get()); | ||
| return this._cloneIntoMeta(to); | ||
| } | ||
| protected process(view: DataView, offset: number): void { | ||
@@ -98,2 +102,3 @@ for (let i = 0; i < 16; i++, offset += 4) SHA1_W[i] = view.getUint32(offset, false); | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -120,2 +125,13 @@ * @example | ||
| const MD5_W = /* @__PURE__ */ new Uint32Array(16); | ||
| // RFC 1321 §3.4 per-round rotate amounts, flattened to 64 entries so the round loop | ||
| // avoids allocating a 4-element array literal every round (measured ~5% of md5). | ||
| const MD5_SHIFTS = /* @__PURE__ */ (() => { | ||
| const S = [ | ||
| [7, 12, 17, 22], | ||
| [5, 9, 14, 20], | ||
| [4, 11, 16, 23], | ||
| [6, 10, 15, 21], | ||
| ]; | ||
| return Uint8Array.from({ length: 64 }, (_, i) => S[Math.floor(i / 16)][i % 4]); | ||
| })(); | ||
| /** Internal MD5 legacy hash class. */ | ||
@@ -141,2 +157,6 @@ export class _MD5 extends HashMD<_MD5> { | ||
| } | ||
| _cloneInto(to?: _MD5): _MD5 { | ||
| (to ||= new (this.constructor as any)() as _MD5).set(...this.get()); | ||
| return this._cloneIntoMeta(to); | ||
| } | ||
| protected process(view: DataView, offset: number): void { | ||
@@ -147,7 +167,6 @@ for (let i = 0; i < 16; i++, offset += 4) MD5_W[i] = view.getUint32(offset, true); | ||
| for (let i = 0; i < 64; i++) { | ||
| let F, g, s; | ||
| let F, g; | ||
| if (i < 16) { | ||
| F = Chi(B, C, D); | ||
| g = i; | ||
| s = [7, 12, 17, 22]; | ||
| } else if (i < 32) { | ||
@@ -157,11 +176,8 @@ // RFC 1321 round 2 uses G(B,C,D) = (B & D) | (C & ~D), which is `Chi(D, B, C)`. | ||
| g = (5 * i + 1) % 16; | ||
| s = [5, 9, 14, 20]; | ||
| } else if (i < 48) { | ||
| F = B ^ C ^ D; | ||
| g = (3 * i + 5) % 16; | ||
| s = [4, 11, 16, 23]; | ||
| } else { | ||
| F = C ^ (B | ~D); | ||
| g = (7 * i) % 16; | ||
| s = [6, 10, 15, 21]; | ||
| } | ||
@@ -172,3 +188,3 @@ F = F + A + K[i] + MD5_W[g]; | ||
| C = B; | ||
| B = B + rotl(F, s[i % 4]); | ||
| B = B + rotl(F, MD5_SHIFTS[i]); | ||
| } | ||
@@ -203,2 +219,3 @@ // Add the compressed chunk to the current hash value | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -287,2 +304,6 @@ * @example | ||
| } | ||
| _cloneInto(to?: _RIPEMD160): _RIPEMD160 { | ||
| (to ||= new (this.constructor as any)() as _RIPEMD160).set(...this.get()); | ||
| return this._cloneIntoMeta(to); | ||
| } | ||
| protected process(view: DataView, offset: number): void { | ||
@@ -341,2 +362,3 @@ for (let i = 0; i < 16; i++, offset += 4) BUF_160[i] = view.getUint32(offset, true); | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -343,0 +365,0 @@ * @example |
+79
-54
@@ -31,3 +31,3 @@ /** | ||
| }; | ||
| // Common start and end for sync/async functions | ||
| // Common validation and per-call state setup for sync/async functions. | ||
| function pbkdf2Init( | ||
@@ -37,3 +37,3 @@ hash: TArg<CHash>, | ||
| _salt: TArg<KDFInput>, | ||
| _opts: TArg<Pbkdf2Opt> | ||
| _opts: Pbkdf2Opt | ||
| ) { | ||
@@ -46,3 +46,3 @@ ahash(hash); | ||
| anumber(asyncTick, 'asyncTick'); | ||
| if (c < 1) throw new Error('iterations (c) must be >= 1'); | ||
| if (c < 1) throw new Error('"c" (iterations) must be >= 1'); | ||
| // RFC 8018 §5.2 defines `dkLen` as "a positive integer". | ||
@@ -53,27 +53,57 @@ if (dkLen < 1) throw new Error('"dkLen" must be >= 1'); | ||
| if (dkLen > (2 ** 32 - 1) * hash.outputLen) throw new Error('derived key too long'); | ||
| const password = kdfInputToBytes(_password, 'password'); | ||
| const salt = kdfInputToBytes(_salt, 'salt'); | ||
| const p = kdfInputToBytes(_password, 'password'); | ||
| const s = kdfInputToBytes(_salt, 'salt'); | ||
| // DK = PBKDF2(PRF, Password, Salt, c, dkLen); | ||
| const DK = new Uint8Array(dkLen); | ||
| // U1 = PRF(Password, Salt + INT_32_BE(i)) | ||
| const PRF = hmac.create(hash, password); | ||
| // Cache PRF(P, S || ...) prefix state so each block only appends INT_32_BE(i). | ||
| const PRFSalt = PRF._cloneInto().update(salt); | ||
| return { c, dkLen, asyncTick, DK, PRF, PRFSalt }; | ||
| const { iHash, oHash, outputLen } = hmac.create(hash, p); | ||
| // Drive keyed hashes directly; the wrapper is only needed to initialize their HMAC midstates. | ||
| const u = new Uint8Array(outputLen); | ||
| const eng = pbkdf2Engine(iHash, oHash, s, u); | ||
| return { c, dkLen, asyncTick, DK, outputLen, eng }; | ||
| } | ||
| function pbkdf2Output<T extends Hash<T>>( | ||
| PRF: TArg<Hash<T>>, | ||
| PRFSalt: TArg<Hash<T>>, | ||
| DK: TArg<Uint8Array>, | ||
| prfW: TArg<Hash<T> | undefined>, | ||
| // Per-call PRF driver writes U1 into both `u` and `Ti`, then later digests into `u`; | ||
| // shared by the sync and async variants. | ||
| function pbkdf2Engine( | ||
| iHash: TArg<Hash<any>>, | ||
| oHash: TArg<Hash<any>>, | ||
| salt: TArg<Uint8Array>, | ||
| u: TArg<Uint8Array> | ||
| ): TRet<Uint8Array> { | ||
| // Shared sync/async cleanup point: wipe transient PRF state | ||
| // while preserving the derived key buffer. | ||
| PRF.destroy(); | ||
| PRFSalt.destroy(); | ||
| if (prfW) prfW.destroy(); | ||
| clean(u); | ||
| return DK as TRet<Uint8Array>; | ||
| ) { | ||
| const counter = new Uint8Array(4); | ||
| const view = createView(counter); | ||
| // Full clones retain tree/config state; absorb salt before async yields without cloning input. | ||
| const salted = iHash._cloneInto().update(salt); | ||
| // u1() overwrites the worker before reading it. Seed from the outer midstate so a long salt | ||
| // cannot pre-populate a tree stack that the first reset would abandon without wiping. | ||
| const work = oHash._cloneInto(); | ||
| const iClone = iHash._cloneInto; // Capture before mixed feedback can materialize state tuples. | ||
| const oClone = oHash._cloneInto; | ||
| return { | ||
| u1: (ti: number, Ti: TArg<Uint8Array>) => { | ||
| view.setInt32(0, ti, false); | ||
| salted._cloneInto(work).update(counter).digestInto(u); | ||
| oHash._cloneInto(work).update(u).digestInto(u); | ||
| Ti.set(u.subarray(0, Ti.length)); | ||
| }, | ||
| // Whole `F` inner loop for the sync variant: one optimized function owns the hot loop. | ||
| rounds: (c: number, Ti: TArg<Uint8Array>) => { | ||
| for (let ui = 1; ui < c; ui++) { | ||
| iClone.call(iHash, work).update(u).digestInto(u); | ||
| oClone.call(oHash, work).update(u).digestInto(u); | ||
| for (let i = 0; i < Ti.length; i++) Ti[i] ^= u[i]; | ||
| } | ||
| }, | ||
| output: (DK: TArg<Uint8Array>): TRet<Uint8Array> => { | ||
| // Keyed templates and derived worker states are secret material. | ||
| iHash.destroy(); | ||
| oHash.destroy(); | ||
| salted.destroy(); | ||
| work.destroy(); | ||
| // Shared sync/async cleanup point: wipe transient PRF state | ||
| // while preserving the derived key buffer. | ||
| clean(u); | ||
| return DK as TRet<Uint8Array>; | ||
| }, | ||
| }; | ||
| } | ||
@@ -103,27 +133,18 @@ | ||
| salt: TArg<KDFInput>, | ||
| opts: TArg<Pbkdf2Opt> | ||
| opts: Pbkdf2Opt | ||
| ): TRet<Uint8Array> { | ||
| const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts); | ||
| let prfW: any; // Working copy | ||
| const arr = new Uint8Array(4); | ||
| const view = createView(arr); | ||
| const u = new Uint8Array(PRF.outputLen); | ||
| const { c, dkLen, DK, outputLen, eng } = pbkdf2Init(hash, password, salt, opts); | ||
| // DK = T1 + T2 + ⋯ + Tdklen/hlen | ||
| for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) { | ||
| for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += outputLen) { | ||
| // Ti = F(Password, Salt, c, i) | ||
| // The last Ti view can be shorter than hLen, which applies | ||
| // RFC 8018 §5.2 step 4's T_l<0..r-1> truncation without extra copies. | ||
| const Ti = DK.subarray(pos, pos + PRF.outputLen); | ||
| view.setInt32(0, ti, false); | ||
| const Ti = DK.subarray(pos, pos + outputLen); | ||
| // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc | ||
| // U1 = PRF(Password, Salt + INT_32_BE(i)) | ||
| (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u); | ||
| Ti.set(u.subarray(0, Ti.length)); | ||
| for (let ui = 1; ui < c; ui++) { | ||
| // Uc = PRF(Password, Uc−1) | ||
| PRF._cloneInto(prfW).update(u).digestInto(u); | ||
| for (let i = 0; i < Ti.length; i++) Ti[i] ^= u[i]; | ||
| } | ||
| eng.u1(ti, Ti); | ||
| // Uc = PRF(Password, Uc−1); Ti ^= Uc | ||
| eng.rounds(c, Ti); | ||
| } | ||
| return pbkdf2Output(PRF, PRFSalt, DK, prfW, u); | ||
| return eng.output(DK); | ||
| } | ||
@@ -150,2 +171,13 @@ | ||
| * ``` | ||
| * @example | ||
| * Tune the async PBKDF2 scheduler for short UI tasks. | ||
| * ```ts | ||
| * import { pbkdf2Async } from '@noble/hashes/pbkdf2.js'; | ||
| * import { sha256 } from '@noble/hashes/sha2.js'; | ||
| * const key = await pbkdf2Async(sha256, 'password', 'salt', { | ||
| * dkLen: 32, | ||
| * c: 32, | ||
| * asyncTick: 1, | ||
| * }); | ||
| * ``` | ||
| */ | ||
@@ -156,27 +188,20 @@ export async function pbkdf2Async( | ||
| salt: TArg<KDFInput>, | ||
| opts: TArg<Pbkdf2Opt> | ||
| opts: Pbkdf2Opt | ||
| ): Promise<TRet<Uint8Array>> { | ||
| const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts); | ||
| let prfW: any; // Working copy | ||
| const arr = new Uint8Array(4); | ||
| const view = createView(arr); | ||
| const u = new Uint8Array(PRF.outputLen); | ||
| const { c, dkLen, asyncTick, DK, outputLen, eng } = pbkdf2Init(hash, password, salt, opts); | ||
| // DK = T1 + T2 + ⋯ + Tdklen/hlen | ||
| for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) { | ||
| for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += outputLen) { | ||
| // Ti = F(Password, Salt, c, i) | ||
| // The last Ti view can be shorter than hLen, which applies | ||
| // RFC 8018 §5.2 step 4's T_l<0..r-1> truncation without extra copies. | ||
| const Ti = DK.subarray(pos, pos + PRF.outputLen); | ||
| view.setInt32(0, ti, false); | ||
| const Ti = DK.subarray(pos, pos + outputLen); | ||
| // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc | ||
| // U1 = PRF(Password, Salt + INT_32_BE(i)) | ||
| (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u); | ||
| Ti.set(u.subarray(0, Ti.length)); | ||
| eng.u1(ti, Ti); | ||
| await asyncLoop(c - 1, asyncTick, () => { | ||
| // Uc = PRF(Password, Uc−1) | ||
| PRF._cloneInto(prfW).update(u).digestInto(u); | ||
| for (let i = 0; i < Ti.length; i++) Ti[i] ^= u[i]; | ||
| eng.rounds(2, Ti); // c=2 runs exactly one PRF iteration per callback. | ||
| }); | ||
| } | ||
| return pbkdf2Output(PRF, PRFSalt, DK, prfW, u); | ||
| return eng.output(DK); | ||
| } |
+52
-7
@@ -124,3 +124,5 @@ /** | ||
| * Optional progress callback invoked during long-running derivations. | ||
| * param progress - completion fraction in the `0..1` range | ||
| * @param progress - completion fraction in the `0..1` range | ||
| * Should not throw; if it does, derivation is aborted and scrypt work | ||
| * buffers are wiped before the error propagates. | ||
| */ | ||
@@ -131,3 +133,3 @@ onProgress?: (progress: number) => void; | ||
| // Common prologue and epilogue for sync/async functions | ||
| function scryptInit(password: TArg<KDFInput>, salt: TArg<KDFInput>, _opts?: TArg<ScryptOpts>) { | ||
| function scryptInit(password: TArg<KDFInput>, salt: TArg<KDFInput>, _opts?: ScryptOpts) { | ||
| // Maxmem - 1GB+1KB by default | ||
@@ -150,3 +152,6 @@ const opts = checkOpts( | ||
| if (onProgress !== undefined && typeof onProgress !== 'function') | ||
| throw new Error('progressCb must be a function'); | ||
| throw new Error('"onProgress" must be a function'); | ||
| // Without this, r=0 slips through: blockSize=0 turns the `p` upper bound into | ||
| // Infinity and the failure surfaces later as a confusing pbkdf2 dkLen error. | ||
| if (r < 1) throw new Error('"r" expected integer >= 1'); | ||
| const blockSize = 128 * r; | ||
@@ -191,4 +196,13 @@ const blockSize32 = blockSize / 4; | ||
| blockMixCnt++; | ||
| if (onProgress && (!(blockMixCnt % callbackPer) || blockMixCnt === totalBlockMix)) | ||
| onProgress(blockMixCnt / totalBlockMix); | ||
| if (onProgress && (!(blockMixCnt % callbackPer) || blockMixCnt === totalBlockMix)) { | ||
| // Wiping here instead of a try/catch around the main loops keeps them | ||
| // try-free: measured ~1% slower at N=2^21 with the loops inside a try. | ||
| // onProgress is the only user code that can throw mid-derivation. | ||
| try { | ||
| onProgress(blockMixCnt / totalBlockMix); | ||
| } catch (e) { | ||
| clean(B, V, tmp); | ||
| throw e; | ||
| } | ||
| } | ||
| }; | ||
@@ -226,2 +240,18 @@ } | ||
| * ``` | ||
| * @example | ||
| * Derive a key with small demo costs and progress/memory controls. | ||
| * ```ts | ||
| * const progressLog: number[] = []; | ||
| * scrypt('password', 'salt', { | ||
| * N: 16, | ||
| * r: 8, | ||
| * p: 1, | ||
| * dkLen: 32, | ||
| * maxmem: 1024 * 1024, | ||
| * asyncTick: 10, | ||
| * onProgress(progress) { | ||
| * progressLog.push(progress); | ||
| * }, | ||
| * }); | ||
| * ``` | ||
| */ | ||
@@ -231,3 +261,3 @@ export function scrypt( | ||
| salt: TArg<KDFInput>, | ||
| opts: TArg<ScryptOpts> | ||
| opts: ScryptOpts | ||
| ): TRet<Uint8Array> { | ||
@@ -283,2 +313,17 @@ const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb } = scryptInit( | ||
| * ``` | ||
| * @example | ||
| * Derive a key asynchronously with small demo costs and progress/memory controls. | ||
| * ```ts | ||
| * await scryptAsync('password', 'salt', { | ||
| * N: 16, | ||
| * r: 8, | ||
| * p: 1, | ||
| * dkLen: 32, | ||
| * maxmem: 1024 * 1024, | ||
| * asyncTick: 1, | ||
| * onProgress(progress) { | ||
| * if (progress > 1) throw new Error('invalid progress'); | ||
| * }, | ||
| * }); | ||
| * ``` | ||
| */ | ||
@@ -288,3 +333,3 @@ export async function scryptAsync( | ||
| salt: TArg<KDFInput>, | ||
| opts: TArg<ScryptOpts> | ||
| opts: ScryptOpts | ||
| ): Promise<TRet<Uint8Array>> { | ||
@@ -291,0 +336,0 @@ const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick } = scryptInit( |
+74
-118
@@ -35,13 +35,23 @@ /** | ||
| // which means optimizer/compiler cannot use registers. | ||
| protected abstract A: number; | ||
| protected abstract B: number; | ||
| protected abstract C: number; | ||
| protected abstract D: number; | ||
| protected abstract E: number; | ||
| protected abstract F: number; | ||
| protected abstract G: number; | ||
| protected abstract H: number; | ||
| // Numeric initializers matter: starting the fields as `undefined` changes | ||
| // V8's field representation and makes sha256 3x slower (measured). | ||
| protected A = 0; | ||
| protected B = 0; | ||
| protected C = 0; | ||
| protected D = 0; | ||
| protected E = 0; | ||
| protected F = 0; | ||
| protected G = 0; | ||
| protected H = 0; | ||
| constructor(outputLen: number) { | ||
| constructor(outputLen: number, IV: Uint32Array) { | ||
| super(64, outputLen, 8, false); | ||
| this.A = IV[0] | 0; | ||
| this.B = IV[1] | 0; | ||
| this.C = IV[2] | 0; | ||
| this.D = IV[3] | 0; | ||
| this.E = IV[4] | 0; | ||
| this.F = IV[5] | 0; | ||
| this.G = IV[6] | 0; | ||
| this.H = IV[7] | 0; | ||
| } | ||
@@ -65,2 +75,6 @@ protected get(): [number, number, number, number, number, number, number, number] { | ||
| } | ||
| _cloneInto(to?: T): T { | ||
| (to ||= new (this.constructor as any)() as T).set(...this.get()); | ||
| return this._cloneIntoMeta(to); | ||
| } | ||
| protected process(view: DataView, offset: number): void { | ||
@@ -117,14 +131,4 @@ // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array | ||
| export class _SHA256 extends SHA2_32B<_SHA256> { | ||
| // We cannot use array here since array allows indexing by variable | ||
| // which means optimizer/compiler cannot use registers. | ||
| protected A: number = SHA256_IV[0] | 0; | ||
| protected B: number = SHA256_IV[1] | 0; | ||
| protected C: number = SHA256_IV[2] | 0; | ||
| protected D: number = SHA256_IV[3] | 0; | ||
| protected E: number = SHA256_IV[4] | 0; | ||
| protected F: number = SHA256_IV[5] | 0; | ||
| protected G: number = SHA256_IV[6] | 0; | ||
| protected H: number = SHA256_IV[7] | 0; | ||
| constructor() { | ||
| super(32); | ||
| super(32, SHA256_IV); | ||
| } | ||
@@ -135,12 +139,4 @@ } | ||
| export class _SHA224 extends SHA2_32B<_SHA224> { | ||
| protected A: number = SHA224_IV[0] | 0; | ||
| protected B: number = SHA224_IV[1] | 0; | ||
| protected C: number = SHA224_IV[2] | 0; | ||
| protected D: number = SHA224_IV[3] | 0; | ||
| protected E: number = SHA224_IV[4] | 0; | ||
| protected F: number = SHA224_IV[5] | 0; | ||
| protected G: number = SHA224_IV[6] | 0; | ||
| protected H: number = SHA224_IV[7] | 0; | ||
| constructor() { | ||
| super(28); | ||
| super(28, SHA224_IV); | ||
| } | ||
@@ -189,21 +185,39 @@ } | ||
| // h -- high 32 bits, l -- low 32 bits | ||
| protected abstract Ah: number; | ||
| protected abstract Al: number; | ||
| protected abstract Bh: number; | ||
| protected abstract Bl: number; | ||
| protected abstract Ch: number; | ||
| protected abstract Cl: number; | ||
| protected abstract Dh: number; | ||
| protected abstract Dl: number; | ||
| protected abstract Eh: number; | ||
| protected abstract El: number; | ||
| protected abstract Fh: number; | ||
| protected abstract Fl: number; | ||
| protected abstract Gh: number; | ||
| protected abstract Gl: number; | ||
| protected abstract Hh: number; | ||
| protected abstract Hl: number; | ||
| // Numeric initializers matter: starting the fields as `undefined` changes | ||
| // V8's field representation and slows hashing down (measured on sha256). | ||
| protected Ah = 0; | ||
| protected Al = 0; | ||
| protected Bh = 0; | ||
| protected Bl = 0; | ||
| protected Ch = 0; | ||
| protected Cl = 0; | ||
| protected Dh = 0; | ||
| protected Dl = 0; | ||
| protected Eh = 0; | ||
| protected El = 0; | ||
| protected Fh = 0; | ||
| protected Fl = 0; | ||
| protected Gh = 0; | ||
| protected Gl = 0; | ||
| protected Hh = 0; | ||
| protected Hl = 0; | ||
| constructor(outputLen: number) { | ||
| constructor(outputLen: number, IV: Uint32Array) { | ||
| super(128, outputLen, 16, false); | ||
| this.Ah = IV[0] | 0; | ||
| this.Al = IV[1] | 0; | ||
| this.Bh = IV[2] | 0; | ||
| this.Bl = IV[3] | 0; | ||
| this.Ch = IV[4] | 0; | ||
| this.Cl = IV[5] | 0; | ||
| this.Dh = IV[6] | 0; | ||
| this.Dl = IV[7] | 0; | ||
| this.Eh = IV[8] | 0; | ||
| this.El = IV[9] | 0; | ||
| this.Fh = IV[10] | 0; | ||
| this.Fl = IV[11] | 0; | ||
| this.Gh = IV[12] | 0; | ||
| this.Gl = IV[13] | 0; | ||
| this.Hh = IV[14] | 0; | ||
| this.Hl = IV[15] | 0; | ||
| } | ||
@@ -240,2 +254,6 @@ // prettier-ignore | ||
| } | ||
| _cloneInto(to?: T): T { | ||
| (to ||= new (this.constructor as any)() as T).set(...this.get()); | ||
| return this._cloneIntoMeta(to); | ||
| } | ||
| protected process(view: DataView, offset: number): void { | ||
@@ -325,21 +343,4 @@ // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array | ||
| export class _SHA512 extends SHA2_64B<_SHA512> { | ||
| protected Ah: number = SHA512_IV[0] | 0; | ||
| protected Al: number = SHA512_IV[1] | 0; | ||
| protected Bh: number = SHA512_IV[2] | 0; | ||
| protected Bl: number = SHA512_IV[3] | 0; | ||
| protected Ch: number = SHA512_IV[4] | 0; | ||
| protected Cl: number = SHA512_IV[5] | 0; | ||
| protected Dh: number = SHA512_IV[6] | 0; | ||
| protected Dl: number = SHA512_IV[7] | 0; | ||
| protected Eh: number = SHA512_IV[8] | 0; | ||
| protected El: number = SHA512_IV[9] | 0; | ||
| protected Fh: number = SHA512_IV[10] | 0; | ||
| protected Fl: number = SHA512_IV[11] | 0; | ||
| protected Gh: number = SHA512_IV[12] | 0; | ||
| protected Gl: number = SHA512_IV[13] | 0; | ||
| protected Hh: number = SHA512_IV[14] | 0; | ||
| protected Hl: number = SHA512_IV[15] | 0; | ||
| constructor() { | ||
| super(64); | ||
| super(64, SHA512_IV); | ||
| } | ||
@@ -350,21 +351,4 @@ } | ||
| export class _SHA384 extends SHA2_64B<_SHA384> { | ||
| protected Ah: number = SHA384_IV[0] | 0; | ||
| protected Al: number = SHA384_IV[1] | 0; | ||
| protected Bh: number = SHA384_IV[2] | 0; | ||
| protected Bl: number = SHA384_IV[3] | 0; | ||
| protected Ch: number = SHA384_IV[4] | 0; | ||
| protected Cl: number = SHA384_IV[5] | 0; | ||
| protected Dh: number = SHA384_IV[6] | 0; | ||
| protected Dl: number = SHA384_IV[7] | 0; | ||
| protected Eh: number = SHA384_IV[8] | 0; | ||
| protected El: number = SHA384_IV[9] | 0; | ||
| protected Fh: number = SHA384_IV[10] | 0; | ||
| protected Fl: number = SHA384_IV[11] | 0; | ||
| protected Gh: number = SHA384_IV[12] | 0; | ||
| protected Gl: number = SHA384_IV[13] | 0; | ||
| protected Hh: number = SHA384_IV[14] | 0; | ||
| protected Hl: number = SHA384_IV[15] | 0; | ||
| constructor() { | ||
| super(48); | ||
| super(48, SHA384_IV); | ||
| } | ||
@@ -399,21 +383,4 @@ } | ||
| export class _SHA512_224 extends SHA2_64B<_SHA512_224> { | ||
| protected Ah: number = T224_IV[0] | 0; | ||
| protected Al: number = T224_IV[1] | 0; | ||
| protected Bh: number = T224_IV[2] | 0; | ||
| protected Bl: number = T224_IV[3] | 0; | ||
| protected Ch: number = T224_IV[4] | 0; | ||
| protected Cl: number = T224_IV[5] | 0; | ||
| protected Dh: number = T224_IV[6] | 0; | ||
| protected Dl: number = T224_IV[7] | 0; | ||
| protected Eh: number = T224_IV[8] | 0; | ||
| protected El: number = T224_IV[9] | 0; | ||
| protected Fh: number = T224_IV[10] | 0; | ||
| protected Fl: number = T224_IV[11] | 0; | ||
| protected Gh: number = T224_IV[12] | 0; | ||
| protected Gl: number = T224_IV[13] | 0; | ||
| protected Hh: number = T224_IV[14] | 0; | ||
| protected Hl: number = T224_IV[15] | 0; | ||
| constructor() { | ||
| super(28); | ||
| super(28, T224_IV); | ||
| } | ||
@@ -425,21 +392,4 @@ } | ||
| export class _SHA512_256 extends SHA2_64B<_SHA512_256> { | ||
| protected Ah: number = T256_IV[0] | 0; | ||
| protected Al: number = T256_IV[1] | 0; | ||
| protected Bh: number = T256_IV[2] | 0; | ||
| protected Bl: number = T256_IV[3] | 0; | ||
| protected Ch: number = T256_IV[4] | 0; | ||
| protected Cl: number = T256_IV[5] | 0; | ||
| protected Dh: number = T256_IV[6] | 0; | ||
| protected Dl: number = T256_IV[7] | 0; | ||
| protected Eh: number = T256_IV[8] | 0; | ||
| protected El: number = T256_IV[9] | 0; | ||
| protected Fh: number = T256_IV[10] | 0; | ||
| protected Fl: number = T256_IV[11] | 0; | ||
| protected Gh: number = T256_IV[12] | 0; | ||
| protected Gl: number = T256_IV[13] | 0; | ||
| protected Hh: number = T256_IV[14] | 0; | ||
| protected Hl: number = T256_IV[15] | 0; | ||
| constructor() { | ||
| super(32); | ||
| super(32, T256_IV); | ||
| } | ||
@@ -456,2 +406,3 @@ } | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -471,2 +422,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -487,2 +439,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -502,2 +455,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -519,2 +473,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -535,2 +490,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -537,0 +493,0 @@ * @example |
+262
-116
@@ -19,2 +19,3 @@ /** | ||
| type CHashXOF, | ||
| checkOpts, | ||
| clean, | ||
@@ -41,3 +42,4 @@ copyBytes, | ||
| // (`0 <= x < 2^2040`); this helper does not enforce that bound. | ||
| function leftEncode(n: number | bigint): TRet<Uint8Array> { | ||
| // Minimal big-endian bytes of `n`, at least one byte long (SP 800-185 §2.3.1). | ||
| function encodeBytes(n: number | bigint): number[] { | ||
| n = BigInt(n); | ||
@@ -47,18 +49,22 @@ const res = [Number(n & _ffn)]; | ||
| for (; n > 0; n >>= _8n) res.unshift(Number(n & _ffn)); | ||
| return res; | ||
| } | ||
| // left_encode(n): byte count is prepended. | ||
| function leftEncode(n: number | bigint): TRet<Uint8Array> { | ||
| const res = encodeBytes(n); | ||
| res.unshift(res.length); | ||
| return new Uint8Array(res) as TRet<Uint8Array>; | ||
| return new Uint8Array(res); | ||
| } | ||
| // Same caller contract as `leftEncode(...)`: lengths must already satisfy SP 800-185 §2.3.1. | ||
| // right_encode(n): byte count is appended. | ||
| function rightEncode(n: number | bigint): TRet<Uint8Array> { | ||
| n = BigInt(n); | ||
| const res = [Number(n & _ffn)]; | ||
| n >>= _8n; | ||
| for (; n > 0; n >>= _8n) res.unshift(Number(n & _ffn)); | ||
| const res = encodeBytes(n); | ||
| res.push(res.length); | ||
| return new Uint8Array(res) as TRet<Uint8Array>; | ||
| return new Uint8Array(res); | ||
| } | ||
| // `dkLen` validation is deferred to the downstream Keccak constructor. | ||
| // `dkLen` range validation is deferred to the downstream Keccak constructor. | ||
| function chooseLen(opts: ShakeOpts, outputLen: number): number { | ||
| opts = checkOpts({}, opts); | ||
| return opts.dkLen === undefined ? outputLen : opts.dkLen; | ||
@@ -89,12 +95,25 @@ } | ||
| // bytepad(X1 || X2 || ..., rate): absorbs left_encode(rate), then each chunk, then zero-pads | ||
| // to a rate boundary. Encode and pad inplace to avoid unneccesary memory copies/slices so we | ||
| // don't need to zero them later. `rate` is the current cSHAKE/KMAC/TupleHash/ParallelHash | ||
| // block length. | ||
| function bytepadUpdate(h: TArg<Keccak>, ...chunks: TArg<Uint8Array[]>): TRet<Keccak> { | ||
| const hash = h as Keccak; | ||
| const blockLenBytes = leftEncode(hash.blockLen); | ||
| hash.update(blockLenBytes); | ||
| let totalLen = blockLenBytes.length; | ||
| for (const chunk of chunks) { | ||
| hash.update(chunk); | ||
| totalLen += chunk.length; | ||
| } | ||
| hash.update(getPadding(totalLen, hash.blockLen)); | ||
| return hash as TRet<Keccak>; | ||
| } | ||
| // Personalization | ||
| function cshakePers(hash: TArg<Keccak>, opts: TArg<cShakeOpts> = {}): TRet<Keccak> { | ||
| const h = hash as unknown as Keccak; | ||
| if (!opts || (opts.personalization === undefined && opts.NISTfn === undefined)) | ||
| return h as TRet<Keccak>; | ||
| // Encode and pad inplace to avoid unneccesary memory copies/slices so we | ||
| // don't need to zero them later. | ||
| // bytepad(encode_string(N) || encode_string(S), rate), where `rate` is the | ||
| // current cSHAKE/KMAC/TupleHash/ParallelHash block length. | ||
| const blockLenBytes = leftEncode(h.blockLen); | ||
| function cshakePers(h: TArg<Keccak>, opts: TArg<cShakeOpts> = {}): TRet<Keccak> { | ||
| const hash = h as TRet<Keccak>; | ||
| opts = checkOpts({}, opts); | ||
| if (opts.personalization === undefined && opts.NISTfn === undefined) return hash; | ||
| // bytepad(encode_string(N) || encode_string(S), rate) | ||
| const fn = opts.NISTfn === undefined ? EMPTY_BUFFER : kdfInputToBytes(opts.NISTfn); | ||
@@ -104,10 +123,7 @@ const fnLen = leftEncode(_8n * BigInt(fn.length)); // length in bits | ||
| const persLen = leftEncode(_8n * BigInt(pers.length)); // length in bits | ||
| if (!fn.length && !pers.length) return h as TRet<Keccak>; | ||
| if (!fn.length && !pers.length) return hash; | ||
| // SP 800-185 cSHAKE appends `00` instead of SHAKE's `1111`; in this Keccak implementation | ||
| // that changes the delimited suffix byte from `0x1f` to `0x04` once N or S is non-empty. | ||
| h.suffix = 0x04; | ||
| h.update(blockLenBytes).update(fnLen).update(fn).update(persLen).update(pers); | ||
| let totalLen = blockLenBytes.length + fnLen.length + fn.length + persLen.length + pers.length; | ||
| h.update(getPadding(totalLen, h.blockLen)); | ||
| return h as TRet<Keccak>; | ||
| hash.suffix = 0x04; | ||
| return bytepadUpdate(hash, fnLen, fn, persLen, pers); | ||
| } | ||
@@ -120,8 +136,4 @@ | ||
| ): TRet<CHashXOF<Keccak, cShakeOpts>> => | ||
| createHasher<Keccak, cShakeOpts>( | ||
| (opts: TArg<cShakeOpts> = {}) => | ||
| cshakePers( | ||
| new Keccak(blockLen, suffix, chooseLen(opts, outputLen), true) as unknown as TArg<Keccak>, | ||
| opts | ||
| ) as Keccak | ||
| createHasher<Keccak, cShakeOpts>((opts: TArg<cShakeOpts> = {}) => | ||
| cshakePers(new Keccak(blockLen, suffix, chooseLen(opts, outputLen), true), opts) | ||
| ); | ||
@@ -137,3 +149,3 @@ | ||
| */ | ||
| (messages: TArg<Uint8Array[]>, opts?: TArg<cShakeOpts>): TRet<Uint8Array>; | ||
| (messages: TArg<Uint8Array[]>, opts?: cShakeOpts): TRet<Uint8Array>; | ||
| /** | ||
@@ -145,2 +157,8 @@ * Creates an incremental TupleHash state. | ||
| create(opts?: cShakeOpts): _TupleHash; | ||
| /** Default digest size in bytes. */ | ||
| outputLen: number; | ||
| /** Input block size in bytes. */ | ||
| blockLen: number; | ||
| /** Whether `.create()` returns an XOF-capable instance. */ | ||
| canXOF: boolean; | ||
| }; | ||
@@ -160,2 +178,11 @@ /** | ||
| * ``` | ||
| * @example | ||
| * Hash a message with SP 800-185 domain separation. | ||
| * ```ts | ||
| * cshake128(new Uint8Array([1, 2, 3]), { | ||
| * dkLen: 32, | ||
| * NISTfn: 'Email Signature', | ||
| * personalization: new Uint8Array([1, 2, 3]), | ||
| * }); | ||
| * ``` | ||
| */ | ||
@@ -198,3 +225,3 @@ export const cshake128: TRet<CHashXOF<Keccak, cShakeOpts>> = /* @__PURE__ */ gencShake( | ||
| key: TArg<Uint8Array>, | ||
| opts: TArg<cShakeOpts> = {} | ||
| opts: cShakeOpts = {} | ||
| ) { | ||
@@ -204,14 +231,7 @@ super(blockLen, 0x1f, outputLen, enableXOF); | ||
| // newX = bytepad(encode_string(K), rate) || X and `finish()` appends right_encode(L or 0). | ||
| cshakePers(this as unknown as TArg<Keccak>, { | ||
| NISTfn: 'KMAC', | ||
| personalization: opts.personalization, | ||
| }); | ||
| cshakePers(this, { NISTfn: 'KMAC', personalization: opts.personalization }); | ||
| abytes(key, undefined, 'key'); | ||
| // 1. newX = bytepad(encode_string(K), rate) || X || right_encode(L), | ||
| // with `rate = this.blockLen`. | ||
| const blockLenBytes = leftEncode(this.blockLen); | ||
| const keyLen = leftEncode(_8n * BigInt(key.length)); | ||
| this.update(blockLenBytes).update(keyLen).update(key); | ||
| const totalLen = blockLenBytes.length + keyLen.length + key.length; | ||
| this.update(getPadding(totalLen, this.blockLen)); | ||
| bytepadUpdate(this, leftEncode(_8n * BigInt(key.length)), key); | ||
| } | ||
@@ -251,3 +271,8 @@ protected finish(): void { | ||
| new _KMAC(blockLen, chooseLen(opts, outputLen), xof, key, opts); | ||
| return kmac as TRet<IKMAC>; | ||
| // Same metadata + freeze as `createHasher()` wrappers, so duck-typed | ||
| // consumers (e.g. `ahash()`) treat all wrappers alike. | ||
| kmac.outputLen = outputLen; | ||
| kmac.blockLen = blockLen; | ||
| kmac.canXOF = xof; | ||
| return Object.freeze(kmac) as TRet<IKMAC>; | ||
| } | ||
@@ -261,6 +286,6 @@ | ||
| * @param message - Message bytes to authenticate. | ||
| * @param opts - KMAC output and personalization options. See {@link KangarooOpts}. | ||
| * @param opts - KMAC output and personalization options. See {@link cShakeOpts}. | ||
| * @returns Authentication tag bytes. | ||
| */ | ||
| (key: TArg<Uint8Array>, message: TArg<Uint8Array>, opts?: TArg<KangarooOpts>): TRet<Uint8Array>; | ||
| (key: TArg<Uint8Array>, message: TArg<Uint8Array>, opts?: cShakeOpts): TRet<Uint8Array>; | ||
| /** | ||
@@ -272,3 +297,9 @@ * Creates an incremental KMAC state. | ||
| */ | ||
| create(key: TArg<Uint8Array>, opts?: TArg<cShakeOpts>): _KMAC; | ||
| create(key: TArg<Uint8Array>, opts?: cShakeOpts): _KMAC; | ||
| /** Default tag size in bytes. */ | ||
| outputLen: number; | ||
| /** Input block size in bytes. */ | ||
| blockLen: number; | ||
| /** Whether `.create()` returns an XOF-capable instance. */ | ||
| canXOF: boolean; | ||
| }; | ||
@@ -285,4 +316,16 @@ /** | ||
| * ```ts | ||
| * kmac128(new Uint8Array([1, 2, 3]), new Uint8Array([4, 5, 6])); | ||
| * const key = new Uint8Array([1, 2, 3]); | ||
| * const message = new Uint8Array([4, 5, 6]); | ||
| * kmac128(key, message); | ||
| * ``` | ||
| * @example | ||
| * Authenticate a message with output options and an incremental state. | ||
| * ```ts | ||
| * const key = new Uint8Array([1, 2, 3]); | ||
| * const message = new Uint8Array([4, 5, 6]); | ||
| * const opts = { dkLen: 32, personalization: new Uint8Array([7, 8, 9]) }; | ||
| * const tag = kmac128(key, message, opts); | ||
| * const out = new Uint8Array(32); | ||
| * kmac128.create(key, { dkLen: 32 }).update(message).digestInto(out); | ||
| * ``` | ||
| */ | ||
@@ -339,23 +382,19 @@ export const kmac128: TRet<IKMAC> = /* @__PURE__ */ genKmac(168, 16); | ||
| export class _TupleHash extends Keccak implements HashXOF<_TupleHash> { | ||
| constructor( | ||
| blockLen: number, | ||
| outputLen: number, | ||
| enableXOF: boolean, | ||
| opts: TArg<cShakeOpts> = {} | ||
| ) { | ||
| // Cheaper than a per-instance `this.update = ...` closure: switches the class-method | ||
| // update from plain absorption (during the cSHAKE preload) to tuple-element encoding. | ||
| private tupleMode = false; | ||
| constructor(blockLen: number, outputLen: number, enableXOF: boolean, opts: cShakeOpts = {}) { | ||
| super(blockLen, 0x1f, outputLen, enableXOF); | ||
| cshakePers(this as unknown as TArg<Keccak>, { | ||
| NISTfn: 'TupleHash', | ||
| personalization: opts.personalization, | ||
| }); | ||
| // Change update after cshake processed | ||
| this.update = (data: TArg<Uint8Array>) => { | ||
| abytes(data); | ||
| // SP 800-185 encodes each tuple element as | ||
| // encode_string(X[i]) = left_encode(len(X[i])) || X[i]. | ||
| super.update(leftEncode(_8n * BigInt(data.length))); | ||
| super.update(data); | ||
| return this; | ||
| }; | ||
| cshakePers(this, { NISTfn: 'TupleHash', personalization: opts.personalization }); | ||
| this.tupleMode = true; | ||
| } | ||
| update(data: TArg<Uint8Array>): this { | ||
| if (!this.tupleMode) return super.update(data) as this; | ||
| abytes(data); | ||
| // SP 800-185 encodes each tuple element as | ||
| // encode_string(X[i]) = left_encode(len(X[i])) || X[i]. | ||
| super.update(leftEncode(_8n * BigInt(data.length))); | ||
| super.update(data); | ||
| return this; | ||
| } | ||
| protected finish(): void { | ||
@@ -371,2 +410,3 @@ // SP 800-185 uses right_encode(L) for fixed-length TupleHash | ||
| to ||= new _TupleHash(this.blockLen, this.outputLen, this.enableXOF); | ||
| to.tupleMode = this.tupleMode; | ||
| return super._cloneInto(to) as _TupleHash; | ||
@@ -390,3 +430,8 @@ } | ||
| new _TupleHash(blockLen, chooseLen(opts, outputLen), xof, opts); | ||
| return tuple as TRet<ITupleHash>; | ||
| // Same metadata + freeze as `createHasher()` wrappers, so duck-typed | ||
| // consumers (e.g. `ahash()`) treat all wrappers alike. | ||
| tuple.outputLen = outputLen; | ||
| tuple.blockLen = blockLen; | ||
| tuple.canXOF = xof; | ||
| return Object.freeze(tuple) as TRet<ITupleHash>; | ||
| } | ||
@@ -455,5 +500,13 @@ | ||
| protected leafCons: () => Hash<Keccak>; | ||
| // Pristine leaf instance cloned into `leafHash` per chunk: with the default | ||
| // 8-byte chunks, constructing a fresh leaf per chunk costs ~15% (measured). | ||
| private leafTemplate?: Hash<Keccak>; | ||
| // Reused chaining-value buffer for leaf digests. | ||
| private leafCV?: Uint8Array; | ||
| private chunkPos = 0; // Position of current block in chunk | ||
| private chunksDone = 0; // How many chunks we already have | ||
| private chunkLen: number; | ||
| // Cheaper than a per-instance `this.update = ...` closure: switches the class-method | ||
| // update from plain absorption (during the cSHAKE preload) to leaf chunking. | ||
| private leafMode = false; | ||
| constructor( | ||
@@ -464,9 +517,6 @@ blockLen: number, | ||
| enableXOF: boolean, | ||
| opts: TArg<ParallelOpts> = {} | ||
| opts: ParallelOpts = {} | ||
| ) { | ||
| super(blockLen, 0x1f, outputLen, enableXOF); | ||
| cshakePers(this as unknown as TArg<Keccak>, { | ||
| NISTfn: 'ParallelHash', | ||
| personalization: opts.personalization, | ||
| }); | ||
| cshakePers(this, { NISTfn: 'ParallelHash', personalization: opts.personalization }); | ||
| this.leafCons = leafCons; | ||
@@ -482,29 +532,36 @@ let { blockLen: B = 8 } = opts; | ||
| super.update(leftEncode(B)); | ||
| // Change update after cshake processed | ||
| this.update = (data: TArg<Uint8Array>) => { | ||
| abytes(data); | ||
| const { chunkLen, leafCons } = this; | ||
| for (let pos = 0, len = data.length; pos < len; ) { | ||
| if (this.chunkPos == chunkLen || !this.leafHash) { | ||
| if (this.leafHash) { | ||
| super.update(this.leafHash.digest()); | ||
| this.chunksDone++; | ||
| } | ||
| this.leafHash = leafCons(); | ||
| this.chunkPos = 0; | ||
| } | ||
| const take = Math.min(chunkLen - this.chunkPos, len - pos); | ||
| this.leafHash.update(data.subarray(pos, pos + take)); | ||
| this.chunkPos += take; | ||
| pos += take; | ||
| this.leafMode = true; | ||
| } | ||
| private flushLeaf(): void { | ||
| const cv = (this.leafCV ||= new Uint8Array((this.leafHash as Keccak).outputLen)); | ||
| (this.leafHash as Keccak).digestInto(cv); | ||
| super.update(cv); | ||
| this.chunksDone++; | ||
| } | ||
| update(data: TArg<Uint8Array>): this { | ||
| if (!this.leafMode) return super.update(data) as this; | ||
| aexists(this); | ||
| abytes(data); | ||
| const { chunkLen, leafCons } = this; | ||
| for (let pos = 0, len = data.length; pos < len; ) { | ||
| if (this.chunkPos == chunkLen || !this.leafHash) { | ||
| if (this.leafHash) this.flushLeaf(); | ||
| // Clone a pristine template instead of re-running the constructor; | ||
| // resurrects the just-digested leaf allocation in place. | ||
| this.leafTemplate ||= leafCons(); | ||
| this.leafHash = (this.leafTemplate as Keccak)._cloneInto( | ||
| this.leafHash as Keccak | undefined | ||
| ); | ||
| this.chunkPos = 0; | ||
| } | ||
| return this; | ||
| }; | ||
| const take = Math.min(chunkLen - this.chunkPos, len - pos); | ||
| this.leafHash.update(data.subarray(pos, pos + take)); | ||
| this.chunkPos += take; | ||
| pos += take; | ||
| } | ||
| return this; | ||
| } | ||
| protected finish(): void { | ||
| if (this.finished) return; | ||
| if (this.leafHash) { | ||
| super.update(this.leafHash.digest()); | ||
| this.chunksDone++; | ||
| } | ||
| if (this.leafHash) this.flushLeaf(); | ||
| // SP 800-185 finishes ParallelHash as | ||
@@ -518,5 +575,21 @@ // z || right_encode(n) || right_encode(L); XOF mode replaces | ||
| } | ||
| // Overriding hides Keccak's flat implementation, which would otherwise be inherited | ||
| // and silently miss the tree state (leaf hash, chunk counters). | ||
| _cloneInto(to?: _ParallelHash): _ParallelHash { | ||
| to ||= new _ParallelHash(this.blockLen, this.outputLen, this.leafCons, this.enableXOF); | ||
| to.leafCons = this.leafCons; | ||
| // Clone the cached template/CV as regular state: this also overwrites | ||
| // stale wrong-variant values on reused destinations. | ||
| if (this.leafTemplate) | ||
| to.leafTemplate = (this.leafTemplate as Keccak)._cloneInto( | ||
| to.leafTemplate as Keccak | undefined | ||
| ); | ||
| else if (to.leafTemplate) { | ||
| to.leafTemplate.destroy(); | ||
| to.leafTemplate = undefined; | ||
| } | ||
| if (this.leafCV) { | ||
| if (to.leafCV && to.leafCV.length === this.leafCV.length) to.leafCV.set(this.leafCV); | ||
| else to.leafCV = this.leafCV.slice(); | ||
| } else to.leafCV = undefined; | ||
| // Reused destinations can carry a stale partial leaf | ||
@@ -532,2 +605,3 @@ // when the source is still on the root sponge. | ||
| to.chunksDone = this.chunksDone; | ||
| to.leafMode = this.leafMode; | ||
| return super._cloneInto(to) as _ParallelHash; | ||
@@ -538,2 +612,4 @@ } | ||
| if (this.leafHash) this.leafHash.destroy(); | ||
| if (this.leafTemplate) this.leafTemplate.destroy(); | ||
| if (this.leafCV) clean(this.leafCV); | ||
| } | ||
@@ -564,6 +640,7 @@ clone(): _ParallelHash { | ||
| ); | ||
| // Same metadata + freeze as `createHasher()` wrappers. | ||
| parallel.outputLen = outputLen; | ||
| parallel.blockLen = blockLen; | ||
| parallel.canXOF = xof; | ||
| return parallel as TRet<CHashXOF<Keccak, ParallelOpts>>; | ||
| return Object.freeze(parallel) as TRet<CHashXOF<Keccak, ParallelOpts>>; | ||
| } | ||
@@ -583,2 +660,11 @@ | ||
| * ``` | ||
| * @example | ||
| * Hash a message with chunking and personalization settings. | ||
| * ```ts | ||
| * parallelhash128(new Uint8Array([1, 2, 3]), { | ||
| * blockLen: 8, | ||
| * dkLen: 32, | ||
| * personalization: new Uint8Array([4, 5, 6]), | ||
| * }); | ||
| * ``` | ||
| */ | ||
@@ -658,3 +744,4 @@ export const parallelhash128: TRet<CHash<Keccak, ParallelOpts>> = /* @__PURE__ */ genPrl( | ||
| const genTurbo = (blockLen: number, outputLen: number) => | ||
| createHasher<Keccak, TurboshakeOpts>((opts: TArg<TurboshakeOpts> = {}) => { | ||
| createHasher<Keccak, TurboshakeOpts>((opts: TurboshakeOpts = {}) => { | ||
| opts = checkOpts({}, opts); | ||
| const D = opts.D === undefined ? 0x1f : opts.D; | ||
@@ -665,3 +752,3 @@ // RFC 9861 §2.1 fixes the default `D = 0x1f`; §2.2 defines the 12-round | ||
| throw new Error('"D" (domain separation byte) must be 0x01..0x7f, got: ' + D); | ||
| const dkLen = opts.dkLen === undefined ? outputLen : opts.dkLen; | ||
| const dkLen = chooseLen(opts, outputLen); | ||
| // RFC 9861 §§2.1-2.2 define output length L as a positive integer. | ||
@@ -686,2 +773,7 @@ if (dkLen < 1) throw new Error('"dkLen" must be >= 1'); | ||
| * ``` | ||
| * @example | ||
| * Hash a message with an explicit domain-separation byte. | ||
| * ```ts | ||
| * turboshake128(new Uint8Array([1, 2, 3]), { dkLen: 32, D: 0x1f }); | ||
| * ``` | ||
| */ | ||
@@ -735,2 +827,5 @@ export const turboshake128: TRet<CHashXOF<Keccak, TurboshakeOpts>> = /* @__PURE__ */ genTurbo( | ||
| const EMPTY_BUFFER = /* @__PURE__ */ Uint8Array.of(); | ||
| // RFC 9861 §3.2 FinalNode prefix for S_0 and the CV-list terminator. | ||
| const K12_TREE = /* @__PURE__ */ Uint8Array.from([3, 0, 0, 0, 0, 0, 0, 0]); | ||
| const K12_FINAL = /* @__PURE__ */ Uint8Array.from([0xff, 0xff]); | ||
@@ -741,2 +836,7 @@ /** Internal K12 hash class. */ | ||
| private leafHash?: Keccak; | ||
| // Pristine leaf instance cloned into `leafHash` per chunk, same pattern as _ParallelHash: | ||
| // streaming reuses two leaf allocations total instead of one per 8KB chunk. | ||
| private leafTemplate?: Keccak; | ||
| // Reused chaining-value buffer for leaf digests. | ||
| private leafCV?: Uint8Array; | ||
| protected leafLen: number; | ||
@@ -751,5 +851,6 @@ private personalization: Uint8Array; | ||
| rounds: number, | ||
| opts: TArg<KangarooOpts> | ||
| opts: KangarooOpts | ||
| ) { | ||
| super(blockLen, 0x07, outputLen, true, rounds); | ||
| opts = checkOpts({}, opts); | ||
| // RFC 9861 §3 defines output length L as a positive integer. | ||
@@ -764,2 +865,3 @@ if (outputLen < 1) throw new Error('"dkLen" must be >= 1'); | ||
| update(data: TArg<Uint8Array>): this { | ||
| aexists(this); | ||
| abytes(data); | ||
@@ -769,3 +871,3 @@ const { chunkLen, blockLen, leafLen, rounds } = this; | ||
| if (this.chunkPos == chunkLen) { | ||
| if (this.leafHash) super.update(this.leafHash.digest()); | ||
| if (this.leafHash) this.flushLeaf(); | ||
| else { | ||
@@ -776,7 +878,10 @@ // RFC 9861 §3.2 switches from SingleNode (`07`) to FinalNode (`06`) | ||
| this.suffix = 0x06; // Its safe to change suffix here since its used only in digest() | ||
| super.update(Uint8Array.from([3, 0, 0, 0, 0, 0, 0, 0])); | ||
| super.update(K12_TREE); | ||
| } | ||
| // Secondary chunks S_1..S_(n-1) become fixed-length | ||
| // CV_i = TurboSHAKE*(S_i, `0B`, 32|64) chaining values. | ||
| this.leafHash = new Keccak(blockLen, 0x0b, leafLen, false, rounds); | ||
| // Clone a pristine template instead of re-running the constructor; | ||
| // resurrects the just-digested leaf allocation in place. | ||
| this.leafTemplate ??= new Keccak(blockLen, 0x0b, leafLen, false, rounds); | ||
| this.leafHash = this.leafTemplate._cloneInto(this.leafHash); | ||
| this.chunksDone++; | ||
@@ -794,2 +899,8 @@ this.chunkPos = 0; | ||
| } | ||
| private flushLeaf(): void { | ||
| const leafHash = this.leafHash as Keccak; | ||
| const cv = (this.leafCV ||= new Uint8Array(leafHash.outputLen)); | ||
| leafHash.digestInto(cv); | ||
| super.update(cv); | ||
| } | ||
| protected finish(): void { | ||
@@ -805,5 +916,5 @@ if (this.finished) return; | ||
| // before the final TurboSHAKE call. | ||
| super.update(this.leafHash.digest()); | ||
| this.flushLeaf(); | ||
| super.update(rightEncodeK12(this.chunksDone)); | ||
| super.update(Uint8Array.from([0xff, 0xff])); | ||
| super.update(K12_FINAL); | ||
| } | ||
@@ -815,2 +926,4 @@ super.finish.call(this); | ||
| if (this.leafHash) this.leafHash.destroy(); | ||
| if (this.leafTemplate) this.leafTemplate.destroy(); | ||
| if (this.leafCV) clean(this.leafCV); | ||
| // Personalization is copied on create/clone, so destroy can wipe it | ||
@@ -821,9 +934,10 @@ // without touching caller input. | ||
| } | ||
| // Overriding hides Keccak's flat implementation, which would otherwise be inherited | ||
| // and silently miss the tree state (leaf hash, chunk counters). | ||
| _cloneInto(to?: _KangarooTwelve): _KangarooTwelve { | ||
| const { blockLen, leafLen, leafHash, outputLen, rounds } = this; | ||
| const personalization = | ||
| this.personalization === EMPTY_BUFFER ? EMPTY_BUFFER : copyBytes(this.personalization); | ||
| const { blockLen, leafLen, leafHash, outputLen, personalization, rounds } = this; | ||
| const fresh = to === undefined; | ||
| // Personalization is absorbed only during finish(), so clones need the same pending value. | ||
| to ||= new _KangarooTwelve(blockLen, leafLen, outputLen, rounds, { | ||
| personalization, | ||
| personalization: personalization === EMPTY_BUFFER ? undefined : personalization, | ||
| }); | ||
@@ -837,4 +951,29 @@ super._cloneInto(to); | ||
| } | ||
| // Snapshot the pending personalization so clone state does not alias caller-owned input. | ||
| to.personalization = personalization; | ||
| // Cached leaf state is part of a reusable clone: stale destroyed or wrong-variant values | ||
| // otherwise fail or change the digest only after the replacement crosses a tree boundary. | ||
| if (this.leafTemplate) to.leafTemplate = this.leafTemplate._cloneInto(to.leafTemplate); | ||
| else if (to.leafTemplate) { | ||
| to.leafTemplate.destroy(); | ||
| to.leafTemplate = undefined; | ||
| } | ||
| if (this.leafCV) { | ||
| if (to.leafCV && to.leafCV.length === this.leafCV.length) to.leafCV.set(this.leafCV); | ||
| else to.leafCV = this.leafCV.slice(); | ||
| } else to.leafCV = undefined; | ||
| // Snapshot the pending personalization without aliasing source or caller-owned input. | ||
| if (!fresh) { | ||
| const old = to.personalization; | ||
| if (personalization === EMPTY_BUFFER) { | ||
| if (old !== EMPTY_BUFFER) clean(old); | ||
| to.personalization = EMPTY_BUFFER; | ||
| } else if (old === EMPTY_BUFFER || old.length !== personalization.length) { | ||
| const copy = copyBytes(personalization); | ||
| if (old !== EMPTY_BUFFER) clean(old); | ||
| to.personalization = copy; | ||
| } else { | ||
| // Reuse compatible private storage so live-destination clones neither allocate | ||
| // nor abandon user data. | ||
| old.set(personalization); | ||
| } | ||
| } | ||
| to.leafLen = this.leafLen; | ||
@@ -861,2 +1000,10 @@ to.chunkPos = this.chunkPos; | ||
| * ``` | ||
| * @example | ||
| * Hash a message with KangarooTwelve-128 personalization. | ||
| * ```ts | ||
| * kt128(new Uint8Array([1, 2, 3]), { | ||
| * dkLen: 64, | ||
| * personalization: new Uint8Array([4, 5, 6]), | ||
| * }); | ||
| * ``` | ||
| */ | ||
@@ -892,5 +1039,5 @@ export const kt128: TRet<CHash<_KangarooTwelve, KangarooOpts>> = /* @__PURE__ */ createHasher( | ||
| ) => TRet<Uint8Array>; | ||
| const genHopMAC = | ||
| (hash: TArg<CHash<_KangarooTwelve, KangarooOpts>>): TRet<HopMAC> => | ||
| ( | ||
| const genHopMAC = (hash: TArg<CHash<_KangarooTwelve, KangarooOpts>>): TRet<HopMAC> => { | ||
| const kt = hash as CHash<_KangarooTwelve, KangarooOpts>; | ||
| return (( | ||
| key: TArg<Uint8Array>, | ||
@@ -900,6 +1047,4 @@ message: TArg<Uint8Array>, | ||
| dkLen?: number | ||
| ) => { | ||
| const h = hash as unknown as CHash<_KangarooTwelve, KangarooOpts>; | ||
| return h(key, { personalization: h(message, { personalization }), dkLen }) as TRet<Uint8Array>; | ||
| }; | ||
| ) => kt(key, { personalization: kt(message, { personalization }), dkLen })) as TRet<HopMAC>; | ||
| }; | ||
@@ -998,2 +1143,3 @@ /** | ||
| } | ||
| // Keccak cloning includes `posOut`, which preserves the PRG's current output phase. | ||
| _cloneInto(to?: _KeccakPRG): _KeccakPRG { | ||
@@ -1000,0 +1146,0 @@ const { rate } = this; |
+56
-16
@@ -14,6 +14,7 @@ /** | ||
| */ | ||
| import { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.ts'; | ||
| import { split } from './_u64.ts'; | ||
| // prettier-ignore | ||
| import { | ||
| abytes, aexists, anumber, aoutput, | ||
| abool, abytes, aexists, anumber, aoutput, | ||
| checkOpts, | ||
| clean, createHasher, | ||
@@ -66,6 +67,17 @@ oidNist, | ||
| // Left rotation (without 0, 32, 64) | ||
| // 64-bit left rotates as u32 pairs. Inlined here (not imported from _u64) so V8 can | ||
| // inline them into keccakP — the import path costs ~24% on sha3_256. SHA3 is the only | ||
| // consumer of left-rotates; other hashes use right-rotates from _u64. | ||
| // Valid for s in 1..31 (SH/SL) and 33..63 (BH/BL); keccak never rotates by 0/32/64. | ||
| const rotlSH = (h: number, l: number, s: number): number => (h << s) | (l >>> (32 - s)); | ||
| const rotlSL = (h: number, l: number, s: number): number => (l << s) | (h >>> (32 - s)); | ||
| const rotlBH = (h: number, l: number, s: number): number => (l << (s - 32)) | (h >>> (64 - s)); | ||
| const rotlBL = (h: number, l: number, s: number): number => (h << (s - 32)) | (l >>> (64 - s)); | ||
| const rotlH = (h: number, l: number, s: number) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s)); | ||
| const rotlL = (h: number, l: number, s: number) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s)); | ||
| // Reused Theta scratch buffer (column parities), same pattern as SHA256_W in sha2. | ||
| // keccakP never calls user code, so the shared buffer cannot be observed mid-permutation. | ||
| const B = new Uint32Array(5 * 2); | ||
| /** | ||
@@ -76,2 +88,4 @@ * `keccakf1600` internal permutation, additionally allows adjusting the round count. | ||
| * @param rounds - number of rounds to execute | ||
| * @throws On wrong argument types. {@link TypeError} | ||
| * @throws On wrong argument ranges or values. {@link RangeError} | ||
| * @throws If `rounds` is outside the supported `1..24` range. {@link Error} | ||
@@ -85,6 +99,8 @@ * @example | ||
| export function keccakP(s: TArg<Uint32Array>, rounds: number = 24): void { | ||
| if (!(s instanceof Uint32Array)) | ||
| throw new TypeError('"s" expected Uint32Array(50), got type=' + typeof s); | ||
| if (s.length !== 50) throw new RangeError('"s" expected Uint32Array(50), got length=' + s.length); | ||
| anumber(rounds, 'rounds'); | ||
| // This implementation precomputes only the standard Keccak-f[1600] 24-round Iota table. | ||
| if (rounds < 1 || rounds > 24) throw new Error('"rounds" expected integer 1..24'); | ||
| const B = new Uint32Array(5 * 2); | ||
| // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js) | ||
@@ -186,2 +202,6 @@ for (let round = 24 - rounds; round < 24; round++) { | ||
| ) { | ||
| anumber(blockLen, 'blockLen'); | ||
| anumber(suffix, 'suffix'); | ||
| anumber(rounds, 'rounds'); | ||
| abool(enableXOF, 'enableXOF'); | ||
| this.blockLen = blockLen; | ||
@@ -195,6 +215,4 @@ this.suffix = suffix; | ||
| anumber(outputLen, 'outputLen'); | ||
| // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes | ||
| // 0 < blockLen < 200 | ||
| if (!(0 < blockLen && blockLen < 200)) | ||
| throw new Error('only keccak-f1600 function is supported'); | ||
| // Only keccak-f1600 is supported: 1600 bits (5x5 matrix of 64bit) === 200 bytes of state. | ||
| if (!(0 < blockLen && blockLen < 200)) throw new Error('"blockLen" must be 1..199'); | ||
| this.state = new Uint8Array(200); | ||
@@ -216,5 +234,19 @@ this.state32 = u32(this.state); | ||
| abytes(data); | ||
| const { blockLen, state } = this; | ||
| const { blockLen, state, state32 } = this; | ||
| const len = data.length; | ||
| // Absorb full blocks with u32 XORs when both sides are 4-byte aligned. | ||
| // XOR of same-position words equals XOR of same-position bytes, so this is endianness-safe. | ||
| const canUseU32 = blockLen % 4 === 0 && data.byteOffset % 4 === 0; | ||
| const blockLen32 = blockLen / 4; | ||
| const data32 = canUseU32 && len >= blockLen ? u32(data) : undefined; | ||
| for (let pos = 0; pos < len; ) { | ||
| if (data32 !== undefined && this.pos === 0 && pos % 4 === 0 && len - pos >= blockLen) { | ||
| for (let i = 0, o = pos / 4; i < blockLen32; i++) state32[i] ^= data32[o + i]; | ||
| pos += blockLen; | ||
| // Subclasses (_KeccakPRG) read `this.pos` inside their `keccak()` override, | ||
| // so it must reflect the fully-absorbed block before the permutation fires. | ||
| this.pos = blockLen; | ||
| this.keccak(); | ||
| continue; | ||
| } | ||
| const take = Math.min(blockLen - this.pos, len - pos); | ||
@@ -260,3 +292,3 @@ for (let i = 0; i < take; i++) state[this.pos++] ^= data[pos++]; | ||
| // TurboSHAKE/KangarooTwelve wrappers that intentionally enable XOF. | ||
| if (!this.enableXOF) throw new Error('XOF is not possible for this instance'); | ||
| if (!this.enableXOF) throw new Error('XOF is not enabled'); | ||
| return this.writeInto(out); | ||
@@ -272,3 +304,3 @@ } | ||
| // `aoutput(...)` allows oversized buffers; digestInto() must fill only the advertised digest. | ||
| this.writeInto(out.subarray(0, this.outputLen)); | ||
| this.writeInto(out.length === this.outputLen ? out : out.subarray(0, this.outputLen)); | ||
| this.destroy(); | ||
@@ -292,2 +324,3 @@ } | ||
| to.state32.set(this.state32); | ||
| // Sponge padding and XOF output are positional, so both offsets are part of the clone state. | ||
| to.pos = this.pos; | ||
@@ -319,2 +352,3 @@ to.posOut = this.posOut; | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -336,2 +370,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -353,2 +388,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -370,2 +406,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -388,2 +425,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -400,2 +438,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -412,2 +451,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -424,2 +464,3 @@ * @example | ||
| * @param msg - message bytes to hash | ||
| * @param opts - Reserved hash options. | ||
| * @returns Digest bytes. | ||
@@ -441,7 +482,6 @@ * @example | ||
| const genShake = (suffix: number, blockLen: number, outputLen: number, info: TArg<HashInfo> = {}) => | ||
| createHasher<Keccak, ShakeOpts>( | ||
| (opts: ShakeOpts = {}) => | ||
| new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true), | ||
| info | ||
| ); | ||
| createHasher<Keccak, ShakeOpts>((opts: ShakeOpts = {}) => { | ||
| opts = checkOpts({}, opts); | ||
| return new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true); | ||
| }, info); | ||
@@ -448,0 +488,0 @@ /** |
+147
-50
@@ -135,2 +135,6 @@ /** | ||
| // Shared error-message prefix builder. Only called on throw paths, so assert | ||
| // success paths never pay for the string concatenation. | ||
| const atitle = (title: string): string => (title ? `"${title}" ` : ''); | ||
| /** | ||
@@ -140,2 +144,3 @@ * Asserts something is a non-negative integer. | ||
| * @param title - label included in thrown errors | ||
| * @returns The validated number. | ||
| * @throws On wrong argument types. {@link TypeError} | ||
@@ -149,14 +154,29 @@ * @throws On wrong argument ranges or values. {@link RangeError} | ||
| */ | ||
| export function anumber(n: number, title: string = ''): void { | ||
| if (typeof n !== 'number') { | ||
| const prefix = title && `"${title}" `; | ||
| throw new TypeError(`${prefix}expected number, got ${typeof n}`); | ||
| } | ||
| if (!Number.isSafeInteger(n) || n < 0) { | ||
| const prefix = title && `"${title}" `; | ||
| throw new RangeError(`${prefix}expected integer >= 0, got ${n}`); | ||
| } | ||
| export function anumber(n: number, title: string = ''): number { | ||
| if (typeof n !== 'number') | ||
| throw new TypeError(atitle(title) + 'expected number, got ' + typeof n); | ||
| if (!Number.isSafeInteger(n) || n < 0) | ||
| throw new RangeError(atitle(title) + 'expected integer >= 0, got ' + n); | ||
| return n; | ||
| } | ||
| /** | ||
| * Asserts something is a boolean. | ||
| * @param value - value to validate | ||
| * @param title - label included in thrown errors | ||
| * @returns The validated boolean. | ||
| * @throws On wrong argument types. {@link TypeError} | ||
| * @example | ||
| * Validate a boolean option. | ||
| * ```ts | ||
| * abool(true, 'enableXOF'); | ||
| * ``` | ||
| */ | ||
| export function abool(value: boolean, title: string = ''): boolean { | ||
| if (typeof value !== 'boolean') | ||
| throw new TypeError(atitle(title) + 'expected boolean, got type=' + typeof value); | ||
| return value; | ||
| } | ||
| /** | ||
| * Asserts something is Uint8Array. | ||
@@ -180,14 +200,14 @@ * @param value - value to validate | ||
| ): TRet<Uint8Array> { | ||
| // Success path first: this runs at the start of every update() / digestInto(), and the | ||
| // common `abytes(data)` form must not pay for length handling it does not use. | ||
| if (isBytes(value) && (length === undefined || value.length === length)) | ||
| return value as TRet<Uint8Array>; | ||
| // Error path: recompute freely to build the exact message. | ||
| if (length !== undefined) anumber(length, 'length'); | ||
| const bytes = isBytes(value); | ||
| const len = value?.length; | ||
| const needsLen = length !== undefined; | ||
| if (!bytes || (needsLen && len !== length)) { | ||
| const prefix = title && `"${title}" `; | ||
| const ofLen = needsLen ? ` of length ${length}` : ''; | ||
| const got = bytes ? `length=${len}` : `type=${typeof value}`; | ||
| const message = prefix + 'expected Uint8Array' + ofLen + ', got ' + got; | ||
| if (!bytes) throw new TypeError(message); | ||
| throw new RangeError(message); | ||
| } | ||
| return value as TRet<Uint8Array>; | ||
| const ofLen = length !== undefined ? ` of length ${length}` : ''; | ||
| const got = bytes ? `length=${value.length}` : `type=${typeof value}`; | ||
| const message = atitle(title) + 'expected Uint8Array' + ofLen + ', got ' + got; | ||
| if (!bytes) throw new TypeError(message); | ||
| throw new RangeError(message); | ||
| } | ||
@@ -229,3 +249,3 @@ | ||
| if (typeof h !== 'function' || typeof h.create !== 'function') | ||
| throw new TypeError('Hash must wrapped by utils.createHasher'); | ||
| throw new TypeError('expected hash wrapped by utils.createHasher'); | ||
| anumber(h.outputLen); | ||
@@ -235,6 +255,12 @@ anumber(h.blockLen); | ||
| // validation and can produce empty outputs instead of failing fast. | ||
| if (h.outputLen < 1) throw new Error('"outputLen" must be >= 1'); | ||
| if (h.blockLen < 1) throw new Error('"blockLen" must be >= 1'); | ||
| if (h.outputLen < 1 || h.blockLen < 1) throw new Error('hash blockLen / outputLen must be >= 1'); | ||
| } | ||
| const aobject = (value: Record<string, any>, label: string) => { | ||
| if (value === null || typeof value !== 'object' || Array.isArray(value)) | ||
| throw new TypeError( | ||
| (label === 'object' ? '' : `"${label}" `) + 'expected object, got type=' + typeof value | ||
| ); | ||
| }; | ||
| /** | ||
@@ -255,4 +281,6 @@ * Asserts a hash instance has not been destroyed or finished. | ||
| export function aexists(instance: any, checkFinished = true): void { | ||
| if (instance.destroyed) throw new Error('Hash instance has been destroyed'); | ||
| if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called'); | ||
| // Runs on every update()/digestInto(); the flags are library-owned booleans, so only their | ||
| // truthiness is checked - re-validating their type per call was pure hot-path overhead. | ||
| if (instance.destroyed) throw new Error('hash was destroyed'); | ||
| if (checkFinished && instance.finished) throw new Error('digest() was already called'); | ||
| } | ||
@@ -277,10 +305,12 @@ | ||
| export function aoutput(out: any, instance: any): void { | ||
| abytes(out, undefined, 'digestInto() output'); | ||
| abytes(out, undefined, 'output'); | ||
| // `outputLen` is a library-owned readonly number; the negated comparison keeps failing fast | ||
| // when it is missing/NaN (comparisons with undefined/NaN are false) without an anumber() call. | ||
| const min = instance.outputLen; | ||
| if (out.length < min) { | ||
| throw new RangeError('"digestInto() output" expected to be of length >=' + min); | ||
| if (!(out.length >= min)) { | ||
| throw new RangeError('"output" expected length >= ' + min); | ||
| } | ||
| } | ||
| /** Generic type encompassing 8/16/32-byte array views, but not 64-bit variants. */ | ||
| /** Generic type encompassing 8/16/32-bit typed arrays, but not 64-bit. */ | ||
| // prettier-ignore | ||
@@ -486,9 +516,10 @@ export type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array | | ||
| // We use optimized technique to convert hex string to byte array | ||
| const asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 } as const; | ||
| // Strict ASCII nibble parser: non-ASCII hex lookalikes are rejected as undefined. | ||
| // ASCII codes: '0'..'9' = 48..57, 'A'..'F' = 65..70, 'a'..'f' = 97..102. | ||
| // prettier-ignore | ||
| function asciiToBase16(ch: number): number | undefined { | ||
| if (ch >= asciis._0 && ch <= asciis._9) return ch - asciis._0; // '2' => 50-48 | ||
| if (ch >= asciis.A && ch <= asciis.F) return ch - (asciis.A - 10); // 'B' => 66-(65-10) | ||
| if (ch >= asciis.a && ch <= asciis.f) return ch - (asciis.a - 10); // 'b' => 98-(97-10) | ||
| return; | ||
| return ch >= 48 && ch <= 57 ? ch - 48 // '2' => 50-48 | ||
| : ch >= 65 && ch <= 70 ? ch - (65 - 10) // 'B' => 66-(65-10) | ||
| : ch >= 97 && ch <= 102 ? ch - (97 - 10) // 'b' => 98-(97-10) | ||
| : undefined; | ||
| } | ||
@@ -523,4 +554,4 @@ | ||
| for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) { | ||
| const n1 = asciiToBase16(hex.charCodeAt(hi)); | ||
| const n2 = asciiToBase16(hex.charCodeAt(hi + 1)); | ||
| const n1 = asciiToBase16(hex.charCodeAt(hi)); // parse first char, multiply it by 16 | ||
| const n2 = asciiToBase16(hex.charCodeAt(hi + 1)); // parse second char | ||
| if (n1 === undefined || n2 === undefined) { | ||
@@ -532,3 +563,3 @@ const char = hex[hi] + hex[hi + 1]; | ||
| } | ||
| array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163 | ||
| array[ai] = n1 * 16 + n2; // example: 'A9' => 10*16 + 9 | ||
| } | ||
@@ -556,2 +587,4 @@ return array; | ||
| * @param cb - callback executed on each iteration | ||
| * @throws On wrong argument types. {@link TypeError} | ||
| * @throws On wrong argument ranges or values. {@link RangeError} | ||
| * @example | ||
@@ -568,2 +601,6 @@ * Run a loop that periodically yields back to the event loop. | ||
| ): Promise<void> { | ||
| anumber(iters, 'iters'); | ||
| anumber(tick, 'tick'); | ||
| if (typeof cb !== 'function') throw new TypeError('callback must be a function'); | ||
| // Callback is synchronous by contract; asyncLoop only yields between sync work windows. | ||
| let ts = Date.now(); | ||
@@ -576,2 +613,3 @@ for (let i = 0; i < iters; i++) { | ||
| await nextTick(); | ||
| // Track only synchronous work time; scheduler delay after yielding is outside our budget. | ||
| ts += diff; | ||
@@ -652,5 +690,55 @@ } | ||
| /** | ||
| * Validates declared required and optional field types on a plain object. | ||
| * This walks field schemas and formats detailed errors, so avoid it on hot paths; use direct | ||
| * one-line guards such as `abytes()`, `abool()`, or `anumber()` instead. | ||
| * @param object - object to validate | ||
| * @param fields - map of required field names to expected types | ||
| * @param optFields - map of optional field names to expected types | ||
| * @param title - label included in thrown errors | ||
| * @throws On wrong argument types. {@link TypeError} | ||
| * @example | ||
| * Validate required and optional option fields. | ||
| * ```ts | ||
| * validateObject({ N: 1024, dkLen: 32 }, { N: 'number' }, { dkLen: 'number' }); | ||
| * ``` | ||
| */ | ||
| export const validateObject = ( | ||
| object: Record<string, any>, | ||
| fields: Record<string, string> = {}, | ||
| optFields: Record<string, string> = {}, | ||
| title = 'object' | ||
| ): void => { | ||
| aobject(object, title); | ||
| aobject(fields, 'fields'); | ||
| aobject(optFields, 'optFields'); | ||
| type Item = keyof typeof object; | ||
| function checkField(fieldName: Item, expectedType: string, isOpt: boolean) { | ||
| const label = | ||
| title === 'object' ? `param "${String(fieldName)}"` : `"${title}.${String(fieldName)}"`; | ||
| // Config fields must be explicit own properties. Optional inherited values are rejected too | ||
| // because callers keep reading the same options object after validation. | ||
| const val = object[fieldName]; | ||
| // Runtime objects such as Field instances intentionally satisfy required method slots | ||
| // via their shared prototype. | ||
| if ( | ||
| !Object.hasOwn(object, fieldName) && | ||
| (isOpt ? val !== undefined : expectedType !== 'function') | ||
| ) { | ||
| throw new TypeError(`${label} is invalid: expected own property`); | ||
| } | ||
| if (isOpt && val === undefined) return; | ||
| const current = typeof val; | ||
| if (current !== expectedType || val === null) | ||
| throw new TypeError(`${label} is invalid: expected ${expectedType}, got ${current}`); | ||
| } | ||
| const iter = (f: typeof fields, isOpt: boolean) => | ||
| Object.entries(f).forEach(([k, v]) => checkField(k, v, isOpt)); | ||
| iter(fields, false); | ||
| iter(optFields, true); | ||
| }; | ||
| /** | ||
| * Merges default options and passed options. | ||
| * @param defaults - base option object | ||
| * @param opts - user overrides | ||
| * @param title - label included in thrown override errors | ||
| * @returns Merged option object. The merge mutates `defaults` in place. | ||
@@ -666,6 +754,7 @@ * @throws On wrong argument types. {@link TypeError} | ||
| defaults: T1, | ||
| opts?: T2 | ||
| opts?: T2, | ||
| title = 'opts' | ||
| ): T1 & T2 { | ||
| if (opts !== undefined && {}.toString.call(opts) !== '[object Object]') | ||
| throw new TypeError('options must be object or undefined'); | ||
| aobject(defaults as Record<string, any>, 'defaults'); | ||
| if (opts !== undefined) aobject(opts as Record<string, any>, title); | ||
| const merged = Object.assign(defaults, opts); | ||
@@ -715,17 +804,21 @@ return merged as T1 & T2; | ||
| /** Pseudorandom generator interface. */ | ||
| /** | ||
| * The pseudorandom number generator doesn't wipe current state: | ||
| * instead, it generates new one based on previous state + entropy. | ||
| * Not reseed/rekey, since AES CTR DRBG does rekey on each randomBytes, | ||
| * which is in fact `reseed`, since it changes counter too. | ||
| */ | ||
| export interface PRG { | ||
| /** | ||
| * Mixes more entropy into the generator state. | ||
| * @param seed - fresh entropy bytes | ||
| * @returns Nothing. Implementations update internal state in place. | ||
| * Mixes fresh entropy into the current generator state. | ||
| * @param seed - Entropy bytes to absorb. | ||
| */ | ||
| addEntropy(seed: TArg<Uint8Array>): void; | ||
| /** | ||
| * Generates pseudorandom output bytes. | ||
| * @param length - number of bytes to generate | ||
| * @returns Generated pseudorandom bytes. | ||
| * Produces a requested number of pseudorandom bytes. | ||
| * @param bytesLength - Number of bytes to generate. | ||
| * @returns Random byte array. | ||
| */ | ||
| randomBytes(length: number): TRet<Uint8Array>; | ||
| /** Wipes generator state and makes the instance unusable. */ | ||
| randomBytes(bytesLength: number): TRet<Uint8Array>; | ||
| /** Destroys the generator state. */ | ||
| clean(): void; | ||
@@ -791,2 +884,3 @@ } | ||
| * init time. | ||
| * @throws On wrong argument types. {@link TypeError} | ||
| * @example | ||
@@ -805,2 +899,5 @@ * Wrap a stateful hash constructor into a callable helper. | ||
| ): TRet<CHash<T, Opts>> { | ||
| if (typeof hashCons !== 'function') | ||
| throw new TypeError('"hashCons" expected function, got type=' + typeof hashCons); | ||
| info = checkOpts({}, info, 'info') as HashInfo; | ||
| const hashC: any = (msg: TArg<Uint8Array>, opts?: TArg<Opts>) => | ||
@@ -807,0 +904,0 @@ hashCons(opts as Opts) |
+12
-9
@@ -98,2 +98,11 @@ import { type Pbkdf2Opt } from './pbkdf2.ts'; | ||
| /** WebCrypto HMAC function type. See {@link hmac} for usage. */ | ||
| type WebHmacFn = { | ||
| ( | ||
| hash: TArg<WebHash>, | ||
| key: TArg<Uint8Array>, | ||
| message: TArg<Uint8Array> | ||
| ): Promise<TRet<Uint8Array>>; | ||
| create(hash: TArg<WebHash>, key: TArg<Uint8Array>): any; | ||
| }; | ||
| /** | ||
@@ -111,13 +120,7 @@ * WebCrypto HMAC: RFC2104 message authentication code. | ||
| * import { hmac, sha256 } from '@noble/hashes/webcrypto.js'; | ||
| * await hmac(sha256, new Uint8Array([1, 2, 3]), new Uint8Array([4, 5, 6])); | ||
| * const key = new Uint8Array([1, 2, 3]); | ||
| * const message = new Uint8Array([4, 5, 6]); | ||
| * const mac = await hmac(sha256, key, message); | ||
| * ``` | ||
| */ | ||
| type WebHmacFn = { | ||
| ( | ||
| hash: TArg<WebHash>, | ||
| key: TArg<Uint8Array>, | ||
| message: TArg<Uint8Array> | ||
| ): Promise<TRet<Uint8Array>>; | ||
| create(hash: TArg<WebHash>, key: TArg<Uint8Array>): any; | ||
| }; | ||
| export const hmac: TRet<WebHmacFn> = /* @__PURE__ */ (() => { | ||
@@ -124,0 +127,0 @@ const hmac_ = async ( |
+50
-13
@@ -61,2 +61,3 @@ /** | ||
| * @param title - label included in thrown errors | ||
| * @returns The validated number. | ||
| * @throws On wrong argument types. {@link TypeError} | ||
@@ -70,4 +71,17 @@ * @throws On wrong argument ranges or values. {@link RangeError} | ||
| */ | ||
| export declare function anumber(n: number, title?: string): void; | ||
| export declare function anumber(n: number, title?: string): number; | ||
| /** | ||
| * Asserts something is a boolean. | ||
| * @param value - value to validate | ||
| * @param title - label included in thrown errors | ||
| * @returns The validated boolean. | ||
| * @throws On wrong argument types. {@link TypeError} | ||
| * @example | ||
| * Validate a boolean option. | ||
| * ```ts | ||
| * abool(true, 'enableXOF'); | ||
| * ``` | ||
| */ | ||
| export declare function abool(value: boolean, title?: string): boolean; | ||
| /** | ||
| * Asserts something is Uint8Array. | ||
@@ -147,3 +161,3 @@ * @param value - value to validate | ||
| export declare function aoutput(out: any, instance: any): void; | ||
| /** Generic type encompassing 8/16/32-byte array views, but not 64-bit variants. */ | ||
| /** Generic type encompassing 8/16/32-bit typed arrays, but not 64-bit. */ | ||
| export type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array | Uint16Array | Int16Array | Uint32Array | Int32Array; | ||
@@ -310,2 +324,4 @@ /** | ||
| * @param cb - callback executed on each iteration | ||
| * @throws On wrong argument types. {@link TypeError} | ||
| * @throws On wrong argument ranges or values. {@link RangeError} | ||
| * @example | ||
@@ -362,5 +378,22 @@ * Run a loop that periodically yields back to the event loop. | ||
| /** | ||
| * Validates declared required and optional field types on a plain object. | ||
| * This walks field schemas and formats detailed errors, so avoid it on hot paths; use direct | ||
| * one-line guards such as `abytes()`, `abool()`, or `anumber()` instead. | ||
| * @param object - object to validate | ||
| * @param fields - map of required field names to expected types | ||
| * @param optFields - map of optional field names to expected types | ||
| * @param title - label included in thrown errors | ||
| * @throws On wrong argument types. {@link TypeError} | ||
| * @example | ||
| * Validate required and optional option fields. | ||
| * ```ts | ||
| * validateObject({ N: 1024, dkLen: 32 }, { N: 'number' }, { dkLen: 'number' }); | ||
| * ``` | ||
| */ | ||
| export declare const validateObject: (object: Record<string, any>, fields?: Record<string, string>, optFields?: Record<string, string>, title?: string) => void; | ||
| /** | ||
| * Merges default options and passed options. | ||
| * @param defaults - base option object | ||
| * @param opts - user overrides | ||
| * @param title - label included in thrown override errors | ||
| * @returns Merged option object. The merge mutates `defaults` in place. | ||
@@ -374,3 +407,3 @@ * @throws On wrong argument types. {@link TypeError} | ||
| */ | ||
| export declare function checkOpts<T1 extends EmptyObj, T2 extends EmptyObj>(defaults: T1, opts?: T2): T1 & T2; | ||
| export declare function checkOpts<T1 extends EmptyObj, T2 extends EmptyObj>(defaults: T1, opts?: T2, title?: string): T1 & T2; | ||
| /** Common interface for all hash instances. */ | ||
@@ -415,17 +448,21 @@ export interface Hash<T> { | ||
| } | ||
| /** Pseudorandom generator interface. */ | ||
| /** | ||
| * The pseudorandom number generator doesn't wipe current state: | ||
| * instead, it generates new one based on previous state + entropy. | ||
| * Not reseed/rekey, since AES CTR DRBG does rekey on each randomBytes, | ||
| * which is in fact `reseed`, since it changes counter too. | ||
| */ | ||
| export interface PRG { | ||
| /** | ||
| * Mixes more entropy into the generator state. | ||
| * @param seed - fresh entropy bytes | ||
| * @returns Nothing. Implementations update internal state in place. | ||
| * Mixes fresh entropy into the current generator state. | ||
| * @param seed - Entropy bytes to absorb. | ||
| */ | ||
| addEntropy(seed: TArg<Uint8Array>): void; | ||
| /** | ||
| * Generates pseudorandom output bytes. | ||
| * @param length - number of bytes to generate | ||
| * @returns Generated pseudorandom bytes. | ||
| * Produces a requested number of pseudorandom bytes. | ||
| * @param bytesLength - Number of bytes to generate. | ||
| * @returns Random byte array. | ||
| */ | ||
| randomBytes(length: number): TRet<Uint8Array>; | ||
| /** Wipes generator state and makes the instance unusable. */ | ||
| randomBytes(bytesLength: number): TRet<Uint8Array>; | ||
| /** Destroys the generator state. */ | ||
| clean(): void; | ||
@@ -485,2 +522,3 @@ } | ||
| * init time. | ||
| * @throws On wrong argument types. {@link TypeError} | ||
| * @example | ||
@@ -527,2 +565,1 @@ * Wrap a stateful hash constructor into a callable helper. | ||
| export {}; | ||
| //# sourceMappingURL=utils.d.ts.map |
+122
-46
@@ -22,2 +22,5 @@ /** | ||
| } | ||
| // Shared error-message prefix builder. Only called on throw paths, so assert | ||
| // success paths never pay for the string concatenation. | ||
| const atitle = (title) => (title ? `"${title}" ` : ''); | ||
| /** | ||
@@ -27,2 +30,3 @@ * Asserts something is a non-negative integer. | ||
| * @param title - label included in thrown errors | ||
| * @returns The validated number. | ||
| * @throws On wrong argument types. {@link TypeError} | ||
@@ -37,12 +41,26 @@ * @throws On wrong argument ranges or values. {@link RangeError} | ||
| export function anumber(n, title = '') { | ||
| if (typeof n !== 'number') { | ||
| const prefix = title && `"${title}" `; | ||
| throw new TypeError(`${prefix}expected number, got ${typeof n}`); | ||
| } | ||
| if (!Number.isSafeInteger(n) || n < 0) { | ||
| const prefix = title && `"${title}" `; | ||
| throw new RangeError(`${prefix}expected integer >= 0, got ${n}`); | ||
| } | ||
| if (typeof n !== 'number') | ||
| throw new TypeError(atitle(title) + 'expected number, got ' + typeof n); | ||
| if (!Number.isSafeInteger(n) || n < 0) | ||
| throw new RangeError(atitle(title) + 'expected integer >= 0, got ' + n); | ||
| return n; | ||
| } | ||
| /** | ||
| * Asserts something is a boolean. | ||
| * @param value - value to validate | ||
| * @param title - label included in thrown errors | ||
| * @returns The validated boolean. | ||
| * @throws On wrong argument types. {@link TypeError} | ||
| * @example | ||
| * Validate a boolean option. | ||
| * ```ts | ||
| * abool(true, 'enableXOF'); | ||
| * ``` | ||
| */ | ||
| export function abool(value, title = '') { | ||
| if (typeof value !== 'boolean') | ||
| throw new TypeError(atitle(title) + 'expected boolean, got type=' + typeof value); | ||
| return value; | ||
| } | ||
| /** | ||
| * Asserts something is Uint8Array. | ||
@@ -62,15 +80,16 @@ * @param value - value to validate | ||
| export function abytes(value, length, title = '') { | ||
| // Success path first: this runs at the start of every update() / digestInto(), and the | ||
| // common `abytes(data)` form must not pay for length handling it does not use. | ||
| if (isBytes(value) && (length === undefined || value.length === length)) | ||
| return value; | ||
| // Error path: recompute freely to build the exact message. | ||
| if (length !== undefined) | ||
| anumber(length, 'length'); | ||
| const bytes = isBytes(value); | ||
| const len = value?.length; | ||
| const needsLen = length !== undefined; | ||
| if (!bytes || (needsLen && len !== length)) { | ||
| const prefix = title && `"${title}" `; | ||
| const ofLen = needsLen ? ` of length ${length}` : ''; | ||
| const got = bytes ? `length=${len}` : `type=${typeof value}`; | ||
| const message = prefix + 'expected Uint8Array' + ofLen + ', got ' + got; | ||
| if (!bytes) | ||
| throw new TypeError(message); | ||
| throw new RangeError(message); | ||
| } | ||
| return value; | ||
| const ofLen = length !== undefined ? ` of length ${length}` : ''; | ||
| const got = bytes ? `length=${value.length}` : `type=${typeof value}`; | ||
| const message = atitle(title) + 'expected Uint8Array' + ofLen + ', got ' + got; | ||
| if (!bytes) | ||
| throw new TypeError(message); | ||
| throw new RangeError(message); | ||
| } | ||
@@ -110,3 +129,3 @@ /** | ||
| if (typeof h !== 'function' || typeof h.create !== 'function') | ||
| throw new TypeError('Hash must wrapped by utils.createHasher'); | ||
| throw new TypeError('expected hash wrapped by utils.createHasher'); | ||
| anumber(h.outputLen); | ||
@@ -116,7 +135,9 @@ anumber(h.blockLen); | ||
| // validation and can produce empty outputs instead of failing fast. | ||
| if (h.outputLen < 1) | ||
| throw new Error('"outputLen" must be >= 1'); | ||
| if (h.blockLen < 1) | ||
| throw new Error('"blockLen" must be >= 1'); | ||
| if (h.outputLen < 1 || h.blockLen < 1) | ||
| throw new Error('hash blockLen / outputLen must be >= 1'); | ||
| } | ||
| const aobject = (value, label) => { | ||
| if (value === null || typeof value !== 'object' || Array.isArray(value)) | ||
| throw new TypeError((label === 'object' ? '' : `"${label}" `) + 'expected object, got type=' + typeof value); | ||
| }; | ||
| /** | ||
@@ -137,6 +158,8 @@ * Asserts a hash instance has not been destroyed or finished. | ||
| export function aexists(instance, checkFinished = true) { | ||
| // Runs on every update()/digestInto(); the flags are library-owned booleans, so only their | ||
| // truthiness is checked - re-validating their type per call was pure hot-path overhead. | ||
| if (instance.destroyed) | ||
| throw new Error('Hash instance has been destroyed'); | ||
| throw new Error('hash was destroyed'); | ||
| if (checkFinished && instance.finished) | ||
| throw new Error('Hash#digest() has already been called'); | ||
| throw new Error('digest() was already called'); | ||
| } | ||
@@ -160,6 +183,8 @@ /** | ||
| export function aoutput(out, instance) { | ||
| abytes(out, undefined, 'digestInto() output'); | ||
| abytes(out, undefined, 'output'); | ||
| // `outputLen` is a library-owned readonly number; the negated comparison keeps failing fast | ||
| // when it is missing/NaN (comparisons with undefined/NaN are false) without an anumber() call. | ||
| const min = instance.outputLen; | ||
| if (out.length < min) { | ||
| throw new RangeError('"digestInto() output" expected to be of length >=' + min); | ||
| if (!(out.length >= min)) { | ||
| throw new RangeError('"output" expected length >= ' + min); | ||
| } | ||
@@ -342,12 +367,10 @@ } | ||
| } | ||
| // We use optimized technique to convert hex string to byte array | ||
| const asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 }; | ||
| // Strict ASCII nibble parser: non-ASCII hex lookalikes are rejected as undefined. | ||
| // ASCII codes: '0'..'9' = 48..57, 'A'..'F' = 65..70, 'a'..'f' = 97..102. | ||
| // prettier-ignore | ||
| function asciiToBase16(ch) { | ||
| if (ch >= asciis._0 && ch <= asciis._9) | ||
| return ch - asciis._0; // '2' => 50-48 | ||
| if (ch >= asciis.A && ch <= asciis.F) | ||
| return ch - (asciis.A - 10); // 'B' => 66-(65-10) | ||
| if (ch >= asciis.a && ch <= asciis.f) | ||
| return ch - (asciis.a - 10); // 'b' => 98-(97-10) | ||
| return; | ||
| return ch >= 48 && ch <= 57 ? ch - 48 // '2' => 50-48 | ||
| : ch >= 65 && ch <= 70 ? ch - (65 - 10) // 'B' => 66-(65-10) | ||
| : ch >= 97 && ch <= 102 ? ch - (97 - 10) // 'b' => 98-(97-10) | ||
| : undefined; | ||
| } | ||
@@ -385,4 +408,4 @@ /** | ||
| for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) { | ||
| const n1 = asciiToBase16(hex.charCodeAt(hi)); | ||
| const n2 = asciiToBase16(hex.charCodeAt(hi + 1)); | ||
| const n1 = asciiToBase16(hex.charCodeAt(hi)); // parse first char, multiply it by 16 | ||
| const n2 = asciiToBase16(hex.charCodeAt(hi + 1)); // parse second char | ||
| if (n1 === undefined || n2 === undefined) { | ||
@@ -392,3 +415,3 @@ const char = hex[hi] + hex[hi + 1]; | ||
| } | ||
| array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163 | ||
| array[ai] = n1 * 16 + n2; // example: 'A9' => 10*16 + 9 | ||
| } | ||
@@ -414,2 +437,4 @@ return array; | ||
| * @param cb - callback executed on each iteration | ||
| * @throws On wrong argument types. {@link TypeError} | ||
| * @throws On wrong argument ranges or values. {@link RangeError} | ||
| * @example | ||
@@ -422,2 +447,7 @@ * Run a loop that periodically yields back to the event loop. | ||
| export async function asyncLoop(iters, tick, cb) { | ||
| anumber(iters, 'iters'); | ||
| anumber(tick, 'tick'); | ||
| if (typeof cb !== 'function') | ||
| throw new TypeError('callback must be a function'); | ||
| // Callback is synchronous by contract; asyncLoop only yields between sync work windows. | ||
| let ts = Date.now(); | ||
@@ -431,2 +461,3 @@ for (let i = 0; i < iters; i++) { | ||
| await nextTick(); | ||
| // Track only synchronous work time; scheduler delay after yielding is outside our budget. | ||
| ts += diff; | ||
@@ -498,5 +529,46 @@ } | ||
| /** | ||
| * Validates declared required and optional field types on a plain object. | ||
| * This walks field schemas and formats detailed errors, so avoid it on hot paths; use direct | ||
| * one-line guards such as `abytes()`, `abool()`, or `anumber()` instead. | ||
| * @param object - object to validate | ||
| * @param fields - map of required field names to expected types | ||
| * @param optFields - map of optional field names to expected types | ||
| * @param title - label included in thrown errors | ||
| * @throws On wrong argument types. {@link TypeError} | ||
| * @example | ||
| * Validate required and optional option fields. | ||
| * ```ts | ||
| * validateObject({ N: 1024, dkLen: 32 }, { N: 'number' }, { dkLen: 'number' }); | ||
| * ``` | ||
| */ | ||
| export const validateObject = (object, fields = {}, optFields = {}, title = 'object') => { | ||
| aobject(object, title); | ||
| aobject(fields, 'fields'); | ||
| aobject(optFields, 'optFields'); | ||
| function checkField(fieldName, expectedType, isOpt) { | ||
| const label = title === 'object' ? `param "${String(fieldName)}"` : `"${title}.${String(fieldName)}"`; | ||
| // Config fields must be explicit own properties. Optional inherited values are rejected too | ||
| // because callers keep reading the same options object after validation. | ||
| const val = object[fieldName]; | ||
| // Runtime objects such as Field instances intentionally satisfy required method slots | ||
| // via their shared prototype. | ||
| if (!Object.hasOwn(object, fieldName) && | ||
| (isOpt ? val !== undefined : expectedType !== 'function')) { | ||
| throw new TypeError(`${label} is invalid: expected own property`); | ||
| } | ||
| if (isOpt && val === undefined) | ||
| return; | ||
| const current = typeof val; | ||
| if (current !== expectedType || val === null) | ||
| throw new TypeError(`${label} is invalid: expected ${expectedType}, got ${current}`); | ||
| } | ||
| const iter = (f, isOpt) => Object.entries(f).forEach(([k, v]) => checkField(k, v, isOpt)); | ||
| iter(fields, false); | ||
| iter(optFields, true); | ||
| }; | ||
| /** | ||
| * Merges default options and passed options. | ||
| * @param defaults - base option object | ||
| * @param opts - user overrides | ||
| * @param title - label included in thrown override errors | ||
| * @returns Merged option object. The merge mutates `defaults` in place. | ||
@@ -510,5 +582,6 @@ * @throws On wrong argument types. {@link TypeError} | ||
| */ | ||
| export function checkOpts(defaults, opts) { | ||
| if (opts !== undefined && {}.toString.call(opts) !== '[object Object]') | ||
| throw new TypeError('options must be object or undefined'); | ||
| export function checkOpts(defaults, opts, title = 'opts') { | ||
| aobject(defaults, 'defaults'); | ||
| if (opts !== undefined) | ||
| aobject(opts, title); | ||
| const merged = Object.assign(defaults, opts); | ||
@@ -525,2 +598,3 @@ return merged; | ||
| * init time. | ||
| * @throws On wrong argument types. {@link TypeError} | ||
| * @example | ||
@@ -536,2 +610,5 @@ * Wrap a stateful hash constructor into a callable helper. | ||
| export function createHasher(hashCons, info = {}) { | ||
| if (typeof hashCons !== 'function') | ||
| throw new TypeError('"hashCons" expected function, got type=' + typeof hashCons); | ||
| info = checkOpts({}, info, 'info'); | ||
| const hashC = (msg, opts) => hashCons(opts) | ||
@@ -596,2 +673,1 @@ .update(msg) | ||
| }); | ||
| //# sourceMappingURL=utils.js.map |
+8
-6
@@ -52,2 +52,7 @@ import { type Pbkdf2Opt } from './pbkdf2.ts'; | ||
| export declare const sha512: TRet<WebHash>; | ||
| /** WebCrypto HMAC function type. See {@link hmac} for usage. */ | ||
| type WebHmacFn = { | ||
| (hash: TArg<WebHash>, key: TArg<Uint8Array>, message: TArg<Uint8Array>): Promise<TRet<Uint8Array>>; | ||
| create(hash: TArg<WebHash>, key: TArg<Uint8Array>): any; | ||
| }; | ||
| /** | ||
@@ -65,9 +70,7 @@ * WebCrypto HMAC: RFC2104 message authentication code. | ||
| * import { hmac, sha256 } from '@noble/hashes/webcrypto.js'; | ||
| * await hmac(sha256, new Uint8Array([1, 2, 3]), new Uint8Array([4, 5, 6])); | ||
| * const key = new Uint8Array([1, 2, 3]); | ||
| * const message = new Uint8Array([4, 5, 6]); | ||
| * const mac = await hmac(sha256, key, message); | ||
| * ``` | ||
| */ | ||
| type WebHmacFn = { | ||
| (hash: TArg<WebHash>, key: TArg<Uint8Array>, message: TArg<Uint8Array>): Promise<TRet<Uint8Array>>; | ||
| create(hash: TArg<WebHash>, key: TArg<Uint8Array>): any; | ||
| }; | ||
| export declare const hmac: TRet<WebHmacFn>; | ||
@@ -122,2 +125,1 @@ /** | ||
| export {}; | ||
| //# sourceMappingURL=webcrypto.d.ts.map |
+17
-1
@@ -68,2 +68,19 @@ import {} from "./pbkdf2.js"; | ||
| export const sha512 = /* @__PURE__ */ createWebHash('SHA-512', 128, 64); | ||
| /** | ||
| * WebCrypto HMAC: RFC2104 message authentication code. | ||
| * @param hash - function that would be used e.g. sha256. Webcrypto version. | ||
| * @param key - authentication key bytes | ||
| * @param message - message bytes to authenticate | ||
| * @returns Promise resolving to authentication tag bytes. | ||
| * `.create()` exists only to mirror the synchronous API surface | ||
| * and always throws `not implemented`. | ||
| * @example | ||
| * Compute an RFC 2104 HMAC with WebCrypto. | ||
| * ```ts | ||
| * import { hmac, sha256 } from '@noble/hashes/webcrypto.js'; | ||
| * const key = new Uint8Array([1, 2, 3]); | ||
| * const message = new Uint8Array([4, 5, 6]); | ||
| * const mac = await hmac(sha256, key, message); | ||
| * ``` | ||
| */ | ||
| export const hmac = /* @__PURE__ */ (() => { | ||
@@ -166,2 +183,1 @@ const hmac_ = async (hash, key, message) => { | ||
| } | ||
| //# sourceMappingURL=webcrypto.js.map |
| {"version":3,"file":"_blake.d.ts","sourceRoot":"","sources":["src/_blake.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAQ,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;GAKG;AAEH,eAAO,MAAM,MAAM,EAAE,IAAI,CAAC,UAAU,CAkBlC,CAAC;AAGH,MAAM,MAAM,IAAI,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;CAAE,CAAC;AAKnE,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAM/E;AAKD,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAM/E"} |
| {"version":3,"file":"_blake.js","sourceRoot":"","sources":["src/_blake.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,IAAI,EAAa,MAAM,YAAY,CAAC;AAE7C;;;;;GAKG;AACH,kBAAkB;AAClB,MAAM,CAAC,MAAM,MAAM,GAAqB,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC;IACtE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACpD,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACpD,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACpD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;IACpD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACpD,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IACpD,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACpD,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACpD,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;IACpD,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACpD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACpD,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACpD,2BAA2B;IAC3B,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACpD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;IACpD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACpD,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;CACrD,CAAC,CAAC;AAKH,6EAA6E;AAC7E,+EAA+E;AAC/E,mEAAmE;AACnE,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;IACvE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACpB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACpB,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxB,CAAC;AAED,qCAAqC;AACrC,sFAAsF;AACtF,qEAAqE;AACrE,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;IACvE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACnB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACnB,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxB,CAAC"} |
| {"version":3,"file":"_md.d.ts","sourceRoot":"","sources":["src/_md.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAML,KAAK,IAAI,EACT,KAAK,IAAI,EACT,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,8BAAsB,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,CAAE,YAAW,IAAI,CAAC,CAAC,CAAC;IAGlE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAC/D,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,MAAM,EAAE;IAClC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAC/C,QAAQ,CAAC,OAAO,IAAI,IAAI;IACxB,SAAS,CAAC,QAAQ,CAAC,UAAU,IAAI,IAAI;IAErC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,SAAS;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAGvB,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC;IAC7B,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC;IACzB,SAAS,CAAC,QAAQ,UAAS;IAC3B,SAAS,CAAC,MAAM,SAAK;IACrB,SAAS,CAAC,GAAG,SAAK;IAClB,SAAS,CAAC,SAAS,UAAS;gBAEhB,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;IAQjF,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI;IA0BpC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI;IAkCvC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC;IAS1B,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC;IAarB,KAAK,IAAI,CAAC;CAGX;AAED;;;GAGG;AAEH;;uEAEuE;AACvE,eAAO,MAAM,SAAS,EAAE,IAAI,CAAC,WAAW,CAEtC,CAAC;AAEH;6EAC6E;AAC7E,eAAO,MAAM,SAAS,EAAE,IAAI,CAAC,WAAW,CAEtC,CAAC;AAEH;;;wDAGwD;AACxD,eAAO,MAAM,SAAS,EAAE,IAAI,CAAC,WAAW,CAGtC,CAAC;AAEH;;;gDAGgD;AAChD,eAAO,MAAM,SAAS,EAAE,IAAI,CAAC,WAAW,CAGtC,CAAC"} |
| {"version":3,"file":"_md.js","sourceRoot":"","sources":["src/_md.ts"],"names":[],"mappings":"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"} |
| {"version":3,"file":"_u64.d.ts","sourceRoot":"","sources":["src/_u64.ts"],"names":[],"mappings":"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IAAC,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,GAAG,CAAC;IAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;CAOrpC,CAAC;AAEF,eAAe,GAAG,CAAC"} |
| {"version":3,"file":"_u64.js","sourceRoot":"","sources":["src/_u64.ts"],"names":[],"mappings":"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"} |
| {"version":3,"file":"argon2.d.ts","sourceRoot":"","sources":["src/argon2.ts"],"names":[],"mappings":"AAYA,OAAO,EASL,KAAK,QAAQ,EACb,KAAK,IAAI,EACT,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AAuLpB,uEAAuE;AACvE,MAAM,MAAM,SAAS,GAAG;IACtB,wCAAwC;IACxC,CAAC,EAAE,MAAM,CAAC;IACV,gCAAgC;IAChC,CAAC,EAAE,MAAM,CAAC;IACV,iCAAiC;IACjC,CAAC,EAAE,MAAM,CAAC;IACV,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,gDAAgD;IAChD,eAAe,CAAC,EAAE,QAAQ,CAAC;IAC3B,6FAA6F;IAC7F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC,CAAC;AA6PF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,OAAO,GAClB,UAAU,IAAI,CAAC,QAAQ,CAAC,EACxB,MAAM,IAAI,CAAC,QAAQ,CAAC,EACpB,MAAM,IAAI,CAAC,SAAS,CAAC,KACpB,IAAI,CAAC,UAAU,CAA8C,CAAC;AACjE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,OAAO,GAClB,UAAU,IAAI,CAAC,QAAQ,CAAC,EACxB,MAAM,IAAI,CAAC,QAAQ,CAAC,EACpB,MAAM,IAAI,CAAC,SAAS,CAAC,KACpB,IAAI,CAAC,UAAU,CAA6C,CAAC;AAChE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,QAAQ,GACnB,UAAU,IAAI,CAAC,QAAQ,CAAC,EACxB,MAAM,IAAI,CAAC,QAAQ,CAAC,EACpB,MAAM,IAAI,CAAC,SAAS,CAAC,KACpB,IAAI,CAAC,UAAU,CAA8C,CAAC;AA2EjE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY,GACvB,UAAU,IAAI,CAAC,QAAQ,CAAC,EACxB,MAAM,IAAI,CAAC,QAAQ,CAAC,EACpB,MAAM,IAAI,CAAC,SAAS,CAAC,KACpB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAmD,CAAC;AAC/E;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY,GACvB,UAAU,IAAI,CAAC,QAAQ,CAAC,EACxB,MAAM,IAAI,CAAC,QAAQ,CAAC,EACpB,MAAM,IAAI,CAAC,SAAS,CAAC,KACpB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAkD,CAAC;AAC9E;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,GACxB,UAAU,IAAI,CAAC,QAAQ,CAAC,EACxB,MAAM,IAAI,CAAC,QAAQ,CAAC,EACpB,MAAM,IAAI,CAAC,SAAS,CAAC,KACpB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAmD,CAAC"} |
| {"version":3,"file":"argon2.js","sourceRoot":"","sources":["src/argon2.ts"],"names":[],"mappings":"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E,EAAE,CAAC,EAAE,CAAC,CAAC;IAElE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAElE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAElE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC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"} |
| {"version":3,"file":"blake1.d.ts","sourceRoot":"","sources":["src/blake1.ts"],"names":[],"mappings":"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"} |
| {"version":3,"file":"blake1.js","sourceRoot":"","sources":["src/blake1.ts"],"names":[],"mappings":"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,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC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AC9C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC1B,CAAC;CACF;AAED,sCAAsC;AACtC,MAAM,OAAO,SAAU,SAAQ,UAAU;IACvC,YAAY,OAAkB,EAAE;QAC9B,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;CACF;AACD,sCAAsC;AACtC,MAAM,OAAO,SAAU,SAAQ,UAAU;IACvC,YAAY,OAAkB,EAAE;QAC9B,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;CACF;AACD,sCAAsC;AACtC,MAAM,OAAO,SAAU,SAAQ,UAAU;IACvC,YAAY,OAAkB,EAAE;QAC9B,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;CACF;AACD,sCAAsC;AACtC,MAAM,OAAO,SAAU,SAAQ,UAAU;IACvC,YAAY,OAAkB,EAAE;QAC9B,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;CACF;AACD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAsC,eAAe,CAAC,YAAY,CACrF,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAC9B,CAAC;AACF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAsC,eAAe,CAAC,YAAY,CACrF,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAC9B,CAAC;AACF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAsC,eAAe,CAAC,YAAY,CACrF,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAC9B,CAAC;AACF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAsC,eAAe,CAAC,YAAY,CACrF,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAC9B,CAAC"} |
| {"version":3,"file":"blake2.d.ts","sourceRoot":"","sources":["src/blake2.ts"],"names":[],"mappings":"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"} |
| {"version":3,"file":"blake2.js","sourceRoot":"","sources":["src/blake2.ts"],"names":[],"mappings":"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,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3C,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3C,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3C,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3C,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5C,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5C,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5C,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAE5C,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5C,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5C,GAAG,CAAC,CAAC,EAAE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,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjF,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAA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"} |
| {"version":3,"file":"blake3.d.ts","sourceRoot":"","sources":["src/blake3.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAY,MAAM,aAAa,CAAC;AAEhD,OAAO,EAML,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AA4BpB;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,kCAAkC;IAClC,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF,iFAAiF;AACjF,qBAAa,OAAQ,SAAQ,OAAO,CAAC,OAAO,CAAE,YAAW,OAAO,CAAC,OAAO,CAAC;IACvE,QAAQ,CAAC,MAAM,QAAQ;IACvB,OAAO,CAAC,QAAQ,CAAK;IAGrB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,EAAE,CAAc;IACxB,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,KAAK,CAAqB;IAElC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,SAAS,CAAa;IAG9B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,SAAS,CAAQ;gBAEb,IAAI,GAAE,UAAe,EAAE,KAAK,SAAI;IA6B5C,SAAS,CAAC,GAAG,IAAI,EAAE;IAGnB,SAAS,CAAC,GAAG,IAAI,IAAI;IAGrB,OAAO,CAAC,UAAU;IAmBlB,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,GAAE,MAAU,EAAE,MAAM,GAAE,OAAe,GAAG,IAAI;IAkCvF,UAAU,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO;IAiBjC,OAAO,IAAI,IAAI;IAQf,OAAO,CAAC,aAAa;IA+BrB,SAAS,CAAC,MAAM,IAAI,IAAI;IAsBxB,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;IAIhD,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;IAIpC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI;IAQvC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC;CAK3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CAEtD,CAAC"} |
| {"version":3,"file":"blake3.js","sourceRoot":"","sources":["src/blake3.ts"],"names":[],"mappings":"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"} |
| {"version":3,"file":"eskdf.d.ts","sourceRoot":"","sources":["src/eskdf.ts"],"names":[],"mappings":"AAQA,OAAO,EAQL,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AAYpB;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAEvE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAEvE;AAkBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAanF;AAED,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAkCjC,KAAK,UAAU,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AACxC,KAAK,OAAO,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AACnC,KAAK,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;AA6ChD,6DAA6D;AAC7D,MAAM,WAAW,KAAK;IACpB;;;;;;;;;OASG;IACH,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;IAChG,qDAAqD;IACrD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CA+BpF"} |
| {"version":3,"file":"eskdf.js","sourceRoot":"","sources":["src/eskdf.ts"],"names":[],"mappings":"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"} |
| {"version":3,"file":"hkdf.d.ts","sourceRoot":"","sources":["src/hkdf.ts"],"names":[],"mappings":"AAMA,OAAO,EAA0B,KAAK,KAAK,EAAS,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAE7F;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CACrB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EACjB,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,EACrB,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,GACtB,IAAI,CAAC,UAAU,CAAC,CAOlB;AAQD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,MAAM,CACpB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EACjB,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,EACrB,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,EACvB,MAAM,GAAE,MAAW,GAClB,IAAI,CAAC,UAAU,CAAC,CAiClB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,IAAI,GACf,MAAM,IAAI,CAAC,KAAK,CAAC,EACjB,KAAK,IAAI,CAAC,UAAU,CAAC,EACrB,MAAM,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,EAClC,MAAM,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,EAClC,QAAQ,MAAM,KACb,IAAI,CAAC,UAAU,CAAyD,CAAC"} |
| {"version":3,"file":"hkdf.js","sourceRoot":"","sources":["src/hkdf.ts"],"names":[],"mappings":"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"} |
| {"version":3,"file":"hmac.d.ts","sourceRoot":"","sources":["src/hmac.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAML,KAAK,KAAK,EACV,KAAK,IAAI,EACT,KAAK,IAAI,EACT,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AAEpB;;;;GAIG;AACH,qBAAa,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAE,YAAW,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7D,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,UAAS;IACf,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;gBAEd,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC;IAsBpD,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI;IAKnC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI;IAYvC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC;IAK1B,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAcnC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IAGjB,OAAO,IAAI,IAAI;CAKhB;AAED;;;;;;;;;;;;;GAaG;AACH,KAAK,MAAM,GAAG;IACZ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IACxF,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;CACpE,CAAC;AACF,eAAO,MAAM,IAAI,EAAE,IAAI,CAAC,MAAM,CAS1B,CAAC"} |
| {"version":3,"file":"hmac.js","sourceRoot":"","sources":["src/hmac.ts"],"names":[],"mappings":"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"} |
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":""} |
| {"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC"} |
| {"version":3,"file":"legacy.d.ts","sourceRoot":"","sources":["src/legacy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAO,MAAM,EAAO,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,KAAK,KAAK,EAA6B,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAU9E,uCAAuC;AACvC,qBAAa,KAAM,SAAQ,MAAM,CAAC,KAAK,CAAC;IACtC,OAAO,CAAC,CAAC,CAAkB;IAC3B,OAAO,CAAC,CAAC,CAAkB;IAC3B,OAAO,CAAC,CAAC,CAAkB;IAC3B,OAAO,CAAC,CAAC,CAAkB;IAC3B,OAAO,CAAC,CAAC,CAAkB;;IAK3B,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAIzD,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAO1E,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAoCvD,SAAS,CAAC,UAAU,IAAI,IAAI;IAG5B,OAAO,IAAI,IAAI;CAOhB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,IAAI,EAAE,IAAI,CAAC,KAAK,CAAmD,CAAC;AAcjF,sCAAsC;AACtC,qBAAa,IAAK,SAAQ,MAAM,CAAC,IAAI,CAAC;IACpC,OAAO,CAAC,CAAC,CAAiB;IAC1B,OAAO,CAAC,CAAC,CAAiB;IAC1B,OAAO,CAAC,CAAC,CAAiB;IAC1B,OAAO,CAAC,CAAC,CAAiB;;IAK1B,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAIjD,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAM/D,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAqCvD,SAAS,CAAC,UAAU,IAAI,IAAI;IAG5B,OAAO,IAAI,IAAI;CAOhB;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,GAAG,EAAE,IAAI,CAAC,KAAK,CAAkD,CAAC;AAmD/E;;;GAGG;AACH,qBAAa,UAAW,SAAQ,MAAM,CAAC,UAAU,CAAC;IAChD,OAAO,CAAC,EAAE,CAAkB;IAC5B,OAAO,CAAC,EAAE,CAAkB;IAC5B,OAAO,CAAC,EAAE,CAAkB;IAC5B,OAAO,CAAC,EAAE,CAAkB;IAC5B,OAAO,CAAC,EAAE,CAAkB;;IAK5B,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAIzD,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAO/E,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAoCvD,SAAS,CAAC,UAAU,IAAI,IAAI;IAG5B,OAAO,IAAI,IAAI;CAKhB;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,SAAS,EAAE,IAAI,CAAC,KAAK,CAAwD,CAAC"} |
| {"version":3,"file":"legacy.js","sourceRoot":"","sources":["src/legacy.ts"],"names":[],"mappings":"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"} |
| {"version":3,"file":"pbkdf2.d.ts","sourceRoot":"","sources":["src/pbkdf2.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,KAAK,KAAK,EAEV,KAAK,QAAQ,EACb,KAAK,IAAI,EACT,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,wDAAwD;IACxD,CAAC,EAAE,MAAM,CAAC;IACV,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA+CF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CACpB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,EACxB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GACpB,IAAI,CAAC,UAAU,CAAC,CAwBlB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,EACxB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GACpB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAwB3B"} |
| {"version":3,"file":"pbkdf2.js","sourceRoot":"","sources":["src/pbkdf2.ts"],"names":[],"mappings":"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"} |
| {"version":3,"file":"scrypt.d.ts","sourceRoot":"","sources":["src/scrypt.ts"],"names":[],"mappings":"AAOA,OAAO,EAML,KAAK,QAAQ,EACb,KAAK,IAAI,EACT,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AAkFpB;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,0DAA0D;IAC1D,CAAC,EAAE,MAAM,CAAC;IACV,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,8BAA8B;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC,CAAC;AAiFF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,MAAM,CACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,EACxB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,GACrB,IAAI,CAAC,UAAU,CAAC,CAgClB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,EACxB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,GACrB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAiC3B"} |
| {"version":3,"file":"scrypt.js","sourceRoot":"","sources":["src/scrypt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,kBAAkB;AAClB,OAAO,EACL,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,KAAK,EAChB,IAAI,EACJ,UAAU,EACV,GAAG,EAIJ,MAAM,YAAY,CAAC;AAEpB,gDAAgD;AAChD,oEAAoE;AACpE,2EAA2E;AAC3E,iCAAiC;AACjC,gGAAgG;AAChG,kBAAkB;AAClB,SAAS,WAAW,CAClB,IAAuB,EACvB,EAAU,EACV,KAAwB,EACxB,EAAU,EACV,GAAsB,EACtB,EAAU;IAEV,wEAAwE;IACxE,aAAa;IACb,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACnE,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACnE,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACnE,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACnE,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACnE,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACnE,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACnE,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACnE,4CAA4C;IAC5C,IAAI,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAC1C,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAC1C,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAC1C,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;IAC/C,oBAAoB;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAG,CAAC,CAAC,CAAC;QAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAG,CAAC,CAAC,CAAC;QAC/D,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/D,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAG,CAAC,CAAC,CAAC;QAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAG,CAAC,CAAC,CAAC;QAC/D,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/D,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAG,CAAC,CAAC,CAAC;QAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAG,CAAC,CAAC,CAAC;QAC/D,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/D,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAG,CAAC,CAAC,CAAC;QAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAG,CAAC,CAAC,CAAC;QAC/D,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/D,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAG,CAAC,CAAC,CAAC;QAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAG,CAAC,CAAC,CAAC;QAC/D,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/D,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAG,CAAC,CAAC,CAAC;QAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAG,CAAC,CAAC,CAAC;QAC/D,GA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"} |
| {"version":3,"file":"sha2.d.ts","sourceRoot":"","sources":["src/sha2.ts"],"names":[],"mappings":"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"} |
| {"version":3,"file":"sha2.js","sourceRoot":"","sources":["src/sha2.ts"],"names":[],"mappings":"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,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,GAA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"} |
| {"version":3,"file":"sha3-addons.d.ts","sourceRoot":"","sources":["src/sha3-addons.ts"],"names":[],"mappings":"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"} |
| {"version":3,"file":"sha3-addons.js","sourceRoot":"","sources":["src/sha3-addons.ts"],"names":[],"mappings":"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"} |
| {"version":3,"file":"sha3.d.ts","sourceRoot":"","sources":["src/sha3.ts"],"names":[],"mappings":"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"} |
| {"version":3,"file":"sha3.js","sourceRoot":"","sources":["src/sha3.ts"],"names":[],"mappings":"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"} |
| {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["src/utils.ts"],"names":[],"mappings":"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"} |
| {"version":3,"file":"utils.js","sourceRoot":"","sources":["src/utils.ts"],"names":[],"mappings":"AA8GA;;;;;;;;;GASG;AACH,MAAM,UAAU,OAAO,CAAC,CAAU;IAChC,2FAA2F;IAC3F,gEAAgE;IAChE,qEAAqE;IACrE,uEAAuE;IACvE,OAAO,CACL,CAAC,YAAY,UAAU;QACvB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;YACpB,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,YAAY;YACnC,mBAAmB,IAAI,CAAC;YACxB,CAAC,CAAC,iBAAiB,KAAK,CAAC,CAAC,CAC7B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,OAAO,CAAC,CAAS,EAAE,QAAgB,EAAE;IACnD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,KAAK,IAAI,IAAI,KAAK,IAAI,CAAC;QACtC,MAAM,IAAI,SAAS,CAAC,GAAG,MAAM,wBAAwB,OAAO,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,KAAK,IAAI,IAAI,KAAK,IAAI,CAAC;QACtC,MAAM,IAAI,UAAU,CAAC,GAAG,MAAM,8BAA8B,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,MAAM,CACpB,KAAuB,EACvB,MAAe,EACf,QAAgB,EAAE;IAElB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,KAAK,EAAE,MAAM,CAAC;IAC1B,MAAM,QAAQ,GAAG,MAAM,KAAK,SAAS,CAAC;IACtC,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,IAAI,GAAG,KAAK,MAAM,CAAC,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,KAAK,IAAI,IAAI,KAAK,IAAI,CAAC;QACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,cAAc,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,OAAO,KAAK,EAAE,CAAC;QAC7D,MAAM,OAAO,GAAG,MAAM,GAAG,qBAAqB,GAAG,KAAK,GAAG,QAAQ,GAAG,GAAG,CAAC;QACxE,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,KAAyB,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,KAAuB;IAC/C,gGAAgG;IAChG,0FAA0F;IAC1F,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAqB,CAAC;AAC5D,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,KAAK,CAAC,CAAc;IAClC,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,UAAU;QAC3D,MAAM,IAAI,SAAS,CAAC,yCAAyC,CAAC,CAAC;IACjE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACrB,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACpB,+FAA+F;IAC/F,oEAAoE;IACpE,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACjE,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,OAAO,CAAC,QAAa,EAAE,aAAa,GAAG,IAAI;IACzD,IAAI,QAAQ,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC5E,IAAI,aAAa,IAAI,QAAQ,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;AACnG,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,OAAO,CAAC,GAAQ,EAAE,QAAa;IAC7C,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC;IAC/B,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACrB,MAAM,IAAI,UAAU,CAAC,mDAAmD,GAAG,GAAG,CAAC,CAAC;IAClF,CAAC;AACH,CAAC;AAOD;;;;;;;;;GASG;AACH,MAAM,UAAU,EAAE,CAAC,GAAqB;IACtC,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAqB,CAAC;AACxF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,GAAG,CAAC,GAAqB;IACvC,OAAO,IAAI,WAAW,CACpB,GAAG,CAAC,MAAM,EACV,GAAG,CAAC,UAAU,EACd,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CACV,CAAC;AACzB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,KAAK,CAAC,GAAG,MAA0B;IACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CAAC,GAAqB;IAC9C,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;AAClE,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,IAAI,CAAC,IAAY,EAAE,KAAa;IAC9C,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,IAAI,CAAC,IAAY,EAAE,KAAa;IAC9C,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,qDAAqD;AACrD,MAAM,CAAC,MAAM,IAAI,GAAY,eAAe,CAAC,CAAC,GAAG,EAAE,CACjD,IAAI,UAAU,CAAC,IAAI,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;AAEtE;;;;;;;;;GASG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,CACL,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC;QAC3B,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;QACxB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC;QACvB,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,CACvB,CAAC;AACJ,CAAC;AACD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,SAAS,GAA0B,IAAI;IAClD,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAErC;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CAAC,GAAsB;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,GAAwB,CAAC;AAClC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,UAAU,GAAgD,IAAI;IACzE,CAAC,CAAC,CAAC,CAAoB,EAAE,EAAE,CAAC,CAAsB;IAClD,CAAC,CAAC,UAAU,CAAC;AAEf,yFAAyF;AACzF,MAAM,aAAa,GAAY,eAAe,CAAC,CAAC,GAAG,EAAE;AACnD,aAAa;AACb,OAAO,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,UAAU,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,UAAU,CAAC,EAAE,CAAC;AAEjG,wDAAwD;AACxD,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACjE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAChC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CAAC,KAAuB;IAChD,MAAM,CAAC,KAAK,CAAC,CAAC;IACd,aAAa;IACb,IAAI,aAAa;QAAE,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;IACxC,oCAAoC;IACpC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,iEAAiE;AACjE,MAAM,MAAM,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAW,CAAC;AACxE,SAAS,aAAa,CAAC,EAAU;IAC/B,IAAI,EAAE,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,eAAe;IAC9E,IAAI,EAAE,IAAI,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,CAAC;QAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,oBAAoB;IACvF,IAAI,EAAE,IAAI,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,CAAC;QAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,oBAAoB;IACvF,OAAO;AACT,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,MAAM,IAAI,SAAS,CAAC,2BAA2B,GAAG,OAAO,GAAG,CAAC,CAAC;IAC3F,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,OAAQ,UAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,WAAW;gBAAE,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACD,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;IACtB,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,kDAAkD,GAAG,EAAE,CAAC,CAAC;IAC1F,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,MAAM,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACjD,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACnC,MAAM,IAAI,UAAU,CAClB,8CAA8C,GAAG,IAAI,GAAG,aAAa,GAAG,EAAE,CAC3E,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,+DAA+D;IAC3F,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,IAAmB,EAAE,GAAE,CAAC,CAAC;AAEtD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,KAAa,EACb,IAAY,EACZ,EAAuB;IAEvB,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,EAAE,CAAC,CAAC,CAAC,CAAC;QACN,+FAA+F;QAC/F,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;QAC7B,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,IAAI;YAAE,SAAS;QACvC,MAAM,QAAQ,EAAE,CAAC;QACjB,EAAE,IAAI,IAAI,CAAC;IACb,CAAC;AACH,CAAC;AAKD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACpE,OAAO,IAAI,UAAU,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,4BAA4B;AACpF,CAAC;AAKD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAAC,IAAoB,EAAE,UAAU,GAAG,EAAE;IACnE,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,GAAG,MAA0B;IACvD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,CAAC,CAAC,CAAC,CAAC;QACV,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC;IAClB,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChD,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAChB,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAGD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CACvB,QAAY,EACZ,IAAS;IAET,IAAI,IAAI,KAAK,SAAS,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,iBAAiB;QACpE,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC7C,OAAO,MAAiB,CAAC;AAC3B,CAAC;AA6GD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,YAAY,CAC1B,QAA6B,EAC7B,OAAuB,EAAE;IAEzB,MAAM,KAAK,GAAQ,CAAC,GAAqB,EAAE,IAAiB,EAAE,EAAE,CAC9D,QAAQ,CAAC,IAAY,CAAC;SACnB,MAAM,CAAC,GAAG,CAAC;SACX,MAAM,EAAE,CAAC;IACd,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAChC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;IAChC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC9B,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAC1B,KAAK,CAAC,MAAM,GAAG,CAAC,IAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAyB,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,WAAW,CAAC,WAAW,GAAG,EAAE;IAC1C,0FAA0F;IAC1F,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAE,UAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9E,IAAI,OAAO,EAAE,EAAE,eAAe,KAAK,UAAU;QAC3C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,wCAAwC;IACxC,uDAAuD;IACvD,+DAA+D;IAC/D,gEAAgE;IAChE,uEAAuE;IACvE,IAAI,WAAW,GAAG,KAAK;QACrB,MAAM,IAAI,UAAU,CAAC,wCAAwC,WAAW,EAAE,CAAC,CAAC;IAC9E,OAAO,EAAE,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,MAAc,EAA4B,EAAE,CAAC,CAAC;IACpE,+EAA+E;IAC/E,qFAAqF;IACrF,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;CAC3F,CAAC,CAAC"} |
| {"version":3,"file":"webcrypto.d.ts","sourceRoot":"","sources":["src/webcrypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAOL,KAAK,QAAQ,EACb,KAAK,IAAI,EACT,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AASpB,mDAAmD;AACnD,MAAM,MAAM,OAAO,GAAG;IACpB;;;;OAIG;IACH,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACnD,0DAA0D;IAC1D,aAAa,EAAE,MAAM,CAAC;IACtB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AA0BF,uFAAuF;AAGvF;;;;;;;;;GASG;AACH,eAAO,MAAM,MAAM,EAAE,IAAI,CAAC,OAAO,CAAoD,CAAC;AACtF;;;;;;;;;GASG;AACH,eAAO,MAAM,MAAM,EAAE,IAAI,CAAC,OAAO,CAAqD,CAAC;AACvF;;;;;;;;;GASG;AACH,eAAO,MAAM,MAAM,EAAE,IAAI,CAAC,OAAO,CAAqD,CAAC;AAEvF;;;;;;;;;;;;;;GAcG;AACH,KAAK,SAAS,GAAG;IACf,CACE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EACnB,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,EACrB,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,GACxB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7B,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;CACzD,CAAC;AACF,eAAO,MAAM,IAAI,EAAE,IAAI,CAAC,SAAS,CA2B7B,CAAC;AAEL;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,IAAI,CACxB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EACnB,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,EACrB,IAAI,EAAE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,EAClC,IAAI,EAAE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,EAClC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAe3B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,MAAM,CAC1B,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,EACxB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAgB3B"} |
| {"version":3,"file":"webcrypto.js","sourceRoot":"","sources":["src/webcrypto.ts"],"names":[],"mappings":"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"} |
16507
8.43%580
2.84%680759
-23.46%60
-38.78%