UNPKG

gnablib

Version:

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

2 lines 6.68 kB
/*! Copyright 2022-2025 the gnablib contributors MPL-1.1 */ var t,s,i,e,o=this&&this.__classPrivateFieldSet||function(t,s,i,e,o){if("m"===e)throw new TypeError("Private method is not writable");if("a"===e&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof s?t!==s||!o:!s.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===e?o.call(t,i):o?o.value=i:s.set(t,i),i},h=this&&this.__classPrivateFieldGet||function(t,s,i,e){if("a"===i&&!e)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof s?t!==s||!e:!s.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?e:"a"===i?e.call(t):e?e.value:s.get(t)};import{asLE as r}from"../../endian/platform.js";import{U32 as a}from"../../primitive/number/U32Static.js";const l=[1732584193,4023233417,2562383102,271733878,3285377520],n=[1985229328,4275878552,2309737967,19088743,1009589775],f=[(t,s,i)=>t^s^i,(t,s,i)=>i^t&(s^i),(t,s,i)=>(t|~s)^i,(t,s,i)=>s^i&(t^s),(t,s,i)=>t^(s|~i)],c=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],R=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],p=[0,1518500249,1859775393,2400959708,2840853838],d=[1352829926,1548603684,1836072691,2053994217,0],u=[1352829926,1548603684,1836072691,0],w=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],_=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11];class b{constructor(r,a,l){this.blockSize=64,t.set(this,void 0),s.set(this,new Uint8Array(64)),i.set(this,new Uint32Array(h(this,s,"f").buffer)),this._ingestBytes=0,this._bPos=0,e.set(this,void 0),this.size=r,o(this,t,new Uint32Array(r>>2),"f"),o(this,e,a,"f"),this._hash=l,this.reset()}hash(){for(let t=0;t<16;t++)r.i32(h(this,s,"f"),4*t);this._hash(h(this,t,"f"),h(this,i,"f")),this._bPos=0}write(t){this._ingestBytes+=t.length;let i=t.length,e=0,o=64-this._bPos;for(;i>0;){if(o>i)return h(this,s,"f").set(t.subarray(e),this._bPos),void(this._bPos+=i);h(this,s,"f").set(t.subarray(e,e+o),this._bPos),this._bPos+=o,this.hash(),e+=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,r.i32(h(this,s,"f"),56),r.i32(h(this,s,"f"),60),this.hash();const e=new Uint8Array(h(this,t,"f").buffer,h(this,t,"f").byteOffset);for(let t=0;t<this.size;t++)r.i32(e,4*t);return e.slice(0,this.size)}reset(){h(this,e,"f").call(this,h(this,t,"f")),this._ingestBytes=0,this._bPos=0}newEmpty(){return new b(this.size,h(this,e,"f"),this._hash)}clone(){const i=new b(this.size,h(this,e,"f"),this._hash);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,e=new WeakMap;export class RipeMd128 extends b{constructor(){super(16,RipeMd128.iv,RipeMd128.hash)}static iv(t){t[0]=l[0],t[1]=l[1],t[2]=l[2],t[3]=l[3]}static hash(t,s){let i,e=t[0],o=t[1],h=t[2],r=t[3],l=t[0],n=t[1],d=t[2],b=t[3];for(let t=0;t<64;t++){const v=t>>4;i=a.lRot(e+f[v](o,h,r)+s[c[t]]+p[v],w[t]),e=r,r=h,h=o,o=i,i=a.lRot(l+f[3-v](n,d,b)+s[R[t]]+u[v],_[t]),l=b,b=d,d=n,n=i}i=t[1]+h+b,t[1]=t[2]+r+l,t[2]=t[3]+e+n,t[3]=t[0]+o+d,t[0]=i}}export class RipeMd160 extends b{constructor(){super(20,RipeMd160.iv,RipeMd160.hash)}static iv(t){t[0]=l[0],t[1]=l[1],t[2]=l[2],t[3]=l[3],t[4]=l[4]}static hash(t,s){let i,e=t[0],o=t[1],h=t[2],r=t[3],l=t[4],n=t[0],u=t[1],b=t[2],v=t[3],y=t[4];for(let t=0;t<80;t++){const P=Math.floor(t/16);i=l+a.lRot(e+f[P](o,h,r)+s[c[t]]+p[P],w[t]),e=l,l=r,r=a.lRot(h,10),h=o,o=i,i=y+a.lRot(n+f[4-P](u,b,v)+s[R[t]]+d[P],_[t]),n=y,y=v,v=a.lRot(b,10),b=u,u=i}i=t[1]+h+v,t[1]=t[2]+r+y,t[2]=t[3]+l+n,t[3]=t[4]+e+u,t[4]=t[0]+o+b,t[0]=i}}export class RipeMd256 extends b{constructor(){super(32,RipeMd256.iv,RipeMd256.hash)}static iv(t){t[0]=l[0],t[1]=l[1],t[2]=l[2],t[3]=l[3],t[4]=n[0],t[5]=n[1],t[6]=n[2],t[7]=n[3]}static hash(t,s){let i,e=t[0],o=t[1],h=t[2],r=t[3],l=t[4],n=t[5],d=t[6],b=t[7],v=0,y=0;for(;v<16;v++)i=a.lRot(e+f[y](o,h,r)+s[c[v]]+p[y],w[v]),e=r,r=h,h=o,o=i,i=a.lRot(l+f[3-y](n,d,b)+s[R[v]]+u[y],_[v]),l=b,b=d,d=n,n=i;for(i=e,e=l,l=i,y=1;v<32;v++)i=a.lRot(e+f[y](o,h,r)+s[c[v]]+p[y],w[v]),e=r,r=h,h=o,o=i,i=a.lRot(l+f[3-y](n,d,b)+s[R[v]]+u[y],_[v]),l=b,b=d,d=n,n=i;for(i=o,o=n,n=i,y=2;v<48;v++)i=a.lRot(e+f[y](o,h,r)+s[c[v]]+p[y],w[v]),e=r,r=h,h=o,o=i,i=a.lRot(l+f[3-y](n,d,b)+s[R[v]]+u[y],_[v]),l=b,b=d,d=n,n=i;for(i=h,h=d,d=i,y=3;v<64;v++)i=a.lRot(e+f[y](o,h,r)+s[c[v]]+p[y],w[v]),e=r,r=h,h=o,o=i,i=a.lRot(l+f[3-y](n,d,b)+s[R[v]]+u[y],_[v]),l=b,b=d,d=n,n=i;i=r,r=b,b=i,t[0]+=e,t[1]+=o,t[2]+=h,t[3]+=r,t[4]+=l,t[5]+=n,t[6]+=d,t[7]+=b}}export class RipeMd320 extends b{constructor(){super(40,RipeMd320.iv,RipeMd320.hash)}static iv(t){t[0]=l[0],t[1]=l[1],t[2]=l[2],t[3]=l[3],t[4]=l[4],t[5]=n[0],t[6]=n[1],t[7]=n[2],t[8]=n[3],t[9]=n[4]}static hash(t,s){let i,e=t[0],o=t[1],h=t[2],r=t[3],l=t[4],n=t[5],u=t[6],b=t[7],v=t[8],y=t[9],P=0,m=0;for(;P<16;P++)i=l+a.lRot(e+f[m](o,h,r)+s[c[P]]+p[m],w[P]),e=l,l=r,r=a.lRot(h,10),h=o,o=i,i=y+a.lRot(n+f[4-m](u,b,v)+s[R[P]]+d[m],_[P]),n=y,y=v,v=a.lRot(b,10),b=u,u=i;for(i=o,o=u,u=i,m=1;P<32;P++)i=l+a.lRot(e+f[m](o,h,r)+s[c[P]]+p[m],w[P]),e=l,l=r,r=a.lRot(h,10),h=o,o=i,i=y+a.lRot(n+f[4-m](u,b,v)+s[R[P]]+d[m],_[P]),n=y,y=v,v=a.lRot(b,10),b=u,u=i;for(i=r,r=v,v=i,m=2;P<48;P++)i=l+a.lRot(e+f[m](o,h,r)+s[c[P]]+p[m],w[P]),e=l,l=r,r=a.lRot(h,10),h=o,o=i,i=y+a.lRot(n+f[4-m](u,b,v)+s[R[P]]+d[m],_[P]),n=y,y=v,v=a.lRot(b,10),b=u,u=i;for(i=e,e=n,n=i,m=3;P<64;P++)i=l+a.lRot(e+f[m](o,h,r)+s[c[P]]+p[m],w[P]),e=l,l=r,r=a.lRot(h,10),h=o,o=i,i=y+a.lRot(n+f[4-m](u,b,v)+s[R[P]]+d[m],_[P]),n=y,y=v,v=a.lRot(b,10),b=u,u=i;for(i=h,h=b,b=i,m=4;P<80;P++)i=l+a.lRot(e+f[m](o,h,r)+s[c[P]]+p[m],w[P]),e=l,l=r,r=a.lRot(h,10),h=o,o=i,i=y+a.lRot(n+f[4-m](u,b,v)+s[R[P]]+d[m],_[P]),n=y,y=v,v=a.lRot(b,10),b=u,u=i;i=l,l=y,y=i,t[0]+=e,t[1]+=o,t[2]+=h,t[3]+=r,t[4]+=l,t[5]+=n,t[6]+=u,t[7]+=b,t[8]+=v,t[9]+=y}}