@ray-js/wechat-tycrypto 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.esm.js +1 -6
- package/index.js +1 -6
- package/package.json +2 -6
- package/src/index.d.ts +4 -0
- package/src/lib/aes/aes.asm.d.ts +0 -78
- package/src/lib/aes/ccm.d.ts +0 -14
- package/src/lib/hash/hash.d.ts +15 -0
- package/src/lib/hash/sha1/sha1.asm.d.ts +11 -0
- package/src/lib/hash/sha1/sha1.d.ts +11 -0
- package/src/lib/hash/sha256/sha256.asm.d.ts +11 -0
- package/src/lib/hash/sha256/sha256.d.ts +11 -0
- package/src/lib/hash/sha512/sha512.asm.d.ts +11 -0
- package/src/lib/hash/sha512/sha512.d.ts +11 -0
- package/src/lib/hmac/hmac-sha1.d.ts +9 -0
- package/src/lib/hmac/hmac-sha256.d.ts +9 -0
- package/src/lib/hmac/hmac-sha512.d.ts +8 -0
- package/src/lib/hmac/hmac.d.ts +17 -0
package/index.esm.js
CHANGED
|
@@ -1,6 +1 @@
|
|
|
1
|
-
class t extends Error{constructor(...t){super(...t)}}class e extends Error{constructor(...t){super(...t)}}class s extends Error{constructor(...t){super(...t)}}function n(t){return t instanceof Uint8Array}function i(t,e,s,n,i){const r=t.length-e,a=r<i?r:i;return t.set(s.subarray(n,n+a),e),a}function r(...t){const e=t.reduce(((t,e)=>t+e.length),0),s=new Uint8Array(e);let n=0;for(let e=0;e<t.length;e++)s.set(t[e],n),n+=t[e].length;return s}
|
|
2
|
-
/**
|
|
3
|
-
* @file {@link http://asmjs.org Asm.js} implementation of the {@link https://en.wikipedia.org/wiki/Advanced_Encryption_Standard Advanced Encryption Standard}.
|
|
4
|
-
* @author Artem S Vybornov <vybornov@gmail.com>
|
|
5
|
-
* @license MIT
|
|
6
|
-
*/let a,h,o=!1;function c(t,e){let s=a[(h[t]+h[e])%255];return 0!==t&&0!==e||(s=0),s}let l,A,f,u,p=!1;function _(){function t(t){let e,s,n;for(s=n=function(t){let e=a[255-h[t]];return 0===t&&(e=0),e}(t),e=0;e<4;e++)s=255&(s<<1|s>>>7),n^=s;return n^=99,n}o||function(){a=[],h=[];let t,e,s=1;for(t=0;t<255;t++)a[t]=s,e=128&s,s<<=1,s&=255,128===e&&(s^=27),s^=a[t],h[a[t]]=t;a[255]=a[0],h[0]=0,o=!0}(),l=[],A=[],f=[[],[],[],[]],u=[[],[],[],[]];for(let e=0;e<256;e++){const s=t(e);l[e]=s,A[s]=e,f[0][e]=c(2,s)<<24|s<<16|s<<8|c(3,s),u[0][s]=c(14,e)<<24|c(9,e)<<16|c(13,e)<<8|c(11,e);for(let t=1;t<4;t++)f[t][e]=f[t-1][e]>>>8|f[t-1][e]<<24,u[t][s]=u[t-1][s]>>>8|u[t-1][s]<<24}p=!0}class g{constructor(t,e){return function(t,e){p||_();const s=new Uint32Array(e);s.set(l,512),s.set(A,768);for(let t=0;t<4;t++)s.set(f[t],4096+1024*t>>2),s.set(u[t],8192+1024*t>>2);function n(t,e,n,r,a,h,o,c,A){const f=s.subarray(0,60),p=s.subarray(256,316);f.set([e,n,r,a,h,o,c,A]);let _=t;for(let e=1;_<4*t+28;_++){let s=f[_-1];(_%t==0||8===t&&_%t==4)&&(s=l[s>>>24]<<24^l[s>>>16&255]<<16^l[s>>>8&255]<<8^l[255&s]),_%t==0&&(s=s<<8^s>>>24^e<<24,e=e<<1^(128&e?27:0)),f[_]=f[_-t]^s}for(let t=0;t<_;t+=4)for(let e=0;e<4;e++){const s=f[_-(4+t)+(4-e)%4];p[t+e]=t<4||t>=_-4?s:u[0][l[s>>>24]]^u[1][l[s>>>16&255]]^u[2][l[s>>>8&255]]^u[3][l[255&s]]}i.set_rounds(t+5)}const i=function(t,e){"use asm";let s=0,i=0,r=0,a=0,h=0,o=0,c=0,l=0,A=0,f=0,u=0,p=0,_=0,g=0,y=0,w=0,E=0,C=0,m=0,d=0,D=0;const T=new Uint32Array(e),S=new Uint8Array(e);function U(t,e,n,h,o,c,l,A){t=t|0;e=e|0;n=n|0;h=h|0;o=o|0;c=c|0;l=l|0;A=A|0;let f=0,u=0,p=0,_=0,g=0,y=0,w=0,E=0;f=n|0x400,u=n|0x800,p=n|0xc00;o=o^T[(t|0)>>2],c=c^T[(t|4)>>2],l=l^T[(t|8)>>2],A=A^T[(t|12)>>2];for(E=16;(E|0)<=h<<4;E=E+16|0){_=T[(n|o>>22&1020)>>2]^T[(f|c>>14&1020)>>2]^T[(u|l>>6&1020)>>2]^T[(p|A<<2&1020)>>2]^T[(t|E|0)>>2],g=T[(n|c>>22&1020)>>2]^T[(f|l>>14&1020)>>2]^T[(u|A>>6&1020)>>2]^T[(p|o<<2&1020)>>2]^T[(t|E|4)>>2],y=T[(n|l>>22&1020)>>2]^T[(f|A>>14&1020)>>2]^T[(u|o>>6&1020)>>2]^T[(p|c<<2&1020)>>2]^T[(t|E|8)>>2],w=T[(n|A>>22&1020)>>2]^T[(f|o>>14&1020)>>2]^T[(u|c>>6&1020)>>2]^T[(p|l<<2&1020)>>2]^T[(t|E|12)>>2];o=_,c=g,l=y,A=w}s=T[(e|o>>22&1020)>>2]<<24^T[(e|c>>14&1020)>>2]<<16^T[(e|l>>6&1020)>>2]<<8^T[(e|A<<2&1020)>>2]^T[(t|E|0)>>2],i=T[(e|c>>22&1020)>>2]<<24^T[(e|l>>14&1020)>>2]<<16^T[(e|A>>6&1020)>>2]<<8^T[(e|o<<2&1020)>>2]^T[(t|E|4)>>2],r=T[(e|l>>22&1020)>>2]<<24^T[(e|A>>14&1020)>>2]<<16^T[(e|o>>6&1020)>>2]<<8^T[(e|c<<2&1020)>>2]^T[(t|E|8)>>2],a=T[(e|A>>22&1020)>>2]<<24^T[(e|o>>14&1020)>>2]<<16^T[(e|c>>6&1020)>>2]<<8^T[(e|l<<2&1020)>>2]^T[(t|E|12)>>2]}function b(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;U(0x0000,0x0800,0x1000,D,t,e,s,n)}function M(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;let r=0;U(0x0400,0x0c00,0x2000,D,t,n,s,e);r=i,i=a,a=r}function P(t,e,n,A){t=t|0;e=e|0;n=n|0;A=A|0;U(0x0000,0x0800,0x1000,D,h^t,o^e,c^n,l^A);h=s,o=i,c=r,l=a}function v(t,e,n,A){t=t|0;e=e|0;n=n|0;A=A|0;let f=0;U(0x0400,0x0c00,0x2000,D,t,A,n,e);f=i,i=a,a=f;s=s^h,i=i^o,r=r^c,a=a^l;h=t,o=e,c=n,l=A}function x(t,e,n,A){t=t|0;e=e|0;n=n|0;A=A|0;U(0x0000,0x0800,0x1000,D,h,o,c,l);h=s=s^t,o=i=i^e,c=r=r^n,l=a=a^A}function H(t,e,n,A){t=t|0;e=e|0;n=n|0;A=A|0;U(0x0000,0x0800,0x1000,D,h,o,c,l);s=s^t,i=i^e,r=r^n,a=a^A;h=t,o=e,c=n,l=A}function z(t,e,n,A){t=t|0;e=e|0;n=n|0;A=A|0;U(0x0000,0x0800,0x1000,D,h,o,c,l);h=s,o=i,c=r,l=a;s=s^t,i=i^e,r=r^n,a=a^A}function R(t,e,n,h){t=t|0;e=e|0;n=n|0;h=h|0;U(0x0000,0x0800,0x1000,D,A,f,u,p);p=~w&p|w&p+1;u=~y&u|y&u+Number((p|0)===0);f=~g&f|g&f+Number((u|0)===0);A=~_&A|_&A+Number((f|0)===0);s=s^t;i=i^e;r=r^n;a=a^h}function G(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;let i=0,r=0,a=0,A=0,f=0,u=0,p=0,_=0,g=0,y=0;t=t^h,e=e^o,s=s^c,n=n^l;i=E|0,r=C|0,a=m|0,A=d|0;for(;(g|0)<128;g=g+1|0){if(i>>>31){f=f^t,u=u^e,p=p^s,_=_^n}i=i<<1|r>>>31,r=r<<1|a>>>31,a=a<<1|A>>>31,A=A<<1;y=n&1;n=n>>>1|s<<31,s=s>>>1|e<<31,e=e>>>1|t<<31,t=t>>>1;if(y)t=t^0xe1000000}h=f,o=u,c=p,l=_}function B(t){t=t|0;D=t}function N(t,e,n,h){t=t|0;e=e|0;n=n|0;h=h|0;s=t,i=e,r=n,a=h}function k(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;h=t,o=e,c=s,l=n}function L(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;A=t,f=e,u=s,p=n}function O(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;_=t,g=e,y=s,w=n}function V(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;p=~w&p|w&n,u=~y&u|y&s,f=~g&f|g&e,A=~_&A|_&t}function F(t){t=t|0;if(t&15)return-1;S[t|0]=s>>>24,S[t|1]=s>>>16&255,S[t|2]=s>>>8&255,S[t|3]=s&255,S[t|4]=i>>>24,S[t|5]=i>>>16&255,S[t|6]=i>>>8&255,S[t|7]=i&255,S[t|8]=r>>>24,S[t|9]=r>>>16&255,S[t|10]=r>>>8&255,S[t|11]=r&255,S[t|12]=a>>>24,S[t|13]=a>>>16&255,S[t|14]=a>>>8&255,S[t|15]=a&255;return 16}function j(t){t=t|0;if(t&15)return-1;S[t|0]=h>>>24,S[t|1]=h>>>16&255,S[t|2]=h>>>8&255,S[t|3]=h&255,S[t|4]=o>>>24,S[t|5]=o>>>16&255,S[t|6]=o>>>8&255,S[t|7]=o&255,S[t|8]=c>>>24,S[t|9]=c>>>16&255,S[t|10]=c>>>8&255,S[t|11]=c&255,S[t|12]=l>>>24,S[t|13]=l>>>16&255,S[t|14]=l>>>8&255,S[t|15]=l&255;return 16}function q(){b(0,0,0,0);E=s,C=i,m=r,d=a}function I(t,e,n){t=t|0;e=e|0;n=n|0;let h=0;if(e&15)return-1;while((n|0)>=16){K[t&7](S[e|0]<<24|S[e|1]<<16|S[e|2]<<8|S[e|3],S[e|4]<<24|S[e|5]<<16|S[e|6]<<8|S[e|7],S[e|8]<<24|S[e|9]<<16|S[e|10]<<8|S[e|11],S[e|12]<<24|S[e|13]<<16|S[e|14]<<8|S[e|15]);S[e|0]=s>>>24,S[e|1]=s>>>16&255,S[e|2]=s>>>8&255,S[e|3]=s&255,S[e|4]=i>>>24,S[e|5]=i>>>16&255,S[e|6]=i>>>8&255,S[e|7]=i&255,S[e|8]=r>>>24,S[e|9]=r>>>16&255,S[e|10]=r>>>8&255,S[e|11]=r&255,S[e|12]=a>>>24,S[e|13]=a>>>16&255,S[e|14]=a>>>8&255,S[e|15]=a&255;h=h+16|0,e=e+16|0,n=n-16|0}return h|0}function J(t,e,s){t=t|0;e=e|0;s=s|0;let n=0;if(e&15)return-1;while((s|0)>=16){Q[t&1](S[e|0]<<24|S[e|1]<<16|S[e|2]<<8|S[e|3],S[e|4]<<24|S[e|5]<<16|S[e|6]<<8|S[e|7],S[e|8]<<24|S[e|9]<<16|S[e|10]<<8|S[e|11],S[e|12]<<24|S[e|13]<<16|S[e|14]<<8|S[e|15]);n=n+16|0,e=e+16|0,s=s-16|0}return n|0}const K=[b,M,P,v,x,H,z,R];const Q=[P,G];return{set_rounds:B,set_state:N,set_iv:k,set_nonce:L,set_mask:O,set_counter:V,get_state:F,get_iv:j,gcm_init:q,cipher:I,mac:J,set_key:n}}(t,e);return i}(t,e)}set_key(t,e,s,n,i,r,a,h,o){}set_iv(t,e,s,n){}set_mask(t,e,s,n){}set_nonce(t,e,s,n){}set_counter(t,e,s,n){}cipher(t,e,s){return 0}gcm_init(){}get_iv(t){return 16}mac(t,e,s){return 0}get_state(t){return 16}}g.ENC={ECB:0,CBC:2,CFB:4,OFB:6,CTR:7},g.DEC={ECB:1,CBC:3,CFB:5,OFB:6,CTR:7},g.MAC={CBC:0,GCM:1},g.HEAP_DATA=16384;class y{constructor(t,s,n=!0,i,r,a){this.pos=0,this.len=0,this.mode=i,this.heap=r||function(t,e){const s=t?t.byteLength:e||65536;if(4095&s||s<=0)throw new Error("heap size must be a positive integer and a multiple of 4096");return t||new Uint8Array(new ArrayBuffer(s))}().subarray(g.HEAP_DATA),this.asm=a||new g(null,this.heap.buffer),this.pos=0,this.len=0;const h=t.length;if(16!==h&&24!==h&&32!==h)throw new e("illegal key size");const o=new DataView(t.buffer,t.byteOffset,t.byteLength);if(this.asm.set_key(h>>2,o.getUint32(0),o.getUint32(4),o.getUint32(8),o.getUint32(12),h>16?o.getUint32(16):0,h>16?o.getUint32(20):0,h>24?o.getUint32(24):0,h>24?o.getUint32(28):0),void 0!==s){if(16!==s.length)throw new e("illegal iv size");const t=new DataView(s.buffer,s.byteOffset,s.byteLength);this.asm.set_iv(t.getUint32(0),t.getUint32(4),t.getUint32(8),t.getUint32(12))}else this.asm.set_iv(0,0,0,0);this.padding=n}AES_Encrypt_process(t){if(!n(t))throw new TypeError("data isn't of expected type");const e=this.asm,s=this.heap,r=g.ENC[this.mode],a=g.HEAP_DATA;let h=this.pos,o=this.len,c=0,l=t.length||0,A=0;let f=0;const u=new Uint8Array(o+l&-16);for(;l>0;)f=i(s,h+o,t,c,l),o+=f,c+=f,l-=f,f=e.cipher(r,a+h,o),f&&u.set(s.subarray(h,h+f),A),A+=f,f<o?(h+=f,o-=f):(h=0,o=0);return this.pos=h,this.len=o,u}AES_Encrypt_finish(){const t=this.asm,s=this.heap,n=g.ENC[this.mode],i=g.HEAP_DATA,r=this.pos;let a=this.len;const h=16-a%16;let o=a;if(this.hasOwnProperty("padding")){if(this.padding){for(let t=0;t<h;++t)s[r+a+t]=h;a+=h,o=a}else if(a%16)throw new e("data length must be a multiple of the block size")}else a+=h;const c=new Uint8Array(o);return a&&t.cipher(n,i+r,a),o&&c.set(s.subarray(r,r+o)),this.pos=0,this.len=0,c}AES_Decrypt_process(t){if(!n(t))throw new TypeError("data isn't of expected type");const e=this.asm,s=this.heap,r=g.DEC[this.mode],a=g.HEAP_DATA;let h=this.pos,o=this.len,c=0,l=t.length||0,A=0,f=o+l&-16,u=0,p=0;this.padding&&(u=o+l-f||16,f-=u);const _=new Uint8Array(f);for(;l>0;)p=i(s,h+o,t,c,l),o+=p,c+=p,l-=p,p=e.cipher(r,a+h,o-(l?0:u)),p&&_.set(s.subarray(h,h+p),A),A+=p,p<o?(h+=p,o-=p):(h=0,o=0);return this.pos=h,this.len=o,_}AES_Decrypt_finish(){const t=this.asm,n=this.heap,i=g.DEC[this.mode],r=g.HEAP_DATA,a=this.pos;let h=this.len,o=h;if(h>0){if(h%16){if(this.hasOwnProperty("padding"))throw new e("data length must be a multiple of the block size");h+=16-h%16}if(t.cipher(i,r+a,h),this.hasOwnProperty("padding")&&this.padding){const t=n[a+o-1];if(t<1||t>16||t>o)throw new s("bad padding");let e=0;for(let s=t;s>1;s--)e|=t^n[a+o-s];if(e)throw new s("bad padding");o-=t}}const c=new Uint8Array(o);return o>0&&c.set(n.subarray(a,a+o)),this.pos=0,this.len=0,c}}class w{constructor(t,s,n,i=16,r){if(this.tagSize=i,this.gamma0=0,this.counter=1,this.aes=r||new y(t,void 0,!1,"CTR"),this.aes.asm.gcm_init(),this.tagSize<4||this.tagSize>16)throw new e("illegal tagSize value");const a=s.length||0,h=new Uint8Array(16);12!==a?(this._gcm_mac_process(s),this.aes.heap[0]=0,this.aes.heap[1]=0,this.aes.heap[2]=0,this.aes.heap[3]=0,this.aes.heap[4]=0,this.aes.heap[5]=0,this.aes.heap[6]=0,this.aes.heap[7]=0,this.aes.heap[8]=0,this.aes.heap[9]=0,this.aes.heap[10]=0,this.aes.heap[11]=a>>>29,this.aes.heap[12]=a>>>21&255,this.aes.heap[13]=a>>>13&255,this.aes.heap[14]=a>>>5&255,this.aes.heap[15]=a<<3&255,this.aes.asm.mac(g.MAC.GCM,g.HEAP_DATA,16),this.aes.asm.get_iv(g.HEAP_DATA),this.aes.asm.set_iv(0,0,0,0),h.set(this.aes.heap.subarray(0,16))):(h.set(s),h[15]=1);const o=new DataView(h.buffer);if(this.gamma0=o.getUint32(12),this.aes.asm.set_nonce(o.getUint32(0),o.getUint32(4),o.getUint32(8),0),this.aes.asm.set_mask(0,0,0,4294967295),void 0!==n){if(n.length>68719476704)throw new e("illegal adata length");n.length?(this.adata=n,this._gcm_mac_process(n)):this.adata=void 0}else this.adata=void 0;if(this.counter<1||this.counter>4294967295)throw new RangeError("counter must be a positive 32-bit integer");this.aes.asm.set_counter(0,0,0,this.gamma0+this.counter|0)}static encrypt(t,e,s,n,i){return new w(e,s,n,i).encrypt(t)}static decrypt(t,e,s,n,i){return new w(e,s,n,i).decrypt(t)}encrypt(t){return this.AES_GCM_encrypt(t)}decrypt(t){return this.AES_GCM_decrypt(t)}AES_GCM_Encrypt_process(t){let e=0,s=t.length||0;const n=this.aes.asm,r=this.aes.heap;let a=this.counter,h=this.aes.pos,o=this.aes.len,c=0;const l=o+s&-16;let A=0;if((a-1<<4)+o+s>68719476704)throw new RangeError("counter overflow");const f=new Uint8Array(l);for(;s>0;)A=i(r,h+o,t,e,s),o+=A,e+=A,s-=A,A=n.cipher(g.ENC.CTR,g.HEAP_DATA+h,o),A=n.mac(g.MAC.GCM,g.HEAP_DATA+h,A),A&&f.set(r.subarray(h,h+A),c),a+=A>>>4,c+=A,A<o?(h+=A,o-=A):(h=0,o=0);return this.counter=a,this.aes.pos=h,this.aes.len=o,f}AES_GCM_Encrypt_finish(){const t=this.aes.asm,e=this.aes.heap,s=this.counter,n=this.tagSize,i=this.adata,r=this.aes.pos,a=this.aes.len,h=new Uint8Array(a+n);t.cipher(g.ENC.CTR,g.HEAP_DATA+r,a+15&-16),a&&h.set(e.subarray(r,r+a));let o=a;for(;15&o;o++)e[r+o]=0;t.mac(g.MAC.GCM,g.HEAP_DATA+r,o);const c=void 0!==i?i.length:0,l=(s-1<<4)+a;return e[0]=0,e[1]=0,e[2]=0,e[3]=c>>>29,e[4]=c>>>21,e[5]=c>>>13&255,e[6]=c>>>5&255,e[7]=c<<3&255,e[8]=e[9]=e[10]=0,e[11]=l>>>29,e[12]=l>>>21&255,e[13]=l>>>13&255,e[14]=l>>>5&255,e[15]=l<<3&255,t.mac(g.MAC.GCM,g.HEAP_DATA,16),t.get_iv(g.HEAP_DATA),t.set_counter(0,0,0,this.gamma0),t.cipher(g.ENC.CTR,g.HEAP_DATA,16),h.set(e.subarray(0,n),a),this.counter=1,this.aes.pos=0,this.aes.len=0,h}AES_GCM_Decrypt_process(t){let e=0,s=t.length||0;const n=this.aes.asm,r=this.aes.heap;let a=this.counter;const h=this.tagSize;let o=this.aes.pos,c=this.aes.len,l=0;const A=c+s>h?c+s-h&-16:0,f=c+s-A;let u=0;if((a-1<<4)+c+s>68719476704)throw new RangeError("counter overflow");const p=new Uint8Array(A);for(;s>f;)u=i(r,o+c,t,e,s-f),c+=u,e+=u,s-=u,u=n.mac(g.MAC.GCM,g.HEAP_DATA+o,u),u=n.cipher(g.DEC.CTR,g.HEAP_DATA+o,u),u&&p.set(r.subarray(o,o+u),l),a+=u>>>4,l+=u,o=0,c=0;return s>0&&(c+=i(r,0,t,e,s)),this.counter=a,this.aes.pos=o,this.aes.len=c,p}AES_GCM_Decrypt_finish(){const e=this.aes.asm,n=this.aes.heap,i=this.tagSize,r=this.adata,a=this.counter,h=this.aes.pos,o=this.aes.len,c=o-i;if(o<i)throw new t("authentication tag not found");const l=new Uint8Array(c),A=new Uint8Array(n.subarray(h+c,h+o));let f=c;for(;15&f;f++)n[h+f]=0;e.mac(g.MAC.GCM,g.HEAP_DATA+h,f),e.cipher(g.DEC.CTR,g.HEAP_DATA+h,f),c&&l.set(n.subarray(h,h+c));const u=void 0!==r?r.length:0,p=(a-1<<4)+o-i;n[0]=0,n[1]=0,n[2]=0,n[3]=u>>>29,n[4]=u>>>21,n[5]=u>>>13&255,n[6]=u>>>5&255,n[7]=u<<3&255,n[8]=n[9]=n[10]=0,n[11]=p>>>29,n[12]=p>>>21&255,n[13]=p>>>13&255,n[14]=p>>>5&255,n[15]=p<<3&255,e.mac(g.MAC.GCM,g.HEAP_DATA,16),e.get_iv(g.HEAP_DATA),e.set_counter(0,0,0,this.gamma0),e.cipher(g.ENC.CTR,g.HEAP_DATA,16);let _=0;for(let t=0;t<i;++t)_|=A[t]^n[t];if(_)throw new s("data integrity check failed");return this.counter=1,this.aes.pos=0,this.aes.len=0,l}AES_GCM_decrypt(t){const e=this.AES_GCM_Decrypt_process(t),s=this.AES_GCM_Decrypt_finish(),n=new Uint8Array(e.length+s.length);return e.length&&n.set(e),s.length&&n.set(s,e.length),n}AES_GCM_encrypt(t){const e=this.AES_GCM_Encrypt_process(t),s=this.AES_GCM_Encrypt_finish(),n=new Uint8Array(e.length+s.length);return e.length&&n.set(e),s.length&&n.set(s,e.length),n}_gcm_mac_process(t){const e=this.aes.heap,s=this.aes.asm;let n=0,r=t.length||0,a=0;for(;r>0;){for(a=i(e,0,t,n,r),n+=a,r-=a;15&a;)e[a++]=0;s.mac(g.MAC.GCM,g.HEAP_DATA,a)}}}class E{constructor(t,e=!1,s){this.aes=s||new y(t,void 0,e,"ECB")}static encrypt(t,e,s=!1){return new E(e,s).encrypt(t)}static decrypt(t,e,s=!1){return new E(e,s).decrypt(t)}encrypt(t){return r(this.aes.AES_Encrypt_process(t),this.aes.AES_Encrypt_finish())}decrypt(t){return r(this.aes.AES_Decrypt_process(t),this.aes.AES_Decrypt_finish())}}class C{constructor(t,e,s=!0,n){this.aes=n||new y(t,e,s,"CBC")}static encrypt(t,e,s=!0,n){return new C(e,n,s).encrypt(t)}static decrypt(t,e,s=!0,n){return new C(e,n,s).decrypt(t)}encrypt(t){return r(this.aes.AES_Encrypt_process(t),this.aes.AES_Encrypt_finish())}decrypt(t){return r(this.aes.AES_Decrypt_process(t),this.aes.AES_Decrypt_finish())}}class m{constructor(t,s,n,i=16,r,a){if(this.counter=1,this.dataLength=-1,this.aes=a||new y(t,void 0,void 0,"CCM"),i<4||i>16||1&i)throw new e("illegal tagSize value");if(this.tagSize=i,this.nonce=s,s.length<8||s.length>13)throw new e("illegal nonce length");if(this.lengthSize=15-s.length,(s=new Uint8Array(s.length+1))[0]=this.lengthSize-1,s.set(this.nonce,1),r<0||r>0xffffffffffff0||r>Math.pow(2,8*this.lengthSize)-16)throw new e("illegal dataLength value");if(void 0!==n){if(n.length>65279)throw new e("illegal adata length");this.adata=n.length?n:void 0}this.dataLength=r,this.counter=1,this.AES_CCM_calculate_iv(),this.AES_CTR_set_options(s,this.counter,8*this.lengthSize)}static encrypt(t,e,s,n,i=16){return new m(e,s,n,i,t.length).encrypt(t)}static decrypt(t,e,s,n,i=16){return new m(e,s,n,i,t.length-i).decrypt(t)}encrypt(t){this.dataLength=t.length||0;const e=this.AES_CCM_Encrypt_process(t),s=this.AES_CCM_Encrypt_finish(),n=new Uint8Array(e.length+s.length);return e.length&&n.set(e),s.length&&n.set(s,e.length),n}decrypt(t){this.dataLength=t.length||0;const e=this.AES_CCM_Decrypt_process(t),s=this.AES_CCM_Decrypt_finish(),n=new Uint8Array(e.length+s.length);return e.length&&n.set(e),s.length&&n.set(s,e.length),n}AES_CCM_calculate_iv(){const t=this.nonce,e=this.adata,s=this.tagSize,n=this.lengthSize,i=this.dataLength,r=new Uint8Array(16+(e?2+e.length:0));r[0]=(e?64:0)|s-2<<2|n-1,r.set(t,1),n>6&&(r[9]=i/4294967296>>>16&15),n>5&&(r[10]=i/4294967296>>>8&255),n>4&&(r[11]=i/4294967296&255),n>3&&(r[12]=i>>>24),n>2&&(r[13]=i>>>16&255),r[14]=i>>>8&255,r[15]=255&i,e&&(r[16]=e.length>>>8&255,r[17]=255&e.length,r.set(e,18)),this._cbc_mac_process(r),this.aes.asm.get_state(g.HEAP_DATA);const a=new Uint8Array(this.aes.heap.subarray(0,16)),h=new DataView(a.buffer,a.byteOffset,a.byteLength);this.aes.asm.set_iv(h.getUint32(0),h.getUint32(4),h.getUint32(8),h.getUint32(12))}_cbc_mac_process(t){const e=this.aes.heap,s=this.aes.asm;let n=0,r=t.length||0,a=0;for(;r>0;){for(a=i(e,0,t,n,r);15&a;)e[a++]=0;n+=a,r-=a,s.mac(g.MAC.CBC,g.HEAP_DATA,a)}}AES_CCM_Encrypt_process(t){const e=this.aes.asm,s=this.aes.heap;let n=0,r=t.length||0,a=this.counter,h=this.aes.pos,o=this.aes.len;const c=o+r&-16;let l=0,A=0;if((a-1<<4)+o+r>0xffffffffffff0)throw new RangeError("counter overflow");const f=new Uint8Array(c);for(;r>0;)A=i(s,h+o,t,n,r),o+=A,n+=A,r-=A,A=e.mac(g.MAC.CBC,g.HEAP_DATA+h,o),A=e.cipher(g.ENC.CTR,g.HEAP_DATA+h,A),A&&f.set(s.subarray(h,h+A),l),a+=A>>>4,l+=A,A<o?(h+=A,o-=A):(h=0,o=0);return this.counter=a,this.aes.pos=h,this.aes.len=o,f}AES_CCM_Encrypt_finish(){const t=this.aes.asm,e=this.aes.heap,s=this.tagSize,n=this.aes.pos,i=this.aes.len,r=new Uint8Array(i+s);let a=i;for(;15&a;a++)e[n+a]=0;return t.mac(g.MAC.CBC,g.HEAP_DATA+n,a),t.cipher(g.ENC.CTR,g.HEAP_DATA+n,a),i&&r.set(e.subarray(n,n+i)),t.set_counter(0,0,0,0),t.get_iv(g.HEAP_DATA),t.cipher(g.ENC.CTR,g.HEAP_DATA,16),r.set(e.subarray(0,s),i),this.counter=1,this.aes.pos=0,this.aes.len=0,r}AES_CCM_Decrypt_process(t){let e=0,s=t.length||0;const n=this.aes.asm,r=this.aes.heap;let a=this.counter;const h=this.tagSize;let o=this.aes.pos,c=this.aes.len,l=0;const A=c+s>h?c+s-h&-16:0,f=c+s-A;let u=0;if((a-1<<4)+c+s>0xffffffffffff0)throw new RangeError("counter overflow");const p=new Uint8Array(A);for(;s>f;)u=i(r,o+c,t,e,s-f),c+=u,e+=u,s-=u,u=n.cipher(g.DEC.CTR,g.HEAP_DATA+o,u),u=n.mac(g.MAC.CBC,g.HEAP_DATA+o,u),u&&p.set(r.subarray(o,o+u),l),a+=u>>>4,l+=u,o=0,c=0;return s>0&&(c+=i(r,0,t,e,s)),this.counter=a,this.aes.pos=o,this.aes.len=c,p}AES_CCM_Decrypt_finish(){const e=this.aes.asm,n=this.aes.heap,i=this.tagSize,r=this.aes.pos,a=this.aes.len,h=a-i;if(a<i)throw new t("authentication tag not found");const o=new Uint8Array(h),c=new Uint8Array(n.subarray(r+h,r+a));e.cipher(g.DEC.CTR,g.HEAP_DATA+r,h+15&-16),o.set(n.subarray(r,r+h));let l=h;for(;15&l;l++)n[r+l]=0;e.mac(g.MAC.CBC,g.HEAP_DATA+r,l),e.set_counter(0,0,0,0),e.get_iv(g.HEAP_DATA),e.cipher(g.ENC.CTR,g.HEAP_DATA,16);let A=0;for(let t=0;t<i;++t)A|=c[t]^n[t];if(A)throw new s("data integrity check failed");return this.counter=1,this.aes.pos=0,this.aes.len=0,o}AES_CTR_set_options(t,s,n){if(n<8||n>48)throw new e("illegal counter size");const i=Math.pow(2,n)-1;this.aes.asm.set_mask(0,0,i/4294967296|0,0|i);const r=t.length;if(!r||r>16)throw new e("illegal nonce size");this.nonce=t;const a=new DataView(new ArrayBuffer(16));if(new Uint8Array(a.buffer).set(t),this.aes.asm.set_nonce(a.getUint32(0),a.getUint32(4),a.getUint32(8),a.getUint32(12)),s<0||s>=Math.pow(2,n))throw new e("illegal counter value");this.counter=s,this.aes.asm.set_counter(0,0,s/4294967296|0,0|s)}}export{y as AES,C as AES_CBC,m as AES_CCM,E as AES_ECB,w as AES_GCM,e as IllegalArgumentError,t as IllegalStateError,s as SecurityError};
|
|
1
|
+
class t extends Error{constructor(...t){super(...t)}}class e extends Error{constructor(...t){super(...t)}}class s extends Error{constructor(...t){super(...t)}}function n(t){return t instanceof Uint8Array}function i(t,e){const s=t?t.byteLength:e||65536;if(4095&s||s<=0)throw new Error("heap size must be a positive integer and a multiple of 4096");return t=t||new Uint8Array(new ArrayBuffer(s))}function r(t,e,s,n,i){const r=t.length-e,h=r<i?r:i;return t.set(s.subarray(n,n+h),e),h}function h(...t){const e=t.reduce(((t,e)=>t+e.length),0),s=new Uint8Array(e);let n=0;for(let e=0;e<t.length;e++)s.set(t[e],n),n+=t[e].length;return s}let a,o,c=!1;function l(t,e){let s=a[(o[t]+o[e])%255];return 0!==t&&0!==e||(s=0),s}let f,u,p,_,A=!1;function g(){function t(t){let e,s,n;for(s=n=function(t){let e=a[255-o[t]];return 0===t&&(e=0),e}(t),e=0;e<4;e++)s=255&(s<<1|s>>>7),n^=s;return n^=99,n}c||function(){a=[],o=[];let t,e,s=1;for(t=0;t<255;t++)a[t]=s,e=128&s,s<<=1,s&=255,128===e&&(s^=27),s^=a[t],o[a[t]]=t;a[255]=a[0],o[0]=0,c=!0}(),f=[],u=[],p=[[],[],[],[]],_=[[],[],[],[]];for(let e=0;e<256;e++){const s=t(e);f[e]=s,u[s]=e,p[0][e]=l(2,s)<<24|s<<16|s<<8|l(3,s),_[0][s]=l(14,e)<<24|l(9,e)<<16|l(13,e)<<8|l(11,e);for(let t=1;t<4;t++)p[t][e]=p[t-1][e]>>>8|p[t-1][e]<<24,_[t][s]=_[t-1][s]>>>8|_[t-1][s]<<24}A=!0}class w{constructor(t,e){return function(t,e){A||g();const s=new Uint32Array(e);s.set(f,512),s.set(u,768);for(let t=0;t<4;t++)s.set(p[t],4096+1024*t>>2),s.set(_[t],8192+1024*t>>2);function n(t,e,n,r,h,a,o,c,l){const u=s.subarray(0,60),p=s.subarray(256,316);u.set([e,n,r,h,a,o,c,l]);let A=t;for(let e=1;A<4*t+28;A++){let s=u[A-1];(A%t==0||8===t&&A%t==4)&&(s=f[s>>>24]<<24^f[s>>>16&255]<<16^f[s>>>8&255]<<8^f[255&s]),A%t==0&&(s=s<<8^s>>>24^e<<24,e=e<<1^(128&e?27:0)),u[A]=u[A-t]^s}for(let t=0;t<A;t+=4)for(let e=0;e<4;e++){const s=u[A-(4+t)+(4-e)%4];p[t+e]=t<4||t>=A-4?s:_[0][f[s>>>24]]^_[1][f[s>>>16&255]]^_[2][f[s>>>8&255]]^_[3][f[255&s]]}i.set_rounds(t+5)}const i=function(t,e){"use asm";let s=0,i=0,r=0,h=0,a=0,o=0,c=0,l=0,f=0,u=0,p=0,_=0,A=0,g=0,w=0,y=0,E=0,C=0,m=0,d=0,S=0;const b=new Uint32Array(e),v=new Uint8Array(e);function D(t,e,n,a,o,c,l,f){t=t|0;e=e|0;n=n|0;a=a|0;o=o|0;c=c|0;l=l|0;f=f|0;let u=0,p=0,_=0,A=0,g=0,w=0,y=0,E=0;u=n|0x400,p=n|0x800,_=n|0xc00;o=o^b[(t|0)>>2],c=c^b[(t|4)>>2],l=l^b[(t|8)>>2],f=f^b[(t|12)>>2];for(E=16;(E|0)<=a<<4;E=E+16|0){A=b[(n|o>>22&1020)>>2]^b[(u|c>>14&1020)>>2]^b[(p|l>>6&1020)>>2]^b[(_|f<<2&1020)>>2]^b[(t|E|0)>>2],g=b[(n|c>>22&1020)>>2]^b[(u|l>>14&1020)>>2]^b[(p|f>>6&1020)>>2]^b[(_|o<<2&1020)>>2]^b[(t|E|4)>>2],w=b[(n|l>>22&1020)>>2]^b[(u|f>>14&1020)>>2]^b[(p|o>>6&1020)>>2]^b[(_|c<<2&1020)>>2]^b[(t|E|8)>>2],y=b[(n|f>>22&1020)>>2]^b[(u|o>>14&1020)>>2]^b[(p|c>>6&1020)>>2]^b[(_|l<<2&1020)>>2]^b[(t|E|12)>>2];o=A,c=g,l=w,f=y}s=b[(e|o>>22&1020)>>2]<<24^b[(e|c>>14&1020)>>2]<<16^b[(e|l>>6&1020)>>2]<<8^b[(e|f<<2&1020)>>2]^b[(t|E|0)>>2],i=b[(e|c>>22&1020)>>2]<<24^b[(e|l>>14&1020)>>2]<<16^b[(e|f>>6&1020)>>2]<<8^b[(e|o<<2&1020)>>2]^b[(t|E|4)>>2],r=b[(e|l>>22&1020)>>2]<<24^b[(e|f>>14&1020)>>2]<<16^b[(e|o>>6&1020)>>2]<<8^b[(e|c<<2&1020)>>2]^b[(t|E|8)>>2],h=b[(e|f>>22&1020)>>2]<<24^b[(e|o>>14&1020)>>2]<<16^b[(e|c>>6&1020)>>2]<<8^b[(e|l<<2&1020)>>2]^b[(t|E|12)>>2]}function M(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;D(0x0000,0x0800,0x1000,S,t,e,s,n)}function U(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;let r=0;D(0x0400,0x0c00,0x2000,S,t,n,s,e);r=i,i=h,h=r}function H(t,e,n,f){t=t|0;e=e|0;n=n|0;f=f|0;D(0x0000,0x0800,0x1000,S,a^t,o^e,c^n,l^f);a=s,o=i,c=r,l=h}function T(t,e,n,f){t=t|0;e=e|0;n=n|0;f=f|0;let u=0;D(0x0400,0x0c00,0x2000,S,t,f,n,e);u=i,i=h,h=u;s=s^a,i=i^o,r=r^c,h=h^l;a=t,o=e,c=n,l=f}function x(t,e,n,f){t=t|0;e=e|0;n=n|0;f=f|0;D(0x0000,0x0800,0x1000,S,a,o,c,l);a=s=s^t,o=i=i^e,c=r=r^n,l=h=h^f}function P(t,e,n,f){t=t|0;e=e|0;n=n|0;f=f|0;D(0x0000,0x0800,0x1000,S,a,o,c,l);s=s^t,i=i^e,r=r^n,h=h^f;a=t,o=e,c=n,l=f}function z(t,e,n,f){t=t|0;e=e|0;n=n|0;f=f|0;D(0x0000,0x0800,0x1000,S,a,o,c,l);a=s,o=i,c=r,l=h;s=s^t,i=i^e,r=r^n,h=h^f}function B(t,e,n,a){t=t|0;e=e|0;n=n|0;a=a|0;D(0x0000,0x0800,0x1000,S,f,u,p,_);_=~y&_|y&_+1;p=~w&p|w&p+Number((_|0)===0);u=~g&u|g&u+Number((p|0)===0);f=~A&f|A&f+Number((u|0)===0);s=s^t;i=i^e;r=r^n;h=h^a}function k(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;let i=0,r=0,h=0,f=0,u=0,p=0,_=0,A=0,g=0,w=0;t=t^a,e=e^o,s=s^c,n=n^l;i=E|0,r=C|0,h=m|0,f=d|0;for(;(g|0)<128;g=g+1|0){if(i>>>31){u=u^t,p=p^e,_=_^s,A=A^n}i=i<<1|r>>>31,r=r<<1|h>>>31,h=h<<1|f>>>31,f=f<<1;w=n&1;n=n>>>1|s<<31,s=s>>>1|e<<31,e=e>>>1|t<<31,t=t>>>1;if(w)t=t^0xe1000000}a=u,o=p,c=_,l=A}function R(t){t=t|0;S=t}function G(t,e,n,a){t=t|0;e=e|0;n=n|0;a=a|0;s=t,i=e,r=n,h=a}function N(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;a=t,o=e,c=s,l=n}function L(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;f=t,u=e,p=s,_=n}function I(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;A=t,g=e,w=s,y=n}function O(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;_=~y&_|y&n,p=~w&p|w&s,u=~g&u|g&e,f=~A&f|A&t}function Z(t){t=t|0;if(t&15)return-1;v[t|0]=s>>>24,v[t|1]=s>>>16&255,v[t|2]=s>>>8&255,v[t|3]=s&255,v[t|4]=i>>>24,v[t|5]=i>>>16&255,v[t|6]=i>>>8&255,v[t|7]=i&255,v[t|8]=r>>>24,v[t|9]=r>>>16&255,v[t|10]=r>>>8&255,v[t|11]=r&255,v[t|12]=h>>>24,v[t|13]=h>>>16&255,v[t|14]=h>>>8&255,v[t|15]=h&255;return 16}function K(t){t=t|0;if(t&15)return-1;v[t|0]=a>>>24,v[t|1]=a>>>16&255,v[t|2]=a>>>8&255,v[t|3]=a&255,v[t|4]=o>>>24,v[t|5]=o>>>16&255,v[t|6]=o>>>8&255,v[t|7]=o&255,v[t|8]=c>>>24,v[t|9]=c>>>16&255,v[t|10]=c>>>8&255,v[t|11]=c&255,v[t|12]=l>>>24,v[t|13]=l>>>16&255,v[t|14]=l>>>8&255,v[t|15]=l&255;return 16}function V(){M(0,0,0,0);E=s,C=i,m=r,d=h}function F(t,e,n){t=t|0;e=e|0;n=n|0;let a=0;if(e&15)return-1;while((n|0)>=16){q[t&7](v[e|0]<<24|v[e|1]<<16|v[e|2]<<8|v[e|3],v[e|4]<<24|v[e|5]<<16|v[e|6]<<8|v[e|7],v[e|8]<<24|v[e|9]<<16|v[e|10]<<8|v[e|11],v[e|12]<<24|v[e|13]<<16|v[e|14]<<8|v[e|15]);v[e|0]=s>>>24,v[e|1]=s>>>16&255,v[e|2]=s>>>8&255,v[e|3]=s&255,v[e|4]=i>>>24,v[e|5]=i>>>16&255,v[e|6]=i>>>8&255,v[e|7]=i&255,v[e|8]=r>>>24,v[e|9]=r>>>16&255,v[e|10]=r>>>8&255,v[e|11]=r&255,v[e|12]=h>>>24,v[e|13]=h>>>16&255,v[e|14]=h>>>8&255,v[e|15]=h&255;a=a+16|0,e=e+16|0,n=n-16|0}return a|0}function j(t,e,s){t=t|0;e=e|0;s=s|0;let n=0;if(e&15)return-1;while((s|0)>=16){J[t&1](v[e|0]<<24|v[e|1]<<16|v[e|2]<<8|v[e|3],v[e|4]<<24|v[e|5]<<16|v[e|6]<<8|v[e|7],v[e|8]<<24|v[e|9]<<16|v[e|10]<<8|v[e|11],v[e|12]<<24|v[e|13]<<16|v[e|14]<<8|v[e|15]);n=n+16|0,e=e+16|0,s=s-16|0}return n|0}const q=[M,U,H,T,x,P,z,B];const J=[H,k];return{set_rounds:R,set_state:G,set_iv:N,set_nonce:L,set_mask:I,set_counter:O,get_state:Z,get_iv:K,gcm_init:V,cipher:F,mac:j,set_key:n}}(t,e);return i}(t,e)}set_key(t,e,s,n,i,r,h,a,o){}set_iv(t,e,s,n){}set_mask(t,e,s,n){}set_nonce(t,e,s,n){}set_counter(t,e,s,n){}cipher(t,e,s){return 0}gcm_init(){}get_iv(t){return 16}mac(t,e,s){return 0}get_state(t){return 16}}w.ENC={ECB:0,CBC:2,CFB:4,OFB:6,CTR:7},w.DEC={ECB:1,CBC:3,CFB:5,OFB:6,CTR:7},w.MAC={CBC:0,GCM:1},w.HEAP_DATA=16384;class y{constructor(t,s,n=!0,r,h,a){this.pos=0,this.len=0,this.mode=r,this.heap=h||i().subarray(w.HEAP_DATA),this.asm=a||new w(null,this.heap.buffer),this.pos=0,this.len=0;const o=t.length;if(16!==o&&24!==o&&32!==o)throw new e("illegal key size");const c=new DataView(t.buffer,t.byteOffset,t.byteLength);if(this.asm.set_key(o>>2,c.getUint32(0),c.getUint32(4),c.getUint32(8),c.getUint32(12),o>16?c.getUint32(16):0,o>16?c.getUint32(20):0,o>24?c.getUint32(24):0,o>24?c.getUint32(28):0),void 0!==s){if(16!==s.length)throw new e("illegal iv size");const t=new DataView(s.buffer,s.byteOffset,s.byteLength);this.asm.set_iv(t.getUint32(0),t.getUint32(4),t.getUint32(8),t.getUint32(12))}else this.asm.set_iv(0,0,0,0);this.padding=n}AES_Encrypt_process(t){if(!n(t))throw new TypeError("data isn't of expected type");const e=this.asm,s=this.heap,i=w.ENC[this.mode],h=w.HEAP_DATA;let a=this.pos,o=this.len,c=0,l=t.length||0,f=0;let u=0;const p=new Uint8Array(o+l&-16);for(;l>0;)u=r(s,a+o,t,c,l),o+=u,c+=u,l-=u,u=e.cipher(i,h+a,o),u&&p.set(s.subarray(a,a+u),f),f+=u,u<o?(a+=u,o-=u):(a=0,o=0);return this.pos=a,this.len=o,p}AES_Encrypt_finish(){const t=this.asm,s=this.heap,n=w.ENC[this.mode],i=w.HEAP_DATA,r=this.pos;let h=this.len;const a=16-h%16;let o=h;if(this.hasOwnProperty("padding")){if(this.padding){for(let t=0;t<a;++t)s[r+h+t]=a;h+=a,o=h}else if(h%16)throw new e("data length must be a multiple of the block size")}else h+=a;const c=new Uint8Array(o);return h&&t.cipher(n,i+r,h),o&&c.set(s.subarray(r,r+o)),this.pos=0,this.len=0,c}AES_Decrypt_process(t){if(!n(t))throw new TypeError("data isn't of expected type");const e=this.asm,s=this.heap,i=w.DEC[this.mode],h=w.HEAP_DATA;let a=this.pos,o=this.len,c=0,l=t.length||0,f=0,u=o+l&-16,p=0,_=0;this.padding&&(p=o+l-u||16,u-=p);const A=new Uint8Array(u);for(;l>0;)_=r(s,a+o,t,c,l),o+=_,c+=_,l-=_,_=e.cipher(i,h+a,o-(l?0:p)),_&&A.set(s.subarray(a,a+_),f),f+=_,_<o?(a+=_,o-=_):(a=0,o=0);return this.pos=a,this.len=o,A}AES_Decrypt_finish(){const t=this.asm,n=this.heap,i=w.DEC[this.mode],r=w.HEAP_DATA,h=this.pos;let a=this.len,o=a;if(a>0){if(a%16){if(this.hasOwnProperty("padding"))throw new e("data length must be a multiple of the block size");a+=16-a%16}if(t.cipher(i,r+h,a),this.hasOwnProperty("padding")&&this.padding){const t=n[h+o-1];if(t<1||t>16||t>o)throw new s("bad padding");let e=0;for(let s=t;s>1;s--)e|=t^n[h+o-s];if(e)throw new s("bad padding");o-=t}}const c=new Uint8Array(o);return o>0&&c.set(n.subarray(h,h+o)),this.pos=0,this.len=0,c}}class E{constructor(t,s,n,i=16,r){if(this.tagSize=i,this.gamma0=0,this.counter=1,this.aes=r||new y(t,void 0,!1,"CTR"),this.aes.asm.gcm_init(),this.tagSize<4||this.tagSize>16)throw new e("illegal tagSize value");const h=s.length||0,a=new Uint8Array(16);12!==h?(this._gcm_mac_process(s),this.aes.heap[0]=0,this.aes.heap[1]=0,this.aes.heap[2]=0,this.aes.heap[3]=0,this.aes.heap[4]=0,this.aes.heap[5]=0,this.aes.heap[6]=0,this.aes.heap[7]=0,this.aes.heap[8]=0,this.aes.heap[9]=0,this.aes.heap[10]=0,this.aes.heap[11]=h>>>29,this.aes.heap[12]=h>>>21&255,this.aes.heap[13]=h>>>13&255,this.aes.heap[14]=h>>>5&255,this.aes.heap[15]=h<<3&255,this.aes.asm.mac(w.MAC.GCM,w.HEAP_DATA,16),this.aes.asm.get_iv(w.HEAP_DATA),this.aes.asm.set_iv(0,0,0,0),a.set(this.aes.heap.subarray(0,16))):(a.set(s),a[15]=1);const o=new DataView(a.buffer);if(this.gamma0=o.getUint32(12),this.aes.asm.set_nonce(o.getUint32(0),o.getUint32(4),o.getUint32(8),0),this.aes.asm.set_mask(0,0,0,4294967295),void 0!==n){if(n.length>68719476704)throw new e("illegal adata length");n.length?(this.adata=n,this._gcm_mac_process(n)):this.adata=void 0}else this.adata=void 0;if(this.counter<1||this.counter>4294967295)throw new RangeError("counter must be a positive 32-bit integer");this.aes.asm.set_counter(0,0,0,this.gamma0+this.counter|0)}static encrypt(t,e,s,n,i){return new E(e,s,n,i).encrypt(t)}static decrypt(t,e,s,n,i){return new E(e,s,n,i).decrypt(t)}encrypt(t){return this.AES_GCM_encrypt(t)}decrypt(t){return this.AES_GCM_decrypt(t)}AES_GCM_Encrypt_process(t){let e=0,s=t.length||0;const n=this.aes.asm,i=this.aes.heap;let h=this.counter,a=this.aes.pos,o=this.aes.len,c=0;const l=o+s&-16;let f=0;if((h-1<<4)+o+s>68719476704)throw new RangeError("counter overflow");const u=new Uint8Array(l);for(;s>0;)f=r(i,a+o,t,e,s),o+=f,e+=f,s-=f,f=n.cipher(w.ENC.CTR,w.HEAP_DATA+a,o),f=n.mac(w.MAC.GCM,w.HEAP_DATA+a,f),f&&u.set(i.subarray(a,a+f),c),h+=f>>>4,c+=f,f<o?(a+=f,o-=f):(a=0,o=0);return this.counter=h,this.aes.pos=a,this.aes.len=o,u}AES_GCM_Encrypt_finish(){const t=this.aes.asm,e=this.aes.heap,s=this.counter,n=this.tagSize,i=this.adata,r=this.aes.pos,h=this.aes.len,a=new Uint8Array(h+n);t.cipher(w.ENC.CTR,w.HEAP_DATA+r,h+15&-16),h&&a.set(e.subarray(r,r+h));let o=h;for(;15&o;o++)e[r+o]=0;t.mac(w.MAC.GCM,w.HEAP_DATA+r,o);const c=void 0!==i?i.length:0,l=(s-1<<4)+h;return e[0]=0,e[1]=0,e[2]=0,e[3]=c>>>29,e[4]=c>>>21,e[5]=c>>>13&255,e[6]=c>>>5&255,e[7]=c<<3&255,e[8]=e[9]=e[10]=0,e[11]=l>>>29,e[12]=l>>>21&255,e[13]=l>>>13&255,e[14]=l>>>5&255,e[15]=l<<3&255,t.mac(w.MAC.GCM,w.HEAP_DATA,16),t.get_iv(w.HEAP_DATA),t.set_counter(0,0,0,this.gamma0),t.cipher(w.ENC.CTR,w.HEAP_DATA,16),a.set(e.subarray(0,n),h),this.counter=1,this.aes.pos=0,this.aes.len=0,a}AES_GCM_Decrypt_process(t){let e=0,s=t.length||0;const n=this.aes.asm,i=this.aes.heap;let h=this.counter;const a=this.tagSize;let o=this.aes.pos,c=this.aes.len,l=0;const f=c+s>a?c+s-a&-16:0,u=c+s-f;let p=0;if((h-1<<4)+c+s>68719476704)throw new RangeError("counter overflow");const _=new Uint8Array(f);for(;s>u;)p=r(i,o+c,t,e,s-u),c+=p,e+=p,s-=p,p=n.mac(w.MAC.GCM,w.HEAP_DATA+o,p),p=n.cipher(w.DEC.CTR,w.HEAP_DATA+o,p),p&&_.set(i.subarray(o,o+p),l),h+=p>>>4,l+=p,o=0,c=0;return s>0&&(c+=r(i,0,t,e,s)),this.counter=h,this.aes.pos=o,this.aes.len=c,_}AES_GCM_Decrypt_finish(){const e=this.aes.asm,n=this.aes.heap,i=this.tagSize,r=this.adata,h=this.counter,a=this.aes.pos,o=this.aes.len,c=o-i;if(o<i)throw new t("authentication tag not found");const l=new Uint8Array(c),f=new Uint8Array(n.subarray(a+c,a+o));let u=c;for(;15&u;u++)n[a+u]=0;e.mac(w.MAC.GCM,w.HEAP_DATA+a,u),e.cipher(w.DEC.CTR,w.HEAP_DATA+a,u),c&&l.set(n.subarray(a,a+c));const p=void 0!==r?r.length:0,_=(h-1<<4)+o-i;n[0]=0,n[1]=0,n[2]=0,n[3]=p>>>29,n[4]=p>>>21,n[5]=p>>>13&255,n[6]=p>>>5&255,n[7]=p<<3&255,n[8]=n[9]=n[10]=0,n[11]=_>>>29,n[12]=_>>>21&255,n[13]=_>>>13&255,n[14]=_>>>5&255,n[15]=_<<3&255,e.mac(w.MAC.GCM,w.HEAP_DATA,16),e.get_iv(w.HEAP_DATA),e.set_counter(0,0,0,this.gamma0),e.cipher(w.ENC.CTR,w.HEAP_DATA,16);let A=0;for(let t=0;t<i;++t)A|=f[t]^n[t];if(A)throw new s("data integrity check failed");return this.counter=1,this.aes.pos=0,this.aes.len=0,l}AES_GCM_decrypt(t){const e=this.AES_GCM_Decrypt_process(t),s=this.AES_GCM_Decrypt_finish(),n=new Uint8Array(e.length+s.length);return e.length&&n.set(e),s.length&&n.set(s,e.length),n}AES_GCM_encrypt(t){const e=this.AES_GCM_Encrypt_process(t),s=this.AES_GCM_Encrypt_finish(),n=new Uint8Array(e.length+s.length);return e.length&&n.set(e),s.length&&n.set(s,e.length),n}_gcm_mac_process(t){const e=this.aes.heap,s=this.aes.asm;let n=0,i=t.length||0,h=0;for(;i>0;){for(h=r(e,0,t,n,i),n+=h,i-=h;15&h;)e[h++]=0;s.mac(w.MAC.GCM,w.HEAP_DATA,h)}}}class C{constructor(t,e=!1,s){this.aes=s||new y(t,void 0,e,"ECB")}static encrypt(t,e,s=!1){return new C(e,s).encrypt(t)}static decrypt(t,e,s=!1){return new C(e,s).decrypt(t)}encrypt(t){return h(this.aes.AES_Encrypt_process(t),this.aes.AES_Encrypt_finish())}decrypt(t){return h(this.aes.AES_Decrypt_process(t),this.aes.AES_Decrypt_finish())}}class m{constructor(t,e,s=!0,n){this.aes=n||new y(t,e,s,"CBC")}static encrypt(t,e,s=!0,n){return new m(e,n,s).encrypt(t)}static decrypt(t,e,s=!0,n){return new m(e,n,s).decrypt(t)}encrypt(t){return h(this.aes.AES_Encrypt_process(t),this.aes.AES_Encrypt_finish())}decrypt(t){return h(this.aes.AES_Decrypt_process(t),this.aes.AES_Decrypt_finish())}}class d{constructor(t,s,n,i=16,r,h){if(this.counter=1,this.dataLength=-1,this.aes=h||new y(t,void 0,void 0,"CCM"),i<4||i>16||1&i)throw new e("illegal tagSize value");if(this.tagSize=i,this.nonce=s,s.length<8||s.length>13)throw new e("illegal nonce length");if(this.lengthSize=15-s.length,(s=new Uint8Array(s.length+1))[0]=this.lengthSize-1,s.set(this.nonce,1),r<0||r>0xffffffffffff0||r>Math.pow(2,8*this.lengthSize)-16)throw new e("illegal dataLength value");if(void 0!==n){if(n.length>65279)throw new e("illegal adata length");this.adata=n.length?n:void 0}this.dataLength=r,this.counter=1,this.AES_CCM_calculate_iv(),this.AES_CTR_set_options(s,this.counter,8*this.lengthSize)}static encrypt(t,e,s,n,i=16){return new d(e,s,n,i,t.length).encrypt(t)}static decrypt(t,e,s,n,i=16){return new d(e,s,n,i,t.length-i).decrypt(t)}encrypt(t){this.dataLength=t.length||0;const e=this.AES_CCM_Encrypt_process(t),s=this.AES_CCM_Encrypt_finish(),n=new Uint8Array(e.length+s.length);return e.length&&n.set(e),s.length&&n.set(s,e.length),n}decrypt(t){this.dataLength=t.length||0;const e=this.AES_CCM_Decrypt_process(t),s=this.AES_CCM_Decrypt_finish(),n=new Uint8Array(e.length+s.length);return e.length&&n.set(e),s.length&&n.set(s,e.length),n}AES_CCM_calculate_iv(){const t=this.nonce,e=this.adata,s=this.tagSize,n=this.lengthSize,i=this.dataLength,r=new Uint8Array(16+(e?2+e.length:0));r[0]=(e?64:0)|s-2<<2|n-1,r.set(t,1),n>6&&(r[9]=i/4294967296>>>16&15),n>5&&(r[10]=i/4294967296>>>8&255),n>4&&(r[11]=i/4294967296&255),n>3&&(r[12]=i>>>24),n>2&&(r[13]=i>>>16&255),r[14]=i>>>8&255,r[15]=255&i,e&&(r[16]=e.length>>>8&255,r[17]=255&e.length,r.set(e,18)),this._cbc_mac_process(r),this.aes.asm.get_state(w.HEAP_DATA);const h=new Uint8Array(this.aes.heap.subarray(0,16)),a=new DataView(h.buffer,h.byteOffset,h.byteLength);this.aes.asm.set_iv(a.getUint32(0),a.getUint32(4),a.getUint32(8),a.getUint32(12))}_cbc_mac_process(t){const e=this.aes.heap,s=this.aes.asm;let n=0,i=t.length||0,h=0;for(;i>0;){for(h=r(e,0,t,n,i);15&h;)e[h++]=0;n+=h,i-=h,s.mac(w.MAC.CBC,w.HEAP_DATA,h)}}AES_CCM_Encrypt_process(t){const e=this.aes.asm,s=this.aes.heap;let n=0,i=t.length||0,h=this.counter,a=this.aes.pos,o=this.aes.len;const c=o+i&-16;let l=0,f=0;if((h-1<<4)+o+i>0xffffffffffff0)throw new RangeError("counter overflow");const u=new Uint8Array(c);for(;i>0;)f=r(s,a+o,t,n,i),o+=f,n+=f,i-=f,f=e.mac(w.MAC.CBC,w.HEAP_DATA+a,o),f=e.cipher(w.ENC.CTR,w.HEAP_DATA+a,f),f&&u.set(s.subarray(a,a+f),l),h+=f>>>4,l+=f,f<o?(a+=f,o-=f):(a=0,o=0);return this.counter=h,this.aes.pos=a,this.aes.len=o,u}AES_CCM_Encrypt_finish(){const t=this.aes.asm,e=this.aes.heap,s=this.tagSize,n=this.aes.pos,i=this.aes.len,r=new Uint8Array(i+s);let h=i;for(;15&h;h++)e[n+h]=0;return t.mac(w.MAC.CBC,w.HEAP_DATA+n,h),t.cipher(w.ENC.CTR,w.HEAP_DATA+n,h),i&&r.set(e.subarray(n,n+i)),t.set_counter(0,0,0,0),t.get_iv(w.HEAP_DATA),t.cipher(w.ENC.CTR,w.HEAP_DATA,16),r.set(e.subarray(0,s),i),this.counter=1,this.aes.pos=0,this.aes.len=0,r}AES_CCM_Decrypt_process(t){let e=0,s=t.length||0;const n=this.aes.asm,i=this.aes.heap;let h=this.counter;const a=this.tagSize;let o=this.aes.pos,c=this.aes.len,l=0;const f=c+s>a?c+s-a&-16:0,u=c+s-f;let p=0;if((h-1<<4)+c+s>0xffffffffffff0)throw new RangeError("counter overflow");const _=new Uint8Array(f);for(;s>u;)p=r(i,o+c,t,e,s-u),c+=p,e+=p,s-=p,p=n.cipher(w.DEC.CTR,w.HEAP_DATA+o,p),p=n.mac(w.MAC.CBC,w.HEAP_DATA+o,p),p&&_.set(i.subarray(o,o+p),l),h+=p>>>4,l+=p,o=0,c=0;return s>0&&(c+=r(i,0,t,e,s)),this.counter=h,this.aes.pos=o,this.aes.len=c,_}AES_CCM_Decrypt_finish(){const e=this.aes.asm,n=this.aes.heap,i=this.tagSize,r=this.aes.pos,h=this.aes.len,a=h-i;if(h<i)throw new t("authentication tag not found");const o=new Uint8Array(a),c=new Uint8Array(n.subarray(r+a,r+h));e.cipher(w.DEC.CTR,w.HEAP_DATA+r,a+15&-16),o.set(n.subarray(r,r+a));let l=a;for(;15&l;l++)n[r+l]=0;e.mac(w.MAC.CBC,w.HEAP_DATA+r,l),e.set_counter(0,0,0,0),e.get_iv(w.HEAP_DATA),e.cipher(w.ENC.CTR,w.HEAP_DATA,16);let f=0;for(let t=0;t<i;++t)f|=c[t]^n[t];if(f)throw new s("data integrity check failed");return this.counter=1,this.aes.pos=0,this.aes.len=0,o}AES_CTR_set_options(t,s,n){if(n<8||n>48)throw new e("illegal counter size");const i=Math.pow(2,n)-1;this.aes.asm.set_mask(0,0,i/4294967296|0,0|i);const r=t.length;if(!r||r>16)throw new e("illegal nonce size");this.nonce=t;const h=new DataView(new ArrayBuffer(16));if(new Uint8Array(h.buffer).set(t),this.aes.asm.set_nonce(h.getUint32(0),h.getUint32(4),h.getUint32(8),h.getUint32(12)),s<0||s>=Math.pow(2,n))throw new e("illegal counter value");this.counter=s,this.aes.asm.set_counter(0,0,s/4294967296|0,0|s)}}class S{constructor(){this.pos=0,this.len=0}reset(){return this.result=null,this.pos=0,this.len=0,this.asm.reset(),this}process(e){if(null!==this.result)throw new t("state must be reset before processing new data");const s=this.asm,n=this.heap;let i=this.pos,h=this.len,a=0,o=e.length,c=0;for(;o>0;)c=r(n,i+h,e,a,o),h+=c,a+=c,o-=c,c=s.process(i,h),i+=c,h-=c,h||(i=0);return this.pos=i,this.len=h,this}finish(){if(null!==this.result)throw new t("state must be reset before processing new data");return this.asm.finish(this.pos,this.len,0),this.result=new Uint8Array(this.HASH_SIZE),this.result.set(this.heap.subarray(0,this.HASH_SIZE)),this.pos=0,this.len=0,this}}const b=64,v=20;class D extends S{constructor(){super(),this.NAME="sha1",this.BLOCK_SIZE=64,this.HASH_SIZE=20,this.heap=i(),this.asm=function(t,e){let s=0,n=0,i=0,r=0,h=0,a=0,o=0,c=0,l=0,f=0,u=0,p=0,_=0,A=0,g=0,w=0,y=0;const E=new Uint8Array(e);function C(t,e,a,o,c,l,f,u,p,_,A,g,w,y,E,C){let m=0,d=0,S=0,b=0,v=0,D=0,M=0,U=0,H=0,T=0,x=0,P=0,z=0,B=0,k=0,R=0,G=0,N=0,L=0,I=0,O=0,Z=0,K=0,V=0,F=0,j=0,q=0,J=0,Q=0,W=0,X=0,Y=0,$=0,tt=0,et=0,st=0,nt=0,it=0,rt=0,ht=0,at=0,ot=0,ct=0,lt=0,ft=0,ut=0,pt=0,_t=0,At=0,gt=0,wt=0,yt=0,Et=0,Ct=0,mt=0,dt=0,St=0,bt=0,vt=0,Dt=0,Mt=0,Ut=0,Ht=0,Tt=0,xt=0,Pt=0,zt=0,Bt=0,kt=0,Rt=0,Gt=0;m=s,d=n,S=i,b=r,v=h,M=(t|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,M=(e|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,M=(a|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,M=(o|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,M=(c|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,M=(l|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,M=(f|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,M=(u|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,M=(p|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,M=(_|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,M=(A|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,M=(g|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,M=(w|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,M=(y|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,M=(E|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,M=(C|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=y^p^a^t,U=D<<1|D>>>31,M=U+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=E^_^o^e,H=D<<1|D>>>31,M=H+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=C^A^c^a,T=D<<1|D>>>31,M=T+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=U^g^l^o,x=D<<1|D>>>31,M=x+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=H^w^f^c,P=D<<1|D>>>31,M=P+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=T^y^u^l,z=D<<1|D>>>31,M=z+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=x^E^p^f,B=D<<1|D>>>31,M=B+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=P^C^_^u,k=D<<1|D>>>31,M=k+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=z^U^A^p,R=D<<1|D>>>31,M=R+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=B^H^g^_,G=D<<1|D>>>31,M=G+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=k^T^w^A,N=D<<1|D>>>31,M=N+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=R^x^y^g,L=D<<1|D>>>31,M=L+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=G^P^E^w,I=D<<1|D>>>31,M=I+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=N^z^C^y,O=D<<1|D>>>31,M=O+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=L^B^U^E,Z=D<<1|D>>>31,M=Z+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=I^k^H^C,K=D<<1|D>>>31,M=K+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=O^R^T^U,V=D<<1|D>>>31,M=V+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=Z^G^x^H,F=D<<1|D>>>31,M=F+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=K^N^P^T,j=D<<1|D>>>31,M=j+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=V^L^z^x,q=D<<1|D>>>31,M=q+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=F^I^B^P,J=D<<1|D>>>31,M=J+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=j^O^k^z,Q=D<<1|D>>>31,M=Q+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=q^Z^R^B,W=D<<1|D>>>31,M=W+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=J^K^G^k,X=D<<1|D>>>31,M=X+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=Q^V^N^R,Y=D<<1|D>>>31,M=Y+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=W^F^L^G,$=D<<1|D>>>31,M=$+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=X^j^I^N,tt=D<<1|D>>>31,M=tt+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=Y^q^O^L,et=D<<1|D>>>31,M=et+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=$^J^Z^I,st=D<<1|D>>>31,M=st+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=tt^Q^K^O,nt=D<<1|D>>>31,M=nt+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=et^W^V^Z,it=D<<1|D>>>31,M=it+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=st^X^F^K,rt=D<<1|D>>>31,M=rt+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=nt^Y^j^V,ht=D<<1|D>>>31,M=ht+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=it^$^q^F,at=D<<1|D>>>31,M=at+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=rt^tt^J^j,ot=D<<1|D>>>31,M=ot+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=ht^et^Q^q,ct=D<<1|D>>>31,M=ct+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=at^st^W^J,lt=D<<1|D>>>31,M=lt+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=ot^nt^X^Q,ft=D<<1|D>>>31,M=ft+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=ct^it^Y^W,ut=D<<1|D>>>31,M=ut+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=lt^rt^$^X,pt=D<<1|D>>>31,M=pt+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=ft^ht^tt^Y,_t=D<<1|D>>>31,M=_t+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=ut^at^et^$,At=D<<1|D>>>31,M=At+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=pt^ot^st^tt,gt=D<<1|D>>>31,M=gt+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=_t^ct^nt^et,wt=D<<1|D>>>31,M=wt+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=At^lt^it^st,yt=D<<1|D>>>31,M=yt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=gt^ft^rt^nt,Et=D<<1|D>>>31,M=Et+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=wt^ut^ht^it,Ct=D<<1|D>>>31,M=Ct+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=yt^pt^at^rt,mt=D<<1|D>>>31,M=mt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=Et^_t^ot^ht,dt=D<<1|D>>>31,M=dt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=Ct^At^ct^at,St=D<<1|D>>>31,M=St+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=mt^gt^lt^ot,bt=D<<1|D>>>31,M=bt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=dt^wt^ft^ct,vt=D<<1|D>>>31,M=vt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=St^yt^ut^lt,Dt=D<<1|D>>>31,M=Dt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=bt^Et^pt^ft,Mt=D<<1|D>>>31,M=Mt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=vt^Ct^_t^ut,Ut=D<<1|D>>>31,M=Ut+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=Dt^mt^At^pt,Ht=D<<1|D>>>31,M=Ht+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=Mt^dt^gt^_t,Tt=D<<1|D>>>31,M=Tt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=Ut^St^wt^At,xt=D<<1|D>>>31,M=xt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=Ht^bt^yt^gt,Pt=D<<1|D>>>31,M=Pt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=Tt^vt^Et^wt,zt=D<<1|D>>>31,M=zt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=xt^Dt^Ct^yt,Bt=D<<1|D>>>31,M=Bt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=Pt^Mt^mt^Et,kt=D<<1|D>>>31,M=kt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=zt^Ut^dt^Ct,Rt=D<<1|D>>>31,M=Rt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,D=Bt^Ht^St^mt,Gt=D<<1|D>>>31,M=Gt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=M,s=s+m|0,n=n+d|0,i=i+S|0,r=r+b|0,h=h+v|0}function m(t){C(E[0|(t|=0)]<<24|E[1|t]<<16|E[2|t]<<8|E[3|t],E[4|t]<<24|E[5|t]<<16|E[6|t]<<8|E[7|t],E[8|t]<<24|E[9|t]<<16|E[10|t]<<8|E[11|t],E[12|t]<<24|E[13|t]<<16|E[14|t]<<8|E[15|t],E[16|t]<<24|E[17|t]<<16|E[18|t]<<8|E[19|t],E[20|t]<<24|E[21|t]<<16|E[22|t]<<8|E[23|t],E[24|t]<<24|E[25|t]<<16|E[26|t]<<8|E[27|t],E[28|t]<<24|E[29|t]<<16|E[30|t]<<8|E[31|t],E[32|t]<<24|E[33|t]<<16|E[34|t]<<8|E[35|t],E[36|t]<<24|E[37|t]<<16|E[38|t]<<8|E[39|t],E[40|t]<<24|E[41|t]<<16|E[42|t]<<8|E[43|t],E[44|t]<<24|E[45|t]<<16|E[46|t]<<8|E[47|t],E[48|t]<<24|E[49|t]<<16|E[50|t]<<8|E[51|t],E[52|t]<<24|E[53|t]<<16|E[54|t]<<8|E[55|t],E[56|t]<<24|E[57|t]<<16|E[58|t]<<8|E[59|t],E[60|t]<<24|E[61|t]<<16|E[62|t]<<8|E[63|t])}function d(t){E[0|(t|=0)]=s>>>24,E[1|t]=s>>>16&255,E[2|t]=s>>>8&255,E[3|t]=255&s,E[4|t]=n>>>24,E[5|t]=n>>>16&255,E[6|t]=n>>>8&255,E[7|t]=255&n,E[8|t]=i>>>24,E[9|t]=i>>>16&255,E[10|t]=i>>>8&255,E[11|t]=255&i,E[12|t]=r>>>24,E[13|t]=r>>>16&255,E[14|t]=r>>>8&255,E[15|t]=255&r,E[16|t]=h>>>24,E[17|t]=h>>>16&255,E[18|t]=h>>>8&255,E[19|t]=255&h}function S(){s=1732584193,n=4023233417,i=2562383102,r=271733878,h=3285377520,a=o=0}function b(t,e){e|=0;let s=0;if(63&(t|=0))return-1;for(;(0|e)>=64;)m(t),t=t+64|0,e=e-64|0,s=s+64|0;return a=a+s|0,a>>>0<s>>>0&&(o=o+1|0),0|s}function v(t,e,s){let n=0,i=0;if(63&(t|=0))return-1;if(~(s|=0)&&31&s)return-1;if((0|(e|=0))>=64){if(n=0|b(t,e),-1==(0|n))return-1;t=t+n|0,e=e-n|0}if(n=n+e|0,a=a+e|0,a>>>0<e>>>0&&(o=o+1|0),E[t|e]=128,(0|e)>=56){for(i=e+1|0;(0|i)<64;i=i+1|0)E[t|i]=0;m(t),e=0,E[0|t]=0}for(i=e+1|0;(0|i)<59;i=i+1|0)E[t|i]=0;return E[56|t]=o>>>21&255,E[57|t]=o>>>13&255,E[58|t]=o>>>5&255,E[59|t]=o<<3&255|a>>>29,E[60|t]=a>>>21&255,E[61|t]=a>>>13&255,E[62|t]=a>>>5&255,E[63|t]=a<<3&255,m(t),~s&&d(s),0|n}function D(){s=c,n=l,i=f,r=u,h=p,a=64,o=0}function M(){s=_,n=A,i=g,r=w,h=y,a=64,o=0}function U(t,e,a){let o=0,c=0,l=0,f=0,u=0,p=0;return 63&(t|=0)||~(a|=0)&&31&a?-1:(p=0|v(t,e|=0,-1),o=s,c=n,l=i,f=r,u=h,M(),C(o,c,l,f,u,2147483648,0,0,0,0,0,0,0,0,0,672),~a&&d(a),0|p)}return{reset:S,init:function(t,e,c,l,f,u,p){s=t|=0,n=e|=0,i=c|=0,r=l|=0,h=f|=0,a=u|=0,o=p|=0},process:b,finish:v,hmac_reset:D,hmac_init:function(t,e,E,m,d,b,v,D,M,U,H,T,x,P,z,B){t|=0,e|=0,E|=0,m|=0,d|=0,b|=0,v|=0,D|=0,M|=0,U|=0,H|=0,T|=0,x|=0,P|=0,z|=0,B|=0,S(),C(1549556828^t,1549556828^e,1549556828^E,1549556828^m,1549556828^d,1549556828^b,1549556828^v,1549556828^D,1549556828^M,1549556828^U,1549556828^H,1549556828^T,1549556828^x,1549556828^P,1549556828^z,1549556828^B),_=s,A=n,g=i,w=r,y=h,S(),C(909522486^t,909522486^e,909522486^E,909522486^m,909522486^d,909522486^b,909522486^v,909522486^D,909522486^M,909522486^U,909522486^H,909522486^T,909522486^x,909522486^P,909522486^z,909522486^B),c=s,l=n,f=i,u=r,p=h,a=64,o=0},hmac_finish:U,pbkdf2_generate_block:function(t,e,a,o,c){a|=0,o|=0;let l=0,f=0,u=0,p=0,_=0,A=0,g=0,w=0,y=0,m=0;if(63&(t|=0))return-1;if(~(c|=0)&&31&c)return-1;for(E[t+(e|=0)|0]=a>>>24,E[t+e+1|0]=a>>>16&255,E[t+e+2|0]=a>>>8&255,E[t+e+3|0]=255&a,U(t,e+4|0,-1),l=A=s,f=g=n,u=w=i,p=y=r,_=m=h,o=o-1|0;(0|o)>0;)D(),C(A,g,w,y,m,2147483648,0,0,0,0,0,0,0,0,0,672),A=s,g=n,w=i,y=r,m=h,M(),C(A,g,w,y,m,2147483648,0,0,0,0,0,0,0,0,0,672),A=s,g=n,w=i,y=r,m=h,l^=s,f^=n,u^=i,p^=r,_^=h,o=o-1|0;return s=l,n=f,i=u,r=p,h=_,~c&&d(c),0}}}(0,this.heap.buffer),this.reset()}}D.NAME="sha1";const M=64,U=32;class H extends S{constructor(){super(),this.NAME="sha256",this.BLOCK_SIZE=64,this.HASH_SIZE=32,this.heap=i(),this.asm=function(t,e){let s=0,n=0,i=0,r=0,h=0,a=0,o=0,c=0,l=0,f=0,u=0,p=0,_=0,A=0,g=0,w=0,y=0,E=0,C=0,m=0,d=0,S=0,b=0,v=0,D=0,M=0;const U=new Uint8Array(e);function H(t,e,l,f,u,p,_,A,g,w,y,E,C,m,d,S){let b=0,v=0,D=0,M=0,U=0,H=0,T=0,x=0;b=s,v=n,D=i,M=r,U=h,H=a,T=o,x=c,x=(t|=0)+x+(U>>>6^U>>>11^U>>>25^U<<26^U<<21^U<<7)+(T^U&(H^T))+1116352408|0,M=M+x|0,x=x+(b&v^D&(b^v))+(b>>>2^b>>>13^b>>>22^b<<30^b<<19^b<<10)|0,T=(e|=0)+T+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(H^M&(U^H))+1899447441|0,D=D+T|0,T=T+(x&b^v&(x^b))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0,H=(l|=0)+H+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(U^D&(M^U))+3049323471|0,v=v+H|0,H=H+(T&x^b&(T^x))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0,U=(f|=0)+U+(v>>>6^v>>>11^v>>>25^v<<26^v<<21^v<<7)+(M^v&(D^M))+3921009573|0,b=b+U|0,U=U+(H&T^x&(H^T))+(H>>>2^H>>>13^H>>>22^H<<30^H<<19^H<<10)|0,M=(u|=0)+M+(b>>>6^b>>>11^b>>>25^b<<26^b<<21^b<<7)+(D^b&(v^D))+961987163|0,x=x+M|0,M=M+(U&H^T&(U^H))+(U>>>2^U>>>13^U>>>22^U<<30^U<<19^U<<10)|0,D=(p|=0)+D+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(v^x&(b^v))+1508970993|0,T=T+D|0,D=D+(M&U^H&(M^U))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0,v=(_|=0)+v+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(b^T&(x^b))+2453635748|0,H=H+v|0,v=v+(D&M^U&(D^M))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0,b=(A|=0)+b+(H>>>6^H>>>11^H>>>25^H<<26^H<<21^H<<7)+(x^H&(T^x))+2870763221|0,U=U+b|0,b=b+(v&D^M&(v^D))+(v>>>2^v>>>13^v>>>22^v<<30^v<<19^v<<10)|0,x=(g|=0)+x+(U>>>6^U>>>11^U>>>25^U<<26^U<<21^U<<7)+(T^U&(H^T))+3624381080|0,M=M+x|0,x=x+(b&v^D&(b^v))+(b>>>2^b>>>13^b>>>22^b<<30^b<<19^b<<10)|0,T=(w|=0)+T+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(H^M&(U^H))+310598401|0,D=D+T|0,T=T+(x&b^v&(x^b))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0,H=(y|=0)+H+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(U^D&(M^U))+607225278|0,v=v+H|0,H=H+(T&x^b&(T^x))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0,U=(E|=0)+U+(v>>>6^v>>>11^v>>>25^v<<26^v<<21^v<<7)+(M^v&(D^M))+1426881987|0,b=b+U|0,U=U+(H&T^x&(H^T))+(H>>>2^H>>>13^H>>>22^H<<30^H<<19^H<<10)|0,M=(C|=0)+M+(b>>>6^b>>>11^b>>>25^b<<26^b<<21^b<<7)+(D^b&(v^D))+1925078388|0,x=x+M|0,M=M+(U&H^T&(U^H))+(U>>>2^U>>>13^U>>>22^U<<30^U<<19^U<<10)|0,D=(m|=0)+D+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(v^x&(b^v))+2162078206|0,T=T+D|0,D=D+(M&U^H&(M^U))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0,v=(d|=0)+v+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(b^T&(x^b))+2614888103|0,H=H+v|0,v=v+(D&M^U&(D^M))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0,b=(S|=0)+b+(H>>>6^H>>>11^H>>>25^H<<26^H<<21^H<<7)+(x^H&(T^x))+3248222580|0,U=U+b|0,b=b+(v&D^M&(v^D))+(v>>>2^v>>>13^v>>>22^v<<30^v<<19^v<<10)|0,x=(t=(e>>>7^e>>>18^e>>>3^e<<25^e<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+t+w|0)+x+(U>>>6^U>>>11^U>>>25^U<<26^U<<21^U<<7)+(T^U&(H^T))+3835390401|0,M=M+x|0,x=x+(b&v^D&(b^v))+(b>>>2^b>>>13^b>>>22^b<<30^b<<19^b<<10)|0,T=(e=(l>>>7^l>>>18^l>>>3^l<<25^l<<14)+(S>>>17^S>>>19^S>>>10^S<<15^S<<13)+e+y|0)+T+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(H^M&(U^H))+4022224774|0,D=D+T|0,T=T+(x&b^v&(x^b))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0,H=(l=(f>>>7^f>>>18^f>>>3^f<<25^f<<14)+(t>>>17^t>>>19^t>>>10^t<<15^t<<13)+l+E|0)+H+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(U^D&(M^U))+264347078|0,v=v+H|0,H=H+(T&x^b&(T^x))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0,U=(f=(u>>>7^u>>>18^u>>>3^u<<25^u<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+f+C|0)+U+(v>>>6^v>>>11^v>>>25^v<<26^v<<21^v<<7)+(M^v&(D^M))+604807628|0,b=b+U|0,U=U+(H&T^x&(H^T))+(H>>>2^H>>>13^H>>>22^H<<30^H<<19^H<<10)|0,M=(u=(p>>>7^p>>>18^p>>>3^p<<25^p<<14)+(l>>>17^l>>>19^l>>>10^l<<15^l<<13)+u+m|0)+M+(b>>>6^b>>>11^b>>>25^b<<26^b<<21^b<<7)+(D^b&(v^D))+770255983|0,x=x+M|0,M=M+(U&H^T&(U^H))+(U>>>2^U>>>13^U>>>22^U<<30^U<<19^U<<10)|0,D=(p=(_>>>7^_>>>18^_>>>3^_<<25^_<<14)+(f>>>17^f>>>19^f>>>10^f<<15^f<<13)+p+d|0)+D+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(v^x&(b^v))+1249150122|0,T=T+D|0,D=D+(M&U^H&(M^U))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0,v=(_=(A>>>7^A>>>18^A>>>3^A<<25^A<<14)+(u>>>17^u>>>19^u>>>10^u<<15^u<<13)+_+S|0)+v+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(b^T&(x^b))+1555081692|0,H=H+v|0,v=v+(D&M^U&(D^M))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0,b=(A=(g>>>7^g>>>18^g>>>3^g<<25^g<<14)+(p>>>17^p>>>19^p>>>10^p<<15^p<<13)+A+t|0)+b+(H>>>6^H>>>11^H>>>25^H<<26^H<<21^H<<7)+(x^H&(T^x))+1996064986|0,U=U+b|0,b=b+(v&D^M&(v^D))+(v>>>2^v>>>13^v>>>22^v<<30^v<<19^v<<10)|0,x=(g=(w>>>7^w>>>18^w>>>3^w<<25^w<<14)+(_>>>17^_>>>19^_>>>10^_<<15^_<<13)+g+e|0)+x+(U>>>6^U>>>11^U>>>25^U<<26^U<<21^U<<7)+(T^U&(H^T))+2554220882|0,M=M+x|0,x=x+(b&v^D&(b^v))+(b>>>2^b>>>13^b>>>22^b<<30^b<<19^b<<10)|0,T=(w=(y>>>7^y>>>18^y>>>3^y<<25^y<<14)+(A>>>17^A>>>19^A>>>10^A<<15^A<<13)+w+l|0)+T+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(H^M&(U^H))+2821834349|0,D=D+T|0,T=T+(x&b^v&(x^b))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0,H=(y=(E>>>7^E>>>18^E>>>3^E<<25^E<<14)+(g>>>17^g>>>19^g>>>10^g<<15^g<<13)+y+f|0)+H+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(U^D&(M^U))+2952996808|0,v=v+H|0,H=H+(T&x^b&(T^x))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0,U=(E=(C>>>7^C>>>18^C>>>3^C<<25^C<<14)+(w>>>17^w>>>19^w>>>10^w<<15^w<<13)+E+u|0)+U+(v>>>6^v>>>11^v>>>25^v<<26^v<<21^v<<7)+(M^v&(D^M))+3210313671|0,b=b+U|0,U=U+(H&T^x&(H^T))+(H>>>2^H>>>13^H>>>22^H<<30^H<<19^H<<10)|0,M=(C=(m>>>7^m>>>18^m>>>3^m<<25^m<<14)+(y>>>17^y>>>19^y>>>10^y<<15^y<<13)+C+p|0)+M+(b>>>6^b>>>11^b>>>25^b<<26^b<<21^b<<7)+(D^b&(v^D))+3336571891|0,x=x+M|0,M=M+(U&H^T&(U^H))+(U>>>2^U>>>13^U>>>22^U<<30^U<<19^U<<10)|0,D=(m=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(E>>>17^E>>>19^E>>>10^E<<15^E<<13)+m+_|0)+D+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(v^x&(b^v))+3584528711|0,T=T+D|0,D=D+(M&U^H&(M^U))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0,v=(d=(S>>>7^S>>>18^S>>>3^S<<25^S<<14)+(C>>>17^C>>>19^C>>>10^C<<15^C<<13)+d+A|0)+v+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(b^T&(x^b))+113926993|0,H=H+v|0,v=v+(D&M^U&(D^M))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0,b=(S=(t>>>7^t>>>18^t>>>3^t<<25^t<<14)+(m>>>17^m>>>19^m>>>10^m<<15^m<<13)+S+g|0)+b+(H>>>6^H>>>11^H>>>25^H<<26^H<<21^H<<7)+(x^H&(T^x))+338241895|0,U=U+b|0,b=b+(v&D^M&(v^D))+(v>>>2^v>>>13^v>>>22^v<<30^v<<19^v<<10)|0,x=(t=(e>>>7^e>>>18^e>>>3^e<<25^e<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+t+w|0)+x+(U>>>6^U>>>11^U>>>25^U<<26^U<<21^U<<7)+(T^U&(H^T))+666307205|0,M=M+x|0,x=x+(b&v^D&(b^v))+(b>>>2^b>>>13^b>>>22^b<<30^b<<19^b<<10)|0,T=(e=(l>>>7^l>>>18^l>>>3^l<<25^l<<14)+(S>>>17^S>>>19^S>>>10^S<<15^S<<13)+e+y|0)+T+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(H^M&(U^H))+773529912|0,D=D+T|0,T=T+(x&b^v&(x^b))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0,H=(l=(f>>>7^f>>>18^f>>>3^f<<25^f<<14)+(t>>>17^t>>>19^t>>>10^t<<15^t<<13)+l+E|0)+H+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(U^D&(M^U))+1294757372|0,v=v+H|0,H=H+(T&x^b&(T^x))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0,U=(f=(u>>>7^u>>>18^u>>>3^u<<25^u<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+f+C|0)+U+(v>>>6^v>>>11^v>>>25^v<<26^v<<21^v<<7)+(M^v&(D^M))+1396182291|0,b=b+U|0,U=U+(H&T^x&(H^T))+(H>>>2^H>>>13^H>>>22^H<<30^H<<19^H<<10)|0,M=(u=(p>>>7^p>>>18^p>>>3^p<<25^p<<14)+(l>>>17^l>>>19^l>>>10^l<<15^l<<13)+u+m|0)+M+(b>>>6^b>>>11^b>>>25^b<<26^b<<21^b<<7)+(D^b&(v^D))+1695183700|0,x=x+M|0,M=M+(U&H^T&(U^H))+(U>>>2^U>>>13^U>>>22^U<<30^U<<19^U<<10)|0,D=(p=(_>>>7^_>>>18^_>>>3^_<<25^_<<14)+(f>>>17^f>>>19^f>>>10^f<<15^f<<13)+p+d|0)+D+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(v^x&(b^v))+1986661051|0,T=T+D|0,D=D+(M&U^H&(M^U))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0,v=(_=(A>>>7^A>>>18^A>>>3^A<<25^A<<14)+(u>>>17^u>>>19^u>>>10^u<<15^u<<13)+_+S|0)+v+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(b^T&(x^b))+2177026350|0,H=H+v|0,v=v+(D&M^U&(D^M))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0,b=(A=(g>>>7^g>>>18^g>>>3^g<<25^g<<14)+(p>>>17^p>>>19^p>>>10^p<<15^p<<13)+A+t|0)+b+(H>>>6^H>>>11^H>>>25^H<<26^H<<21^H<<7)+(x^H&(T^x))+2456956037|0,U=U+b|0,b=b+(v&D^M&(v^D))+(v>>>2^v>>>13^v>>>22^v<<30^v<<19^v<<10)|0,x=(g=(w>>>7^w>>>18^w>>>3^w<<25^w<<14)+(_>>>17^_>>>19^_>>>10^_<<15^_<<13)+g+e|0)+x+(U>>>6^U>>>11^U>>>25^U<<26^U<<21^U<<7)+(T^U&(H^T))+2730485921|0,M=M+x|0,x=x+(b&v^D&(b^v))+(b>>>2^b>>>13^b>>>22^b<<30^b<<19^b<<10)|0,T=(w=(y>>>7^y>>>18^y>>>3^y<<25^y<<14)+(A>>>17^A>>>19^A>>>10^A<<15^A<<13)+w+l|0)+T+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(H^M&(U^H))+2820302411|0,D=D+T|0,T=T+(x&b^v&(x^b))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0,H=(y=(E>>>7^E>>>18^E>>>3^E<<25^E<<14)+(g>>>17^g>>>19^g>>>10^g<<15^g<<13)+y+f|0)+H+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(U^D&(M^U))+3259730800|0,v=v+H|0,H=H+(T&x^b&(T^x))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0,U=(E=(C>>>7^C>>>18^C>>>3^C<<25^C<<14)+(w>>>17^w>>>19^w>>>10^w<<15^w<<13)+E+u|0)+U+(v>>>6^v>>>11^v>>>25^v<<26^v<<21^v<<7)+(M^v&(D^M))+3345764771|0,b=b+U|0,U=U+(H&T^x&(H^T))+(H>>>2^H>>>13^H>>>22^H<<30^H<<19^H<<10)|0,M=(C=(m>>>7^m>>>18^m>>>3^m<<25^m<<14)+(y>>>17^y>>>19^y>>>10^y<<15^y<<13)+C+p|0)+M+(b>>>6^b>>>11^b>>>25^b<<26^b<<21^b<<7)+(D^b&(v^D))+3516065817|0,x=x+M|0,M=M+(U&H^T&(U^H))+(U>>>2^U>>>13^U>>>22^U<<30^U<<19^U<<10)|0,D=(m=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(E>>>17^E>>>19^E>>>10^E<<15^E<<13)+m+_|0)+D+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(v^x&(b^v))+3600352804|0,T=T+D|0,D=D+(M&U^H&(M^U))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0,v=(d=(S>>>7^S>>>18^S>>>3^S<<25^S<<14)+(C>>>17^C>>>19^C>>>10^C<<15^C<<13)+d+A|0)+v+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(b^T&(x^b))+4094571909|0,H=H+v|0,v=v+(D&M^U&(D^M))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0,b=(S=(t>>>7^t>>>18^t>>>3^t<<25^t<<14)+(m>>>17^m>>>19^m>>>10^m<<15^m<<13)+S+g|0)+b+(H>>>6^H>>>11^H>>>25^H<<26^H<<21^H<<7)+(x^H&(T^x))+275423344|0,U=U+b|0,b=b+(v&D^M&(v^D))+(v>>>2^v>>>13^v>>>22^v<<30^v<<19^v<<10)|0,x=(t=(e>>>7^e>>>18^e>>>3^e<<25^e<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+t+w|0)+x+(U>>>6^U>>>11^U>>>25^U<<26^U<<21^U<<7)+(T^U&(H^T))+430227734|0,M=M+x|0,x=x+(b&v^D&(b^v))+(b>>>2^b>>>13^b>>>22^b<<30^b<<19^b<<10)|0,T=(e=(l>>>7^l>>>18^l>>>3^l<<25^l<<14)+(S>>>17^S>>>19^S>>>10^S<<15^S<<13)+e+y|0)+T+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(H^M&(U^H))+506948616|0,D=D+T|0,T=T+(x&b^v&(x^b))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0,H=(l=(f>>>7^f>>>18^f>>>3^f<<25^f<<14)+(t>>>17^t>>>19^t>>>10^t<<15^t<<13)+l+E|0)+H+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(U^D&(M^U))+659060556|0,v=v+H|0,H=H+(T&x^b&(T^x))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0,U=(f=(u>>>7^u>>>18^u>>>3^u<<25^u<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+f+C|0)+U+(v>>>6^v>>>11^v>>>25^v<<26^v<<21^v<<7)+(M^v&(D^M))+883997877|0,b=b+U|0,U=U+(H&T^x&(H^T))+(H>>>2^H>>>13^H>>>22^H<<30^H<<19^H<<10)|0,M=(u=(p>>>7^p>>>18^p>>>3^p<<25^p<<14)+(l>>>17^l>>>19^l>>>10^l<<15^l<<13)+u+m|0)+M+(b>>>6^b>>>11^b>>>25^b<<26^b<<21^b<<7)+(D^b&(v^D))+958139571|0,x=x+M|0,M=M+(U&H^T&(U^H))+(U>>>2^U>>>13^U>>>22^U<<30^U<<19^U<<10)|0,D=(p=(_>>>7^_>>>18^_>>>3^_<<25^_<<14)+(f>>>17^f>>>19^f>>>10^f<<15^f<<13)+p+d|0)+D+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(v^x&(b^v))+1322822218|0,T=T+D|0,D=D+(M&U^H&(M^U))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0,v=(_=(A>>>7^A>>>18^A>>>3^A<<25^A<<14)+(u>>>17^u>>>19^u>>>10^u<<15^u<<13)+_+S|0)+v+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(b^T&(x^b))+1537002063|0,H=H+v|0,v=v+(D&M^U&(D^M))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0,b=(A=(g>>>7^g>>>18^g>>>3^g<<25^g<<14)+(p>>>17^p>>>19^p>>>10^p<<15^p<<13)+A+t|0)+b+(H>>>6^H>>>11^H>>>25^H<<26^H<<21^H<<7)+(x^H&(T^x))+1747873779|0,U=U+b|0,b=b+(v&D^M&(v^D))+(v>>>2^v>>>13^v>>>22^v<<30^v<<19^v<<10)|0,x=(g=(w>>>7^w>>>18^w>>>3^w<<25^w<<14)+(_>>>17^_>>>19^_>>>10^_<<15^_<<13)+g+e|0)+x+(U>>>6^U>>>11^U>>>25^U<<26^U<<21^U<<7)+(T^U&(H^T))+1955562222|0,M=M+x|0,x=x+(b&v^D&(b^v))+(b>>>2^b>>>13^b>>>22^b<<30^b<<19^b<<10)|0,T=(w=(y>>>7^y>>>18^y>>>3^y<<25^y<<14)+(A>>>17^A>>>19^A>>>10^A<<15^A<<13)+w+l|0)+T+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(H^M&(U^H))+2024104815|0,D=D+T|0,T=T+(x&b^v&(x^b))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0,H=(y=(E>>>7^E>>>18^E>>>3^E<<25^E<<14)+(g>>>17^g>>>19^g>>>10^g<<15^g<<13)+y+f|0)+H+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(U^D&(M^U))+2227730452|0,v=v+H|0,H=H+(T&x^b&(T^x))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0,U=(E=(C>>>7^C>>>18^C>>>3^C<<25^C<<14)+(w>>>17^w>>>19^w>>>10^w<<15^w<<13)+E+u|0)+U+(v>>>6^v>>>11^v>>>25^v<<26^v<<21^v<<7)+(M^v&(D^M))+2361852424|0,b=b+U|0,U=U+(H&T^x&(H^T))+(H>>>2^H>>>13^H>>>22^H<<30^H<<19^H<<10)|0,M=(C=(m>>>7^m>>>18^m>>>3^m<<25^m<<14)+(y>>>17^y>>>19^y>>>10^y<<15^y<<13)+C+p|0)+M+(b>>>6^b>>>11^b>>>25^b<<26^b<<21^b<<7)+(D^b&(v^D))+2428436474|0,x=x+M|0,M=M+(U&H^T&(U^H))+(U>>>2^U>>>13^U>>>22^U<<30^U<<19^U<<10)|0,D=(m=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(E>>>17^E>>>19^E>>>10^E<<15^E<<13)+m+_|0)+D+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(v^x&(b^v))+2756734187|0,T=T+D|0,D=D+(M&U^H&(M^U))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0,v=(d=(S>>>7^S>>>18^S>>>3^S<<25^S<<14)+(C>>>17^C>>>19^C>>>10^C<<15^C<<13)+d+A|0)+v+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(b^T&(x^b))+3204031479|0,H=H+v|0,v=v+(D&M^U&(D^M))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0,b=(S=(t>>>7^t>>>18^t>>>3^t<<25^t<<14)+(m>>>17^m>>>19^m>>>10^m<<15^m<<13)+S+g|0)+b+(H>>>6^H>>>11^H>>>25^H<<26^H<<21^H<<7)+(x^H&(T^x))+3329325298|0,U=U+b|0,b=b+(v&D^M&(v^D))+(v>>>2^v>>>13^v>>>22^v<<30^v<<19^v<<10)|0,s=s+b|0,n=n+v|0,i=i+D|0,r=r+M|0,h=h+U|0,a=a+H|0,o=o+T|0,c=c+x|0}function T(t){H(U[0|(t|=0)]<<24|U[1|t]<<16|U[2|t]<<8|U[3|t],U[4|t]<<24|U[5|t]<<16|U[6|t]<<8|U[7|t],U[8|t]<<24|U[9|t]<<16|U[10|t]<<8|U[11|t],U[12|t]<<24|U[13|t]<<16|U[14|t]<<8|U[15|t],U[16|t]<<24|U[17|t]<<16|U[18|t]<<8|U[19|t],U[20|t]<<24|U[21|t]<<16|U[22|t]<<8|U[23|t],U[24|t]<<24|U[25|t]<<16|U[26|t]<<8|U[27|t],U[28|t]<<24|U[29|t]<<16|U[30|t]<<8|U[31|t],U[32|t]<<24|U[33|t]<<16|U[34|t]<<8|U[35|t],U[36|t]<<24|U[37|t]<<16|U[38|t]<<8|U[39|t],U[40|t]<<24|U[41|t]<<16|U[42|t]<<8|U[43|t],U[44|t]<<24|U[45|t]<<16|U[46|t]<<8|U[47|t],U[48|t]<<24|U[49|t]<<16|U[50|t]<<8|U[51|t],U[52|t]<<24|U[53|t]<<16|U[54|t]<<8|U[55|t],U[56|t]<<24|U[57|t]<<16|U[58|t]<<8|U[59|t],U[60|t]<<24|U[61|t]<<16|U[62|t]<<8|U[63|t])}function x(t){U[0|(t|=0)]=s>>>24,U[1|t]=s>>>16&255,U[2|t]=s>>>8&255,U[3|t]=255&s,U[4|t]=n>>>24,U[5|t]=n>>>16&255,U[6|t]=n>>>8&255,U[7|t]=255&n,U[8|t]=i>>>24,U[9|t]=i>>>16&255,U[10|t]=i>>>8&255,U[11|t]=255&i,U[12|t]=r>>>24,U[13|t]=r>>>16&255,U[14|t]=r>>>8&255,U[15|t]=255&r,U[16|t]=h>>>24,U[17|t]=h>>>16&255,U[18|t]=h>>>8&255,U[19|t]=255&h,U[20|t]=a>>>24,U[21|t]=a>>>16&255,U[22|t]=a>>>8&255,U[23|t]=255&a,U[24|t]=o>>>24,U[25|t]=o>>>16&255,U[26|t]=o>>>8&255,U[27|t]=255&o,U[28|t]=c>>>24,U[29|t]=c>>>16&255,U[30|t]=c>>>8&255,U[31|t]=255&c}function P(){s=1779033703,n=3144134277,i=1013904242,r=2773480762,h=1359893119,a=2600822924,o=528734635,c=1541459225,l=f=0}function z(t,e){e|=0;let s=0;if(63&(t|=0))return-1;for(;(0|e)>=64;)T(t),t=t+64|0,e=e-64|0,s=s+64|0;return l=l+s|0,l>>>0<s>>>0&&(f=f+1|0),0|s}function B(t,e,s){let n=0,i=0;if(63&(t|=0))return-1;if(~(s|=0)&&31&s)return-1;if((0|(e|=0))>=64){if(n=0|z(t,e),-1==(0|n))return-1;t=t+n|0,e=e-n|0}if(n=n+e|0,l=l+e|0,l>>>0<e>>>0&&(f=f+1|0),U[t|e]=128,(0|e)>=56){for(i=e+1|0;(0|i)<64;i=i+1|0)U[t|i]=0;T(t),e=0,U[0|t]=0}for(i=e+1|0;(0|i)<59;i=i+1|0)U[t|i]=0;return U[56|t]=f>>>21&255,U[57|t]=f>>>13&255,U[58|t]=f>>>5&255,U[59|t]=f<<3&255|l>>>29,U[60|t]=l>>>21&255,U[61|t]=l>>>13&255,U[62|t]=l>>>5&255,U[63|t]=l<<3&255,T(t),~s&&x(s),0|n}function k(){s=u,n=p,i=_,r=A,h=g,a=w,o=y,c=E,l=64,f=0}function R(){s=C,n=m,i=d,r=S,h=b,a=v,o=D,c=M,l=64,f=0}function G(t,e,l){let f=0,u=0,p=0,_=0,A=0,g=0,w=0,y=0,E=0;return 63&(t|=0)||~(l|=0)&&31&l?-1:(E=0|B(t,e|=0,-1),f=s,u=n,p=i,_=r,A=h,g=a,w=o,y=c,R(),H(f,u,p,_,A,g,w,y,2147483648,0,0,0,0,0,0,768),~l&&x(l),0|E)}return{reset:P,init:function(t,e,u,p,_,A,g,w,y,E){s=t|=0,n=e|=0,i=u|=0,r=p|=0,h=_|=0,a=A|=0,o=g|=0,c=w|=0,l=y|=0,f=E|=0},process:z,finish:B,hmac_reset:k,hmac_init:function(t,e,U,T,x,z,B,k,R,G,N,L,I,O,Z,K){t|=0,e|=0,U|=0,T|=0,x|=0,z|=0,B|=0,k|=0,R|=0,G|=0,N|=0,L|=0,I|=0,O|=0,Z|=0,K|=0,P(),H(1549556828^t,1549556828^e,1549556828^U,1549556828^T,1549556828^x,1549556828^z,1549556828^B,1549556828^k,1549556828^R,1549556828^G,1549556828^N,1549556828^L,1549556828^I,1549556828^O,1549556828^Z,1549556828^K),C=s,m=n,d=i,S=r,b=h,v=a,D=o,M=c,P(),H(909522486^t,909522486^e,909522486^U,909522486^T,909522486^x,909522486^z,909522486^B,909522486^k,909522486^R,909522486^G,909522486^N,909522486^L,909522486^I,909522486^O,909522486^Z,909522486^K),u=s,p=n,_=i,A=r,g=h,w=a,y=o,E=c,l=64,f=0},hmac_finish:G,pbkdf2_generate_block:function(t,e,l,f,u){l|=0,f|=0;let p=0,_=0,A=0,g=0,w=0,y=0,E=0,C=0,m=0,d=0,S=0,b=0,v=0,D=0,M=0,T=0;if(63&(t|=0))return-1;if(~(u|=0)&&31&u)return-1;for(U[t+(e|=0)|0]=l>>>24,U[t+e+1|0]=l>>>16&255,U[t+e+2|0]=l>>>8&255,U[t+e+3|0]=255&l,G(t,e+4|0,-1),p=m=s,_=d=n,A=S=i,g=b=r,w=v=h,y=D=a,E=M=o,C=T=c,f=f-1|0;(0|f)>0;)k(),H(m,d,S,b,v,D,M,T,2147483648,0,0,0,0,0,0,768),m=s,d=n,S=i,b=r,v=h,D=a,M=o,T=c,R(),H(m,d,S,b,v,D,M,T,2147483648,0,0,0,0,0,0,768),m=s,d=n,S=i,b=r,v=h,D=a,M=o,T=c,p^=s,_^=n,A^=i,g^=r,w^=h,y^=a,E^=o,C^=c,f=f-1|0;return s=p,n=_,i=A,r=g,h=w,a=y,o=E,c=C,~u&&x(u),0}}}(0,this.heap.buffer),this.reset()}}H.NAME="sha256";class T{constructor(t,e,s){if(!t.HASH_SIZE)throw new SyntaxError("option 'hash' supplied doesn't seem to be a valid hash function");this.hash=t,this.BLOCK_SIZE=this.hash.BLOCK_SIZE,this.HMAC_SIZE=this.hash.HASH_SIZE,this.result=null,this.key=function(t,e){const s=new Uint8Array(t.BLOCK_SIZE);e.length>t.BLOCK_SIZE?s.set(t.reset().process(e).finish().result):s.set(e);return s}(this.hash,e);const n=new Uint8Array(this.key);for(let t=0;t<n.length;++t)n[t]^=54;this.hash.reset().process(n),void 0!==s?this._hmac_init_verify(s):this.verify=null}process(e){if(null!==this.result)throw new t("state must be reset before processing new data");return this.hash.process(e),this}finish(){if(null!==this.result)throw new t("state must be reset before processing new data");const e=this.hash.finish().result,s=new Uint8Array(this.key);for(let t=0;t<s.length;++t)s[t]^=92;const n=this.verify,i=this.hash.reset().process(s).process(e).finish().result;if(n){if(n.length!==i.length)throw new Error("HMAC verification failed, lengths doesn't match");{let t=0;for(let e=0;e<n.length;e++)t|=n[e]^i[e];if(0!==t)throw new Error("HMAC verification failed, hash value doesn't match")}}return this.result=i,this}_hmac_init_verify(t){if(t.length!==this.HMAC_SIZE)throw new e("illegal verification tag size");this.verify=t}}class x extends T{static sha(t,e,s){return new x(e,s).process(t).finish().result}constructor(t,e){return super(new D,t,e),this.reset(),void 0!==e?this._hmac_init_verify(e):this.verify=null,this}reset(){this.result=null;const t=this.key;return this.hash.reset().asm.hmac_init(t[0]<<24|t[1]<<16|t[2]<<8|t[3],t[4]<<24|t[5]<<16|t[6]<<8|t[7],t[8]<<24|t[9]<<16|t[10]<<8|t[11],t[12]<<24|t[13]<<16|t[14]<<8|t[15],t[16]<<24|t[17]<<16|t[18]<<8|t[19],t[20]<<24|t[21]<<16|t[22]<<8|t[23],t[24]<<24|t[25]<<16|t[26]<<8|t[27],t[28]<<24|t[29]<<16|t[30]<<8|t[31],t[32]<<24|t[33]<<16|t[34]<<8|t[35],t[36]<<24|t[37]<<16|t[38]<<8|t[39],t[40]<<24|t[41]<<16|t[42]<<8|t[43],t[44]<<24|t[45]<<16|t[46]<<8|t[47],t[48]<<24|t[49]<<16|t[50]<<8|t[51],t[52]<<24|t[53]<<16|t[54]<<8|t[55],t[56]<<24|t[57]<<16|t[58]<<8|t[59],t[60]<<24|t[61]<<16|t[62]<<8|t[63]),this}finish(){if(null!==this.result)throw new t("state must be reset before processing new data");const e=this.hash,s=this.hash.asm,n=this.hash.heap;s.hmac_finish(e.pos,e.len,0);const i=this.verify,r=new Uint8Array(20);if(r.set(n.subarray(0,20)),i){if(i.length!==r.length)throw new Error("HMAC verification failed, lengths doesn't match");{let t=0;for(let e=0;e<i.length;e++)t|=i[e]^r[e];if(0!==t)throw new Error("HMAC verification failed, hash value doesn't match")}}else this.result=r;return this}}class P extends T{static sha(t,e,s){return new P(e,s).process(t).finish().result}constructor(t,e){return super(new H,t,e),this.reset(),void 0!==e?this._hmac_init_verify(e):this.verify=null,this}reset(){const t=this.key;return this.hash.reset().asm.hmac_init(t[0]<<24|t[1]<<16|t[2]<<8|t[3],t[4]<<24|t[5]<<16|t[6]<<8|t[7],t[8]<<24|t[9]<<16|t[10]<<8|t[11],t[12]<<24|t[13]<<16|t[14]<<8|t[15],t[16]<<24|t[17]<<16|t[18]<<8|t[19],t[20]<<24|t[21]<<16|t[22]<<8|t[23],t[24]<<24|t[25]<<16|t[26]<<8|t[27],t[28]<<24|t[29]<<16|t[30]<<8|t[31],t[32]<<24|t[33]<<16|t[34]<<8|t[35],t[36]<<24|t[37]<<16|t[38]<<8|t[39],t[40]<<24|t[41]<<16|t[42]<<8|t[43],t[44]<<24|t[45]<<16|t[46]<<8|t[47],t[48]<<24|t[49]<<16|t[50]<<8|t[51],t[52]<<24|t[53]<<16|t[54]<<8|t[55],t[56]<<24|t[57]<<16|t[58]<<8|t[59],t[60]<<24|t[61]<<16|t[62]<<8|t[63]),this}finish(){if(null===this.key)throw new t("no key is associated with the instance");if(null!==this.result)throw new t("state must be reset before processing new data");const e=this.hash,s=this.hash.asm,n=this.hash.heap;s.hmac_finish(e.pos,e.len,0);const i=this.verify,r=new Uint8Array(32);if(r.set(n.subarray(0,32)),i){if(i.length!==r.length)throw new Error("HMAC verification failed, lengths doesn't match");{let t=0;for(let e=0;e<i.length;e++)t|=i[e]^r[e];if(0!==t)throw new Error("HMAC verification failed, hash value doesn't match")}}else this.result=r;return this}}export{y as AES,m as AES_CBC,d as AES_CCM,C as AES_ECB,E as AES_GCM,x as HmacSha1,P as HmacSha256,e as IllegalArgumentError,t as IllegalStateError,s as SecurityError,D as Sha1,H as Sha256,b as _sha1_block_size,v as _sha1_hash_size,M as _sha256_block_size,U as _sha256_hash_size};
|
package/index.js
CHANGED
|
@@ -1,6 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});class t extends Error{constructor(...t){super(...t)}}class e extends Error{constructor(...t){super(...t)}}class s extends Error{constructor(...t){super(...t)}}function n(t){return t instanceof Uint8Array}function i(t,e,s,n,i){const r=t.length-e,a=r<i?r:i;return t.set(s.subarray(n,n+a),e),a}function r(...t){const e=t.reduce(((t,e)=>t+e.length),0),s=new Uint8Array(e);let n=0;for(let e=0;e<t.length;e++)s.set(t[e],n),n+=t[e].length;return s}
|
|
2
|
-
/**
|
|
3
|
-
* @file {@link http://asmjs.org Asm.js} implementation of the {@link https://en.wikipedia.org/wiki/Advanced_Encryption_Standard Advanced Encryption Standard}.
|
|
4
|
-
* @author Artem S Vybornov <vybornov@gmail.com>
|
|
5
|
-
* @license MIT
|
|
6
|
-
*/let a,h,o=!1;function c(t,e){let s=a[(h[t]+h[e])%255];return 0!==t&&0!==e||(s=0),s}let l,A,p,u,_=!1;function f(){function t(t){let e,s,n;for(s=n=function(t){let e=a[255-h[t]];return 0===t&&(e=0),e}(t),e=0;e<4;e++)s=255&(s<<1|s>>>7),n^=s;return n^=99,n}o||function(){a=[],h=[];let t,e,s=1;for(t=0;t<255;t++)a[t]=s,e=128&s,s<<=1,s&=255,128===e&&(s^=27),s^=a[t],h[a[t]]=t;a[255]=a[0],h[0]=0,o=!0}(),l=[],A=[],p=[[],[],[],[]],u=[[],[],[],[]];for(let e=0;e<256;e++){const s=t(e);l[e]=s,A[s]=e,p[0][e]=c(2,s)<<24|s<<16|s<<8|c(3,s),u[0][s]=c(14,e)<<24|c(9,e)<<16|c(13,e)<<8|c(11,e);for(let t=1;t<4;t++)p[t][e]=p[t-1][e]>>>8|p[t-1][e]<<24,u[t][s]=u[t-1][s]>>>8|u[t-1][s]<<24}_=!0}class g{constructor(t,e){return function(t,e){_||f();const s=new Uint32Array(e);s.set(l,512),s.set(A,768);for(let t=0;t<4;t++)s.set(p[t],4096+1024*t>>2),s.set(u[t],8192+1024*t>>2);function n(t,e,n,r,a,h,o,c,A){const p=s.subarray(0,60),_=s.subarray(256,316);p.set([e,n,r,a,h,o,c,A]);let f=t;for(let e=1;f<4*t+28;f++){let s=p[f-1];(f%t==0||8===t&&f%t==4)&&(s=l[s>>>24]<<24^l[s>>>16&255]<<16^l[s>>>8&255]<<8^l[255&s]),f%t==0&&(s=s<<8^s>>>24^e<<24,e=e<<1^(128&e?27:0)),p[f]=p[f-t]^s}for(let t=0;t<f;t+=4)for(let e=0;e<4;e++){const s=p[f-(4+t)+(4-e)%4];_[t+e]=t<4||t>=f-4?s:u[0][l[s>>>24]]^u[1][l[s>>>16&255]]^u[2][l[s>>>8&255]]^u[3][l[255&s]]}i.set_rounds(t+5)}const i=function(t,e){"use asm";let s=0,i=0,r=0,a=0,h=0,o=0,c=0,l=0,A=0,p=0,u=0,_=0,f=0,g=0,y=0,E=0,C=0,w=0,d=0,m=0,D=0;const S=new Uint32Array(e),T=new Uint8Array(e);function U(t,e,n,h,o,c,l,A){t=t|0;e=e|0;n=n|0;h=h|0;o=o|0;c=c|0;l=l|0;A=A|0;let p=0,u=0,_=0,f=0,g=0,y=0,E=0,C=0;p=n|0x400,u=n|0x800,_=n|0xc00;o=o^S[(t|0)>>2],c=c^S[(t|4)>>2],l=l^S[(t|8)>>2],A=A^S[(t|12)>>2];for(C=16;(C|0)<=h<<4;C=C+16|0){f=S[(n|o>>22&1020)>>2]^S[(p|c>>14&1020)>>2]^S[(u|l>>6&1020)>>2]^S[(_|A<<2&1020)>>2]^S[(t|C|0)>>2],g=S[(n|c>>22&1020)>>2]^S[(p|l>>14&1020)>>2]^S[(u|A>>6&1020)>>2]^S[(_|o<<2&1020)>>2]^S[(t|C|4)>>2],y=S[(n|l>>22&1020)>>2]^S[(p|A>>14&1020)>>2]^S[(u|o>>6&1020)>>2]^S[(_|c<<2&1020)>>2]^S[(t|C|8)>>2],E=S[(n|A>>22&1020)>>2]^S[(p|o>>14&1020)>>2]^S[(u|c>>6&1020)>>2]^S[(_|l<<2&1020)>>2]^S[(t|C|12)>>2];o=f,c=g,l=y,A=E}s=S[(e|o>>22&1020)>>2]<<24^S[(e|c>>14&1020)>>2]<<16^S[(e|l>>6&1020)>>2]<<8^S[(e|A<<2&1020)>>2]^S[(t|C|0)>>2],i=S[(e|c>>22&1020)>>2]<<24^S[(e|l>>14&1020)>>2]<<16^S[(e|A>>6&1020)>>2]<<8^S[(e|o<<2&1020)>>2]^S[(t|C|4)>>2],r=S[(e|l>>22&1020)>>2]<<24^S[(e|A>>14&1020)>>2]<<16^S[(e|o>>6&1020)>>2]<<8^S[(e|c<<2&1020)>>2]^S[(t|C|8)>>2],a=S[(e|A>>22&1020)>>2]<<24^S[(e|o>>14&1020)>>2]<<16^S[(e|c>>6&1020)>>2]<<8^S[(e|l<<2&1020)>>2]^S[(t|C|12)>>2]}function M(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;U(0x0000,0x0800,0x1000,D,t,e,s,n)}function b(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;let r=0;U(0x0400,0x0c00,0x2000,D,t,n,s,e);r=i,i=a,a=r}function x(t,e,n,A){t=t|0;e=e|0;n=n|0;A=A|0;U(0x0000,0x0800,0x1000,D,h^t,o^e,c^n,l^A);h=s,o=i,c=r,l=a}function P(t,e,n,A){t=t|0;e=e|0;n=n|0;A=A|0;let p=0;U(0x0400,0x0c00,0x2000,D,t,A,n,e);p=i,i=a,a=p;s=s^h,i=i^o,r=r^c,a=a^l;h=t,o=e,c=n,l=A}function v(t,e,n,A){t=t|0;e=e|0;n=n|0;A=A|0;U(0x0000,0x0800,0x1000,D,h,o,c,l);h=s=s^t,o=i=i^e,c=r=r^n,l=a=a^A}function H(t,e,n,A){t=t|0;e=e|0;n=n|0;A=A|0;U(0x0000,0x0800,0x1000,D,h,o,c,l);s=s^t,i=i^e,r=r^n,a=a^A;h=t,o=e,c=n,l=A}function z(t,e,n,A){t=t|0;e=e|0;n=n|0;A=A|0;U(0x0000,0x0800,0x1000,D,h,o,c,l);h=s,o=i,c=r,l=a;s=s^t,i=i^e,r=r^n,a=a^A}function G(t,e,n,h){t=t|0;e=e|0;n=n|0;h=h|0;U(0x0000,0x0800,0x1000,D,A,p,u,_);_=~E&_|E&_+1;u=~y&u|y&u+Number((_|0)===0);p=~g&p|g&p+Number((u|0)===0);A=~f&A|f&A+Number((p|0)===0);s=s^t;i=i^e;r=r^n;a=a^h}function R(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;let i=0,r=0,a=0,A=0,p=0,u=0,_=0,f=0,g=0,y=0;t=t^h,e=e^o,s=s^c,n=n^l;i=C|0,r=w|0,a=d|0,A=m|0;for(;(g|0)<128;g=g+1|0){if(i>>>31){p=p^t,u=u^e,_=_^s,f=f^n}i=i<<1|r>>>31,r=r<<1|a>>>31,a=a<<1|A>>>31,A=A<<1;y=n&1;n=n>>>1|s<<31,s=s>>>1|e<<31,e=e>>>1|t<<31,t=t>>>1;if(y)t=t^0xe1000000}h=p,o=u,c=_,l=f}function B(t){t=t|0;D=t}function N(t,e,n,h){t=t|0;e=e|0;n=n|0;h=h|0;s=t,i=e,r=n,a=h}function k(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;h=t,o=e,c=s,l=n}function L(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;A=t,p=e,u=s,_=n}function O(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;f=t,g=e,y=s,E=n}function V(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;_=~E&_|E&n,u=~y&u|y&s,p=~g&p|g&e,A=~f&A|f&t}function F(t){t=t|0;if(t&15)return-1;T[t|0]=s>>>24,T[t|1]=s>>>16&255,T[t|2]=s>>>8&255,T[t|3]=s&255,T[t|4]=i>>>24,T[t|5]=i>>>16&255,T[t|6]=i>>>8&255,T[t|7]=i&255,T[t|8]=r>>>24,T[t|9]=r>>>16&255,T[t|10]=r>>>8&255,T[t|11]=r&255,T[t|12]=a>>>24,T[t|13]=a>>>16&255,T[t|14]=a>>>8&255,T[t|15]=a&255;return 16}function I(t){t=t|0;if(t&15)return-1;T[t|0]=h>>>24,T[t|1]=h>>>16&255,T[t|2]=h>>>8&255,T[t|3]=h&255,T[t|4]=o>>>24,T[t|5]=o>>>16&255,T[t|6]=o>>>8&255,T[t|7]=o&255,T[t|8]=c>>>24,T[t|9]=c>>>16&255,T[t|10]=c>>>8&255,T[t|11]=c&255,T[t|12]=l>>>24,T[t|13]=l>>>16&255,T[t|14]=l>>>8&255,T[t|15]=l&255;return 16}function j(){M(0,0,0,0);C=s,w=i,d=r,m=a}function q(t,e,n){t=t|0;e=e|0;n=n|0;let h=0;if(e&15)return-1;while((n|0)>=16){K[t&7](T[e|0]<<24|T[e|1]<<16|T[e|2]<<8|T[e|3],T[e|4]<<24|T[e|5]<<16|T[e|6]<<8|T[e|7],T[e|8]<<24|T[e|9]<<16|T[e|10]<<8|T[e|11],T[e|12]<<24|T[e|13]<<16|T[e|14]<<8|T[e|15]);T[e|0]=s>>>24,T[e|1]=s>>>16&255,T[e|2]=s>>>8&255,T[e|3]=s&255,T[e|4]=i>>>24,T[e|5]=i>>>16&255,T[e|6]=i>>>8&255,T[e|7]=i&255,T[e|8]=r>>>24,T[e|9]=r>>>16&255,T[e|10]=r>>>8&255,T[e|11]=r&255,T[e|12]=a>>>24,T[e|13]=a>>>16&255,T[e|14]=a>>>8&255,T[e|15]=a&255;h=h+16|0,e=e+16|0,n=n-16|0}return h|0}function J(t,e,s){t=t|0;e=e|0;s=s|0;let n=0;if(e&15)return-1;while((s|0)>=16){Q[t&1](T[e|0]<<24|T[e|1]<<16|T[e|2]<<8|T[e|3],T[e|4]<<24|T[e|5]<<16|T[e|6]<<8|T[e|7],T[e|8]<<24|T[e|9]<<16|T[e|10]<<8|T[e|11],T[e|12]<<24|T[e|13]<<16|T[e|14]<<8|T[e|15]);n=n+16|0,e=e+16|0,s=s-16|0}return n|0}const K=[M,b,x,P,v,H,z,G];const Q=[x,R];return{set_rounds:B,set_state:N,set_iv:k,set_nonce:L,set_mask:O,set_counter:V,get_state:F,get_iv:I,gcm_init:j,cipher:q,mac:J,set_key:n}}(t,e);return i}(t,e)}set_key(t,e,s,n,i,r,a,h,o){}set_iv(t,e,s,n){}set_mask(t,e,s,n){}set_nonce(t,e,s,n){}set_counter(t,e,s,n){}cipher(t,e,s){return 0}gcm_init(){}get_iv(t){return 16}mac(t,e,s){return 0}get_state(t){return 16}}g.ENC={ECB:0,CBC:2,CFB:4,OFB:6,CTR:7},g.DEC={ECB:1,CBC:3,CFB:5,OFB:6,CTR:7},g.MAC={CBC:0,GCM:1},g.HEAP_DATA=16384;class y{constructor(t,s,n=!0,i,r,a){this.pos=0,this.len=0,this.mode=i,this.heap=r||function(t,e){const s=t?t.byteLength:e||65536;if(4095&s||s<=0)throw new Error("heap size must be a positive integer and a multiple of 4096");return t||new Uint8Array(new ArrayBuffer(s))}().subarray(g.HEAP_DATA),this.asm=a||new g(null,this.heap.buffer),this.pos=0,this.len=0;const h=t.length;if(16!==h&&24!==h&&32!==h)throw new e("illegal key size");const o=new DataView(t.buffer,t.byteOffset,t.byteLength);if(this.asm.set_key(h>>2,o.getUint32(0),o.getUint32(4),o.getUint32(8),o.getUint32(12),h>16?o.getUint32(16):0,h>16?o.getUint32(20):0,h>24?o.getUint32(24):0,h>24?o.getUint32(28):0),void 0!==s){if(16!==s.length)throw new e("illegal iv size");const t=new DataView(s.buffer,s.byteOffset,s.byteLength);this.asm.set_iv(t.getUint32(0),t.getUint32(4),t.getUint32(8),t.getUint32(12))}else this.asm.set_iv(0,0,0,0);this.padding=n}AES_Encrypt_process(t){if(!n(t))throw new TypeError("data isn't of expected type");const e=this.asm,s=this.heap,r=g.ENC[this.mode],a=g.HEAP_DATA;let h=this.pos,o=this.len,c=0,l=t.length||0,A=0;let p=0;const u=new Uint8Array(o+l&-16);for(;l>0;)p=i(s,h+o,t,c,l),o+=p,c+=p,l-=p,p=e.cipher(r,a+h,o),p&&u.set(s.subarray(h,h+p),A),A+=p,p<o?(h+=p,o-=p):(h=0,o=0);return this.pos=h,this.len=o,u}AES_Encrypt_finish(){const t=this.asm,s=this.heap,n=g.ENC[this.mode],i=g.HEAP_DATA,r=this.pos;let a=this.len;const h=16-a%16;let o=a;if(this.hasOwnProperty("padding")){if(this.padding){for(let t=0;t<h;++t)s[r+a+t]=h;a+=h,o=a}else if(a%16)throw new e("data length must be a multiple of the block size")}else a+=h;const c=new Uint8Array(o);return a&&t.cipher(n,i+r,a),o&&c.set(s.subarray(r,r+o)),this.pos=0,this.len=0,c}AES_Decrypt_process(t){if(!n(t))throw new TypeError("data isn't of expected type");const e=this.asm,s=this.heap,r=g.DEC[this.mode],a=g.HEAP_DATA;let h=this.pos,o=this.len,c=0,l=t.length||0,A=0,p=o+l&-16,u=0,_=0;this.padding&&(u=o+l-p||16,p-=u);const f=new Uint8Array(p);for(;l>0;)_=i(s,h+o,t,c,l),o+=_,c+=_,l-=_,_=e.cipher(r,a+h,o-(l?0:u)),_&&f.set(s.subarray(h,h+_),A),A+=_,_<o?(h+=_,o-=_):(h=0,o=0);return this.pos=h,this.len=o,f}AES_Decrypt_finish(){const t=this.asm,n=this.heap,i=g.DEC[this.mode],r=g.HEAP_DATA,a=this.pos;let h=this.len,o=h;if(h>0){if(h%16){if(this.hasOwnProperty("padding"))throw new e("data length must be a multiple of the block size");h+=16-h%16}if(t.cipher(i,r+a,h),this.hasOwnProperty("padding")&&this.padding){const t=n[a+o-1];if(t<1||t>16||t>o)throw new s("bad padding");let e=0;for(let s=t;s>1;s--)e|=t^n[a+o-s];if(e)throw new s("bad padding");o-=t}}const c=new Uint8Array(o);return o>0&&c.set(n.subarray(a,a+o)),this.pos=0,this.len=0,c}}class E{constructor(t,s,n,i=16,r){if(this.tagSize=i,this.gamma0=0,this.counter=1,this.aes=r||new y(t,void 0,!1,"CTR"),this.aes.asm.gcm_init(),this.tagSize<4||this.tagSize>16)throw new e("illegal tagSize value");const a=s.length||0,h=new Uint8Array(16);12!==a?(this._gcm_mac_process(s),this.aes.heap[0]=0,this.aes.heap[1]=0,this.aes.heap[2]=0,this.aes.heap[3]=0,this.aes.heap[4]=0,this.aes.heap[5]=0,this.aes.heap[6]=0,this.aes.heap[7]=0,this.aes.heap[8]=0,this.aes.heap[9]=0,this.aes.heap[10]=0,this.aes.heap[11]=a>>>29,this.aes.heap[12]=a>>>21&255,this.aes.heap[13]=a>>>13&255,this.aes.heap[14]=a>>>5&255,this.aes.heap[15]=a<<3&255,this.aes.asm.mac(g.MAC.GCM,g.HEAP_DATA,16),this.aes.asm.get_iv(g.HEAP_DATA),this.aes.asm.set_iv(0,0,0,0),h.set(this.aes.heap.subarray(0,16))):(h.set(s),h[15]=1);const o=new DataView(h.buffer);if(this.gamma0=o.getUint32(12),this.aes.asm.set_nonce(o.getUint32(0),o.getUint32(4),o.getUint32(8),0),this.aes.asm.set_mask(0,0,0,4294967295),void 0!==n){if(n.length>68719476704)throw new e("illegal adata length");n.length?(this.adata=n,this._gcm_mac_process(n)):this.adata=void 0}else this.adata=void 0;if(this.counter<1||this.counter>4294967295)throw new RangeError("counter must be a positive 32-bit integer");this.aes.asm.set_counter(0,0,0,this.gamma0+this.counter|0)}static encrypt(t,e,s,n,i){return new E(e,s,n,i).encrypt(t)}static decrypt(t,e,s,n,i){return new E(e,s,n,i).decrypt(t)}encrypt(t){return this.AES_GCM_encrypt(t)}decrypt(t){return this.AES_GCM_decrypt(t)}AES_GCM_Encrypt_process(t){let e=0,s=t.length||0;const n=this.aes.asm,r=this.aes.heap;let a=this.counter,h=this.aes.pos,o=this.aes.len,c=0;const l=o+s&-16;let A=0;if((a-1<<4)+o+s>68719476704)throw new RangeError("counter overflow");const p=new Uint8Array(l);for(;s>0;)A=i(r,h+o,t,e,s),o+=A,e+=A,s-=A,A=n.cipher(g.ENC.CTR,g.HEAP_DATA+h,o),A=n.mac(g.MAC.GCM,g.HEAP_DATA+h,A),A&&p.set(r.subarray(h,h+A),c),a+=A>>>4,c+=A,A<o?(h+=A,o-=A):(h=0,o=0);return this.counter=a,this.aes.pos=h,this.aes.len=o,p}AES_GCM_Encrypt_finish(){const t=this.aes.asm,e=this.aes.heap,s=this.counter,n=this.tagSize,i=this.adata,r=this.aes.pos,a=this.aes.len,h=new Uint8Array(a+n);t.cipher(g.ENC.CTR,g.HEAP_DATA+r,a+15&-16),a&&h.set(e.subarray(r,r+a));let o=a;for(;15&o;o++)e[r+o]=0;t.mac(g.MAC.GCM,g.HEAP_DATA+r,o);const c=void 0!==i?i.length:0,l=(s-1<<4)+a;return e[0]=0,e[1]=0,e[2]=0,e[3]=c>>>29,e[4]=c>>>21,e[5]=c>>>13&255,e[6]=c>>>5&255,e[7]=c<<3&255,e[8]=e[9]=e[10]=0,e[11]=l>>>29,e[12]=l>>>21&255,e[13]=l>>>13&255,e[14]=l>>>5&255,e[15]=l<<3&255,t.mac(g.MAC.GCM,g.HEAP_DATA,16),t.get_iv(g.HEAP_DATA),t.set_counter(0,0,0,this.gamma0),t.cipher(g.ENC.CTR,g.HEAP_DATA,16),h.set(e.subarray(0,n),a),this.counter=1,this.aes.pos=0,this.aes.len=0,h}AES_GCM_Decrypt_process(t){let e=0,s=t.length||0;const n=this.aes.asm,r=this.aes.heap;let a=this.counter;const h=this.tagSize;let o=this.aes.pos,c=this.aes.len,l=0;const A=c+s>h?c+s-h&-16:0,p=c+s-A;let u=0;if((a-1<<4)+c+s>68719476704)throw new RangeError("counter overflow");const _=new Uint8Array(A);for(;s>p;)u=i(r,o+c,t,e,s-p),c+=u,e+=u,s-=u,u=n.mac(g.MAC.GCM,g.HEAP_DATA+o,u),u=n.cipher(g.DEC.CTR,g.HEAP_DATA+o,u),u&&_.set(r.subarray(o,o+u),l),a+=u>>>4,l+=u,o=0,c=0;return s>0&&(c+=i(r,0,t,e,s)),this.counter=a,this.aes.pos=o,this.aes.len=c,_}AES_GCM_Decrypt_finish(){const e=this.aes.asm,n=this.aes.heap,i=this.tagSize,r=this.adata,a=this.counter,h=this.aes.pos,o=this.aes.len,c=o-i;if(o<i)throw new t("authentication tag not found");const l=new Uint8Array(c),A=new Uint8Array(n.subarray(h+c,h+o));let p=c;for(;15&p;p++)n[h+p]=0;e.mac(g.MAC.GCM,g.HEAP_DATA+h,p),e.cipher(g.DEC.CTR,g.HEAP_DATA+h,p),c&&l.set(n.subarray(h,h+c));const u=void 0!==r?r.length:0,_=(a-1<<4)+o-i;n[0]=0,n[1]=0,n[2]=0,n[3]=u>>>29,n[4]=u>>>21,n[5]=u>>>13&255,n[6]=u>>>5&255,n[7]=u<<3&255,n[8]=n[9]=n[10]=0,n[11]=_>>>29,n[12]=_>>>21&255,n[13]=_>>>13&255,n[14]=_>>>5&255,n[15]=_<<3&255,e.mac(g.MAC.GCM,g.HEAP_DATA,16),e.get_iv(g.HEAP_DATA),e.set_counter(0,0,0,this.gamma0),e.cipher(g.ENC.CTR,g.HEAP_DATA,16);let f=0;for(let t=0;t<i;++t)f|=A[t]^n[t];if(f)throw new s("data integrity check failed");return this.counter=1,this.aes.pos=0,this.aes.len=0,l}AES_GCM_decrypt(t){const e=this.AES_GCM_Decrypt_process(t),s=this.AES_GCM_Decrypt_finish(),n=new Uint8Array(e.length+s.length);return e.length&&n.set(e),s.length&&n.set(s,e.length),n}AES_GCM_encrypt(t){const e=this.AES_GCM_Encrypt_process(t),s=this.AES_GCM_Encrypt_finish(),n=new Uint8Array(e.length+s.length);return e.length&&n.set(e),s.length&&n.set(s,e.length),n}_gcm_mac_process(t){const e=this.aes.heap,s=this.aes.asm;let n=0,r=t.length||0,a=0;for(;r>0;){for(a=i(e,0,t,n,r),n+=a,r-=a;15&a;)e[a++]=0;s.mac(g.MAC.GCM,g.HEAP_DATA,a)}}}class C{constructor(t,e=!1,s){this.aes=s||new y(t,void 0,e,"ECB")}static encrypt(t,e,s=!1){return new C(e,s).encrypt(t)}static decrypt(t,e,s=!1){return new C(e,s).decrypt(t)}encrypt(t){return r(this.aes.AES_Encrypt_process(t),this.aes.AES_Encrypt_finish())}decrypt(t){return r(this.aes.AES_Decrypt_process(t),this.aes.AES_Decrypt_finish())}}class w{constructor(t,e,s=!0,n){this.aes=n||new y(t,e,s,"CBC")}static encrypt(t,e,s=!0,n){return new w(e,n,s).encrypt(t)}static decrypt(t,e,s=!0,n){return new w(e,n,s).decrypt(t)}encrypt(t){return r(this.aes.AES_Encrypt_process(t),this.aes.AES_Encrypt_finish())}decrypt(t){return r(this.aes.AES_Decrypt_process(t),this.aes.AES_Decrypt_finish())}}class d{constructor(t,s,n,i=16,r,a){if(this.counter=1,this.dataLength=-1,this.aes=a||new y(t,void 0,void 0,"CCM"),i<4||i>16||1&i)throw new e("illegal tagSize value");if(this.tagSize=i,this.nonce=s,s.length<8||s.length>13)throw new e("illegal nonce length");if(this.lengthSize=15-s.length,(s=new Uint8Array(s.length+1))[0]=this.lengthSize-1,s.set(this.nonce,1),r<0||r>0xffffffffffff0||r>Math.pow(2,8*this.lengthSize)-16)throw new e("illegal dataLength value");if(void 0!==n){if(n.length>65279)throw new e("illegal adata length");this.adata=n.length?n:void 0}this.dataLength=r,this.counter=1,this.AES_CCM_calculate_iv(),this.AES_CTR_set_options(s,this.counter,8*this.lengthSize)}static encrypt(t,e,s,n,i=16){return new d(e,s,n,i,t.length).encrypt(t)}static decrypt(t,e,s,n,i=16){return new d(e,s,n,i,t.length-i).decrypt(t)}encrypt(t){this.dataLength=t.length||0;const e=this.AES_CCM_Encrypt_process(t),s=this.AES_CCM_Encrypt_finish(),n=new Uint8Array(e.length+s.length);return e.length&&n.set(e),s.length&&n.set(s,e.length),n}decrypt(t){this.dataLength=t.length||0;const e=this.AES_CCM_Decrypt_process(t),s=this.AES_CCM_Decrypt_finish(),n=new Uint8Array(e.length+s.length);return e.length&&n.set(e),s.length&&n.set(s,e.length),n}AES_CCM_calculate_iv(){const t=this.nonce,e=this.adata,s=this.tagSize,n=this.lengthSize,i=this.dataLength,r=new Uint8Array(16+(e?2+e.length:0));r[0]=(e?64:0)|s-2<<2|n-1,r.set(t,1),n>6&&(r[9]=i/4294967296>>>16&15),n>5&&(r[10]=i/4294967296>>>8&255),n>4&&(r[11]=i/4294967296&255),n>3&&(r[12]=i>>>24),n>2&&(r[13]=i>>>16&255),r[14]=i>>>8&255,r[15]=255&i,e&&(r[16]=e.length>>>8&255,r[17]=255&e.length,r.set(e,18)),this._cbc_mac_process(r),this.aes.asm.get_state(g.HEAP_DATA);const a=new Uint8Array(this.aes.heap.subarray(0,16)),h=new DataView(a.buffer,a.byteOffset,a.byteLength);this.aes.asm.set_iv(h.getUint32(0),h.getUint32(4),h.getUint32(8),h.getUint32(12))}_cbc_mac_process(t){const e=this.aes.heap,s=this.aes.asm;let n=0,r=t.length||0,a=0;for(;r>0;){for(a=i(e,0,t,n,r);15&a;)e[a++]=0;n+=a,r-=a,s.mac(g.MAC.CBC,g.HEAP_DATA,a)}}AES_CCM_Encrypt_process(t){const e=this.aes.asm,s=this.aes.heap;let n=0,r=t.length||0,a=this.counter,h=this.aes.pos,o=this.aes.len;const c=o+r&-16;let l=0,A=0;if((a-1<<4)+o+r>0xffffffffffff0)throw new RangeError("counter overflow");const p=new Uint8Array(c);for(;r>0;)A=i(s,h+o,t,n,r),o+=A,n+=A,r-=A,A=e.mac(g.MAC.CBC,g.HEAP_DATA+h,o),A=e.cipher(g.ENC.CTR,g.HEAP_DATA+h,A),A&&p.set(s.subarray(h,h+A),l),a+=A>>>4,l+=A,A<o?(h+=A,o-=A):(h=0,o=0);return this.counter=a,this.aes.pos=h,this.aes.len=o,p}AES_CCM_Encrypt_finish(){const t=this.aes.asm,e=this.aes.heap,s=this.tagSize,n=this.aes.pos,i=this.aes.len,r=new Uint8Array(i+s);let a=i;for(;15&a;a++)e[n+a]=0;return t.mac(g.MAC.CBC,g.HEAP_DATA+n,a),t.cipher(g.ENC.CTR,g.HEAP_DATA+n,a),i&&r.set(e.subarray(n,n+i)),t.set_counter(0,0,0,0),t.get_iv(g.HEAP_DATA),t.cipher(g.ENC.CTR,g.HEAP_DATA,16),r.set(e.subarray(0,s),i),this.counter=1,this.aes.pos=0,this.aes.len=0,r}AES_CCM_Decrypt_process(t){let e=0,s=t.length||0;const n=this.aes.asm,r=this.aes.heap;let a=this.counter;const h=this.tagSize;let o=this.aes.pos,c=this.aes.len,l=0;const A=c+s>h?c+s-h&-16:0,p=c+s-A;let u=0;if((a-1<<4)+c+s>0xffffffffffff0)throw new RangeError("counter overflow");const _=new Uint8Array(A);for(;s>p;)u=i(r,o+c,t,e,s-p),c+=u,e+=u,s-=u,u=n.cipher(g.DEC.CTR,g.HEAP_DATA+o,u),u=n.mac(g.MAC.CBC,g.HEAP_DATA+o,u),u&&_.set(r.subarray(o,o+u),l),a+=u>>>4,l+=u,o=0,c=0;return s>0&&(c+=i(r,0,t,e,s)),this.counter=a,this.aes.pos=o,this.aes.len=c,_}AES_CCM_Decrypt_finish(){const e=this.aes.asm,n=this.aes.heap,i=this.tagSize,r=this.aes.pos,a=this.aes.len,h=a-i;if(a<i)throw new t("authentication tag not found");const o=new Uint8Array(h),c=new Uint8Array(n.subarray(r+h,r+a));e.cipher(g.DEC.CTR,g.HEAP_DATA+r,h+15&-16),o.set(n.subarray(r,r+h));let l=h;for(;15&l;l++)n[r+l]=0;e.mac(g.MAC.CBC,g.HEAP_DATA+r,l),e.set_counter(0,0,0,0),e.get_iv(g.HEAP_DATA),e.cipher(g.ENC.CTR,g.HEAP_DATA,16);let A=0;for(let t=0;t<i;++t)A|=c[t]^n[t];if(A)throw new s("data integrity check failed");return this.counter=1,this.aes.pos=0,this.aes.len=0,o}AES_CTR_set_options(t,s,n){if(n<8||n>48)throw new e("illegal counter size");const i=Math.pow(2,n)-1;this.aes.asm.set_mask(0,0,i/4294967296|0,0|i);const r=t.length;if(!r||r>16)throw new e("illegal nonce size");this.nonce=t;const a=new DataView(new ArrayBuffer(16));if(new Uint8Array(a.buffer).set(t),this.aes.asm.set_nonce(a.getUint32(0),a.getUint32(4),a.getUint32(8),a.getUint32(12)),s<0||s>=Math.pow(2,n))throw new e("illegal counter value");this.counter=s,this.aes.asm.set_counter(0,0,s/4294967296|0,0|s)}}exports.AES=y,exports.AES_CBC=w,exports.AES_CCM=d,exports.AES_ECB=C,exports.AES_GCM=E,exports.IllegalArgumentError=e,exports.IllegalStateError=t,exports.SecurityError=s;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});class t extends Error{constructor(...t){super(...t)}}class e extends Error{constructor(...t){super(...t)}}class s extends Error{constructor(...t){super(...t)}}function n(t){return t instanceof Uint8Array}function i(t,e){const s=t?t.byteLength:e||65536;if(4095&s||s<=0)throw new Error("heap size must be a positive integer and a multiple of 4096");return t=t||new Uint8Array(new ArrayBuffer(s))}function r(t,e,s,n,i){const r=t.length-e,h=r<i?r:i;return t.set(s.subarray(n,n+h),e),h}function h(...t){const e=t.reduce(((t,e)=>t+e.length),0),s=new Uint8Array(e);let n=0;for(let e=0;e<t.length;e++)s.set(t[e],n),n+=t[e].length;return s}let a,o,c=!1;function l(t,e){let s=a[(o[t]+o[e])%255];return 0!==t&&0!==e||(s=0),s}let f,u,p,_,A=!1;function g(){function t(t){let e,s,n;for(s=n=function(t){let e=a[255-o[t]];return 0===t&&(e=0),e}(t),e=0;e<4;e++)s=255&(s<<1|s>>>7),n^=s;return n^=99,n}c||function(){a=[],o=[];let t,e,s=1;for(t=0;t<255;t++)a[t]=s,e=128&s,s<<=1,s&=255,128===e&&(s^=27),s^=a[t],o[a[t]]=t;a[255]=a[0],o[0]=0,c=!0}(),f=[],u=[],p=[[],[],[],[]],_=[[],[],[],[]];for(let e=0;e<256;e++){const s=t(e);f[e]=s,u[s]=e,p[0][e]=l(2,s)<<24|s<<16|s<<8|l(3,s),_[0][s]=l(14,e)<<24|l(9,e)<<16|l(13,e)<<8|l(11,e);for(let t=1;t<4;t++)p[t][e]=p[t-1][e]>>>8|p[t-1][e]<<24,_[t][s]=_[t-1][s]>>>8|_[t-1][s]<<24}A=!0}class w{constructor(t,e){return function(t,e){A||g();const s=new Uint32Array(e);s.set(f,512),s.set(u,768);for(let t=0;t<4;t++)s.set(p[t],4096+1024*t>>2),s.set(_[t],8192+1024*t>>2);function n(t,e,n,r,h,a,o,c,l){const u=s.subarray(0,60),p=s.subarray(256,316);u.set([e,n,r,h,a,o,c,l]);let A=t;for(let e=1;A<4*t+28;A++){let s=u[A-1];(A%t==0||8===t&&A%t==4)&&(s=f[s>>>24]<<24^f[s>>>16&255]<<16^f[s>>>8&255]<<8^f[255&s]),A%t==0&&(s=s<<8^s>>>24^e<<24,e=e<<1^(128&e?27:0)),u[A]=u[A-t]^s}for(let t=0;t<A;t+=4)for(let e=0;e<4;e++){const s=u[A-(4+t)+(4-e)%4];p[t+e]=t<4||t>=A-4?s:_[0][f[s>>>24]]^_[1][f[s>>>16&255]]^_[2][f[s>>>8&255]]^_[3][f[255&s]]}i.set_rounds(t+5)}const i=function(t,e){"use asm";let s=0,i=0,r=0,h=0,a=0,o=0,c=0,l=0,f=0,u=0,p=0,_=0,A=0,g=0,w=0,y=0,E=0,C=0,m=0,d=0,S=0;const b=new Uint32Array(e),v=new Uint8Array(e);function M(t,e,n,a,o,c,l,f){t=t|0;e=e|0;n=n|0;a=a|0;o=o|0;c=c|0;l=l|0;f=f|0;let u=0,p=0,_=0,A=0,g=0,w=0,y=0,E=0;u=n|0x400,p=n|0x800,_=n|0xc00;o=o^b[(t|0)>>2],c=c^b[(t|4)>>2],l=l^b[(t|8)>>2],f=f^b[(t|12)>>2];for(E=16;(E|0)<=a<<4;E=E+16|0){A=b[(n|o>>22&1020)>>2]^b[(u|c>>14&1020)>>2]^b[(p|l>>6&1020)>>2]^b[(_|f<<2&1020)>>2]^b[(t|E|0)>>2],g=b[(n|c>>22&1020)>>2]^b[(u|l>>14&1020)>>2]^b[(p|f>>6&1020)>>2]^b[(_|o<<2&1020)>>2]^b[(t|E|4)>>2],w=b[(n|l>>22&1020)>>2]^b[(u|f>>14&1020)>>2]^b[(p|o>>6&1020)>>2]^b[(_|c<<2&1020)>>2]^b[(t|E|8)>>2],y=b[(n|f>>22&1020)>>2]^b[(u|o>>14&1020)>>2]^b[(p|c>>6&1020)>>2]^b[(_|l<<2&1020)>>2]^b[(t|E|12)>>2];o=A,c=g,l=w,f=y}s=b[(e|o>>22&1020)>>2]<<24^b[(e|c>>14&1020)>>2]<<16^b[(e|l>>6&1020)>>2]<<8^b[(e|f<<2&1020)>>2]^b[(t|E|0)>>2],i=b[(e|c>>22&1020)>>2]<<24^b[(e|l>>14&1020)>>2]<<16^b[(e|f>>6&1020)>>2]<<8^b[(e|o<<2&1020)>>2]^b[(t|E|4)>>2],r=b[(e|l>>22&1020)>>2]<<24^b[(e|f>>14&1020)>>2]<<16^b[(e|o>>6&1020)>>2]<<8^b[(e|c<<2&1020)>>2]^b[(t|E|8)>>2],h=b[(e|f>>22&1020)>>2]<<24^b[(e|o>>14&1020)>>2]<<16^b[(e|c>>6&1020)>>2]<<8^b[(e|l<<2&1020)>>2]^b[(t|E|12)>>2]}function D(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;M(0x0000,0x0800,0x1000,S,t,e,s,n)}function U(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;let r=0;M(0x0400,0x0c00,0x2000,S,t,n,s,e);r=i,i=h,h=r}function H(t,e,n,f){t=t|0;e=e|0;n=n|0;f=f|0;M(0x0000,0x0800,0x1000,S,a^t,o^e,c^n,l^f);a=s,o=i,c=r,l=h}function x(t,e,n,f){t=t|0;e=e|0;n=n|0;f=f|0;let u=0;M(0x0400,0x0c00,0x2000,S,t,f,n,e);u=i,i=h,h=u;s=s^a,i=i^o,r=r^c,h=h^l;a=t,o=e,c=n,l=f}function T(t,e,n,f){t=t|0;e=e|0;n=n|0;f=f|0;M(0x0000,0x0800,0x1000,S,a,o,c,l);a=s=s^t,o=i=i^e,c=r=r^n,l=h=h^f}function P(t,e,n,f){t=t|0;e=e|0;n=n|0;f=f|0;M(0x0000,0x0800,0x1000,S,a,o,c,l);s=s^t,i=i^e,r=r^n,h=h^f;a=t,o=e,c=n,l=f}function z(t,e,n,f){t=t|0;e=e|0;n=n|0;f=f|0;M(0x0000,0x0800,0x1000,S,a,o,c,l);a=s,o=i,c=r,l=h;s=s^t,i=i^e,r=r^n,h=h^f}function B(t,e,n,a){t=t|0;e=e|0;n=n|0;a=a|0;M(0x0000,0x0800,0x1000,S,f,u,p,_);_=~y&_|y&_+1;p=~w&p|w&p+Number((_|0)===0);u=~g&u|g&u+Number((p|0)===0);f=~A&f|A&f+Number((u|0)===0);s=s^t;i=i^e;r=r^n;h=h^a}function k(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;let i=0,r=0,h=0,f=0,u=0,p=0,_=0,A=0,g=0,w=0;t=t^a,e=e^o,s=s^c,n=n^l;i=E|0,r=C|0,h=m|0,f=d|0;for(;(g|0)<128;g=g+1|0){if(i>>>31){u=u^t,p=p^e,_=_^s,A=A^n}i=i<<1|r>>>31,r=r<<1|h>>>31,h=h<<1|f>>>31,f=f<<1;w=n&1;n=n>>>1|s<<31,s=s>>>1|e<<31,e=e>>>1|t<<31,t=t>>>1;if(w)t=t^0xe1000000}a=u,o=p,c=_,l=A}function G(t){t=t|0;S=t}function R(t,e,n,a){t=t|0;e=e|0;n=n|0;a=a|0;s=t,i=e,r=n,h=a}function N(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;a=t,o=e,c=s,l=n}function I(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;f=t,u=e,p=s,_=n}function L(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;A=t,g=e,w=s,y=n}function O(t,e,s,n){t=t|0;e=e|0;s=s|0;n=n|0;_=~y&_|y&n,p=~w&p|w&s,u=~g&u|g&e,f=~A&f|A&t}function Z(t){t=t|0;if(t&15)return-1;v[t|0]=s>>>24,v[t|1]=s>>>16&255,v[t|2]=s>>>8&255,v[t|3]=s&255,v[t|4]=i>>>24,v[t|5]=i>>>16&255,v[t|6]=i>>>8&255,v[t|7]=i&255,v[t|8]=r>>>24,v[t|9]=r>>>16&255,v[t|10]=r>>>8&255,v[t|11]=r&255,v[t|12]=h>>>24,v[t|13]=h>>>16&255,v[t|14]=h>>>8&255,v[t|15]=h&255;return 16}function K(t){t=t|0;if(t&15)return-1;v[t|0]=a>>>24,v[t|1]=a>>>16&255,v[t|2]=a>>>8&255,v[t|3]=a&255,v[t|4]=o>>>24,v[t|5]=o>>>16&255,v[t|6]=o>>>8&255,v[t|7]=o&255,v[t|8]=c>>>24,v[t|9]=c>>>16&255,v[t|10]=c>>>8&255,v[t|11]=c&255,v[t|12]=l>>>24,v[t|13]=l>>>16&255,v[t|14]=l>>>8&255,v[t|15]=l&255;return 16}function V(){D(0,0,0,0);E=s,C=i,m=r,d=h}function F(t,e,n){t=t|0;e=e|0;n=n|0;let a=0;if(e&15)return-1;while((n|0)>=16){q[t&7](v[e|0]<<24|v[e|1]<<16|v[e|2]<<8|v[e|3],v[e|4]<<24|v[e|5]<<16|v[e|6]<<8|v[e|7],v[e|8]<<24|v[e|9]<<16|v[e|10]<<8|v[e|11],v[e|12]<<24|v[e|13]<<16|v[e|14]<<8|v[e|15]);v[e|0]=s>>>24,v[e|1]=s>>>16&255,v[e|2]=s>>>8&255,v[e|3]=s&255,v[e|4]=i>>>24,v[e|5]=i>>>16&255,v[e|6]=i>>>8&255,v[e|7]=i&255,v[e|8]=r>>>24,v[e|9]=r>>>16&255,v[e|10]=r>>>8&255,v[e|11]=r&255,v[e|12]=h>>>24,v[e|13]=h>>>16&255,v[e|14]=h>>>8&255,v[e|15]=h&255;a=a+16|0,e=e+16|0,n=n-16|0}return a|0}function j(t,e,s){t=t|0;e=e|0;s=s|0;let n=0;if(e&15)return-1;while((s|0)>=16){J[t&1](v[e|0]<<24|v[e|1]<<16|v[e|2]<<8|v[e|3],v[e|4]<<24|v[e|5]<<16|v[e|6]<<8|v[e|7],v[e|8]<<24|v[e|9]<<16|v[e|10]<<8|v[e|11],v[e|12]<<24|v[e|13]<<16|v[e|14]<<8|v[e|15]);n=n+16|0,e=e+16|0,s=s-16|0}return n|0}const q=[D,U,H,x,T,P,z,B];const J=[H,k];return{set_rounds:G,set_state:R,set_iv:N,set_nonce:I,set_mask:L,set_counter:O,get_state:Z,get_iv:K,gcm_init:V,cipher:F,mac:j,set_key:n}}(t,e);return i}(t,e)}set_key(t,e,s,n,i,r,h,a,o){}set_iv(t,e,s,n){}set_mask(t,e,s,n){}set_nonce(t,e,s,n){}set_counter(t,e,s,n){}cipher(t,e,s){return 0}gcm_init(){}get_iv(t){return 16}mac(t,e,s){return 0}get_state(t){return 16}}w.ENC={ECB:0,CBC:2,CFB:4,OFB:6,CTR:7},w.DEC={ECB:1,CBC:3,CFB:5,OFB:6,CTR:7},w.MAC={CBC:0,GCM:1},w.HEAP_DATA=16384;class y{constructor(t,s,n=!0,r,h,a){this.pos=0,this.len=0,this.mode=r,this.heap=h||i().subarray(w.HEAP_DATA),this.asm=a||new w(null,this.heap.buffer),this.pos=0,this.len=0;const o=t.length;if(16!==o&&24!==o&&32!==o)throw new e("illegal key size");const c=new DataView(t.buffer,t.byteOffset,t.byteLength);if(this.asm.set_key(o>>2,c.getUint32(0),c.getUint32(4),c.getUint32(8),c.getUint32(12),o>16?c.getUint32(16):0,o>16?c.getUint32(20):0,o>24?c.getUint32(24):0,o>24?c.getUint32(28):0),void 0!==s){if(16!==s.length)throw new e("illegal iv size");const t=new DataView(s.buffer,s.byteOffset,s.byteLength);this.asm.set_iv(t.getUint32(0),t.getUint32(4),t.getUint32(8),t.getUint32(12))}else this.asm.set_iv(0,0,0,0);this.padding=n}AES_Encrypt_process(t){if(!n(t))throw new TypeError("data isn't of expected type");const e=this.asm,s=this.heap,i=w.ENC[this.mode],h=w.HEAP_DATA;let a=this.pos,o=this.len,c=0,l=t.length||0,f=0;let u=0;const p=new Uint8Array(o+l&-16);for(;l>0;)u=r(s,a+o,t,c,l),o+=u,c+=u,l-=u,u=e.cipher(i,h+a,o),u&&p.set(s.subarray(a,a+u),f),f+=u,u<o?(a+=u,o-=u):(a=0,o=0);return this.pos=a,this.len=o,p}AES_Encrypt_finish(){const t=this.asm,s=this.heap,n=w.ENC[this.mode],i=w.HEAP_DATA,r=this.pos;let h=this.len;const a=16-h%16;let o=h;if(this.hasOwnProperty("padding")){if(this.padding){for(let t=0;t<a;++t)s[r+h+t]=a;h+=a,o=h}else if(h%16)throw new e("data length must be a multiple of the block size")}else h+=a;const c=new Uint8Array(o);return h&&t.cipher(n,i+r,h),o&&c.set(s.subarray(r,r+o)),this.pos=0,this.len=0,c}AES_Decrypt_process(t){if(!n(t))throw new TypeError("data isn't of expected type");const e=this.asm,s=this.heap,i=w.DEC[this.mode],h=w.HEAP_DATA;let a=this.pos,o=this.len,c=0,l=t.length||0,f=0,u=o+l&-16,p=0,_=0;this.padding&&(p=o+l-u||16,u-=p);const A=new Uint8Array(u);for(;l>0;)_=r(s,a+o,t,c,l),o+=_,c+=_,l-=_,_=e.cipher(i,h+a,o-(l?0:p)),_&&A.set(s.subarray(a,a+_),f),f+=_,_<o?(a+=_,o-=_):(a=0,o=0);return this.pos=a,this.len=o,A}AES_Decrypt_finish(){const t=this.asm,n=this.heap,i=w.DEC[this.mode],r=w.HEAP_DATA,h=this.pos;let a=this.len,o=a;if(a>0){if(a%16){if(this.hasOwnProperty("padding"))throw new e("data length must be a multiple of the block size");a+=16-a%16}if(t.cipher(i,r+h,a),this.hasOwnProperty("padding")&&this.padding){const t=n[h+o-1];if(t<1||t>16||t>o)throw new s("bad padding");let e=0;for(let s=t;s>1;s--)e|=t^n[h+o-s];if(e)throw new s("bad padding");o-=t}}const c=new Uint8Array(o);return o>0&&c.set(n.subarray(h,h+o)),this.pos=0,this.len=0,c}}class E{constructor(t,s,n,i=16,r){if(this.tagSize=i,this.gamma0=0,this.counter=1,this.aes=r||new y(t,void 0,!1,"CTR"),this.aes.asm.gcm_init(),this.tagSize<4||this.tagSize>16)throw new e("illegal tagSize value");const h=s.length||0,a=new Uint8Array(16);12!==h?(this._gcm_mac_process(s),this.aes.heap[0]=0,this.aes.heap[1]=0,this.aes.heap[2]=0,this.aes.heap[3]=0,this.aes.heap[4]=0,this.aes.heap[5]=0,this.aes.heap[6]=0,this.aes.heap[7]=0,this.aes.heap[8]=0,this.aes.heap[9]=0,this.aes.heap[10]=0,this.aes.heap[11]=h>>>29,this.aes.heap[12]=h>>>21&255,this.aes.heap[13]=h>>>13&255,this.aes.heap[14]=h>>>5&255,this.aes.heap[15]=h<<3&255,this.aes.asm.mac(w.MAC.GCM,w.HEAP_DATA,16),this.aes.asm.get_iv(w.HEAP_DATA),this.aes.asm.set_iv(0,0,0,0),a.set(this.aes.heap.subarray(0,16))):(a.set(s),a[15]=1);const o=new DataView(a.buffer);if(this.gamma0=o.getUint32(12),this.aes.asm.set_nonce(o.getUint32(0),o.getUint32(4),o.getUint32(8),0),this.aes.asm.set_mask(0,0,0,4294967295),void 0!==n){if(n.length>68719476704)throw new e("illegal adata length");n.length?(this.adata=n,this._gcm_mac_process(n)):this.adata=void 0}else this.adata=void 0;if(this.counter<1||this.counter>4294967295)throw new RangeError("counter must be a positive 32-bit integer");this.aes.asm.set_counter(0,0,0,this.gamma0+this.counter|0)}static encrypt(t,e,s,n,i){return new E(e,s,n,i).encrypt(t)}static decrypt(t,e,s,n,i){return new E(e,s,n,i).decrypt(t)}encrypt(t){return this.AES_GCM_encrypt(t)}decrypt(t){return this.AES_GCM_decrypt(t)}AES_GCM_Encrypt_process(t){let e=0,s=t.length||0;const n=this.aes.asm,i=this.aes.heap;let h=this.counter,a=this.aes.pos,o=this.aes.len,c=0;const l=o+s&-16;let f=0;if((h-1<<4)+o+s>68719476704)throw new RangeError("counter overflow");const u=new Uint8Array(l);for(;s>0;)f=r(i,a+o,t,e,s),o+=f,e+=f,s-=f,f=n.cipher(w.ENC.CTR,w.HEAP_DATA+a,o),f=n.mac(w.MAC.GCM,w.HEAP_DATA+a,f),f&&u.set(i.subarray(a,a+f),c),h+=f>>>4,c+=f,f<o?(a+=f,o-=f):(a=0,o=0);return this.counter=h,this.aes.pos=a,this.aes.len=o,u}AES_GCM_Encrypt_finish(){const t=this.aes.asm,e=this.aes.heap,s=this.counter,n=this.tagSize,i=this.adata,r=this.aes.pos,h=this.aes.len,a=new Uint8Array(h+n);t.cipher(w.ENC.CTR,w.HEAP_DATA+r,h+15&-16),h&&a.set(e.subarray(r,r+h));let o=h;for(;15&o;o++)e[r+o]=0;t.mac(w.MAC.GCM,w.HEAP_DATA+r,o);const c=void 0!==i?i.length:0,l=(s-1<<4)+h;return e[0]=0,e[1]=0,e[2]=0,e[3]=c>>>29,e[4]=c>>>21,e[5]=c>>>13&255,e[6]=c>>>5&255,e[7]=c<<3&255,e[8]=e[9]=e[10]=0,e[11]=l>>>29,e[12]=l>>>21&255,e[13]=l>>>13&255,e[14]=l>>>5&255,e[15]=l<<3&255,t.mac(w.MAC.GCM,w.HEAP_DATA,16),t.get_iv(w.HEAP_DATA),t.set_counter(0,0,0,this.gamma0),t.cipher(w.ENC.CTR,w.HEAP_DATA,16),a.set(e.subarray(0,n),h),this.counter=1,this.aes.pos=0,this.aes.len=0,a}AES_GCM_Decrypt_process(t){let e=0,s=t.length||0;const n=this.aes.asm,i=this.aes.heap;let h=this.counter;const a=this.tagSize;let o=this.aes.pos,c=this.aes.len,l=0;const f=c+s>a?c+s-a&-16:0,u=c+s-f;let p=0;if((h-1<<4)+c+s>68719476704)throw new RangeError("counter overflow");const _=new Uint8Array(f);for(;s>u;)p=r(i,o+c,t,e,s-u),c+=p,e+=p,s-=p,p=n.mac(w.MAC.GCM,w.HEAP_DATA+o,p),p=n.cipher(w.DEC.CTR,w.HEAP_DATA+o,p),p&&_.set(i.subarray(o,o+p),l),h+=p>>>4,l+=p,o=0,c=0;return s>0&&(c+=r(i,0,t,e,s)),this.counter=h,this.aes.pos=o,this.aes.len=c,_}AES_GCM_Decrypt_finish(){const e=this.aes.asm,n=this.aes.heap,i=this.tagSize,r=this.adata,h=this.counter,a=this.aes.pos,o=this.aes.len,c=o-i;if(o<i)throw new t("authentication tag not found");const l=new Uint8Array(c),f=new Uint8Array(n.subarray(a+c,a+o));let u=c;for(;15&u;u++)n[a+u]=0;e.mac(w.MAC.GCM,w.HEAP_DATA+a,u),e.cipher(w.DEC.CTR,w.HEAP_DATA+a,u),c&&l.set(n.subarray(a,a+c));const p=void 0!==r?r.length:0,_=(h-1<<4)+o-i;n[0]=0,n[1]=0,n[2]=0,n[3]=p>>>29,n[4]=p>>>21,n[5]=p>>>13&255,n[6]=p>>>5&255,n[7]=p<<3&255,n[8]=n[9]=n[10]=0,n[11]=_>>>29,n[12]=_>>>21&255,n[13]=_>>>13&255,n[14]=_>>>5&255,n[15]=_<<3&255,e.mac(w.MAC.GCM,w.HEAP_DATA,16),e.get_iv(w.HEAP_DATA),e.set_counter(0,0,0,this.gamma0),e.cipher(w.ENC.CTR,w.HEAP_DATA,16);let A=0;for(let t=0;t<i;++t)A|=f[t]^n[t];if(A)throw new s("data integrity check failed");return this.counter=1,this.aes.pos=0,this.aes.len=0,l}AES_GCM_decrypt(t){const e=this.AES_GCM_Decrypt_process(t),s=this.AES_GCM_Decrypt_finish(),n=new Uint8Array(e.length+s.length);return e.length&&n.set(e),s.length&&n.set(s,e.length),n}AES_GCM_encrypt(t){const e=this.AES_GCM_Encrypt_process(t),s=this.AES_GCM_Encrypt_finish(),n=new Uint8Array(e.length+s.length);return e.length&&n.set(e),s.length&&n.set(s,e.length),n}_gcm_mac_process(t){const e=this.aes.heap,s=this.aes.asm;let n=0,i=t.length||0,h=0;for(;i>0;){for(h=r(e,0,t,n,i),n+=h,i-=h;15&h;)e[h++]=0;s.mac(w.MAC.GCM,w.HEAP_DATA,h)}}}class C{constructor(t,e=!1,s){this.aes=s||new y(t,void 0,e,"ECB")}static encrypt(t,e,s=!1){return new C(e,s).encrypt(t)}static decrypt(t,e,s=!1){return new C(e,s).decrypt(t)}encrypt(t){return h(this.aes.AES_Encrypt_process(t),this.aes.AES_Encrypt_finish())}decrypt(t){return h(this.aes.AES_Decrypt_process(t),this.aes.AES_Decrypt_finish())}}class m{constructor(t,e,s=!0,n){this.aes=n||new y(t,e,s,"CBC")}static encrypt(t,e,s=!0,n){return new m(e,n,s).encrypt(t)}static decrypt(t,e,s=!0,n){return new m(e,n,s).decrypt(t)}encrypt(t){return h(this.aes.AES_Encrypt_process(t),this.aes.AES_Encrypt_finish())}decrypt(t){return h(this.aes.AES_Decrypt_process(t),this.aes.AES_Decrypt_finish())}}class d{constructor(t,s,n,i=16,r,h){if(this.counter=1,this.dataLength=-1,this.aes=h||new y(t,void 0,void 0,"CCM"),i<4||i>16||1&i)throw new e("illegal tagSize value");if(this.tagSize=i,this.nonce=s,s.length<8||s.length>13)throw new e("illegal nonce length");if(this.lengthSize=15-s.length,(s=new Uint8Array(s.length+1))[0]=this.lengthSize-1,s.set(this.nonce,1),r<0||r>0xffffffffffff0||r>Math.pow(2,8*this.lengthSize)-16)throw new e("illegal dataLength value");if(void 0!==n){if(n.length>65279)throw new e("illegal adata length");this.adata=n.length?n:void 0}this.dataLength=r,this.counter=1,this.AES_CCM_calculate_iv(),this.AES_CTR_set_options(s,this.counter,8*this.lengthSize)}static encrypt(t,e,s,n,i=16){return new d(e,s,n,i,t.length).encrypt(t)}static decrypt(t,e,s,n,i=16){return new d(e,s,n,i,t.length-i).decrypt(t)}encrypt(t){this.dataLength=t.length||0;const e=this.AES_CCM_Encrypt_process(t),s=this.AES_CCM_Encrypt_finish(),n=new Uint8Array(e.length+s.length);return e.length&&n.set(e),s.length&&n.set(s,e.length),n}decrypt(t){this.dataLength=t.length||0;const e=this.AES_CCM_Decrypt_process(t),s=this.AES_CCM_Decrypt_finish(),n=new Uint8Array(e.length+s.length);return e.length&&n.set(e),s.length&&n.set(s,e.length),n}AES_CCM_calculate_iv(){const t=this.nonce,e=this.adata,s=this.tagSize,n=this.lengthSize,i=this.dataLength,r=new Uint8Array(16+(e?2+e.length:0));r[0]=(e?64:0)|s-2<<2|n-1,r.set(t,1),n>6&&(r[9]=i/4294967296>>>16&15),n>5&&(r[10]=i/4294967296>>>8&255),n>4&&(r[11]=i/4294967296&255),n>3&&(r[12]=i>>>24),n>2&&(r[13]=i>>>16&255),r[14]=i>>>8&255,r[15]=255&i,e&&(r[16]=e.length>>>8&255,r[17]=255&e.length,r.set(e,18)),this._cbc_mac_process(r),this.aes.asm.get_state(w.HEAP_DATA);const h=new Uint8Array(this.aes.heap.subarray(0,16)),a=new DataView(h.buffer,h.byteOffset,h.byteLength);this.aes.asm.set_iv(a.getUint32(0),a.getUint32(4),a.getUint32(8),a.getUint32(12))}_cbc_mac_process(t){const e=this.aes.heap,s=this.aes.asm;let n=0,i=t.length||0,h=0;for(;i>0;){for(h=r(e,0,t,n,i);15&h;)e[h++]=0;n+=h,i-=h,s.mac(w.MAC.CBC,w.HEAP_DATA,h)}}AES_CCM_Encrypt_process(t){const e=this.aes.asm,s=this.aes.heap;let n=0,i=t.length||0,h=this.counter,a=this.aes.pos,o=this.aes.len;const c=o+i&-16;let l=0,f=0;if((h-1<<4)+o+i>0xffffffffffff0)throw new RangeError("counter overflow");const u=new Uint8Array(c);for(;i>0;)f=r(s,a+o,t,n,i),o+=f,n+=f,i-=f,f=e.mac(w.MAC.CBC,w.HEAP_DATA+a,o),f=e.cipher(w.ENC.CTR,w.HEAP_DATA+a,f),f&&u.set(s.subarray(a,a+f),l),h+=f>>>4,l+=f,f<o?(a+=f,o-=f):(a=0,o=0);return this.counter=h,this.aes.pos=a,this.aes.len=o,u}AES_CCM_Encrypt_finish(){const t=this.aes.asm,e=this.aes.heap,s=this.tagSize,n=this.aes.pos,i=this.aes.len,r=new Uint8Array(i+s);let h=i;for(;15&h;h++)e[n+h]=0;return t.mac(w.MAC.CBC,w.HEAP_DATA+n,h),t.cipher(w.ENC.CTR,w.HEAP_DATA+n,h),i&&r.set(e.subarray(n,n+i)),t.set_counter(0,0,0,0),t.get_iv(w.HEAP_DATA),t.cipher(w.ENC.CTR,w.HEAP_DATA,16),r.set(e.subarray(0,s),i),this.counter=1,this.aes.pos=0,this.aes.len=0,r}AES_CCM_Decrypt_process(t){let e=0,s=t.length||0;const n=this.aes.asm,i=this.aes.heap;let h=this.counter;const a=this.tagSize;let o=this.aes.pos,c=this.aes.len,l=0;const f=c+s>a?c+s-a&-16:0,u=c+s-f;let p=0;if((h-1<<4)+c+s>0xffffffffffff0)throw new RangeError("counter overflow");const _=new Uint8Array(f);for(;s>u;)p=r(i,o+c,t,e,s-u),c+=p,e+=p,s-=p,p=n.cipher(w.DEC.CTR,w.HEAP_DATA+o,p),p=n.mac(w.MAC.CBC,w.HEAP_DATA+o,p),p&&_.set(i.subarray(o,o+p),l),h+=p>>>4,l+=p,o=0,c=0;return s>0&&(c+=r(i,0,t,e,s)),this.counter=h,this.aes.pos=o,this.aes.len=c,_}AES_CCM_Decrypt_finish(){const e=this.aes.asm,n=this.aes.heap,i=this.tagSize,r=this.aes.pos,h=this.aes.len,a=h-i;if(h<i)throw new t("authentication tag not found");const o=new Uint8Array(a),c=new Uint8Array(n.subarray(r+a,r+h));e.cipher(w.DEC.CTR,w.HEAP_DATA+r,a+15&-16),o.set(n.subarray(r,r+a));let l=a;for(;15&l;l++)n[r+l]=0;e.mac(w.MAC.CBC,w.HEAP_DATA+r,l),e.set_counter(0,0,0,0),e.get_iv(w.HEAP_DATA),e.cipher(w.ENC.CTR,w.HEAP_DATA,16);let f=0;for(let t=0;t<i;++t)f|=c[t]^n[t];if(f)throw new s("data integrity check failed");return this.counter=1,this.aes.pos=0,this.aes.len=0,o}AES_CTR_set_options(t,s,n){if(n<8||n>48)throw new e("illegal counter size");const i=Math.pow(2,n)-1;this.aes.asm.set_mask(0,0,i/4294967296|0,0|i);const r=t.length;if(!r||r>16)throw new e("illegal nonce size");this.nonce=t;const h=new DataView(new ArrayBuffer(16));if(new Uint8Array(h.buffer).set(t),this.aes.asm.set_nonce(h.getUint32(0),h.getUint32(4),h.getUint32(8),h.getUint32(12)),s<0||s>=Math.pow(2,n))throw new e("illegal counter value");this.counter=s,this.aes.asm.set_counter(0,0,s/4294967296|0,0|s)}}class S{constructor(){this.pos=0,this.len=0}reset(){return this.result=null,this.pos=0,this.len=0,this.asm.reset(),this}process(e){if(null!==this.result)throw new t("state must be reset before processing new data");const s=this.asm,n=this.heap;let i=this.pos,h=this.len,a=0,o=e.length,c=0;for(;o>0;)c=r(n,i+h,e,a,o),h+=c,a+=c,o-=c,c=s.process(i,h),i+=c,h-=c,h||(i=0);return this.pos=i,this.len=h,this}finish(){if(null!==this.result)throw new t("state must be reset before processing new data");return this.asm.finish(this.pos,this.len,0),this.result=new Uint8Array(this.HASH_SIZE),this.result.set(this.heap.subarray(0,this.HASH_SIZE)),this.pos=0,this.len=0,this}}class b extends S{constructor(){super(),this.NAME="sha1",this.BLOCK_SIZE=64,this.HASH_SIZE=20,this.heap=i(),this.asm=function(t,e){let s=0,n=0,i=0,r=0,h=0,a=0,o=0,c=0,l=0,f=0,u=0,p=0,_=0,A=0,g=0,w=0,y=0;const E=new Uint8Array(e);function C(t,e,a,o,c,l,f,u,p,_,A,g,w,y,E,C){let m=0,d=0,S=0,b=0,v=0,M=0,D=0,U=0,H=0,x=0,T=0,P=0,z=0,B=0,k=0,G=0,R=0,N=0,I=0,L=0,O=0,Z=0,K=0,V=0,F=0,j=0,q=0,J=0,Q=0,W=0,X=0,Y=0,$=0,tt=0,et=0,st=0,nt=0,it=0,rt=0,ht=0,at=0,ot=0,ct=0,lt=0,ft=0,ut=0,pt=0,_t=0,At=0,gt=0,wt=0,yt=0,Et=0,Ct=0,mt=0,dt=0,St=0,bt=0,vt=0,Mt=0,Dt=0,Ut=0,Ht=0,xt=0,Tt=0,Pt=0,zt=0,Bt=0,kt=0,Gt=0,Rt=0;m=s,d=n,S=i,b=r,v=h,D=(t|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,D=(e|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,D=(a|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,D=(o|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,D=(c|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,D=(l|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,D=(f|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,D=(u|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,D=(p|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,D=(_|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,D=(A|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,D=(g|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,D=(w|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,D=(y|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,D=(E|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,D=(C|=0)+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=y^p^a^t,U=M<<1|M>>>31,D=U+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=E^_^o^e,H=M<<1|M>>>31,D=H+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=C^A^c^a,x=M<<1|M>>>31,D=x+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=U^g^l^o,T=M<<1|M>>>31,D=T+(m<<5|m>>>27)+v+(d&S|~d&b)+1518500249|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=H^w^f^c,P=M<<1|M>>>31,D=P+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=x^y^u^l,z=M<<1|M>>>31,D=z+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=T^E^p^f,B=M<<1|M>>>31,D=B+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=P^C^_^u,k=M<<1|M>>>31,D=k+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=z^U^A^p,G=M<<1|M>>>31,D=G+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=B^H^g^_,R=M<<1|M>>>31,D=R+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=k^x^w^A,N=M<<1|M>>>31,D=N+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=G^T^y^g,I=M<<1|M>>>31,D=I+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=R^P^E^w,L=M<<1|M>>>31,D=L+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=N^z^C^y,O=M<<1|M>>>31,D=O+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=I^B^U^E,Z=M<<1|M>>>31,D=Z+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=L^k^H^C,K=M<<1|M>>>31,D=K+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=O^G^x^U,V=M<<1|M>>>31,D=V+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=Z^R^T^H,F=M<<1|M>>>31,D=F+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=K^N^P^x,j=M<<1|M>>>31,D=j+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=V^I^z^T,q=M<<1|M>>>31,D=q+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=F^L^B^P,J=M<<1|M>>>31,D=J+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=j^O^k^z,Q=M<<1|M>>>31,D=Q+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=q^Z^G^B,W=M<<1|M>>>31,D=W+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=J^K^R^k,X=M<<1|M>>>31,D=X+(m<<5|m>>>27)+v+(d^S^b)+1859775393|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=Q^V^N^G,Y=M<<1|M>>>31,D=Y+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=W^F^I^R,$=M<<1|M>>>31,D=$+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=X^j^L^N,tt=M<<1|M>>>31,D=tt+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=Y^q^O^I,et=M<<1|M>>>31,D=et+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=$^J^Z^L,st=M<<1|M>>>31,D=st+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=tt^Q^K^O,nt=M<<1|M>>>31,D=nt+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=et^W^V^Z,it=M<<1|M>>>31,D=it+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=st^X^F^K,rt=M<<1|M>>>31,D=rt+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=nt^Y^j^V,ht=M<<1|M>>>31,D=ht+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=it^$^q^F,at=M<<1|M>>>31,D=at+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=rt^tt^J^j,ot=M<<1|M>>>31,D=ot+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=ht^et^Q^q,ct=M<<1|M>>>31,D=ct+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=at^st^W^J,lt=M<<1|M>>>31,D=lt+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=ot^nt^X^Q,ft=M<<1|M>>>31,D=ft+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=ct^it^Y^W,ut=M<<1|M>>>31,D=ut+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=lt^rt^$^X,pt=M<<1|M>>>31,D=pt+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=ft^ht^tt^Y,_t=M<<1|M>>>31,D=_t+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=ut^at^et^$,At=M<<1|M>>>31,D=At+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=pt^ot^st^tt,gt=M<<1|M>>>31,D=gt+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=_t^ct^nt^et,wt=M<<1|M>>>31,D=wt+(m<<5|m>>>27)+v+(d&S|d&b|S&b)-1894007588|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=At^lt^it^st,yt=M<<1|M>>>31,D=yt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=gt^ft^rt^nt,Et=M<<1|M>>>31,D=Et+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=wt^ut^ht^it,Ct=M<<1|M>>>31,D=Ct+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=yt^pt^at^rt,mt=M<<1|M>>>31,D=mt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=Et^_t^ot^ht,dt=M<<1|M>>>31,D=dt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=Ct^At^ct^at,St=M<<1|M>>>31,D=St+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=mt^gt^lt^ot,bt=M<<1|M>>>31,D=bt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=dt^wt^ft^ct,vt=M<<1|M>>>31,D=vt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=St^yt^ut^lt,Mt=M<<1|M>>>31,D=Mt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=bt^Et^pt^ft,Dt=M<<1|M>>>31,D=Dt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=vt^Ct^_t^ut,Ut=M<<1|M>>>31,D=Ut+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=Mt^mt^At^pt,Ht=M<<1|M>>>31,D=Ht+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=Dt^dt^gt^_t,xt=M<<1|M>>>31,D=xt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=Ut^St^wt^At,Tt=M<<1|M>>>31,D=Tt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=Ht^bt^yt^gt,Pt=M<<1|M>>>31,D=Pt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=xt^vt^Et^wt,zt=M<<1|M>>>31,D=zt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=Tt^Mt^Ct^yt,Bt=M<<1|M>>>31,D=Bt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=Pt^Dt^mt^Et,kt=M<<1|M>>>31,D=kt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=zt^Ut^dt^Ct,Gt=M<<1|M>>>31,D=Gt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,M=Bt^Ht^St^mt,Rt=M<<1|M>>>31,D=Rt+(m<<5|m>>>27)+v+(d^S^b)-899497514|0,v=b,b=S,S=d<<30|d>>>2,d=m,m=D,s=s+m|0,n=n+d|0,i=i+S|0,r=r+b|0,h=h+v|0}function m(t){C(E[0|(t|=0)]<<24|E[1|t]<<16|E[2|t]<<8|E[3|t],E[4|t]<<24|E[5|t]<<16|E[6|t]<<8|E[7|t],E[8|t]<<24|E[9|t]<<16|E[10|t]<<8|E[11|t],E[12|t]<<24|E[13|t]<<16|E[14|t]<<8|E[15|t],E[16|t]<<24|E[17|t]<<16|E[18|t]<<8|E[19|t],E[20|t]<<24|E[21|t]<<16|E[22|t]<<8|E[23|t],E[24|t]<<24|E[25|t]<<16|E[26|t]<<8|E[27|t],E[28|t]<<24|E[29|t]<<16|E[30|t]<<8|E[31|t],E[32|t]<<24|E[33|t]<<16|E[34|t]<<8|E[35|t],E[36|t]<<24|E[37|t]<<16|E[38|t]<<8|E[39|t],E[40|t]<<24|E[41|t]<<16|E[42|t]<<8|E[43|t],E[44|t]<<24|E[45|t]<<16|E[46|t]<<8|E[47|t],E[48|t]<<24|E[49|t]<<16|E[50|t]<<8|E[51|t],E[52|t]<<24|E[53|t]<<16|E[54|t]<<8|E[55|t],E[56|t]<<24|E[57|t]<<16|E[58|t]<<8|E[59|t],E[60|t]<<24|E[61|t]<<16|E[62|t]<<8|E[63|t])}function d(t){E[0|(t|=0)]=s>>>24,E[1|t]=s>>>16&255,E[2|t]=s>>>8&255,E[3|t]=255&s,E[4|t]=n>>>24,E[5|t]=n>>>16&255,E[6|t]=n>>>8&255,E[7|t]=255&n,E[8|t]=i>>>24,E[9|t]=i>>>16&255,E[10|t]=i>>>8&255,E[11|t]=255&i,E[12|t]=r>>>24,E[13|t]=r>>>16&255,E[14|t]=r>>>8&255,E[15|t]=255&r,E[16|t]=h>>>24,E[17|t]=h>>>16&255,E[18|t]=h>>>8&255,E[19|t]=255&h}function S(){s=1732584193,n=4023233417,i=2562383102,r=271733878,h=3285377520,a=o=0}function b(t,e){e|=0;let s=0;if(63&(t|=0))return-1;for(;(0|e)>=64;)m(t),t=t+64|0,e=e-64|0,s=s+64|0;return a=a+s|0,a>>>0<s>>>0&&(o=o+1|0),0|s}function v(t,e,s){let n=0,i=0;if(63&(t|=0))return-1;if(~(s|=0)&&31&s)return-1;if((0|(e|=0))>=64){if(n=0|b(t,e),-1==(0|n))return-1;t=t+n|0,e=e-n|0}if(n=n+e|0,a=a+e|0,a>>>0<e>>>0&&(o=o+1|0),E[t|e]=128,(0|e)>=56){for(i=e+1|0;(0|i)<64;i=i+1|0)E[t|i]=0;m(t),e=0,E[0|t]=0}for(i=e+1|0;(0|i)<59;i=i+1|0)E[t|i]=0;return E[56|t]=o>>>21&255,E[57|t]=o>>>13&255,E[58|t]=o>>>5&255,E[59|t]=o<<3&255|a>>>29,E[60|t]=a>>>21&255,E[61|t]=a>>>13&255,E[62|t]=a>>>5&255,E[63|t]=a<<3&255,m(t),~s&&d(s),0|n}function M(){s=c,n=l,i=f,r=u,h=p,a=64,o=0}function D(){s=_,n=A,i=g,r=w,h=y,a=64,o=0}function U(t,e,a){let o=0,c=0,l=0,f=0,u=0,p=0;return 63&(t|=0)||~(a|=0)&&31&a?-1:(p=0|v(t,e|=0,-1),o=s,c=n,l=i,f=r,u=h,D(),C(o,c,l,f,u,2147483648,0,0,0,0,0,0,0,0,0,672),~a&&d(a),0|p)}return{reset:S,init:function(t,e,c,l,f,u,p){s=t|=0,n=e|=0,i=c|=0,r=l|=0,h=f|=0,a=u|=0,o=p|=0},process:b,finish:v,hmac_reset:M,hmac_init:function(t,e,E,m,d,b,v,M,D,U,H,x,T,P,z,B){t|=0,e|=0,E|=0,m|=0,d|=0,b|=0,v|=0,M|=0,D|=0,U|=0,H|=0,x|=0,T|=0,P|=0,z|=0,B|=0,S(),C(1549556828^t,1549556828^e,1549556828^E,1549556828^m,1549556828^d,1549556828^b,1549556828^v,1549556828^M,1549556828^D,1549556828^U,1549556828^H,1549556828^x,1549556828^T,1549556828^P,1549556828^z,1549556828^B),_=s,A=n,g=i,w=r,y=h,S(),C(909522486^t,909522486^e,909522486^E,909522486^m,909522486^d,909522486^b,909522486^v,909522486^M,909522486^D,909522486^U,909522486^H,909522486^x,909522486^T,909522486^P,909522486^z,909522486^B),c=s,l=n,f=i,u=r,p=h,a=64,o=0},hmac_finish:U,pbkdf2_generate_block:function(t,e,a,o,c){a|=0,o|=0;let l=0,f=0,u=0,p=0,_=0,A=0,g=0,w=0,y=0,m=0;if(63&(t|=0))return-1;if(~(c|=0)&&31&c)return-1;for(E[t+(e|=0)|0]=a>>>24,E[t+e+1|0]=a>>>16&255,E[t+e+2|0]=a>>>8&255,E[t+e+3|0]=255&a,U(t,e+4|0,-1),l=A=s,f=g=n,u=w=i,p=y=r,_=m=h,o=o-1|0;(0|o)>0;)M(),C(A,g,w,y,m,2147483648,0,0,0,0,0,0,0,0,0,672),A=s,g=n,w=i,y=r,m=h,D(),C(A,g,w,y,m,2147483648,0,0,0,0,0,0,0,0,0,672),A=s,g=n,w=i,y=r,m=h,l^=s,f^=n,u^=i,p^=r,_^=h,o=o-1|0;return s=l,n=f,i=u,r=p,h=_,~c&&d(c),0}}}(0,this.heap.buffer),this.reset()}}b.NAME="sha1";class v extends S{constructor(){super(),this.NAME="sha256",this.BLOCK_SIZE=64,this.HASH_SIZE=32,this.heap=i(),this.asm=function(t,e){let s=0,n=0,i=0,r=0,h=0,a=0,o=0,c=0,l=0,f=0,u=0,p=0,_=0,A=0,g=0,w=0,y=0,E=0,C=0,m=0,d=0,S=0,b=0,v=0,M=0,D=0;const U=new Uint8Array(e);function H(t,e,l,f,u,p,_,A,g,w,y,E,C,m,d,S){let b=0,v=0,M=0,D=0,U=0,H=0,x=0,T=0;b=s,v=n,M=i,D=r,U=h,H=a,x=o,T=c,T=(t|=0)+T+(U>>>6^U>>>11^U>>>25^U<<26^U<<21^U<<7)+(x^U&(H^x))+1116352408|0,D=D+T|0,T=T+(b&v^M&(b^v))+(b>>>2^b>>>13^b>>>22^b<<30^b<<19^b<<10)|0,x=(e|=0)+x+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(H^D&(U^H))+1899447441|0,M=M+x|0,x=x+(T&b^v&(T^b))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0,H=(l|=0)+H+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(U^M&(D^U))+3049323471|0,v=v+H|0,H=H+(x&T^b&(x^T))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0,U=(f|=0)+U+(v>>>6^v>>>11^v>>>25^v<<26^v<<21^v<<7)+(D^v&(M^D))+3921009573|0,b=b+U|0,U=U+(H&x^T&(H^x))+(H>>>2^H>>>13^H>>>22^H<<30^H<<19^H<<10)|0,D=(u|=0)+D+(b>>>6^b>>>11^b>>>25^b<<26^b<<21^b<<7)+(M^b&(v^M))+961987163|0,T=T+D|0,D=D+(U&H^x&(U^H))+(U>>>2^U>>>13^U>>>22^U<<30^U<<19^U<<10)|0,M=(p|=0)+M+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(v^T&(b^v))+1508970993|0,x=x+M|0,M=M+(D&U^H&(D^U))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0,v=(_|=0)+v+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(b^x&(T^b))+2453635748|0,H=H+v|0,v=v+(M&D^U&(M^D))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0,b=(A|=0)+b+(H>>>6^H>>>11^H>>>25^H<<26^H<<21^H<<7)+(T^H&(x^T))+2870763221|0,U=U+b|0,b=b+(v&M^D&(v^M))+(v>>>2^v>>>13^v>>>22^v<<30^v<<19^v<<10)|0,T=(g|=0)+T+(U>>>6^U>>>11^U>>>25^U<<26^U<<21^U<<7)+(x^U&(H^x))+3624381080|0,D=D+T|0,T=T+(b&v^M&(b^v))+(b>>>2^b>>>13^b>>>22^b<<30^b<<19^b<<10)|0,x=(w|=0)+x+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(H^D&(U^H))+310598401|0,M=M+x|0,x=x+(T&b^v&(T^b))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0,H=(y|=0)+H+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(U^M&(D^U))+607225278|0,v=v+H|0,H=H+(x&T^b&(x^T))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0,U=(E|=0)+U+(v>>>6^v>>>11^v>>>25^v<<26^v<<21^v<<7)+(D^v&(M^D))+1426881987|0,b=b+U|0,U=U+(H&x^T&(H^x))+(H>>>2^H>>>13^H>>>22^H<<30^H<<19^H<<10)|0,D=(C|=0)+D+(b>>>6^b>>>11^b>>>25^b<<26^b<<21^b<<7)+(M^b&(v^M))+1925078388|0,T=T+D|0,D=D+(U&H^x&(U^H))+(U>>>2^U>>>13^U>>>22^U<<30^U<<19^U<<10)|0,M=(m|=0)+M+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(v^T&(b^v))+2162078206|0,x=x+M|0,M=M+(D&U^H&(D^U))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0,v=(d|=0)+v+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(b^x&(T^b))+2614888103|0,H=H+v|0,v=v+(M&D^U&(M^D))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0,b=(S|=0)+b+(H>>>6^H>>>11^H>>>25^H<<26^H<<21^H<<7)+(T^H&(x^T))+3248222580|0,U=U+b|0,b=b+(v&M^D&(v^M))+(v>>>2^v>>>13^v>>>22^v<<30^v<<19^v<<10)|0,T=(t=(e>>>7^e>>>18^e>>>3^e<<25^e<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+t+w|0)+T+(U>>>6^U>>>11^U>>>25^U<<26^U<<21^U<<7)+(x^U&(H^x))+3835390401|0,D=D+T|0,T=T+(b&v^M&(b^v))+(b>>>2^b>>>13^b>>>22^b<<30^b<<19^b<<10)|0,x=(e=(l>>>7^l>>>18^l>>>3^l<<25^l<<14)+(S>>>17^S>>>19^S>>>10^S<<15^S<<13)+e+y|0)+x+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(H^D&(U^H))+4022224774|0,M=M+x|0,x=x+(T&b^v&(T^b))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0,H=(l=(f>>>7^f>>>18^f>>>3^f<<25^f<<14)+(t>>>17^t>>>19^t>>>10^t<<15^t<<13)+l+E|0)+H+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(U^M&(D^U))+264347078|0,v=v+H|0,H=H+(x&T^b&(x^T))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0,U=(f=(u>>>7^u>>>18^u>>>3^u<<25^u<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+f+C|0)+U+(v>>>6^v>>>11^v>>>25^v<<26^v<<21^v<<7)+(D^v&(M^D))+604807628|0,b=b+U|0,U=U+(H&x^T&(H^x))+(H>>>2^H>>>13^H>>>22^H<<30^H<<19^H<<10)|0,D=(u=(p>>>7^p>>>18^p>>>3^p<<25^p<<14)+(l>>>17^l>>>19^l>>>10^l<<15^l<<13)+u+m|0)+D+(b>>>6^b>>>11^b>>>25^b<<26^b<<21^b<<7)+(M^b&(v^M))+770255983|0,T=T+D|0,D=D+(U&H^x&(U^H))+(U>>>2^U>>>13^U>>>22^U<<30^U<<19^U<<10)|0,M=(p=(_>>>7^_>>>18^_>>>3^_<<25^_<<14)+(f>>>17^f>>>19^f>>>10^f<<15^f<<13)+p+d|0)+M+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(v^T&(b^v))+1249150122|0,x=x+M|0,M=M+(D&U^H&(D^U))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0,v=(_=(A>>>7^A>>>18^A>>>3^A<<25^A<<14)+(u>>>17^u>>>19^u>>>10^u<<15^u<<13)+_+S|0)+v+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(b^x&(T^b))+1555081692|0,H=H+v|0,v=v+(M&D^U&(M^D))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0,b=(A=(g>>>7^g>>>18^g>>>3^g<<25^g<<14)+(p>>>17^p>>>19^p>>>10^p<<15^p<<13)+A+t|0)+b+(H>>>6^H>>>11^H>>>25^H<<26^H<<21^H<<7)+(T^H&(x^T))+1996064986|0,U=U+b|0,b=b+(v&M^D&(v^M))+(v>>>2^v>>>13^v>>>22^v<<30^v<<19^v<<10)|0,T=(g=(w>>>7^w>>>18^w>>>3^w<<25^w<<14)+(_>>>17^_>>>19^_>>>10^_<<15^_<<13)+g+e|0)+T+(U>>>6^U>>>11^U>>>25^U<<26^U<<21^U<<7)+(x^U&(H^x))+2554220882|0,D=D+T|0,T=T+(b&v^M&(b^v))+(b>>>2^b>>>13^b>>>22^b<<30^b<<19^b<<10)|0,x=(w=(y>>>7^y>>>18^y>>>3^y<<25^y<<14)+(A>>>17^A>>>19^A>>>10^A<<15^A<<13)+w+l|0)+x+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(H^D&(U^H))+2821834349|0,M=M+x|0,x=x+(T&b^v&(T^b))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0,H=(y=(E>>>7^E>>>18^E>>>3^E<<25^E<<14)+(g>>>17^g>>>19^g>>>10^g<<15^g<<13)+y+f|0)+H+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(U^M&(D^U))+2952996808|0,v=v+H|0,H=H+(x&T^b&(x^T))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0,U=(E=(C>>>7^C>>>18^C>>>3^C<<25^C<<14)+(w>>>17^w>>>19^w>>>10^w<<15^w<<13)+E+u|0)+U+(v>>>6^v>>>11^v>>>25^v<<26^v<<21^v<<7)+(D^v&(M^D))+3210313671|0,b=b+U|0,U=U+(H&x^T&(H^x))+(H>>>2^H>>>13^H>>>22^H<<30^H<<19^H<<10)|0,D=(C=(m>>>7^m>>>18^m>>>3^m<<25^m<<14)+(y>>>17^y>>>19^y>>>10^y<<15^y<<13)+C+p|0)+D+(b>>>6^b>>>11^b>>>25^b<<26^b<<21^b<<7)+(M^b&(v^M))+3336571891|0,T=T+D|0,D=D+(U&H^x&(U^H))+(U>>>2^U>>>13^U>>>22^U<<30^U<<19^U<<10)|0,M=(m=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(E>>>17^E>>>19^E>>>10^E<<15^E<<13)+m+_|0)+M+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(v^T&(b^v))+3584528711|0,x=x+M|0,M=M+(D&U^H&(D^U))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0,v=(d=(S>>>7^S>>>18^S>>>3^S<<25^S<<14)+(C>>>17^C>>>19^C>>>10^C<<15^C<<13)+d+A|0)+v+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(b^x&(T^b))+113926993|0,H=H+v|0,v=v+(M&D^U&(M^D))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0,b=(S=(t>>>7^t>>>18^t>>>3^t<<25^t<<14)+(m>>>17^m>>>19^m>>>10^m<<15^m<<13)+S+g|0)+b+(H>>>6^H>>>11^H>>>25^H<<26^H<<21^H<<7)+(T^H&(x^T))+338241895|0,U=U+b|0,b=b+(v&M^D&(v^M))+(v>>>2^v>>>13^v>>>22^v<<30^v<<19^v<<10)|0,T=(t=(e>>>7^e>>>18^e>>>3^e<<25^e<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+t+w|0)+T+(U>>>6^U>>>11^U>>>25^U<<26^U<<21^U<<7)+(x^U&(H^x))+666307205|0,D=D+T|0,T=T+(b&v^M&(b^v))+(b>>>2^b>>>13^b>>>22^b<<30^b<<19^b<<10)|0,x=(e=(l>>>7^l>>>18^l>>>3^l<<25^l<<14)+(S>>>17^S>>>19^S>>>10^S<<15^S<<13)+e+y|0)+x+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(H^D&(U^H))+773529912|0,M=M+x|0,x=x+(T&b^v&(T^b))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0,H=(l=(f>>>7^f>>>18^f>>>3^f<<25^f<<14)+(t>>>17^t>>>19^t>>>10^t<<15^t<<13)+l+E|0)+H+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(U^M&(D^U))+1294757372|0,v=v+H|0,H=H+(x&T^b&(x^T))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0,U=(f=(u>>>7^u>>>18^u>>>3^u<<25^u<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+f+C|0)+U+(v>>>6^v>>>11^v>>>25^v<<26^v<<21^v<<7)+(D^v&(M^D))+1396182291|0,b=b+U|0,U=U+(H&x^T&(H^x))+(H>>>2^H>>>13^H>>>22^H<<30^H<<19^H<<10)|0,D=(u=(p>>>7^p>>>18^p>>>3^p<<25^p<<14)+(l>>>17^l>>>19^l>>>10^l<<15^l<<13)+u+m|0)+D+(b>>>6^b>>>11^b>>>25^b<<26^b<<21^b<<7)+(M^b&(v^M))+1695183700|0,T=T+D|0,D=D+(U&H^x&(U^H))+(U>>>2^U>>>13^U>>>22^U<<30^U<<19^U<<10)|0,M=(p=(_>>>7^_>>>18^_>>>3^_<<25^_<<14)+(f>>>17^f>>>19^f>>>10^f<<15^f<<13)+p+d|0)+M+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(v^T&(b^v))+1986661051|0,x=x+M|0,M=M+(D&U^H&(D^U))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0,v=(_=(A>>>7^A>>>18^A>>>3^A<<25^A<<14)+(u>>>17^u>>>19^u>>>10^u<<15^u<<13)+_+S|0)+v+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(b^x&(T^b))+2177026350|0,H=H+v|0,v=v+(M&D^U&(M^D))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0,b=(A=(g>>>7^g>>>18^g>>>3^g<<25^g<<14)+(p>>>17^p>>>19^p>>>10^p<<15^p<<13)+A+t|0)+b+(H>>>6^H>>>11^H>>>25^H<<26^H<<21^H<<7)+(T^H&(x^T))+2456956037|0,U=U+b|0,b=b+(v&M^D&(v^M))+(v>>>2^v>>>13^v>>>22^v<<30^v<<19^v<<10)|0,T=(g=(w>>>7^w>>>18^w>>>3^w<<25^w<<14)+(_>>>17^_>>>19^_>>>10^_<<15^_<<13)+g+e|0)+T+(U>>>6^U>>>11^U>>>25^U<<26^U<<21^U<<7)+(x^U&(H^x))+2730485921|0,D=D+T|0,T=T+(b&v^M&(b^v))+(b>>>2^b>>>13^b>>>22^b<<30^b<<19^b<<10)|0,x=(w=(y>>>7^y>>>18^y>>>3^y<<25^y<<14)+(A>>>17^A>>>19^A>>>10^A<<15^A<<13)+w+l|0)+x+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(H^D&(U^H))+2820302411|0,M=M+x|0,x=x+(T&b^v&(T^b))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0,H=(y=(E>>>7^E>>>18^E>>>3^E<<25^E<<14)+(g>>>17^g>>>19^g>>>10^g<<15^g<<13)+y+f|0)+H+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(U^M&(D^U))+3259730800|0,v=v+H|0,H=H+(x&T^b&(x^T))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0,U=(E=(C>>>7^C>>>18^C>>>3^C<<25^C<<14)+(w>>>17^w>>>19^w>>>10^w<<15^w<<13)+E+u|0)+U+(v>>>6^v>>>11^v>>>25^v<<26^v<<21^v<<7)+(D^v&(M^D))+3345764771|0,b=b+U|0,U=U+(H&x^T&(H^x))+(H>>>2^H>>>13^H>>>22^H<<30^H<<19^H<<10)|0,D=(C=(m>>>7^m>>>18^m>>>3^m<<25^m<<14)+(y>>>17^y>>>19^y>>>10^y<<15^y<<13)+C+p|0)+D+(b>>>6^b>>>11^b>>>25^b<<26^b<<21^b<<7)+(M^b&(v^M))+3516065817|0,T=T+D|0,D=D+(U&H^x&(U^H))+(U>>>2^U>>>13^U>>>22^U<<30^U<<19^U<<10)|0,M=(m=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(E>>>17^E>>>19^E>>>10^E<<15^E<<13)+m+_|0)+M+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(v^T&(b^v))+3600352804|0,x=x+M|0,M=M+(D&U^H&(D^U))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0,v=(d=(S>>>7^S>>>18^S>>>3^S<<25^S<<14)+(C>>>17^C>>>19^C>>>10^C<<15^C<<13)+d+A|0)+v+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(b^x&(T^b))+4094571909|0,H=H+v|0,v=v+(M&D^U&(M^D))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0,b=(S=(t>>>7^t>>>18^t>>>3^t<<25^t<<14)+(m>>>17^m>>>19^m>>>10^m<<15^m<<13)+S+g|0)+b+(H>>>6^H>>>11^H>>>25^H<<26^H<<21^H<<7)+(T^H&(x^T))+275423344|0,U=U+b|0,b=b+(v&M^D&(v^M))+(v>>>2^v>>>13^v>>>22^v<<30^v<<19^v<<10)|0,T=(t=(e>>>7^e>>>18^e>>>3^e<<25^e<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+t+w|0)+T+(U>>>6^U>>>11^U>>>25^U<<26^U<<21^U<<7)+(x^U&(H^x))+430227734|0,D=D+T|0,T=T+(b&v^M&(b^v))+(b>>>2^b>>>13^b>>>22^b<<30^b<<19^b<<10)|0,x=(e=(l>>>7^l>>>18^l>>>3^l<<25^l<<14)+(S>>>17^S>>>19^S>>>10^S<<15^S<<13)+e+y|0)+x+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(H^D&(U^H))+506948616|0,M=M+x|0,x=x+(T&b^v&(T^b))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0,H=(l=(f>>>7^f>>>18^f>>>3^f<<25^f<<14)+(t>>>17^t>>>19^t>>>10^t<<15^t<<13)+l+E|0)+H+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(U^M&(D^U))+659060556|0,v=v+H|0,H=H+(x&T^b&(x^T))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0,U=(f=(u>>>7^u>>>18^u>>>3^u<<25^u<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+f+C|0)+U+(v>>>6^v>>>11^v>>>25^v<<26^v<<21^v<<7)+(D^v&(M^D))+883997877|0,b=b+U|0,U=U+(H&x^T&(H^x))+(H>>>2^H>>>13^H>>>22^H<<30^H<<19^H<<10)|0,D=(u=(p>>>7^p>>>18^p>>>3^p<<25^p<<14)+(l>>>17^l>>>19^l>>>10^l<<15^l<<13)+u+m|0)+D+(b>>>6^b>>>11^b>>>25^b<<26^b<<21^b<<7)+(M^b&(v^M))+958139571|0,T=T+D|0,D=D+(U&H^x&(U^H))+(U>>>2^U>>>13^U>>>22^U<<30^U<<19^U<<10)|0,M=(p=(_>>>7^_>>>18^_>>>3^_<<25^_<<14)+(f>>>17^f>>>19^f>>>10^f<<15^f<<13)+p+d|0)+M+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(v^T&(b^v))+1322822218|0,x=x+M|0,M=M+(D&U^H&(D^U))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0,v=(_=(A>>>7^A>>>18^A>>>3^A<<25^A<<14)+(u>>>17^u>>>19^u>>>10^u<<15^u<<13)+_+S|0)+v+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(b^x&(T^b))+1537002063|0,H=H+v|0,v=v+(M&D^U&(M^D))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0,b=(A=(g>>>7^g>>>18^g>>>3^g<<25^g<<14)+(p>>>17^p>>>19^p>>>10^p<<15^p<<13)+A+t|0)+b+(H>>>6^H>>>11^H>>>25^H<<26^H<<21^H<<7)+(T^H&(x^T))+1747873779|0,U=U+b|0,b=b+(v&M^D&(v^M))+(v>>>2^v>>>13^v>>>22^v<<30^v<<19^v<<10)|0,T=(g=(w>>>7^w>>>18^w>>>3^w<<25^w<<14)+(_>>>17^_>>>19^_>>>10^_<<15^_<<13)+g+e|0)+T+(U>>>6^U>>>11^U>>>25^U<<26^U<<21^U<<7)+(x^U&(H^x))+1955562222|0,D=D+T|0,T=T+(b&v^M&(b^v))+(b>>>2^b>>>13^b>>>22^b<<30^b<<19^b<<10)|0,x=(w=(y>>>7^y>>>18^y>>>3^y<<25^y<<14)+(A>>>17^A>>>19^A>>>10^A<<15^A<<13)+w+l|0)+x+(D>>>6^D>>>11^D>>>25^D<<26^D<<21^D<<7)+(H^D&(U^H))+2024104815|0,M=M+x|0,x=x+(T&b^v&(T^b))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0,H=(y=(E>>>7^E>>>18^E>>>3^E<<25^E<<14)+(g>>>17^g>>>19^g>>>10^g<<15^g<<13)+y+f|0)+H+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(U^M&(D^U))+2227730452|0,v=v+H|0,H=H+(x&T^b&(x^T))+(x>>>2^x>>>13^x>>>22^x<<30^x<<19^x<<10)|0,U=(E=(C>>>7^C>>>18^C>>>3^C<<25^C<<14)+(w>>>17^w>>>19^w>>>10^w<<15^w<<13)+E+u|0)+U+(v>>>6^v>>>11^v>>>25^v<<26^v<<21^v<<7)+(D^v&(M^D))+2361852424|0,b=b+U|0,U=U+(H&x^T&(H^x))+(H>>>2^H>>>13^H>>>22^H<<30^H<<19^H<<10)|0,D=(C=(m>>>7^m>>>18^m>>>3^m<<25^m<<14)+(y>>>17^y>>>19^y>>>10^y<<15^y<<13)+C+p|0)+D+(b>>>6^b>>>11^b>>>25^b<<26^b<<21^b<<7)+(M^b&(v^M))+2428436474|0,T=T+D|0,D=D+(U&H^x&(U^H))+(U>>>2^U>>>13^U>>>22^U<<30^U<<19^U<<10)|0,M=(m=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(E>>>17^E>>>19^E>>>10^E<<15^E<<13)+m+_|0)+M+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(v^T&(b^v))+2756734187|0,x=x+M|0,M=M+(D&U^H&(D^U))+(D>>>2^D>>>13^D>>>22^D<<30^D<<19^D<<10)|0,v=(d=(S>>>7^S>>>18^S>>>3^S<<25^S<<14)+(C>>>17^C>>>19^C>>>10^C<<15^C<<13)+d+A|0)+v+(x>>>6^x>>>11^x>>>25^x<<26^x<<21^x<<7)+(b^x&(T^b))+3204031479|0,H=H+v|0,v=v+(M&D^U&(M^D))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0,b=(S=(t>>>7^t>>>18^t>>>3^t<<25^t<<14)+(m>>>17^m>>>19^m>>>10^m<<15^m<<13)+S+g|0)+b+(H>>>6^H>>>11^H>>>25^H<<26^H<<21^H<<7)+(T^H&(x^T))+3329325298|0,U=U+b|0,b=b+(v&M^D&(v^M))+(v>>>2^v>>>13^v>>>22^v<<30^v<<19^v<<10)|0,s=s+b|0,n=n+v|0,i=i+M|0,r=r+D|0,h=h+U|0,a=a+H|0,o=o+x|0,c=c+T|0}function x(t){H(U[0|(t|=0)]<<24|U[1|t]<<16|U[2|t]<<8|U[3|t],U[4|t]<<24|U[5|t]<<16|U[6|t]<<8|U[7|t],U[8|t]<<24|U[9|t]<<16|U[10|t]<<8|U[11|t],U[12|t]<<24|U[13|t]<<16|U[14|t]<<8|U[15|t],U[16|t]<<24|U[17|t]<<16|U[18|t]<<8|U[19|t],U[20|t]<<24|U[21|t]<<16|U[22|t]<<8|U[23|t],U[24|t]<<24|U[25|t]<<16|U[26|t]<<8|U[27|t],U[28|t]<<24|U[29|t]<<16|U[30|t]<<8|U[31|t],U[32|t]<<24|U[33|t]<<16|U[34|t]<<8|U[35|t],U[36|t]<<24|U[37|t]<<16|U[38|t]<<8|U[39|t],U[40|t]<<24|U[41|t]<<16|U[42|t]<<8|U[43|t],U[44|t]<<24|U[45|t]<<16|U[46|t]<<8|U[47|t],U[48|t]<<24|U[49|t]<<16|U[50|t]<<8|U[51|t],U[52|t]<<24|U[53|t]<<16|U[54|t]<<8|U[55|t],U[56|t]<<24|U[57|t]<<16|U[58|t]<<8|U[59|t],U[60|t]<<24|U[61|t]<<16|U[62|t]<<8|U[63|t])}function T(t){U[0|(t|=0)]=s>>>24,U[1|t]=s>>>16&255,U[2|t]=s>>>8&255,U[3|t]=255&s,U[4|t]=n>>>24,U[5|t]=n>>>16&255,U[6|t]=n>>>8&255,U[7|t]=255&n,U[8|t]=i>>>24,U[9|t]=i>>>16&255,U[10|t]=i>>>8&255,U[11|t]=255&i,U[12|t]=r>>>24,U[13|t]=r>>>16&255,U[14|t]=r>>>8&255,U[15|t]=255&r,U[16|t]=h>>>24,U[17|t]=h>>>16&255,U[18|t]=h>>>8&255,U[19|t]=255&h,U[20|t]=a>>>24,U[21|t]=a>>>16&255,U[22|t]=a>>>8&255,U[23|t]=255&a,U[24|t]=o>>>24,U[25|t]=o>>>16&255,U[26|t]=o>>>8&255,U[27|t]=255&o,U[28|t]=c>>>24,U[29|t]=c>>>16&255,U[30|t]=c>>>8&255,U[31|t]=255&c}function P(){s=1779033703,n=3144134277,i=1013904242,r=2773480762,h=1359893119,a=2600822924,o=528734635,c=1541459225,l=f=0}function z(t,e){e|=0;let s=0;if(63&(t|=0))return-1;for(;(0|e)>=64;)x(t),t=t+64|0,e=e-64|0,s=s+64|0;return l=l+s|0,l>>>0<s>>>0&&(f=f+1|0),0|s}function B(t,e,s){let n=0,i=0;if(63&(t|=0))return-1;if(~(s|=0)&&31&s)return-1;if((0|(e|=0))>=64){if(n=0|z(t,e),-1==(0|n))return-1;t=t+n|0,e=e-n|0}if(n=n+e|0,l=l+e|0,l>>>0<e>>>0&&(f=f+1|0),U[t|e]=128,(0|e)>=56){for(i=e+1|0;(0|i)<64;i=i+1|0)U[t|i]=0;x(t),e=0,U[0|t]=0}for(i=e+1|0;(0|i)<59;i=i+1|0)U[t|i]=0;return U[56|t]=f>>>21&255,U[57|t]=f>>>13&255,U[58|t]=f>>>5&255,U[59|t]=f<<3&255|l>>>29,U[60|t]=l>>>21&255,U[61|t]=l>>>13&255,U[62|t]=l>>>5&255,U[63|t]=l<<3&255,x(t),~s&&T(s),0|n}function k(){s=u,n=p,i=_,r=A,h=g,a=w,o=y,c=E,l=64,f=0}function G(){s=C,n=m,i=d,r=S,h=b,a=v,o=M,c=D,l=64,f=0}function R(t,e,l){let f=0,u=0,p=0,_=0,A=0,g=0,w=0,y=0,E=0;return 63&(t|=0)||~(l|=0)&&31&l?-1:(E=0|B(t,e|=0,-1),f=s,u=n,p=i,_=r,A=h,g=a,w=o,y=c,G(),H(f,u,p,_,A,g,w,y,2147483648,0,0,0,0,0,0,768),~l&&T(l),0|E)}return{reset:P,init:function(t,e,u,p,_,A,g,w,y,E){s=t|=0,n=e|=0,i=u|=0,r=p|=0,h=_|=0,a=A|=0,o=g|=0,c=w|=0,l=y|=0,f=E|=0},process:z,finish:B,hmac_reset:k,hmac_init:function(t,e,U,x,T,z,B,k,G,R,N,I,L,O,Z,K){t|=0,e|=0,U|=0,x|=0,T|=0,z|=0,B|=0,k|=0,G|=0,R|=0,N|=0,I|=0,L|=0,O|=0,Z|=0,K|=0,P(),H(1549556828^t,1549556828^e,1549556828^U,1549556828^x,1549556828^T,1549556828^z,1549556828^B,1549556828^k,1549556828^G,1549556828^R,1549556828^N,1549556828^I,1549556828^L,1549556828^O,1549556828^Z,1549556828^K),C=s,m=n,d=i,S=r,b=h,v=a,M=o,D=c,P(),H(909522486^t,909522486^e,909522486^U,909522486^x,909522486^T,909522486^z,909522486^B,909522486^k,909522486^G,909522486^R,909522486^N,909522486^I,909522486^L,909522486^O,909522486^Z,909522486^K),u=s,p=n,_=i,A=r,g=h,w=a,y=o,E=c,l=64,f=0},hmac_finish:R,pbkdf2_generate_block:function(t,e,l,f,u){l|=0,f|=0;let p=0,_=0,A=0,g=0,w=0,y=0,E=0,C=0,m=0,d=0,S=0,b=0,v=0,M=0,D=0,x=0;if(63&(t|=0))return-1;if(~(u|=0)&&31&u)return-1;for(U[t+(e|=0)|0]=l>>>24,U[t+e+1|0]=l>>>16&255,U[t+e+2|0]=l>>>8&255,U[t+e+3|0]=255&l,R(t,e+4|0,-1),p=m=s,_=d=n,A=S=i,g=b=r,w=v=h,y=M=a,E=D=o,C=x=c,f=f-1|0;(0|f)>0;)k(),H(m,d,S,b,v,M,D,x,2147483648,0,0,0,0,0,0,768),m=s,d=n,S=i,b=r,v=h,M=a,D=o,x=c,G(),H(m,d,S,b,v,M,D,x,2147483648,0,0,0,0,0,0,768),m=s,d=n,S=i,b=r,v=h,M=a,D=o,x=c,p^=s,_^=n,A^=i,g^=r,w^=h,y^=a,E^=o,C^=c,f=f-1|0;return s=p,n=_,i=A,r=g,h=w,a=y,o=E,c=C,~u&&T(u),0}}}(0,this.heap.buffer),this.reset()}}v.NAME="sha256";class M{constructor(t,e,s){if(!t.HASH_SIZE)throw new SyntaxError("option 'hash' supplied doesn't seem to be a valid hash function");this.hash=t,this.BLOCK_SIZE=this.hash.BLOCK_SIZE,this.HMAC_SIZE=this.hash.HASH_SIZE,this.result=null,this.key=function(t,e){const s=new Uint8Array(t.BLOCK_SIZE);e.length>t.BLOCK_SIZE?s.set(t.reset().process(e).finish().result):s.set(e);return s}(this.hash,e);const n=new Uint8Array(this.key);for(let t=0;t<n.length;++t)n[t]^=54;this.hash.reset().process(n),void 0!==s?this._hmac_init_verify(s):this.verify=null}process(e){if(null!==this.result)throw new t("state must be reset before processing new data");return this.hash.process(e),this}finish(){if(null!==this.result)throw new t("state must be reset before processing new data");const e=this.hash.finish().result,s=new Uint8Array(this.key);for(let t=0;t<s.length;++t)s[t]^=92;const n=this.verify,i=this.hash.reset().process(s).process(e).finish().result;if(n){if(n.length!==i.length)throw new Error("HMAC verification failed, lengths doesn't match");{let t=0;for(let e=0;e<n.length;e++)t|=n[e]^i[e];if(0!==t)throw new Error("HMAC verification failed, hash value doesn't match")}}return this.result=i,this}_hmac_init_verify(t){if(t.length!==this.HMAC_SIZE)throw new e("illegal verification tag size");this.verify=t}}class D extends M{static sha(t,e,s){return new D(e,s).process(t).finish().result}constructor(t,e){return super(new b,t,e),this.reset(),void 0!==e?this._hmac_init_verify(e):this.verify=null,this}reset(){this.result=null;const t=this.key;return this.hash.reset().asm.hmac_init(t[0]<<24|t[1]<<16|t[2]<<8|t[3],t[4]<<24|t[5]<<16|t[6]<<8|t[7],t[8]<<24|t[9]<<16|t[10]<<8|t[11],t[12]<<24|t[13]<<16|t[14]<<8|t[15],t[16]<<24|t[17]<<16|t[18]<<8|t[19],t[20]<<24|t[21]<<16|t[22]<<8|t[23],t[24]<<24|t[25]<<16|t[26]<<8|t[27],t[28]<<24|t[29]<<16|t[30]<<8|t[31],t[32]<<24|t[33]<<16|t[34]<<8|t[35],t[36]<<24|t[37]<<16|t[38]<<8|t[39],t[40]<<24|t[41]<<16|t[42]<<8|t[43],t[44]<<24|t[45]<<16|t[46]<<8|t[47],t[48]<<24|t[49]<<16|t[50]<<8|t[51],t[52]<<24|t[53]<<16|t[54]<<8|t[55],t[56]<<24|t[57]<<16|t[58]<<8|t[59],t[60]<<24|t[61]<<16|t[62]<<8|t[63]),this}finish(){if(null!==this.result)throw new t("state must be reset before processing new data");const e=this.hash,s=this.hash.asm,n=this.hash.heap;s.hmac_finish(e.pos,e.len,0);const i=this.verify,r=new Uint8Array(20);if(r.set(n.subarray(0,20)),i){if(i.length!==r.length)throw new Error("HMAC verification failed, lengths doesn't match");{let t=0;for(let e=0;e<i.length;e++)t|=i[e]^r[e];if(0!==t)throw new Error("HMAC verification failed, hash value doesn't match")}}else this.result=r;return this}}class U extends M{static sha(t,e,s){return new U(e,s).process(t).finish().result}constructor(t,e){return super(new v,t,e),this.reset(),void 0!==e?this._hmac_init_verify(e):this.verify=null,this}reset(){const t=this.key;return this.hash.reset().asm.hmac_init(t[0]<<24|t[1]<<16|t[2]<<8|t[3],t[4]<<24|t[5]<<16|t[6]<<8|t[7],t[8]<<24|t[9]<<16|t[10]<<8|t[11],t[12]<<24|t[13]<<16|t[14]<<8|t[15],t[16]<<24|t[17]<<16|t[18]<<8|t[19],t[20]<<24|t[21]<<16|t[22]<<8|t[23],t[24]<<24|t[25]<<16|t[26]<<8|t[27],t[28]<<24|t[29]<<16|t[30]<<8|t[31],t[32]<<24|t[33]<<16|t[34]<<8|t[35],t[36]<<24|t[37]<<16|t[38]<<8|t[39],t[40]<<24|t[41]<<16|t[42]<<8|t[43],t[44]<<24|t[45]<<16|t[46]<<8|t[47],t[48]<<24|t[49]<<16|t[50]<<8|t[51],t[52]<<24|t[53]<<16|t[54]<<8|t[55],t[56]<<24|t[57]<<16|t[58]<<8|t[59],t[60]<<24|t[61]<<16|t[62]<<8|t[63]),this}finish(){if(null===this.key)throw new t("no key is associated with the instance");if(null!==this.result)throw new t("state must be reset before processing new data");const e=this.hash,s=this.hash.asm,n=this.hash.heap;s.hmac_finish(e.pos,e.len,0);const i=this.verify,r=new Uint8Array(32);if(r.set(n.subarray(0,32)),i){if(i.length!==r.length)throw new Error("HMAC verification failed, lengths doesn't match");{let t=0;for(let e=0;e<i.length;e++)t|=i[e]^r[e];if(0!==t)throw new Error("HMAC verification failed, hash value doesn't match")}}else this.result=r;return this}}exports.AES=y,exports.AES_CBC=m,exports.AES_CCM=d,exports.AES_ECB=C,exports.AES_GCM=E,exports.HmacSha1=D,exports.HmacSha256=U,exports.IllegalArgumentError=e,exports.IllegalStateError=t,exports.SecurityError=s,exports.Sha1=b,exports.Sha256=v,exports._sha1_block_size=64,exports._sha1_hash_size=20,exports._sha256_block_size=64,exports._sha256_hash_size=32;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ray-js/wechat-tycrypto",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org"
|
|
@@ -23,9 +23,5 @@
|
|
|
23
23
|
"import": "./index.esm.js",
|
|
24
24
|
"require": "./index.js"
|
|
25
25
|
}
|
|
26
|
-
}
|
|
27
|
-
"dependencies": {
|
|
28
|
-
"js-md5": "^0.7.3"
|
|
29
|
-
},
|
|
30
|
-
"peerDependencies": {}
|
|
26
|
+
}
|
|
31
27
|
}
|
package/src/index.d.ts
CHANGED
|
@@ -4,3 +4,7 @@ export * from './lib/aes/ecb';
|
|
|
4
4
|
export * from './lib/aes/aes';
|
|
5
5
|
export * from './lib/aes/cbc';
|
|
6
6
|
export * from './lib/aes/ccm';
|
|
7
|
+
export * from './lib/hash/sha1/sha1';
|
|
8
|
+
export * from './lib/hash/sha256/sha256';
|
|
9
|
+
export * from './lib/hmac/hmac-sha1';
|
|
10
|
+
export * from './lib/hmac/hmac-sha256';
|
package/src/lib/aes/aes.asm.d.ts
CHANGED
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file {@link http://asmjs.org Asm.js} implementation of the {@link https://en.wikipedia.org/wiki/Advanced_Encryption_Standard Advanced Encryption Standard}.
|
|
3
|
-
* @author Artem S Vybornov <vybornov@gmail.com>
|
|
4
|
-
* @license MIT
|
|
5
|
-
*/
|
|
6
1
|
export declare class AES_asm {
|
|
7
2
|
constructor(foreign: any, heap: ArrayBuffer);
|
|
8
|
-
/**
|
|
9
|
-
* AES enciphering mode constants
|
|
10
|
-
* @enum {number}
|
|
11
|
-
* @const
|
|
12
|
-
*/
|
|
13
3
|
static ENC: {
|
|
14
4
|
ECB: 0;
|
|
15
5
|
CBC: 2;
|
|
@@ -18,11 +8,6 @@ export declare class AES_asm {
|
|
|
18
8
|
CTR: 7;
|
|
19
9
|
[key: string]: number;
|
|
20
10
|
};
|
|
21
|
-
/**
|
|
22
|
-
* AES deciphering mode constants
|
|
23
|
-
* @enum {number}
|
|
24
|
-
* @const
|
|
25
|
-
*/
|
|
26
11
|
static DEC: {
|
|
27
12
|
ECB: 1;
|
|
28
13
|
CBC: 3;
|
|
@@ -31,83 +16,20 @@ export declare class AES_asm {
|
|
|
31
16
|
CTR: 7;
|
|
32
17
|
[key: string]: number;
|
|
33
18
|
};
|
|
34
|
-
/**
|
|
35
|
-
* AES MAC mode constants
|
|
36
|
-
* @enum {number}
|
|
37
|
-
* @const
|
|
38
|
-
*/
|
|
39
19
|
static MAC: {
|
|
40
20
|
CBC: number;
|
|
41
21
|
GCM: number;
|
|
42
22
|
};
|
|
43
|
-
/**
|
|
44
|
-
* Heap data offset
|
|
45
|
-
* @type {number}
|
|
46
|
-
* @const
|
|
47
|
-
*/
|
|
48
23
|
static HEAP_DATA: number;
|
|
49
|
-
/**
|
|
50
|
-
* @param ks - key size, 4/6/8 (for 128/192/256-bit key correspondingly)
|
|
51
|
-
* @param k0 - key vector components
|
|
52
|
-
* @param k1 - key vector components
|
|
53
|
-
* @param k2 - key vector components
|
|
54
|
-
* @param k3 - key vector components
|
|
55
|
-
* @param k4 - key vector components
|
|
56
|
-
* @param k5 - key vector components
|
|
57
|
-
* @param k6 - key vector components
|
|
58
|
-
* @param k7 - key vector components
|
|
59
|
-
*/
|
|
60
24
|
set_key(ks: number, k0: number, k1: number, k2: number, k3: number, k4: number, k5: number, k6: number, k7: number): void;
|
|
61
|
-
/**
|
|
62
|
-
* Populate the internal iv of the module
|
|
63
|
-
*/
|
|
64
25
|
set_iv(i0: number, i1: number, i2: number, i3: number): void;
|
|
65
|
-
/**
|
|
66
|
-
* Set counter mask for CTR-family modes
|
|
67
|
-
*/
|
|
68
26
|
set_mask(m0: number, m1: number, m2: number, m3: number): void;
|
|
69
|
-
/**
|
|
70
|
-
* Set nonce for CTR-family modes
|
|
71
|
-
*/
|
|
72
27
|
set_nonce(n0: number, n1: number, n2: number, n3: number): void;
|
|
73
|
-
/**
|
|
74
|
-
* Set counter for CTR-family modes
|
|
75
|
-
*/
|
|
76
28
|
set_counter(c0: number, c1: number, c2: number, c3: number): void;
|
|
77
|
-
/**
|
|
78
|
-
* Perform ciphering operation on the supplied data
|
|
79
|
-
*
|
|
80
|
-
* @param mode - block cipher mode (see {@link AES_asm} mode constants)
|
|
81
|
-
* @param pos - offset of the data being processed
|
|
82
|
-
* @param len - length of the data being processed
|
|
83
|
-
* @return Actual amount of data have been processed
|
|
84
|
-
*/
|
|
85
29
|
cipher(mode: number, pos: number, len: number): number;
|
|
86
|
-
/**
|
|
87
|
-
* GCM initialization
|
|
88
|
-
*/
|
|
89
30
|
gcm_init(): void;
|
|
90
|
-
/**
|
|
91
|
-
* Store the internal iv vector into the heap
|
|
92
|
-
*
|
|
93
|
-
* @returns The number of bytes have been written into the heap, always 16
|
|
94
|
-
*/
|
|
95
31
|
get_iv(pos: number): 16 | -1;
|
|
96
|
-
/**
|
|
97
|
-
* Calculates MAC of the supplied data
|
|
98
|
-
*
|
|
99
|
-
* @param mode - block cipher mode (see {@link AES_asm} mode constants)
|
|
100
|
-
* @param pos - offset of the data being processed
|
|
101
|
-
* @param len - length of the data being processed
|
|
102
|
-
* @return Actual amount of data have been processed
|
|
103
|
-
*/
|
|
104
32
|
mac(mode: number, pos: number, len: number): number;
|
|
105
|
-
/**
|
|
106
|
-
* Store the internal state vector into the heap.
|
|
107
|
-
*
|
|
108
|
-
* @param pos - offset where to put the data
|
|
109
|
-
* @return The number of bytes have been written into the heap, always 16.
|
|
110
|
-
*/
|
|
111
33
|
get_state(pos: number): 16 | -1;
|
|
112
34
|
}
|
|
113
35
|
export declare type AES_mode = 'ECB' | 'CBC' | 'CFB' | 'OFB' | 'CTR' | 'CCM';
|
package/src/lib/aes/ccm.d.ts
CHANGED
|
@@ -1,17 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Counter with CBC-MAC (CCM)
|
|
3
|
-
*
|
|
4
|
-
* Due to JS limitations (52 bits of Number precision) maximum encrypted message length
|
|
5
|
-
* is limited to ~4 PiB ( 2^52 - 16 ) per `nonce`-`key` pair.
|
|
6
|
-
* That also limits `lengthSize` parameter maximum value to 7 (not 8 as described in RFC3610).
|
|
7
|
-
*
|
|
8
|
-
* Additional authenticated data `adata` maximum length is chosen to be no more than 65279 bytes ( 2^16 - 2^8 ),
|
|
9
|
-
* which is considered enough for the most of use-cases.
|
|
10
|
-
*
|
|
11
|
-
* And one more important thing: in case of progressive ciphering of a data stream (in other
|
|
12
|
-
* words when data can't be held in-memory at a whole and are ciphered chunk-by-chunk)
|
|
13
|
-
* you have to know the `dataLength` in advance and pass that value to the cipher options.
|
|
14
|
-
*/
|
|
15
1
|
import { AES } from './aes';
|
|
16
2
|
export declare class AES_CCM {
|
|
17
3
|
private readonly tagSize;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Sha1result } from './sha1/sha1.asm';
|
|
2
|
+
import { Sha256result } from './sha256/sha256.asm';
|
|
3
|
+
import { Sha512result } from './sha512/sha512.asm';
|
|
4
|
+
export declare abstract class Hash<T extends Sha1result | Sha256result | Sha512result> {
|
|
5
|
+
result: Uint8Array | null;
|
|
6
|
+
pos: number;
|
|
7
|
+
len: number;
|
|
8
|
+
asm: T;
|
|
9
|
+
heap: Uint8Array;
|
|
10
|
+
BLOCK_SIZE: number;
|
|
11
|
+
HASH_SIZE: number;
|
|
12
|
+
reset(): this;
|
|
13
|
+
process(data: Uint8Array): this;
|
|
14
|
+
finish(): this;
|
|
15
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface Sha1result {
|
|
2
|
+
reset: () => void;
|
|
3
|
+
init: (h0: number, h1: number, h2: number, h3: number, h4: number, total0: number, total1: number) => void;
|
|
4
|
+
process: (offset: number, length: number) => number;
|
|
5
|
+
finish: (offset: number, length: number, output: number) => number;
|
|
6
|
+
hmac_reset: () => void;
|
|
7
|
+
hmac_init: (p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number, p11: number, p12: number, p13: number, p14: number, p15: number) => void;
|
|
8
|
+
hmac_finish: (offset: number, length: number, output: number) => number;
|
|
9
|
+
pbkdf2_generate_block: (offset: number, length: number, block: number, count: number, output: number) => 0 | -1;
|
|
10
|
+
}
|
|
11
|
+
export declare const sha1_asm: (foreign: any, buffer: ArrayBuffer) => Sha1result;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Sha1result } from './sha1.asm';
|
|
2
|
+
import { Hash } from '../hash';
|
|
3
|
+
export declare const _sha1_block_size = 64;
|
|
4
|
+
export declare const _sha1_hash_size = 20;
|
|
5
|
+
export declare class Sha1 extends Hash<Sha1result> {
|
|
6
|
+
static NAME: string;
|
|
7
|
+
NAME: string;
|
|
8
|
+
BLOCK_SIZE: number;
|
|
9
|
+
HASH_SIZE: number;
|
|
10
|
+
constructor();
|
|
11
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const sha256_asm: (foreign: any, buffer: ArrayBuffer) => Sha256result;
|
|
2
|
+
export interface Sha256result {
|
|
3
|
+
reset: () => void;
|
|
4
|
+
init: (h0: number, h1: number, h2: number, h3: number, h4: number, h5: number, h6: number, h7: number, total0: number, total1: number) => void;
|
|
5
|
+
process: (offset: number, length: number) => number;
|
|
6
|
+
finish: (offset: number, length: number, output: number) => number;
|
|
7
|
+
hmac_reset: () => void;
|
|
8
|
+
hmac_init: (p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, p9: number, p10: number, p11: number, p12: number, p13: number, p14: number, p15: number) => void;
|
|
9
|
+
hmac_finish: (offset: number, length: number, output: number) => number;
|
|
10
|
+
pbkdf2_generate_block: (offset: number, length: number, block: number, count: number, output: number) => 0 | -1;
|
|
11
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Sha256result } from './sha256.asm';
|
|
2
|
+
import { Hash } from '../hash';
|
|
3
|
+
export declare const _sha256_block_size = 64;
|
|
4
|
+
export declare const _sha256_hash_size = 32;
|
|
5
|
+
export declare class Sha256 extends Hash<Sha256result> {
|
|
6
|
+
static NAME: string;
|
|
7
|
+
NAME: string;
|
|
8
|
+
BLOCK_SIZE: number;
|
|
9
|
+
HASH_SIZE: number;
|
|
10
|
+
constructor();
|
|
11
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const sha512_asm: (foreign: any, buffer: ArrayBuffer) => Sha512result;
|
|
2
|
+
export interface Sha512result {
|
|
3
|
+
reset: () => void;
|
|
4
|
+
init: (h0h: number, h0l: number, h1h: number, h1l: number, h2h: number, h2l: number, h3h: number, h3l: number, h4h: number, h4l: number, h5h: number, h5l: number, h6h: number, h6l: number, h7h: number, h7l: number, total0: number, total1: number) => void;
|
|
5
|
+
process: (offset: number, length: number) => number;
|
|
6
|
+
finish: (offset: number, length: number, output: number) => number;
|
|
7
|
+
hmac_reset: () => void;
|
|
8
|
+
hmac_init: (p0h: number, p0l: number, p1h: number, p1l: number, p2h: number, p2l: number, p3h: number, p3l: number, p4h: number, p4l: number, p5h: number, p5l: number, p6h: number, p6l: number, p7h: number, p7l: number, p8h: number, p8l: number, p9h: number, p9l: number, p10h: number, p10l: number, p11h: number, p11l: number, p12h: number, p12l: number, p13h: number, p13l: number, p14h: number, p14l: number, p15h: number, p15l: number) => void;
|
|
9
|
+
hmac_finish: (offset: number, length: number, output: number) => number;
|
|
10
|
+
pbkdf2_generate_block: (offset: number, length: number, block: number, count: number, output: number) => 0 | -1;
|
|
11
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Sha512result } from './sha512.asm';
|
|
2
|
+
import { Hash } from '../hash';
|
|
3
|
+
export declare const _sha512_block_size = 128;
|
|
4
|
+
export declare const _sha512_hash_size = 64;
|
|
5
|
+
export declare class Sha512 extends Hash<Sha512result> {
|
|
6
|
+
static NAME: string;
|
|
7
|
+
NAME: string;
|
|
8
|
+
BLOCK_SIZE: number;
|
|
9
|
+
HASH_SIZE: number;
|
|
10
|
+
constructor();
|
|
11
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Hmac } from './hmac';
|
|
2
|
+
import { Sha1result } from '../hash/sha1/sha1.asm';
|
|
3
|
+
import { Hash } from '../hash/hash';
|
|
4
|
+
export declare class HmacSha1 extends Hmac<Hash<Sha1result>> {
|
|
5
|
+
static sha(data: Uint8Array, key: Uint8Array, verify?: Uint8Array): Uint8Array;
|
|
6
|
+
constructor(password: Uint8Array, verify?: Uint8Array);
|
|
7
|
+
reset(): this;
|
|
8
|
+
finish(): this;
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Hmac } from './hmac';
|
|
2
|
+
import { Sha256result } from '../hash/sha256/sha256.asm';
|
|
3
|
+
import { Hash } from '../hash/hash';
|
|
4
|
+
export declare class HmacSha256 extends Hmac<Hash<Sha256result>> {
|
|
5
|
+
static sha(data: Uint8Array, key: Uint8Array, verify?: Uint8Array): Uint8Array;
|
|
6
|
+
constructor(password: Uint8Array, verify?: Uint8Array);
|
|
7
|
+
reset(): this;
|
|
8
|
+
finish(): this;
|
|
9
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Hmac } from './hmac';
|
|
2
|
+
import { Hash } from '../hash/hash';
|
|
3
|
+
import { Sha512result } from '../hash/sha512/sha512.asm';
|
|
4
|
+
export declare class HmacSha512 extends Hmac<Hash<Sha512result>> {
|
|
5
|
+
constructor(password: Uint8Array, verify?: Uint8Array);
|
|
6
|
+
reset(): this;
|
|
7
|
+
finish(): this;
|
|
8
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Hash } from '../hash/hash';
|
|
2
|
+
import { Sha1result } from '../hash/sha1/sha1.asm';
|
|
3
|
+
import { Sha256result } from '../hash/sha256/sha256.asm';
|
|
4
|
+
import { Sha512result } from '../hash/sha512/sha512.asm';
|
|
5
|
+
export declare abstract class Hmac<T extends Hash<Sha1result> | Hash<Sha256result> | Hash<Sha512result>> {
|
|
6
|
+
hash: T;
|
|
7
|
+
protected BLOCK_SIZE: number;
|
|
8
|
+
HMAC_SIZE: number;
|
|
9
|
+
protected key: Uint8Array;
|
|
10
|
+
protected verify: Uint8Array | null;
|
|
11
|
+
result: Uint8Array | null;
|
|
12
|
+
protected constructor(hash: T, password: Uint8Array, verify?: Uint8Array);
|
|
13
|
+
process(data: Uint8Array): this;
|
|
14
|
+
finish(): this;
|
|
15
|
+
_hmac_init_verify(verify: Uint8Array): void;
|
|
16
|
+
}
|
|
17
|
+
export declare function _hmac_key(hash: Hash<Sha1result | Sha256result | Sha512result>, password: Uint8Array): Uint8Array;
|