npm package diff

Package: @noble/hashes

Versions: 1.3.2 - 1.3.3

File: package/sha3-addons.js

Index: package/sha3-addons.js
===================================================================
--- package/sha3-addons.js
+++ package/sha3-addons.js
@@ -1,7 +1,7 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.keccakprg = exports.m14 = exports.k12 = exports.parallelhash256xof = exports.parallelhash128xof = exports.parallelhash256 = exports.parallelhash128 = exports.tuplehash256xof = exports.tuplehash128xof = exports.tuplehash256 = exports.tuplehash128 = exports.kmac256xof = exports.kmac128xof = exports.kmac256 = exports.kmac128 = exports.cshake256 = exports.cshake128 = void 0;
+exports.keccakprg = exports.m14 = exports.k12 = exports.turboshake256 = exports.turboshake128 = exports.parallelhash256xof = exports.parallelhash128xof = exports.parallelhash256 = exports.parallelhash128 = exports.tuplehash256xof = exports.tuplehash128xof = exports.tuplehash256 = exports.tuplehash128 = exports.kmac256xof = exports.kmac128xof = exports.kmac256 = exports.kmac128 = exports.cshake256 = exports.cshake128 = void 0;
 const _assert_js_1 = require("./_assert.js");
 const utils_js_1 = require("./utils.js");
 const sha3_js_1 = require("./sha3.js");
 // cSHAKE && KMAC (NIST SP800-185)
@@ -201,8 +201,17 @@
 exports.parallelhash128 = (() => genPrl(168, 128 / 8, exports.cshake128))();
 exports.parallelhash256 = (() => genPrl(136, 256 / 8, exports.cshake256))();
 exports.parallelhash128xof = (() => genPrl(168, 128 / 8, exports.cshake128, true))();
 exports.parallelhash256xof = (() => genPrl(136, 256 / 8, exports.cshake256, true))();
+const genTurboshake = (blockLen, outputLen) => (0, utils_js_1.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 sha3_js_1.Keccak(blockLen, D, opts.dkLen === undefined ? outputLen : opts.dkLen, true, 12);
+});
+exports.turboshake128 = genTurboshake(168, 256 / 8);
+exports.turboshake256 = genTurboshake(136, 512 / 8);
 // Kangaroo
 // Same as NIST rightEncode, but returns [0] for zero string
 function rightEncodeK12(n) {
     const res = [];