UNPKG

gnablib

Version:

A lean, zero dependency library to provide a useful base for your project.

2 lines 8.55 kB
/*! Copyright 2022-2025 the gnablib contributors MPL-1.1 */ var t,s,i,h=this&&this.__classPrivateFieldGet||function(t,s,i,h){if("a"===i&&!h)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof s?t!==s||!h:!s.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?h:"a"===i?h.call(t):h?h.value:s.get(t)};import{asLE as f}from"../../endian/platform.js";import{U32 as o}from"../../primitive/number/U32Static.js";const e=[1732584193,4023233417,2562383102,271733878];export class Md4{constructor(){this.size=16,this.blockSize=64,t.set(this,new Uint32Array(4)),s.set(this,new Uint8Array(64)),i.set(this,new Uint32Array(h(this,s,"f").buffer)),this._ingestBytes=0,this._bPos=0,this.reset()}hash(){const e=h(this,t,"f")[0],l=h(this,t,"f")[1],r=h(this,t,"f")[2],n=h(this,t,"f")[3];for(let t=0;t<16;t++)f.i32(h(this,s,"f"),4*t);h(this,t,"f")[0]=o.lRot(h(this,t,"f")[0]+(h(this,t,"f")[3]^h(this,t,"f")[1]&(h(this,t,"f")[2]^h(this,t,"f")[3]))+h(this,i,"f")[0],3),h(this,t,"f")[3]=o.lRot(h(this,t,"f")[3]+(h(this,t,"f")[2]^h(this,t,"f")[0]&(h(this,t,"f")[1]^h(this,t,"f")[2]))+h(this,i,"f")[1],7),h(this,t,"f")[2]=o.lRot(h(this,t,"f")[2]+(h(this,t,"f")[1]^h(this,t,"f")[3]&(h(this,t,"f")[0]^h(this,t,"f")[1]))+h(this,i,"f")[2],11),h(this,t,"f")[1]=o.lRot(h(this,t,"f")[1]+(h(this,t,"f")[0]^h(this,t,"f")[2]&(h(this,t,"f")[3]^h(this,t,"f")[0]))+h(this,i,"f")[3],19),h(this,t,"f")[0]=o.lRot(h(this,t,"f")[0]+(h(this,t,"f")[3]^h(this,t,"f")[1]&(h(this,t,"f")[2]^h(this,t,"f")[3]))+h(this,i,"f")[4],3),h(this,t,"f")[3]=o.lRot(h(this,t,"f")[3]+(h(this,t,"f")[2]^h(this,t,"f")[0]&(h(this,t,"f")[1]^h(this,t,"f")[2]))+h(this,i,"f")[5],7),h(this,t,"f")[2]=o.lRot(h(this,t,"f")[2]+(h(this,t,"f")[1]^h(this,t,"f")[3]&(h(this,t,"f")[0]^h(this,t,"f")[1]))+h(this,i,"f")[6],11),h(this,t,"f")[1]=o.lRot(h(this,t,"f")[1]+(h(this,t,"f")[0]^h(this,t,"f")[2]&(h(this,t,"f")[3]^h(this,t,"f")[0]))+h(this,i,"f")[7],19),h(this,t,"f")[0]=o.lRot(h(this,t,"f")[0]+(h(this,t,"f")[3]^h(this,t,"f")[1]&(h(this,t,"f")[2]^h(this,t,"f")[3]))+h(this,i,"f")[8],3),h(this,t,"f")[3]=o.lRot(h(this,t,"f")[3]+(h(this,t,"f")[2]^h(this,t,"f")[0]&(h(this,t,"f")[1]^h(this,t,"f")[2]))+h(this,i,"f")[9],7),h(this,t,"f")[2]=o.lRot(h(this,t,"f")[2]+(h(this,t,"f")[1]^h(this,t,"f")[3]&(h(this,t,"f")[0]^h(this,t,"f")[1]))+h(this,i,"f")[10],11),h(this,t,"f")[1]=o.lRot(h(this,t,"f")[1]+(h(this,t,"f")[0]^h(this,t,"f")[2]&(h(this,t,"f")[3]^h(this,t,"f")[0]))+h(this,i,"f")[11],19),h(this,t,"f")[0]=o.lRot(h(this,t,"f")[0]+(h(this,t,"f")[3]^h(this,t,"f")[1]&(h(this,t,"f")[2]^h(this,t,"f")[3]))+h(this,i,"f")[12],3),h(this,t,"f")[3]=o.lRot(h(this,t,"f")[3]+(h(this,t,"f")[2]^h(this,t,"f")[0]&(h(this,t,"f")[1]^h(this,t,"f")[2]))+h(this,i,"f")[13],7),h(this,t,"f")[2]=o.lRot(h(this,t,"f")[2]+(h(this,t,"f")[1]^h(this,t,"f")[3]&(h(this,t,"f")[0]^h(this,t,"f")[1]))+h(this,i,"f")[14],11),h(this,t,"f")[1]=o.lRot(h(this,t,"f")[1]+(h(this,t,"f")[0]^h(this,t,"f")[2]&(h(this,t,"f")[3]^h(this,t,"f")[0]))+h(this,i,"f")[15],19);const R=1518500249;h(this,t,"f")[0]=o.lRot(h(this,t,"f")[0]+((h(this,t,"f")[1]|h(this,t,"f")[2])&h(this,t,"f")[3]|h(this,t,"f")[1]&h(this,t,"f")[2])+h(this,i,"f")[0]+R,3),h(this,t,"f")[3]=o.lRot(h(this,t,"f")[3]+((h(this,t,"f")[0]|h(this,t,"f")[1])&h(this,t,"f")[2]|h(this,t,"f")[0]&h(this,t,"f")[1])+h(this,i,"f")[4]+R,5),h(this,t,"f")[2]=o.lRot(h(this,t,"f")[2]+((h(this,t,"f")[0]|h(this,t,"f")[1])&h(this,t,"f")[3]|h(this,t,"f")[0]&h(this,t,"f")[1])+h(this,i,"f")[8]+R,9),h(this,t,"f")[1]=o.lRot(h(this,t,"f")[1]+((h(this,t,"f")[0]|h(this,t,"f")[2])&h(this,t,"f")[3]|h(this,t,"f")[0]&h(this,t,"f")[2])+h(this,i,"f")[12]+R,13),h(this,t,"f")[0]=o.lRot(h(this,t,"f")[0]+((h(this,t,"f")[1]|h(this,t,"f")[2])&h(this,t,"f")[3]|h(this,t,"f")[1]&h(this,t,"f")[2])+h(this,i,"f")[1]+R,3),h(this,t,"f")[3]=o.lRot(h(this,t,"f")[3]+((h(this,t,"f")[0]|h(this,t,"f")[1])&h(this,t,"f")[2]|h(this,t,"f")[0]&h(this,t,"f")[1])+h(this,i,"f")[5]+R,5),h(this,t,"f")[2]=o.lRot(h(this,t,"f")[2]+((h(this,t,"f")[0]|h(this,t,"f")[1])&h(this,t,"f")[3]|h(this,t,"f")[0]&h(this,t,"f")[1])+h(this,i,"f")[9]+R,9),h(this,t,"f")[1]=o.lRot(h(this,t,"f")[1]+((h(this,t,"f")[0]|h(this,t,"f")[2])&h(this,t,"f")[3]|h(this,t,"f")[0]&h(this,t,"f")[2])+h(this,i,"f")[13]+R,13),h(this,t,"f")[0]=o.lRot(h(this,t,"f")[0]+((h(this,t,"f")[1]|h(this,t,"f")[2])&h(this,t,"f")[3]|h(this,t,"f")[1]&h(this,t,"f")[2])+h(this,i,"f")[2]+R,3),h(this,t,"f")[3]=o.lRot(h(this,t,"f")[3]+((h(this,t,"f")[0]|h(this,t,"f")[1])&h(this,t,"f")[2]|h(this,t,"f")[0]&h(this,t,"f")[1])+h(this,i,"f")[6]+R,5),h(this,t,"f")[2]=o.lRot(h(this,t,"f")[2]+((h(this,t,"f")[0]|h(this,t,"f")[1])&h(this,t,"f")[3]|h(this,t,"f")[0]&h(this,t,"f")[1])+h(this,i,"f")[10]+R,9),h(this,t,"f")[1]=o.lRot(h(this,t,"f")[1]+((h(this,t,"f")[0]|h(this,t,"f")[2])&h(this,t,"f")[3]|h(this,t,"f")[0]&h(this,t,"f")[2])+h(this,i,"f")[14]+R,13),h(this,t,"f")[0]=o.lRot(h(this,t,"f")[0]+((h(this,t,"f")[1]|h(this,t,"f")[2])&h(this,t,"f")[3]|h(this,t,"f")[1]&h(this,t,"f")[2])+h(this,i,"f")[3]+R,3),h(this,t,"f")[3]=o.lRot(h(this,t,"f")[3]+((h(this,t,"f")[0]|h(this,t,"f")[1])&h(this,t,"f")[2]|h(this,t,"f")[0]&h(this,t,"f")[1])+h(this,i,"f")[7]+R,5),h(this,t,"f")[2]=o.lRot(h(this,t,"f")[2]+((h(this,t,"f")[0]|h(this,t,"f")[1])&h(this,t,"f")[3]|h(this,t,"f")[0]&h(this,t,"f")[1])+h(this,i,"f")[11]+R,9),h(this,t,"f")[1]=o.lRot(h(this,t,"f")[1]+((h(this,t,"f")[0]|h(this,t,"f")[2])&h(this,t,"f")[3]|h(this,t,"f")[0]&h(this,t,"f")[2])+h(this,i,"f")[15]+R,13);const a=1859775393;h(this,t,"f")[0]=o.lRot(h(this,t,"f")[0]+(h(this,t,"f")[1]^h(this,t,"f")[2]^h(this,t,"f")[3])+h(this,i,"f")[0]+a,3),h(this,t,"f")[3]=o.lRot(h(this,t,"f")[3]+(h(this,t,"f")[0]^h(this,t,"f")[1]^h(this,t,"f")[2])+h(this,i,"f")[8]+a,9),h(this,t,"f")[2]=o.lRot(h(this,t,"f")[2]+(h(this,t,"f")[3]^h(this,t,"f")[0]^h(this,t,"f")[1])+h(this,i,"f")[4]+a,11),h(this,t,"f")[1]=o.lRot(h(this,t,"f")[1]+(h(this,t,"f")[2]^h(this,t,"f")[3]^h(this,t,"f")[0])+h(this,i,"f")[12]+a,15),h(this,t,"f")[0]=o.lRot(h(this,t,"f")[0]+(h(this,t,"f")[1]^h(this,t,"f")[2]^h(this,t,"f")[3])+h(this,i,"f")[2]+a,3),h(this,t,"f")[3]=o.lRot(h(this,t,"f")[3]+(h(this,t,"f")[0]^h(this,t,"f")[1]^h(this,t,"f")[2])+h(this,i,"f")[10]+a,9),h(this,t,"f")[2]=o.lRot(h(this,t,"f")[2]+(h(this,t,"f")[3]^h(this,t,"f")[0]^h(this,t,"f")[1])+h(this,i,"f")[6]+a,11),h(this,t,"f")[1]=o.lRot(h(this,t,"f")[1]+(h(this,t,"f")[2]^h(this,t,"f")[3]^h(this,t,"f")[0])+h(this,i,"f")[14]+a,15),h(this,t,"f")[0]=o.lRot(h(this,t,"f")[0]+(h(this,t,"f")[1]^h(this,t,"f")[2]^h(this,t,"f")[3])+h(this,i,"f")[1]+a,3),h(this,t,"f")[3]=o.lRot(h(this,t,"f")[3]+(h(this,t,"f")[0]^h(this,t,"f")[1]^h(this,t,"f")[2])+h(this,i,"f")[9]+a,9),h(this,t,"f")[2]=o.lRot(h(this,t,"f")[2]+(h(this,t,"f")[3]^h(this,t,"f")[0]^h(this,t,"f")[1])+h(this,i,"f")[5]+a,11),h(this,t,"f")[1]=o.lRot(h(this,t,"f")[1]+(h(this,t,"f")[2]^h(this,t,"f")[3]^h(this,t,"f")[0])+h(this,i,"f")[13]+a,15),h(this,t,"f")[0]=o.lRot(h(this,t,"f")[0]+(h(this,t,"f")[1]^h(this,t,"f")[2]^h(this,t,"f")[3])+h(this,i,"f")[3]+a,3),h(this,t,"f")[3]=o.lRot(h(this,t,"f")[3]+(h(this,t,"f")[0]^h(this,t,"f")[1]^h(this,t,"f")[2])+h(this,i,"f")[11]+a,9),h(this,t,"f")[2]=o.lRot(h(this,t,"f")[2]+(h(this,t,"f")[3]^h(this,t,"f")[0]^h(this,t,"f")[1])+h(this,i,"f")[7]+a,11),h(this,t,"f")[1]=o.lRot(h(this,t,"f")[1]+(h(this,t,"f")[2]^h(this,t,"f")[3]^h(this,t,"f")[0])+h(this,i,"f")[15]+a,15),h(this,t,"f")[0]+=e,h(this,t,"f")[1]+=l,h(this,t,"f")[2]+=r,h(this,t,"f")[3]+=n,this._bPos=0}write(t){this._ingestBytes+=t.length;let i=t.length,f=0,o=64-this._bPos;for(;i>0;){if(o>i)return h(this,s,"f").set(t.subarray(f),this._bPos),void(this._bPos+=i);h(this,s,"f").set(t.subarray(f,f+o),this._bPos),this._bPos+=o,this.hash(),f+=o,i-=o,o=64}}sum(){return this.clone().sumIn()}sumIn(){h(this,s,"f")[this._bPos]=128,this._bPos++;this._bPos>56&&(h(this,s,"f").fill(0,this._bPos),this.hash()),h(this,s,"f").fill(0,this._bPos);h(this,i,"f")[14]=this._ingestBytes<<3,h(this,i,"f")[15]=this._ingestBytes/536870912,f.i32(h(this,s,"f"),56),f.i32(h(this,s,"f"),60),this.hash();const o=new Uint8Array(h(this,t,"f").buffer,h(this,t,"f").byteOffset);for(let t=0;t<16;t++)f.i32(o,4*t);return o.slice(0,this.size)}reset(){h(this,t,"f")[0]=e[0],h(this,t,"f")[1]=e[1],h(this,t,"f")[2]=e[2],h(this,t,"f")[3]=e[3],this._ingestBytes=0,this._bPos=0}newEmpty(){return new Md4}clone(){const i=new Md4;return h(i,t,"f").set(h(this,t,"f")),h(i,s,"f").set(h(this,s,"f")),i._ingestBytes=this._ingestBytes,i._bPos=this._bPos,i}}t=new WeakMap,s=new WeakMap,i=new WeakMap;