npm package diff

Package: @noble/hashes

Versions: 1.3.2 - 1.3.3

File: package/esm/sha3-addons.js

Index: package/esm/sha3-addons.js
===================================================================
--- package/esm/sha3-addons.js
+++ package/esm/sha3-addons.js
@@ -1,6 +1,6 @@
 import { number as assertNumber } from './_assert.js';
-import { toBytes, wrapConstructorWithOpts, u32 } from './utils.js';
+import { toBytes, wrapConstructorWithOpts, u32, wrapXOFConstructorWithOpts, } from './utils.js';
 import { Keccak } from './sha3.js';
 // cSHAKE && KMAC (NIST SP800-185)
 function leftEncode(n) {
     const res = [n & 0xff];
@@ -198,8 +198,17 @@
 export const parallelhash128 = /* @__PURE__ */ (() => genPrl(168, 128 / 8, cshake128))();
 export const parallelhash256 = /* @__PURE__ */ (() => genPrl(136, 256 / 8, cshake256))();
 export const parallelhash128xof = /* @__PURE__ */ (() => genPrl(168, 128 / 8, cshake128, true))();
 export const parallelhash256xof = /* @__PURE__ */ (() => genPrl(136, 256 / 8, cshake256, true))();
+const genTurboshake = (blockLen, outputLen) => wrapXOFConstructorWithOpts((opts = {}) => {
+    const D = opts.D === undefined ? 0x1f : opts.D;
+    // Section 2.1 of https://datatracker.ietf.org/doc/draft-irtf-cfrg-kangarootwelve/
+    if (!Number.isSafeInteger(D) || D < 0x01 || D > 0x7f)
+        throw new Error(`turboshake: wrong domain separation byte: ${D}, should be 0x01..0x7f`);
+    return new Keccak(blockLen, D, opts.dkLen === undefined ? outputLen : opts.dkLen, true, 12);
+});
+export const turboshake128 = /* @__PURE__ */ genTurboshake(168, 256 / 8);
+export const turboshake256 = /* @__PURE__ */ genTurboshake(136, 512 / 8);
 // Kangaroo
 // Same as NIST rightEncode, but returns [0] for zero string
 function rightEncodeK12(n) {
     const res = [];