function rotl(t,o){const n=[],r=~~(o/8),e=o%8;for(let o=0,l=t.length;o<l;o++)n[o]=(t[(o+r)%l]<<e&255)+(t[(o+r+1)%l]>>>8-e&255);return n}function xor(t,o){const n=[];for(let r=t.length-1;r>=0;r--)n[r]=255&(t[r]^o[r]);return n}function and(t,o){const n=[];for(let r=t.length-1;r>=0;r--)n[r]=t[r]&o[r]&255;return n}function or(t,o){const n=[];for(let r=t.length-1;r>=0;r--)n[r]=255&(t[r]|o[r]);return n}function add(t,o){const n=[];let r=0;for(let e=t.length-1;e>=0;e--){const l=t[e]+o[e]+r;l>255?(r=1,n[e]=255&l):(r=0,n[e]=255&l)}return n}function not(t){const o=[];for(let n=t.length-1;n>=0;n--)o[n]=255&~t[n];return o}function P0(t){return xor(xor(t,rotl(t,9)),rotl(t,17))}function P1(t){return xor(xor(t,rotl(t,15)),rotl(t,23))}function FF(t,o,n,r){return r>=0&&r<=15?xor(xor(t,o),n):or(or(and(t,o),and(t,n)),and(o,n))}function GG(t,o,n,r){return r>=0&&r<=15?xor(xor(t,o),n):or(and(t,o),and(not(t),n))}function CF(t,o){const n=[],r=[];for(let t=0;t<16;t++){const r=4*t;n.push(o.slice(r,r+4))}for(let t=16;t<68;t++)n.push(xor(xor(P1(xor(xor(n[t-16],n[t-9]),rotl(n[t-3],15))),rotl(n[t-13],7)),n[t-6]));for(let t=0;t<64;t++)r.push(xor(n[t],n[t+4]));const e=[121,204,69,25],l=[122,135,157,138];let c,s,a,u,d=t.slice(0,4),f=t.slice(4,8),i=t.slice(8,12),h=t.slice(12,16),x=t.slice(16,20),g=t.slice(20,24),P=t.slice(24,28),m=t.slice(28,32);for(let t=0;t<64;t++){const o=t>=0&&t<=15?e:l;c=rotl(add(add(rotl(d,12),x),rotl(o,t)),7),s=xor(c,rotl(d,12)),a=add(add(add(FF(d,f,i,t),h),s),r[t]),u=add(add(add(GG(x,g,P,t),m),c),n[t]),h=i,i=rotl(f,9),f=d,d=a,m=P,P=rotl(g,19),g=x,x=P0(u)}return xor([].concat(d,f,i,h,x,g,P,m),t)}function sm3(t){let o=8*t.length,n=o%512;n=n>=448?512-n%448-1:448-n-1;const r=new Array((n-7)/8);for(let t=0,o=r.length;t<o;t++)r[t]=0;const e=[];o=o.toString(2);for(let t=7;t>=0;t--)if(o.length>8){const n=o.length-8;e[t]=parseInt(o.substr(n),2),o=o.substr(0,n)}else o.length>0?(e[t]=parseInt(o,2),o=""):e[t]=0;const l=[].concat(t,[128],r,e),c=l.length/64;let s=[115,128,22,111,73,20,178,185,23,36,66,215,218,138,6,0,169,111,48,188,22,49,56,170,227,141,238,77,176,251,14,78];for(let t=0;t<c;t++){const o=64*t;s=CF(s,l.slice(o,o+64))}return s}const blockLen=64,iPad=new Array(64),oPad=new Array(64);for(let t=0;t<64;t++)iPad[t]=54,oPad[t]=92;function hmac(t,o){for(o.length>64&&(o=sm3(o));o.length<64;)o.push(0);let n=xor(o,iPad).concat(t);n=sm3(n);return n=xor(o,oPad).concat(n),n=sm3(n),n}export{sm3,hmac};
//# sourceMappingURL=sm3.js.map