diff options
Diffstat (limited to 'src/sha512.js')
-rw-r--r-- | src/sha512.js | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/src/sha512.js b/src/sha512.js index 7835b10..ef61936 100644 --- a/src/sha512.js +++ b/src/sha512.js @@ -9,24 +9,25 @@ Several functions taken from Paul Johnston */ -'use strict';(function(J){function w(a,b,c){var f=0,g=[0],l="",h=null,l=c||"UTF8";if("UTF8"!==l&&"UTF16BE"!==l&&"UTF16LE"!==l)throw"encoding must be UTF8, UTF16BE, or UTF16LE";if("HEX"===b){if(0!==a.length%2)throw"srcString of HEX type must be in byte increments";h=y(a);f=h.binLen;g=h.value}else if("TEXT"===b||"ASCII"===b)h=z(a,l),f=h.binLen,g=h.value;else if("B64"===b)h=A(a),f=h.binLen,g=h.value;else if("BYTES"===b)h=B(a),f=h.binLen,g=h.value;else throw"inputFormat must be HEX, TEXT, ASCII, B64, or BYTES"; -this.getHash=function(a,b,c,l){var h=null,d=g.slice(),n=f,p;3===arguments.length?"number"!==typeof c&&(l=c,c=1):2===arguments.length&&(c=1);if(c!==parseInt(c,10)||1>c)throw"numRounds must a integer >= 1";switch(b){case "HEX":h=D;break;case "B64":h=E;break;case "BYTES":h=F;break;default:throw"format must be HEX, B64, or BYTES";}if("SHA-384"===a)for(p=0;p<c;p+=1)d=u(d,n,a),n=384;else if("SHA-512"===a)for(p=0;p<c;p+=1)d=u(d,n,a),n=512;else throw"Chosen SHA variant is not supported";return h(d,G(l))}; -this.getHMAC=function(a,b,c,h,m){var d,n,p,r,q=[],H=[];d=null;switch(h){case "HEX":h=D;break;case "B64":h=E;break;case "BYTES":h=F;break;default:throw"outputFormat must be HEX, B64, or BYTES";}if("SHA-384"===c)n=128,r=384;else if("SHA-512"===c)n=128,r=512;else throw"Chosen SHA variant is not supported";if("HEX"===b)d=y(a),p=d.binLen,d=d.value;else if("TEXT"===b||"ASCII"===b)d=z(a,l),p=d.binLen,d=d.value;else if("B64"===b)d=A(a),p=d.binLen,d=d.value;else if("BYTES"===b)d=B(a),p=d.binLen,d=d.value; -else throw"inputFormat must be HEX, TEXT, ASCII, B64, or BYTES";a=8*n;b=n/4-1;if(n<p/8){for(d=u(d,p,c);d.length<=b;)d.push(0);d[b]&=4294967040}else if(n>p/8){for(;d.length<=b;)d.push(0);d[b]&=4294967040}for(n=0;n<=b;n+=1)q[n]=d[n]^909522486,H[n]=d[n]^1549556828;c=u(H.concat(u(q.concat(g),a+f,c)),a+r,c);return h(c,G(m))}}function m(a,b){this.a=a;this.b=b}function z(a,b){var c=[],f,g=[],l=0,h,s,m;if("UTF8"===b)for(h=0;h<a.length;h+=1)for(f=a.charCodeAt(h),g=[],128>f?g.push(f):2048>f?(g.push(192|f>>> -6),g.push(128|f&63)):55296>f||57344<=f?g.push(224|f>>>12,128|f>>>6&63,128|f&63):(h+=1,f=65536+((f&1023)<<10|a.charCodeAt(h)&1023),g.push(240|f>>>18,128|f>>>12&63,128|f>>>6&63,128|f&63)),s=0;s<g.length;s+=1){for(m=l>>>2;c.length<=m;)c.push(0);c[m]|=g[s]<<24-l%4*8;l+=1}else if("UTF16BE"===b||"UTF16LE"===b)for(h=0;h<a.length;h+=1){f=a.charCodeAt(h);"UTF16LE"===b&&(s=f&255,f=s<<8|f>>8);for(m=l>>>2;c.length<=m;)c.push(0);c[m]|=f<<16-l%4*8;l+=2}return{value:c,binLen:8*l}}function y(a){var b=[],c=a.length, -f,g,l;if(0!==c%2)throw"String of HEX type must be in byte increments";for(f=0;f<c;f+=2){g=parseInt(a.substr(f,2),16);if(isNaN(g))throw"String of HEX type contains invalid characters";for(l=f>>>3;b.length<=l;)b.push(0);b[f>>>3]|=g<<24-f%8*4}return{value:b,binLen:4*c}}function B(a){var b=[],c,f,g;for(f=0;f<a.length;f+=1)c=a.charCodeAt(f),g=f>>>2,b.length<=g&&b.push(0),b[g]|=c<<24-f%4*8;return{value:b,binLen:8*a.length}}function A(a){var b=[],c=0,f,g,l,h,m;if(-1===a.search(/^[a-zA-Z0-9=+\/]+$/))throw"Invalid character in base-64 string"; -g=a.indexOf("=");a=a.replace(/\=/g,"");if(-1!==g&&g<a.length)throw"Invalid '=' found in base-64 string";for(g=0;g<a.length;g+=4){m=a.substr(g,4);for(l=h=0;l<m.length;l+=1)f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(m[l]),h|=f<<18-6*l;for(l=0;l<m.length-1;l+=1){for(f=c>>>2;b.length<=f;)b.push(0);b[f]|=(h>>>16-8*l&255)<<24-c%4*8;c+=1}}return{value:b,binLen:8*c}}function D(a,b){var c="",f=4*a.length,g,l;for(g=0;g<f;g+=1)l=a[g>>>2]>>>8*(3-g%4),c+="0123456789abcdef".charAt(l>>> -4&15)+"0123456789abcdef".charAt(l&15);return b.outputUpper?c.toUpperCase():c}function E(a,b){var c="",f=4*a.length,g,l,h;for(g=0;g<f;g+=3)for(h=g+1>>>2,l=a.length<=h?0:a[h],h=g+2>>>2,h=a.length<=h?0:a[h],h=(a[g>>>2]>>>8*(3-g%4)&255)<<16|(l>>>8*(3-(g+1)%4)&255)<<8|h>>>8*(3-(g+2)%4)&255,l=0;4>l;l+=1)c=8*g+6*l<=32*a.length?c+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(h>>>6*(3-l)&63):c+b.b64Pad;return c}function F(a){var b="",c=4*a.length,f,g;for(f=0;f<c;f+=1)g=a[f>>>2]>>> -8*(3-f%4)&255,b+=String.fromCharCode(g);return b}function G(a){var b={outputUpper:!1,b64Pad:"="};try{a.hasOwnProperty("outputUpper")&&(b.outputUpper=a.outputUpper),a.hasOwnProperty("b64Pad")&&(b.b64Pad=a.b64Pad)}catch(c){}if("boolean"!==typeof b.outputUpper)throw"Invalid outputUpper formatting option";if("string"!==typeof b.b64Pad)throw"Invalid b64Pad formatting option";return b}function q(a,b){var c=null,c=new m(a.a,a.b);return c=32>=b?new m(c.a>>>b|c.b<<32-b&4294967295,c.b>>>b|c.a<<32-b&4294967295): -new m(c.b>>>b-32|c.a<<64-b&4294967295,c.a>>>b-32|c.b<<64-b&4294967295)}function I(a,b){var c=null;return c=32>=b?new m(a.a>>>b,a.b>>>b|a.a<<32-b&4294967295):new m(0,a.a>>>b-32)}function K(a,b,c){return new m(a.a&b.a^~a.a&c.a,a.b&b.b^~a.b&c.b)}function L(a,b,c){return new m(a.a&b.a^a.a&c.a^b.a&c.a,a.b&b.b^a.b&c.b^b.b&c.b)}function M(a){var b=q(a,28),c=q(a,34);a=q(a,39);return new m(b.a^c.a^a.a,b.b^c.b^a.b)}function N(a){var b=q(a,14),c=q(a,18);a=q(a,41);return new m(b.a^c.a^a.a,b.b^c.b^a.b)}function O(a){var b= -q(a,1),c=q(a,8);a=I(a,7);return new m(b.a^c.a^a.a,b.b^c.b^a.b)}function P(a){var b=q(a,19),c=q(a,61);a=I(a,6);return new m(b.a^c.a^a.a,b.b^c.b^a.b)}function Q(a,b){var c,f,g;c=(a.b&65535)+(b.b&65535);f=(a.b>>>16)+(b.b>>>16)+(c>>>16);g=(f&65535)<<16|c&65535;c=(a.a&65535)+(b.a&65535)+(f>>>16);f=(a.a>>>16)+(b.a>>>16)+(c>>>16);return new m((f&65535)<<16|c&65535,g)}function R(a,b,c,f){var g,l,h;g=(a.b&65535)+(b.b&65535)+(c.b&65535)+(f.b&65535);l=(a.b>>>16)+(b.b>>>16)+(c.b>>>16)+(f.b>>>16)+(g>>>16);h=(l& -65535)<<16|g&65535;g=(a.a&65535)+(b.a&65535)+(c.a&65535)+(f.a&65535)+(l>>>16);l=(a.a>>>16)+(b.a>>>16)+(c.a>>>16)+(f.a>>>16)+(g>>>16);return new m((l&65535)<<16|g&65535,h)}function S(a,b,c,f,g){var l,h,s;l=(a.b&65535)+(b.b&65535)+(c.b&65535)+(f.b&65535)+(g.b&65535);h=(a.b>>>16)+(b.b>>>16)+(c.b>>>16)+(f.b>>>16)+(g.b>>>16)+(l>>>16);s=(h&65535)<<16|l&65535;l=(a.a&65535)+(b.a&65535)+(c.a&65535)+(f.a&65535)+(g.a&65535)+(h>>>16);h=(a.a>>>16)+(b.a>>>16)+(c.a>>>16)+(f.a>>>16)+(g.a>>>16)+(l>>>16);return new m((h& -65535)<<16|l&65535,s)}function u(a,b,c){var f,g,l,h,s,q,u,C,v,d,n,p,r,w,H,t,y,z,A,B,D,E,F,G,e,x=[],I,k=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700, -1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];d=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428];g=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225];if("SHA-384"===c||"SHA-512"=== -c)n=80,f=(b+128>>>10<<5)+31,w=32,H=2,e=m,t=Q,y=R,z=S,A=O,B=P,D=M,E=N,G=L,F=K,k=[new e(k[0],3609767458),new e(k[1],602891725),new e(k[2],3964484399),new e(k[3],2173295548),new e(k[4],4081628472),new e(k[5],3053834265),new e(k[6],2937671579),new e(k[7],3664609560),new e(k[8],2734883394),new e(k[9],1164996542),new e(k[10],1323610764),new e(k[11],3590304994),new e(k[12],4068182383),new e(k[13],991336113),new e(k[14],633803317),new e(k[15],3479774868),new e(k[16],2666613458),new e(k[17],944711139),new e(k[18], -2341262773),new e(k[19],2007800933),new e(k[20],1495990901),new e(k[21],1856431235),new e(k[22],3175218132),new e(k[23],2198950837),new e(k[24],3999719339),new e(k[25],766784016),new e(k[26],2566594879),new e(k[27],3203337956),new e(k[28],1034457026),new e(k[29],2466948901),new e(k[30],3758326383),new e(k[31],168717936),new e(k[32],1188179964),new e(k[33],1546045734),new e(k[34],1522805485),new e(k[35],2643833823),new e(k[36],2343527390),new e(k[37],1014477480),new e(k[38],1206759142),new e(k[39], -344077627),new e(k[40],1290863460),new e(k[41],3158454273),new e(k[42],3505952657),new e(k[43],106217008),new e(k[44],3606008344),new e(k[45],1432725776),new e(k[46],1467031594),new e(k[47],851169720),new e(k[48],3100823752),new e(k[49],1363258195),new e(k[50],3750685593),new e(k[51],3785050280),new e(k[52],3318307427),new e(k[53],3812723403),new e(k[54],2003034995),new e(k[55],3602036899),new e(k[56],1575990012),new e(k[57],1125592928),new e(k[58],2716904306),new e(k[59],442776044),new e(k[60],593698344), -new e(k[61],3733110249),new e(k[62],2999351573),new e(k[63],3815920427),new e(3391569614,3928383900),new e(3515267271,566280711),new e(3940187606,3454069534),new e(4118630271,4000239992),new e(116418474,1914138554),new e(174292421,2731055270),new e(289380356,3203993006),new e(460393269,320620315),new e(685471733,587496836),new e(852142971,1086792851),new e(1017036298,365543100),new e(1126000580,2618297676),new e(1288033470,3409855158),new e(1501505948,4234509866),new e(1607167915,987167468),new e(1816402316, -1246189591)],d="SHA-384"===c?[new e(3418070365,d[0]),new e(1654270250,d[1]),new e(2438529370,d[2]),new e(355462360,d[3]),new e(1731405415,d[4]),new e(41048885895,d[5]),new e(3675008525,d[6]),new e(1203062813,d[7])]:[new e(g[0],4089235720),new e(g[1],2227873595),new e(g[2],4271175723),new e(g[3],1595750129),new e(g[4],2917565137),new e(g[5],725511199),new e(g[6],4215389547),new e(g[7],327033209)];else throw"Unexpected error in SHA-2 implementation";for(;a.length<=f;)a.push(0);a[b>>>5]|=128<<24-b%32; -a[f]=b;I=a.length;for(p=0;p<I;p+=w){b=d[0];f=d[1];g=d[2];l=d[3];h=d[4];s=d[5];q=d[6];u=d[7];for(r=0;r<n;r+=1)16>r?(v=r*H+p,C=a.length<=v?0:a[v],v=a.length<=v+1?0:a[v+1],x[r]=new e(C,v)):x[r]=y(B(x[r-2]),x[r-7],A(x[r-15]),x[r-16]),C=z(u,E(h),F(h,s,q),k[r],x[r]),v=t(D(b),G(b,f,g)),u=q,q=s,s=h,h=t(l,C),l=g,g=f,f=b,b=t(C,v);d[0]=t(b,d[0]);d[1]=t(f,d[1]);d[2]=t(g,d[2]);d[3]=t(l,d[3]);d[4]=t(h,d[4]);d[5]=t(s,d[5]);d[6]=t(q,d[6]);d[7]=t(u,d[7])}if("SHA-384"===c)a=[d[0].a,d[0].b,d[1].a,d[1].b,d[2].a,d[2].b, -d[3].a,d[3].b,d[4].a,d[4].b,d[5].a,d[5].b];else if("SHA-512"===c)a=[d[0].a,d[0].b,d[1].a,d[1].b,d[2].a,d[2].b,d[3].a,d[3].b,d[4].a,d[4].b,d[5].a,d[5].b,d[6].a,d[6].b,d[7].a,d[7].b];else throw"Unexpected error in SHA-2 implementation";return a}"function"===typeof define&&define.amd?define(function(){return w}):"undefined"!==typeof exports?"undefined"!==typeof module&&module.exports?module.exports=exports=w:exports=w:J.jsSHA=w})(this); +'use strict';(function(K){function x(p,c,a){var b=0,f=[],e=0,g,h,m,k,l,r,t,n=!1,u=!1,v=[],A=[],w,B=!1;a=a||{};g=a.encoding||"UTF8";w=a.numRounds||1;m=C(c,g);if(w!==parseInt(w,10)||1>w)throw"numRounds must a integer >= 1";r=function(c,a){return D(c,a,p)};t=function(c,a,d,e){var f,b;if("SHA-384"===p||"SHA-512"===p)f=(a+136>>>10<<5)+31,b=32;else throw"Unexpected error in SHA-2 implementation";for(;c.length<=f;)c.push(0);c[a>>>5]|=128<<24-a%32;c[f]=a+d;d=c.length;for(a=0;a<d;a+=b)e=D(c.slice(a,a+b),e, +p);if("SHA-384"===p)c=[e[0].a,e[0].b,e[1].a,e[1].b,e[2].a,e[2].b,e[3].a,e[3].b,e[4].a,e[4].b,e[5].a,e[5].b];else if("SHA-512"===p)c=[e[0].a,e[0].b,e[1].a,e[1].b,e[2].a,e[2].b,e[3].a,e[3].b,e[4].a,e[4].b,e[5].a,e[5].b,e[6].a,e[6].b,e[7].a,e[7].b];else throw"Unexpected error in SHA-2 implementation";return c};if("SHA-384"===p)l=1024,k=384;else if("SHA-512"===p)l=1024,k=512;else throw"Chosen SHA variant is not supported";h=y(p);this.setHMACKey=function(c,a,d){var e;if(!0===u)throw"HMAC key already set"; +if(!0===n)throw"Cannot set HMAC key after finalizing hash";if(!0===B)throw"Cannot set HMAC key after calling update";g=(d||{}).encoding||"UTF8";a=C(a,g)(c);c=a.binLen;a=a.value;e=l>>>3;d=e/4-1;if(e<c/8){for(a=t(a,c,0,y(p));a.length<=d;)a.push(0);a[d]&=4294967040}else if(e>c/8){for(;a.length<=d;)a.push(0);a[d]&=4294967040}for(c=0;c<=d;c+=1)v[c]=a[c]^909522486,A[c]=a[c]^1549556828;h=r(v,h);b=l;u=!0};this.update=function(c){var a,p,d,g=0,k=l>>>5;a=m(c,f,e);c=a.binLen;p=a.value;a=c>>>5;for(d=0;d<a;d+= +k)g+l<=c&&(h=r(p.slice(d,d+k),h),g+=l);b+=g;f=p.slice(g>>>5);e=c%l;B=!0};this.getHash=function(c,a){var d,g,l;if(!0===u)throw"Cannot call getHash after setting HMAC key";l=E(a);switch(c){case "HEX":d=function(c){return F(c,l)};break;case "B64":d=function(c){return G(c,l)};break;case "BYTES":d=H;break;default:throw"format must be HEX, B64, or BYTES";}if(!1===n)for(h=t(f,e,b,h),g=1;g<w;g+=1)h=t(h,k,0,y(p));n=!0;return d(h)};this.getHMAC=function(c,a){var d,g,m;if(!1===u)throw"Cannot call getHMAC without first setting HMAC key"; +m=E(a);switch(c){case "HEX":d=function(c){return F(c,m)};break;case "B64":d=function(c){return G(c,m)};break;case "BYTES":d=H;break;default:throw"outputFormat must be HEX, B64, or BYTES";}!1===n&&(g=t(f,e,b,h),h=r(A,y(p)),h=t(g,k,l,h));n=!0;return d(h)}}function a(a,c){this.a=a;this.b=c}function L(a,c,d){var b=a.length,f,e,g,h,m;c=c||[0];d=d||0;m=d>>>3;if(0!==b%2)throw"String of HEX type must be in byte increments";for(f=0;f<b;f+=2){e=parseInt(a.substr(f,2),16);if(isNaN(e))throw"String of HEX type contains invalid characters"; +h=(f>>>1)+m;for(g=h>>>2;c.length<=g;)c.push(0);c[g]|=e<<8*(3-h%4)}return{value:c,binLen:4*b+d}}function M(a,c,d){var b=[],f,e,g,h,b=c||[0];d=d||0;e=d>>>3;for(f=0;f<a.length;f+=1)c=a.charCodeAt(f),h=f+e,g=h>>>2,b.length<=g&&b.push(0),b[g]|=c<<8*(3-h%4);return{value:b,binLen:8*a.length+d}}function N(a,c,d){var b=[],f=0,e,g,h,m,k,l,b=c||[0];d=d||0;c=d>>>3;if(-1===a.search(/^[a-zA-Z0-9=+\/]+$/))throw"Invalid character in base-64 string";g=a.indexOf("=");a=a.replace(/\=/g,"");if(-1!==g&&g<a.length)throw"Invalid '=' found in base-64 string"; +for(g=0;g<a.length;g+=4){k=a.substr(g,4);for(h=m=0;h<k.length;h+=1)e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(k[h]),m|=e<<18-6*h;for(h=0;h<k.length-1;h+=1){l=f+c;for(e=l>>>2;b.length<=e;)b.push(0);b[e]|=(m>>>16-8*h&255)<<8*(3-l%4);f+=1}}return{value:b,binLen:8*f+d}}function F(a,c){var d="",b=4*a.length,f,e;for(f=0;f<b;f+=1)e=a[f>>>2]>>>8*(3-f%4),d+="0123456789abcdef".charAt(e>>>4&15)+"0123456789abcdef".charAt(e&15);return c.outputUpper?d.toUpperCase():d}function G(a, +c){var d="",b=4*a.length,f,e,g;for(f=0;f<b;f+=3)for(g=f+1>>>2,e=a.length<=g?0:a[g],g=f+2>>>2,g=a.length<=g?0:a[g],g=(a[f>>>2]>>>8*(3-f%4)&255)<<16|(e>>>8*(3-(f+1)%4)&255)<<8|g>>>8*(3-(f+2)%4)&255,e=0;4>e;e+=1)d=8*f+6*e<=32*a.length?d+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(g>>>6*(3-e)&63):d+c.b64Pad;return d}function H(a){var c="",d=4*a.length,b,f;for(b=0;b<d;b+=1)f=a[b>>>2]>>>8*(3-b%4)&255,c+=String.fromCharCode(f);return c}function E(a){var c={outputUpper:!1,b64Pad:"="}; +a=a||{};c.outputUpper=a.outputUpper||!1;c.b64Pad=a.b64Pad||"=";if("boolean"!==typeof c.outputUpper)throw"Invalid outputUpper formatting option";if("string"!==typeof c.b64Pad)throw"Invalid b64Pad formatting option";return c}function C(a,c){var d;switch(c){case "UTF8":case "UTF16BE":case "UTF16LE":break;default:throw"encoding must be UTF8, UTF16BE, or UTF16LE";}switch(a){case "HEX":d=L;break;case "TEXT":d=function(a,d,e){var b=[],p=[],m=0,k,l,r,t,n,b=d||[0];d=e||0;r=d>>>3;if("UTF8"===c)for(k=0;k<a.length;k+= +1)for(e=a.charCodeAt(k),p=[],128>e?p.push(e):2048>e?(p.push(192|e>>>6),p.push(128|e&63)):55296>e||57344<=e?p.push(224|e>>>12,128|e>>>6&63,128|e&63):(k+=1,e=65536+((e&1023)<<10|a.charCodeAt(k)&1023),p.push(240|e>>>18,128|e>>>12&63,128|e>>>6&63,128|e&63)),l=0;l<p.length;l+=1){n=m+r;for(t=n>>>2;b.length<=t;)b.push(0);b[t]|=p[l]<<8*(3-n%4);m+=1}else if("UTF16BE"===c||"UTF16LE"===c)for(k=0;k<a.length;k+=1){e=a.charCodeAt(k);"UTF16LE"===c&&(l=e&255,e=l<<8|e>>>8);n=m+r;for(t=n>>>2;b.length<=t;)b.push(0); +b[t]|=e<<8*(2-n%4);m+=2}return{value:b,binLen:8*m+d}};break;case "B64":d=N;break;case "BYTES":d=M;break;default:throw"format must be HEX, TEXT, B64, or BYTES";}return d}function u(b,c){var d=null,d=new a(b.a,b.b);return d=32>=c?new a(d.a>>>c|d.b<<32-c&4294967295,d.b>>>c|d.a<<32-c&4294967295):new a(d.b>>>c-32|d.a<<64-c&4294967295,d.a>>>c-32|d.b<<64-c&4294967295)}function I(b,c){var d=null;return d=32>=c?new a(b.a>>>c,b.b>>>c|b.a<<32-c&4294967295):new a(0,b.a>>>c-32)}function O(b,c,d){return new a(b.a& +c.a^~b.a&d.a,b.b&c.b^~b.b&d.b)}function P(b,c,d){return new a(b.a&c.a^b.a&d.a^c.a&d.a,b.b&c.b^b.b&d.b^c.b&d.b)}function Q(b){var c=u(b,28),d=u(b,34);b=u(b,39);return new a(c.a^d.a^b.a,c.b^d.b^b.b)}function R(b){var c=u(b,14),d=u(b,18);b=u(b,41);return new a(c.a^d.a^b.a,c.b^d.b^b.b)}function S(b){var c=u(b,1),d=u(b,8);b=I(b,7);return new a(c.a^d.a^b.a,c.b^d.b^b.b)}function T(b){var c=u(b,19),d=u(b,61);b=I(b,6);return new a(c.a^d.a^b.a,c.b^d.b^b.b)}function U(b,c){var d,q,f;d=(b.b&65535)+(c.b&65535); +q=(b.b>>>16)+(c.b>>>16)+(d>>>16);f=(q&65535)<<16|d&65535;d=(b.a&65535)+(c.a&65535)+(q>>>16);q=(b.a>>>16)+(c.a>>>16)+(d>>>16);return new a((q&65535)<<16|d&65535,f)}function V(b,c,d,q){var f,e,g;f=(b.b&65535)+(c.b&65535)+(d.b&65535)+(q.b&65535);e=(b.b>>>16)+(c.b>>>16)+(d.b>>>16)+(q.b>>>16)+(f>>>16);g=(e&65535)<<16|f&65535;f=(b.a&65535)+(c.a&65535)+(d.a&65535)+(q.a&65535)+(e>>>16);e=(b.a>>>16)+(c.a>>>16)+(d.a>>>16)+(q.a>>>16)+(f>>>16);return new a((e&65535)<<16|f&65535,g)}function W(b,c,d,q,f){var e, +g,h;e=(b.b&65535)+(c.b&65535)+(d.b&65535)+(q.b&65535)+(f.b&65535);g=(b.b>>>16)+(c.b>>>16)+(d.b>>>16)+(q.b>>>16)+(f.b>>>16)+(e>>>16);h=(g&65535)<<16|e&65535;e=(b.a&65535)+(c.a&65535)+(d.a&65535)+(q.a&65535)+(f.a&65535)+(g>>>16);g=(b.a>>>16)+(c.a>>>16)+(d.a>>>16)+(q.a>>>16)+(f.a>>>16)+(e>>>16);return new a((g&65535)<<16|e&65535,h)}function y(b){var c,d;c=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428];d=[1779033703,3144134277,1013904242,2773480762,1359893119, +2600822924,528734635,1541459225];switch(b){case "SHA-224":b=c;break;case "SHA-256":b=d;break;case "SHA-384":b=[new a(3418070365,c[0]),new a(1654270250,c[1]),new a(2438529370,c[2]),new a(355462360,c[3]),new a(1731405415,c[4]),new a(41048885895,c[5]),new a(3675008525,c[6]),new a(1203062813,c[7])];break;case "SHA-512":b=[new a(d[0],4089235720),new a(d[1],2227873595),new a(d[2],4271175723),new a(d[3],1595750129),new a(d[4],2917565137),new a(d[5],725511199),new a(d[6],4215389547),new a(d[7],327033209)]; +break;default:throw"Unknown SHA variant";}return b}function D(b,c,d){var q,f,e,g,h,m,k,l,r,t,n,u,v,A,w,B,x,y,C,D,E,F,z=[],G;if("SHA-384"===d||"SHA-512"===d)t=80,u=2,F=a,v=U,A=V,w=W,B=S,x=T,y=Q,C=R,E=P,D=O,G=J;else throw"Unexpected error in SHA-2 implementation";d=c[0];q=c[1];f=c[2];e=c[3];g=c[4];h=c[5];m=c[6];k=c[7];for(n=0;n<t;n+=1)16>n?(r=n*u,l=b.length<=r?0:b[r],r=b.length<=r+1?0:b[r+1],z[n]=new F(l,r)):z[n]=A(x(z[n-2]),z[n-7],B(z[n-15]),z[n-16]),l=w(k,C(g),D(g,h,m),G[n],z[n]),r=v(y(d),E(d,q,f)), +k=m,m=h,h=g,g=v(e,l),e=f,f=q,q=d,d=v(l,r);c[0]=v(d,c[0]);c[1]=v(q,c[1]);c[2]=v(f,c[2]);c[3]=v(e,c[3]);c[4]=v(g,c[4]);c[5]=v(h,c[5]);c[6]=v(m,c[6]);c[7]=v(k,c[7]);return c}var b,J;b=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711, +113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];J=[new a(b[0],3609767458),new a(b[1],602891725),new a(b[2],3964484399),new a(b[3],2173295548),new a(b[4],4081628472),new a(b[5],3053834265), +new a(b[6],2937671579),new a(b[7],3664609560),new a(b[8],2734883394),new a(b[9],1164996542),new a(b[10],1323610764),new a(b[11],3590304994),new a(b[12],4068182383),new a(b[13],991336113),new a(b[14],633803317),new a(b[15],3479774868),new a(b[16],2666613458),new a(b[17],944711139),new a(b[18],2341262773),new a(b[19],2007800933),new a(b[20],1495990901),new a(b[21],1856431235),new a(b[22],3175218132),new a(b[23],2198950837),new a(b[24],3999719339),new a(b[25],766784016),new a(b[26],2566594879),new a(b[27], +3203337956),new a(b[28],1034457026),new a(b[29],2466948901),new a(b[30],3758326383),new a(b[31],168717936),new a(b[32],1188179964),new a(b[33],1546045734),new a(b[34],1522805485),new a(b[35],2643833823),new a(b[36],2343527390),new a(b[37],1014477480),new a(b[38],1206759142),new a(b[39],344077627),new a(b[40],1290863460),new a(b[41],3158454273),new a(b[42],3505952657),new a(b[43],106217008),new a(b[44],3606008344),new a(b[45],1432725776),new a(b[46],1467031594),new a(b[47],851169720),new a(b[48],3100823752), +new a(b[49],1363258195),new a(b[50],3750685593),new a(b[51],3785050280),new a(b[52],3318307427),new a(b[53],3812723403),new a(b[54],2003034995),new a(b[55],3602036899),new a(b[56],1575990012),new a(b[57],1125592928),new a(b[58],2716904306),new a(b[59],442776044),new a(b[60],593698344),new a(b[61],3733110249),new a(b[62],2999351573),new a(b[63],3815920427),new a(3391569614,3928383900),new a(3515267271,566280711),new a(3940187606,3454069534),new a(4118630271,4000239992),new a(116418474,1914138554), +new a(174292421,2731055270),new a(289380356,3203993006),new a(460393269,320620315),new a(685471733,587496836),new a(852142971,1086792851),new a(1017036298,365543100),new a(1126000580,2618297676),new a(1288033470,3409855158),new a(1501505948,4234509866),new a(1607167915,987167468),new a(1816402316,1246189591)];"function"===typeof define&&define.amd?define(function(){return x}):"undefined"!==typeof exports?"undefined"!==typeof module&&module.exports?module.exports=exports=x:exports=x:K.jsSHA=x})(this); |