summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Turek <brian.turek@gmail.com>2012-12-23 12:05:06 -0600
committerBrian Turek <brian.turek@gmail.com>2012-12-23 12:05:06 -0600
commitc7443ceafdaf84788a10e74c60c14cbbcee971c5 (patch)
treef46b97138242eb756158ccff77558a5f2aad1d8b
parent6570d4b39cbce9e6629edc49687b00e940184e97 (diff)
downloadjsSHA-c7443ceafdaf84788a10e74c60c14cbbcee971c5.zip
jsSHA-c7443ceafdaf84788a10e74c60c14cbbcee971c5.tar.gz
jsSHA-c7443ceafdaf84788a10e74c60c14cbbcee971c5.tar.bz2
Fixed hashing issue with Chrome v25release-1.41
-rwxr-xr-xCHANGELOG5
-rwxr-xr-xsrc/sha.js50
-rwxr-xr-xsrc/sha1.js22
-rwxr-xr-xsrc/sha256.js26
-rwxr-xr-xsrc/sha512.js32
-rwxr-xr-xsrc/sha_dev.js42
6 files changed, 91 insertions, 86 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 5987ab3..c47fbff 100755
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,11 @@
jsSHA - ChangeLog
-------------------------
+1.41 (2012-12-23)
+=========================
+- Fixed incorrect hash issue with Chrome x64 v25 (Dev channel), also provides
+ stable patch to v1.4 Safari issue.
+
1.4 (2012-12-08)
=========================
- Added new input type, TEXT, that is functionally identical to ASCII*
diff --git a/src/sha.js b/src/sha.js
index ffef44b..b479832 100755
--- a/src/sha.js
+++ b/src/sha.js
@@ -9,31 +9,31 @@
Several functions taken from Paul Johnson
*/
-function p(a){throw a;}var q=null;function r(a,c){this.a=a;this.b=c}function x(a,c){var b=[],g=(1<<c)-1,f=a.length*c,h;for(h=0;h<f;h+=c)b[h>>>5]|=(a.charCodeAt(h/c)&g)<<32-c-h%32;return{value:b,binLen:f}}function y(a){var c=[],b=a.length,g,f;0!==b%2&&p("String of HEX type must be in byte increments");for(g=0;g<b;g+=2)f=parseInt(a.substr(g,2),16),isNaN(f)&&p("String of HEX type contains invalid characters"),c[g>>>3]|=f<<24-4*(g%8);return{value:c,binLen:4*b}}
-function A(a){var c=[],b=0,g,f,h,i,k;-1===a.search(/^[a-zA-Z0-9=+\/]+$/)&&p("Invalid character in base-64 string");g=a.indexOf("=");a=a.replace(/\=/g,"");-1!==g&&g<a.length&&p("Invalid '=' found in base-64 string");for(f=0;f<a.length;f+=4){k=a.substr(f,4);for(h=i=0;h<k.length;h+=1)g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(k[h]),i|=g<<18-6*h;for(h=0;h<k.length-1;h+=1)c[b>>2]|=(i>>>16-8*h&255)<<24-8*(b%4),b+=1}return{value:c,binLen:8*b}}
-function D(a,c){var b="",g=4*a.length,f,h;for(f=0;f<g;f+=1)h=a[f>>>2]>>>8*(3-f%4),b+="0123456789abcdef".charAt(h>>>4&15)+"0123456789abcdef".charAt(h&15);return c.outputUpper?b.toUpperCase():b}
-function E(a,c){var b="",g=4*a.length,f,h,i;for(f=0;f<g;f+=3){i=(a[f>>>2]>>>8*(3-f%4)&255)<<16|(a[f+1>>>2]>>>8*(3-(f+1)%4)&255)<<8|a[f+2>>>2]>>>8*(3-(f+2)%4)&255;for(h=0;4>h;h+=1)b=8*f+6*h<=32*a.length?b+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(i>>>6*(3-h)&63):b+c.b64Pad}return b}
-function H(a){var c={outputUpper:!1,b64Pad:"="};try{a.hasOwnProperty("outputUpper")&&(c.outputUpper=a.outputUpper),a.hasOwnProperty("b64Pad")&&(c.b64Pad=a.b64Pad)}catch(b){}"boolean"!==typeof c.outputUpper&&p("Invalid outputUpper formatting option");"string"!==typeof c.b64Pad&&p("Invalid b64Pad formatting option");return c}function J(a,c){return a>>>c|a<<32-c}
-function Q(a,c){var b=q,b=new r(a.a,a.b);return b=32>=c?new r(b.a>>>c|b.b<<32-c,b.b>>>c|b.a<<32-c):new r(b.b>>>c-32|b.a<<64-c,b.a>>>c-32|b.b<<64-c)}function R(a,c){var b=q;return b=32>=c?new r(a.a>>>c,a.b>>>c|a.a<<32-c):new r(0,a.a>>>c-32)}function S(a,c,b){return a&c^~a&b}function T(a,c,b){return new r(a.a&c.a^~a.a&b.a,a.b&c.b^~a.b&b.b)}function U(a,c,b){return a&c^a&b^c&b}function V(a,c,b){return new r(a.a&c.a^a.a&b.a^c.a&b.a,a.b&c.b^a.b&b.b^c.b&b.b)}
-function aa(a){return J(a,2)^J(a,13)^J(a,22)}function ba(a){var c=Q(a,28),b=Q(a,34),a=Q(a,39);return new r(c.a^b.a^a.a,c.b^b.b^a.b)}function ca(a){return J(a,6)^J(a,11)^J(a,25)}function da(a){var c=Q(a,14),b=Q(a,18),a=Q(a,41);return new r(c.a^b.a^a.a,c.b^b.b^a.b)}function ea(a){return J(a,7)^J(a,18)^a>>>3}function fa(a){var c=Q(a,1),b=Q(a,8),a=R(a,7);return new r(c.a^b.a^a.a,c.b^b.b^a.b)}function ga(a){return J(a,17)^J(a,19)^a>>>10}
-function ha(a){var c=Q(a,19),b=Q(a,61),a=R(a,6);return new r(c.a^b.a^a.a,c.b^b.b^a.b)}function W(a,c){var b=(a&65535)+(c&65535);return((a>>>16)+(c>>>16)+(b>>>16)&65535)<<16|b&65535}function ia(a,c,b,g){var f=(a&65535)+(c&65535)+(b&65535)+(g&65535);return((a>>>16)+(c>>>16)+(b>>>16)+(g>>>16)+(f>>>16)&65535)<<16|f&65535}function Y(a,c,b,g,f){var h=(a&65535)+(c&65535)+(b&65535)+(g&65535)+(f&65535);return((a>>>16)+(c>>>16)+(b>>>16)+(g>>>16)+(f>>>16)+(h>>>16)&65535)<<16|h&65535}
-function ja(a,c){var b,g,f;b=(a.b&65535)+(c.b&65535);g=(a.b>>>16)+(c.b>>>16)+(b>>>16);f=(g&65535)<<16|b&65535;b=(a.a&65535)+(c.a&65535)+(g>>>16);g=(a.a>>>16)+(c.a>>>16)+(b>>>16);return new r((g&65535)<<16|b&65535,f)}
-function ka(a,c,b,g){var f,h,i;f=(a.b&65535)+(c.b&65535)+(b.b&65535)+(g.b&65535);h=(a.b>>>16)+(c.b>>>16)+(b.b>>>16)+(g.b>>>16)+(f>>>16);i=(h&65535)<<16|f&65535;f=(a.a&65535)+(c.a&65535)+(b.a&65535)+(g.a&65535)+(h>>>16);h=(a.a>>>16)+(c.a>>>16)+(b.a>>>16)+(g.a>>>16)+(f>>>16);return new r((h&65535)<<16|f&65535,i)}
-function la(a,c,b,g,f){var h,i,k;h=(a.b&65535)+(c.b&65535)+(b.b&65535)+(g.b&65535)+(f.b&65535);i=(a.b>>>16)+(c.b>>>16)+(b.b>>>16)+(g.b>>>16)+(f.b>>>16)+(h>>>16);k=(i&65535)<<16|h&65535;h=(a.a&65535)+(c.a&65535)+(b.a&65535)+(g.a&65535)+(f.a&65535)+(i>>>16);i=(a.a>>>16)+(c.a>>>16)+(b.a>>>16)+(g.a>>>16)+(f.a>>>16)+(h>>>16);return new r((i&65535)<<16|h&65535,k)}
-function Z(a,c){var b=[],g,f,h,i,k,m,n,j,l,e=[1732584193,4023233417,2562383102,271733878,3285377520],z=[1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,
-1859775393,1859775393,1859775393,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782];a[c>>>5]|=128<<24-c%32;a[(c+
-65>>>9<<4)+15]=c;l=a.length;for(n=0;n<l;n+=16){g=e[0];f=e[1];h=e[2];i=e[3];k=e[4];for(j=0;80>j;j+=1)b[j]=16>j?a[j+n]:(b[j-3]^b[j-8]^b[j-14]^b[j-16])<<1|(b[j-3]^b[j-8]^b[j-14]^b[j-16])>>>31,m=20>j?Y(g<<5|g>>>27,f&h^~f&i,k,z[j],b[j]):40>j?Y(g<<5|g>>>27,f^h^i,k,z[j],b[j]):60>j?Y(g<<5|g>>>27,U(f,h,i),k,z[j],b[j]):Y(g<<5|g>>>27,f^h^i,k,z[j],b[j]),k=i,i=h,h=f<<30|f>>>2,f=g,g=m;e[0]=W(g,e[0]);e[1]=W(f,e[1]);e[2]=W(h,e[2]);e[3]=W(i,e[3]);e[4]=W(k,e[4])}return e}
-function $(a,c,b){var g,f,h,i,k,m,n,j,l,e,z,F,s,K,v,t,L,M,w,B,C,u,N,O,d,P,G=[],X,I;"SHA-224"===b||"SHA-256"===b?(z=64,g=(c+65>>>9<<4)+15,K=16,v=1,d=Number,t=W,L=ia,M=Y,w=ea,B=ga,C=aa,u=ca,O=U,N=S,P=[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],e="SHA-224"===b?[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]:[1779033703,
-3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]):"SHA-384"===b||"SHA-512"===b?(z=80,g=(c+128>>>10<<5)+31,K=32,v=2,d=r,t=ja,L=ka,M=la,w=fa,B=ha,C=ba,u=da,O=V,N=T,P=[new d(1116352408,3609767458),new d(1899447441,602891725),new d(3049323471,3964484399),new d(3921009573,2173295548),new d(961987163,4081628472),new d(1508970993,3053834265),new d(2453635748,2937671579),new d(2870763221,3664609560),new d(3624381080,2734883394),new d(310598401,1164996542),new d(607225278,1323610764),
+function q(a){throw a;}var r=null;function s(a,b){this.a=a;this.b=b}function y(a,b){var c=[],g=(1<<b)-1,f=a.length*b,h;for(h=0;h<f;h+=b)c[h>>>5]|=(a.charCodeAt(h/b)&g)<<32-b-h%32;return{value:c,binLen:f}}function z(a){var b=[],c=a.length,g,f;0!==c%2&&q("String of HEX type must be in byte increments");for(g=0;g<c;g+=2)f=parseInt(a.substr(g,2),16),isNaN(f)&&q("String of HEX type contains invalid characters"),b[g>>>3]|=f<<24-4*(g%8);return{value:b,binLen:4*c}}
+function B(a){var b=[],c=0,g,f,h,j,l;-1===a.search(/^[a-zA-Z0-9=+\/]+$/)&&q("Invalid character in base-64 string");g=a.indexOf("=");a=a.replace(/\=/g,"");-1!==g&&g<a.length&&q("Invalid '=' found in base-64 string");for(f=0;f<a.length;f+=4){l=a.substr(f,4);for(h=j=0;h<l.length;h+=1)g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(l[h]),j|=g<<18-6*h;for(h=0;h<l.length-1;h+=1)b[c>>2]|=(j>>>16-8*h&255)<<24-8*(c%4),c+=1}return{value:b,binLen:8*c}}
+function E(a,b){var c="",g=4*a.length,f,h;for(f=0;f<g;f+=1)h=a[f>>>2]>>>8*(3-f%4),c+="0123456789abcdef".charAt(h>>>4&15)+"0123456789abcdef".charAt(h&15);return b.outputUpper?c.toUpperCase():c}
+function F(a,b){var c="",g=4*a.length,f,h,j;for(f=0;f<g;f+=3){j=(a[f>>>2]>>>8*(3-f%4)&255)<<16|(a[f+1>>>2]>>>8*(3-(f+1)%4)&255)<<8|a[f+2>>>2]>>>8*(3-(f+2)%4)&255;for(h=0;4>h;h+=1)c=8*f+6*h<=32*a.length?c+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(j>>>6*(3-h)&63):c+b.b64Pad}return c}
+function I(a){var b={outputUpper:!1,b64Pad:"="};try{a.hasOwnProperty("outputUpper")&&(b.outputUpper=a.outputUpper),a.hasOwnProperty("b64Pad")&&(b.b64Pad=a.b64Pad)}catch(c){}"boolean"!==typeof b.outputUpper&&q("Invalid outputUpper formatting option");"string"!==typeof b.b64Pad&&q("Invalid b64Pad formatting option");return b}function K(a,b){return a>>>b|a<<32-b}
+function R(a,b){var c=r;return c=32>=b?new s(a.a>>>b|a.b<<32-b&4294967295,a.b>>>b|a.a<<32-b&4294967295):new s(a.b>>>b-32|a.a<<64-b&4294967295,a.a>>>b-32|a.b<<64-b&4294967295)}function S(a,b){var c=r;return c=32>=b?new s(a.a>>>b,a.b>>>b|a.a<<32-b&4294967295):new s(0,a.a>>>b-32)}function T(a,b,c){return a&b^~a&c}function U(a,b,c){return new s(a.a&b.a^~a.a&c.a,a.b&b.b^~a.b&c.b)}function V(a,b,c){return a&b^a&c^b&c}function aa(a,b,c){return new s(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 ba(a){return K(a,2)^K(a,13)^K(a,22)}function ca(a){var b=R(a,28),c=R(a,34);a=R(a,39);return new s(b.a^c.a^a.a,b.b^c.b^a.b)}function da(a){return K(a,6)^K(a,11)^K(a,25)}function ea(a){var b=R(a,14),c=R(a,18);a=R(a,41);return new s(b.a^c.a^a.a,b.b^c.b^a.b)}function fa(a){return K(a,7)^K(a,18)^a>>>3}function ga(a){var b=R(a,1),c=R(a,8);a=S(a,7);return new s(b.a^c.a^a.a,b.b^c.b^a.b)}function ha(a){return K(a,17)^K(a,19)^a>>>10}
+function ia(a){var b=R(a,19),c=R(a,61);a=S(a,6);return new s(b.a^c.a^a.a,b.b^c.b^a.b)}function W(a,b){var c=(a&65535)+(b&65535);return((a>>>16)+(b>>>16)+(c>>>16)&65535)<<16|c&65535}function ja(a,b,c,g){var f=(a&65535)+(b&65535)+(c&65535)+(g&65535);return((a>>>16)+(b>>>16)+(c>>>16)+(g>>>16)+(f>>>16)&65535)<<16|f&65535}function X(a,b,c,g,f){var h=(a&65535)+(b&65535)+(c&65535)+(g&65535)+(f&65535);return((a>>>16)+(b>>>16)+(c>>>16)+(g>>>16)+(f>>>16)+(h>>>16)&65535)<<16|h&65535}
+function ka(a,b){var c,g,f;c=(a.b&65535)+(b.b&65535);g=(a.b>>>16)+(b.b>>>16)+(c>>>16);f=(g&65535)<<16|c&65535;c=(a.a&65535)+(b.a&65535)+(g>>>16);g=(a.a>>>16)+(b.a>>>16)+(c>>>16);return new s((g&65535)<<16|c&65535,f)}
+function la(a,b,c,g){var f,h,j;f=(a.b&65535)+(b.b&65535)+(c.b&65535)+(g.b&65535);h=(a.b>>>16)+(b.b>>>16)+(c.b>>>16)+(g.b>>>16)+(f>>>16);j=(h&65535)<<16|f&65535;f=(a.a&65535)+(b.a&65535)+(c.a&65535)+(g.a&65535)+(h>>>16);h=(a.a>>>16)+(b.a>>>16)+(c.a>>>16)+(g.a>>>16)+(f>>>16);return new s((h&65535)<<16|f&65535,j)}
+function ma(a,b,c,g,f){var h,j,l;h=(a.b&65535)+(b.b&65535)+(c.b&65535)+(g.b&65535)+(f.b&65535);j=(a.b>>>16)+(b.b>>>16)+(c.b>>>16)+(g.b>>>16)+(f.b>>>16)+(h>>>16);l=(j&65535)<<16|h&65535;h=(a.a&65535)+(b.a&65535)+(c.a&65535)+(g.a&65535)+(f.a&65535)+(j>>>16);j=(a.a>>>16)+(b.a>>>16)+(c.a>>>16)+(g.a>>>16)+(f.a>>>16)+(h>>>16);return new s((j&65535)<<16|h&65535,l)}
+function Z(a,b){var c=[],g,f,h,j,l,n,p,k,m,e=[1732584193,4023233417,2562383102,271733878,3285377520],A=[1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,
+1859775393,1859775393,1859775393,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782];a[b>>>5]|=128<<24-b%32;a[(b+
+65>>>9<<4)+15]=b;m=a.length;for(p=0;p<m;p+=16){g=e[0];f=e[1];h=e[2];j=e[3];l=e[4];for(k=0;80>k;k+=1)c[k]=16>k?a[k+p]:(c[k-3]^c[k-8]^c[k-14]^c[k-16])<<1|(c[k-3]^c[k-8]^c[k-14]^c[k-16])>>>31,n=20>k?X(g<<5|g>>>27,f&h^~f&j,l,A[k],c[k]):40>k?X(g<<5|g>>>27,f^h^j,l,A[k],c[k]):60>k?X(g<<5|g>>>27,V(f,h,j),l,A[k],c[k]):X(g<<5|g>>>27,f^h^j,l,A[k],c[k]),l=j,j=h,h=f<<30|f>>>2,f=g,g=n;e[0]=W(g,e[0]);e[1]=W(f,e[1]);e[2]=W(h,e[2]);e[3]=W(j,e[3]);e[4]=W(l,e[4])}return e}
+function $(a,b,c){var g,f,h,j,l,n,p,k,m,e,A,G,t,L,w,u,M,N,x,C,D,v,O,P,d,Q,H=[],Y,J;"SHA-224"===c||"SHA-256"===c?(A=64,g=(b+65>>>9<<4)+15,L=16,w=1,d=Number,u=W,M=ja,N=X,x=fa,C=ha,D=ba,v=da,P=V,O=T,Q=[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],e="SHA-224"===c?[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]:[1779033703,
+3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]):"SHA-384"===c||"SHA-512"===c?(A=80,g=(b+128>>>10<<5)+31,L=32,w=2,d=s,u=ka,M=la,N=ma,x=ga,C=ia,D=ca,v=ea,P=aa,O=U,Q=[new d(1116352408,3609767458),new d(1899447441,602891725),new d(3049323471,3964484399),new d(3921009573,2173295548),new d(961987163,4081628472),new d(1508970993,3053834265),new d(2453635748,2937671579),new d(2870763221,3664609560),new d(3624381080,2734883394),new d(310598401,1164996542),new d(607225278,1323610764),
new d(1426881987,3590304994),new d(1925078388,4068182383),new d(2162078206,991336113),new d(2614888103,633803317),new d(3248222580,3479774868),new d(3835390401,2666613458),new d(4022224774,944711139),new d(264347078,2341262773),new d(604807628,2007800933),new d(770255983,1495990901),new d(1249150122,1856431235),new d(1555081692,3175218132),new d(1996064986,2198950837),new d(2554220882,3999719339),new d(2821834349,766784016),new d(2952996808,2566594879),new d(3210313671,3203337956),new d(3336571891,
1034457026),new d(3584528711,2466948901),new d(113926993,3758326383),new d(338241895,168717936),new d(666307205,1188179964),new d(773529912,1546045734),new d(1294757372,1522805485),new d(1396182291,2643833823),new d(1695183700,2343527390),new d(1986661051,1014477480),new d(2177026350,1206759142),new d(2456956037,344077627),new d(2730485921,1290863460),new d(2820302411,3158454273),new d(3259730800,3505952657),new d(3345764771,106217008),new d(3516065817,3606008344),new d(3600352804,1432725776),new d(4094571909,
1467031594),new d(275423344,851169720),new d(430227734,3100823752),new d(506948616,1363258195),new d(659060556,3750685593),new d(883997877,3785050280),new d(958139571,3318307427),new d(1322822218,3812723403),new d(1537002063,2003034995),new d(1747873779,3602036899),new d(1955562222,1575990012),new d(2024104815,1125592928),new d(2227730452,2716904306),new d(2361852424,442776044),new d(2428436474,593698344),new d(2756734187,3733110249),new d(3204031479,2999351573),new d(3329325298,3815920427),new d(3391569614,
-3928383900),new d(3515267271,566280711),new d(3940187606,3454069534),new d(4118630271,4000239992),new d(116418474,1914138554),new d(174292421,2731055270),new d(289380356,3203993006),new d(460393269,320620315),new d(685471733,587496836),new d(852142971,1086792851),new d(1017036298,365543100),new d(1126000580,2618297676),new d(1288033470,3409855158),new d(1501505948,4234509866),new d(1607167915,987167468),new d(1816402316,1246189591)],e="SHA-384"===b?[new d(3418070365,3238371032),new d(1654270250,914150663),
-new d(2438529370,812702999),new d(355462360,4144912697),new d(1731405415,4290775857),new d(41048885895,1750603025),new d(3675008525,1694076839),new d(1203062813,3204075428)]:[new d(1779033703,4089235720),new d(3144134277,2227873595),new d(1013904242,4271175723),new d(2773480762,1595750129),new d(1359893119,2917565137),new d(2600822924,725511199),new d(528734635,4215389547),new d(1541459225,327033209)]):p("Unexpected error in SHA-2 implementation");a[c>>>5]|=128<<24-c%32;a[g]=c;X=a.length;for(F=0;F<
-X;F+=K){c=e[0];g=e[1];f=e[2];h=e[3];i=e[4];k=e[5];m=e[6];n=e[7];for(s=0;s<z;s+=1)G[s]=16>s?new d(a[s*v+F],a[s*v+F+1]):L(B(G[s-2]),G[s-7],w(G[s-15]),G[s-16]),j=M(n,u(i),N(i,k,m),P[s],G[s]),l=t(C(c),O(c,g,f)),n=m,m=k,k=i,i=t(h,j),h=f,f=g,g=c,c=t(j,l);e[0]=t(c,e[0]);e[1]=t(g,e[1]);e[2]=t(f,e[2]);e[3]=t(h,e[3]);e[4]=t(i,e[4]);e[5]=t(k,e[5]);e[6]=t(m,e[6]);e[7]=t(n,e[7])}"SHA-224"===b?I=[e[0],e[1],e[2],e[3],e[4],e[5],e[6]]:"SHA-256"===b?I=e:"SHA-384"===b?I=[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]:"SHA-512"===b?I=[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]:p("Unexpected error in SHA-2 implementation");return I}
-window.jsSHA=function(a,c,b){var g=q,f=q,h=q,i=q,k=q,m=0,n=[0],j=0,l=q,j="undefined"!==typeof b?b:8;8===j||16===j||p("charSize must be 8 or 16");"HEX"===c?(0!==a.length%2&&p("srcString of HEX type must be in byte increments"),l=y(a),m=l.binLen,n=l.value):"ASCII"===c||"TEXT"===c?(l=x(a,j),m=l.binLen,n=l.value):"B64"===c?(l=A(a),m=l.binLen,n=l.value):p("inputFormat must be HEX, TEXT, ASCII, or B64");this.getHash=function(a,c,b){var j=q,l=n.slice(),v="";switch(c){case "HEX":j=D;break;case "B64":j=E;
-break;default:p("format must be HEX or B64")}"SHA-1"===a?(q===g&&(g=Z(l,m)),v=j(g,H(b))):"SHA-224"===a?(q===f&&(f=$(l,m,a)),v=j(f,H(b))):"SHA-256"===a?(q===h&&(h=$(l,m,a)),v=j(h,H(b))):"SHA-384"===a?(q===i&&(i=$(l,m,a)),v=j(i,H(b))):"SHA-512"===a?(q===k&&(k=$(l,m,a)),v=j(k,H(b))):p("Chosen SHA variant is not supported");return v};this.getHMAC=function(a,b,c,f,g){var h,i,k,l,w,B=[],C=[],u=q;switch(f){case "HEX":h=D;break;case "B64":h=E;break;default:p("outputFormat must be HEX or B64")}"SHA-1"===c?
-(k=64,w=160):"SHA-224"===c?(k=64,w=224):"SHA-256"===c?(k=64,w=256):"SHA-384"===c?(k=128,w=384):"SHA-512"===c?(k=128,w=512):p("Chosen SHA variant is not supported");"HEX"===b?(u=y(a),l=u.binLen,i=u.value):"ASCII"===b||"TEXT"===b?(u=x(a,j),l=u.binLen,i=u.value):"B64"===b?(u=A(a),l=u.binLen,i=u.value):p("inputFormat must be HEX, TEXT, ASCII, or B64");a=8*k;b=k/4-1;k<l/8?(i="SHA-1"===c?Z(i,l):$(i,l,c),i[b]&=4294967040):k>l/8&&(i[b]&=4294967040);for(k=0;k<=b;k+=1)B[k]=i[k]^909522486,C[k]=i[k]^1549556828;
-c="SHA-1"===c?Z(C.concat(Z(B.concat(n),a+m)),a+w):$(C.concat($(B.concat(n),a+m,c)),a+w,c);return h(c,H(g))}};})();
+3928383900),new d(3515267271,566280711),new d(3940187606,3454069534),new d(4118630271,4000239992),new d(116418474,1914138554),new d(174292421,2731055270),new d(289380356,3203993006),new d(460393269,320620315),new d(685471733,587496836),new d(852142971,1086792851),new d(1017036298,365543100),new d(1126000580,2618297676),new d(1288033470,3409855158),new d(1501505948,4234509866),new d(1607167915,987167468),new d(1816402316,1246189591)],e="SHA-384"===c?[new d(3418070365,3238371032),new d(1654270250,914150663),
+new d(2438529370,812702999),new d(355462360,4144912697),new d(1731405415,4290775857),new d(41048885895,1750603025),new d(3675008525,1694076839),new d(1203062813,3204075428)]:[new d(1779033703,4089235720),new d(3144134277,2227873595),new d(1013904242,4271175723),new d(2773480762,1595750129),new d(1359893119,2917565137),new d(2600822924,725511199),new d(528734635,4215389547),new d(1541459225,327033209)]):q("Unexpected error in SHA-2 implementation");a[b>>>5]|=128<<24-b%32;a[g]=b;Y=a.length;for(G=0;G<
+Y;G+=L){b=e[0];g=e[1];f=e[2];h=e[3];j=e[4];l=e[5];n=e[6];p=e[7];for(t=0;t<A;t+=1)H[t]=16>t?new d(a[t*w+G],a[t*w+G+1]):M(C(H[t-2]),H[t-7],x(H[t-15]),H[t-16]),k=N(p,v(j),O(j,l,n),Q[t],H[t]),m=u(D(b),P(b,g,f)),p=n,n=l,l=j,j=u(h,k),h=f,f=g,g=b,b=u(k,m);e[0]=u(b,e[0]);e[1]=u(g,e[1]);e[2]=u(f,e[2]);e[3]=u(h,e[3]);e[4]=u(j,e[4]);e[5]=u(l,e[5]);e[6]=u(n,e[6]);e[7]=u(p,e[7])}"SHA-224"===c?J=[e[0],e[1],e[2],e[3],e[4],e[5],e[6]]:"SHA-256"===c?J=e:"SHA-384"===c?J=[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]:"SHA-512"===c?J=[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]:q("Unexpected error in SHA-2 implementation");return J}
+window.jsSHA=function(a,b,c){var g=r,f=r,h=r,j=r,l=r,n=0,p=[0],k=0,m=r,k="undefined"!==typeof c?c:8;8===k||16===k||q("charSize must be 8 or 16");"HEX"===b?(0!==a.length%2&&q("srcString of HEX type must be in byte increments"),m=z(a),n=m.binLen,p=m.value):"ASCII"===b||"TEXT"===b?(m=y(a,k),n=m.binLen,p=m.value):"B64"===b?(m=B(a),n=m.binLen,p=m.value):q("inputFormat must be HEX, TEXT, ASCII, or B64");this.getHash=function(a,b,c){var k=r,m=p.slice(),w="";switch(b){case "HEX":k=E;break;case "B64":k=F;
+break;default:q("format must be HEX or B64")}"SHA-1"===a?(r===g&&(g=Z(m,n)),w=k(g,I(c))):"SHA-224"===a?(r===f&&(f=$(m,n,a)),w=k(f,I(c))):"SHA-256"===a?(r===h&&(h=$(m,n,a)),w=k(h,I(c))):"SHA-384"===a?(r===j&&(j=$(m,n,a)),w=k(j,I(c))):"SHA-512"===a?(r===l&&(l=$(m,n,a)),w=k(l,I(c))):q("Chosen SHA variant is not supported");return w};this.getHMAC=function(a,b,c,f,g){var h,j,l,m,x,C=[],D=[],v=r;switch(f){case "HEX":h=E;break;case "B64":h=F;break;default:q("outputFormat must be HEX or B64")}"SHA-1"===c?
+(l=64,x=160):"SHA-224"===c?(l=64,x=224):"SHA-256"===c?(l=64,x=256):"SHA-384"===c?(l=128,x=384):"SHA-512"===c?(l=128,x=512):q("Chosen SHA variant is not supported");"HEX"===b?(v=z(a),m=v.binLen,j=v.value):"ASCII"===b||"TEXT"===b?(v=y(a,k),m=v.binLen,j=v.value):"B64"===b?(v=B(a),m=v.binLen,j=v.value):q("inputFormat must be HEX, TEXT, ASCII, or B64");a=8*l;b=l/4-1;l<m/8?(j="SHA-1"===c?Z(j,m):$(j,m,c),j[b]&=4294967040):l>m/8&&(j[b]&=4294967040);for(l=0;l<=b;l+=1)C[l]=j[l]^909522486,D[l]=j[l]^1549556828;
+c="SHA-1"===c?Z(D.concat(Z(C.concat(p),a+n)),a+x):$(D.concat($(C.concat(p),a+n,c)),a+x,c);return h(c,I(g))}};})();
diff --git a/src/sha1.js b/src/sha1.js
index 03b4a1d..475f5fb 100755
--- a/src/sha1.js
+++ b/src/sha1.js
@@ -9,15 +9,15 @@
Several functions taken from Paul Johnson
*/
-function j(a){throw a;}function r(a,e){var b=[],f=(1<<e)-1,c=a.length*e,d;for(d=0;d<c;d+=e)b[d>>>5]|=(a.charCodeAt(d/e)&f)<<32-e-d%32;return{value:b,binLen:c}}function t(a){var e=[],b=a.length,f,c;0!==b%2&&j("String of HEX type must be in byte increments");for(f=0;f<b;f+=2)c=parseInt(a.substr(f,2),16),isNaN(c)&&j("String of HEX type contains invalid characters"),e[f>>>3]|=c<<24-4*(f%8);return{value:e,binLen:4*b}}
-function u(a){var e=[],b=0,f,c,d,g,h;-1===a.search(/^[a-zA-Z0-9=+\/]+$/)&&j("Invalid character in base-64 string");f=a.indexOf("=");a=a.replace(/\=/g,"");-1!==f&&f<a.length&&j("Invalid '=' found in base-64 string");for(c=0;c<a.length;c+=4){h=a.substr(c,4);for(d=g=0;d<h.length;d+=1)f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(h[d]),g|=f<<18-6*d;for(d=0;d<h.length-1;d+=1)e[b>>2]|=(g>>>16-8*d&255)<<24-8*(b%4),b+=1}return{value:e,binLen:8*b}}
-function v(a,e){var b="",f=4*a.length,c,d;for(c=0;c<f;c+=1)d=a[c>>>2]>>>8*(3-c%4),b+="0123456789abcdef".charAt(d>>>4&15)+"0123456789abcdef".charAt(d&15);return e.outputUpper?b.toUpperCase():b}
-function w(a,e){var b="",f=4*a.length,c,d,g;for(c=0;c<f;c+=3){g=(a[c>>>2]>>>8*(3-c%4)&255)<<16|(a[c+1>>>2]>>>8*(3-(c+1)%4)&255)<<8|a[c+2>>>2]>>>8*(3-(c+2)%4)&255;for(d=0;4>d;d+=1)b=8*c+6*d<=32*a.length?b+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(g>>>6*(3-d)&63):b+e.b64Pad}return b}
-function x(a){var e={outputUpper:!1,b64Pad:"="};try{a.hasOwnProperty("outputUpper")&&(e.outputUpper=a.outputUpper),a.hasOwnProperty("b64Pad")&&(e.b64Pad=a.b64Pad)}catch(b){}"boolean"!==typeof e.outputUpper&&j("Invalid outputUpper formatting option");"string"!==typeof e.b64Pad&&j("Invalid b64Pad formatting option");return e}function y(a,e){var b=(a&65535)+(e&65535);return((a>>>16)+(e>>>16)+(b>>>16)&65535)<<16|b&65535}
-function z(a,e,b,f,c){var d=(a&65535)+(e&65535)+(b&65535)+(f&65535)+(c&65535);return((a>>>16)+(e>>>16)+(b>>>16)+(f>>>16)+(c>>>16)+(d>>>16)&65535)<<16|d&65535}
-function A(a,e){var b=[],f,c,d,g,h,B,s,i,C,k=[1732584193,4023233417,2562383102,271733878,3285377520],m=[1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,
+function k(a){throw a;}function s(a,e){var b=[],f=(1<<e)-1,c=a.length*e,d;for(d=0;d<c;d+=e)b[d>>>5]|=(a.charCodeAt(d/e)&f)<<32-e-d%32;return{value:b,binLen:c}}function u(a){var e=[],b=a.length,f,c;0!==b%2&&k("String of HEX type must be in byte increments");for(f=0;f<b;f+=2)c=parseInt(a.substr(f,2),16),isNaN(c)&&k("String of HEX type contains invalid characters"),e[f>>>3]|=c<<24-4*(f%8);return{value:e,binLen:4*b}}
+function v(a){var e=[],b=0,f,c,d,g,h;-1===a.search(/^[a-zA-Z0-9=+\/]+$/)&&k("Invalid character in base-64 string");f=a.indexOf("=");a=a.replace(/\=/g,"");-1!==f&&f<a.length&&k("Invalid '=' found in base-64 string");for(c=0;c<a.length;c+=4){h=a.substr(c,4);for(d=g=0;d<h.length;d+=1)f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(h[d]),g|=f<<18-6*d;for(d=0;d<h.length-1;d+=1)e[b>>2]|=(g>>>16-8*d&255)<<24-8*(b%4),b+=1}return{value:e,binLen:8*b}}
+function w(a,e){var b="",f=4*a.length,c,d;for(c=0;c<f;c+=1)d=a[c>>>2]>>>8*(3-c%4),b+="0123456789abcdef".charAt(d>>>4&15)+"0123456789abcdef".charAt(d&15);return e.outputUpper?b.toUpperCase():b}
+function x(a,e){var b="",f=4*a.length,c,d,g;for(c=0;c<f;c+=3){g=(a[c>>>2]>>>8*(3-c%4)&255)<<16|(a[c+1>>>2]>>>8*(3-(c+1)%4)&255)<<8|a[c+2>>>2]>>>8*(3-(c+2)%4)&255;for(d=0;4>d;d+=1)b=8*c+6*d<=32*a.length?b+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(g>>>6*(3-d)&63):b+e.b64Pad}return b}
+function y(a){var e={outputUpper:!1,b64Pad:"="};try{a.hasOwnProperty("outputUpper")&&(e.outputUpper=a.outputUpper),a.hasOwnProperty("b64Pad")&&(e.b64Pad=a.b64Pad)}catch(b){}"boolean"!==typeof e.outputUpper&&k("Invalid outputUpper formatting option");"string"!==typeof e.b64Pad&&k("Invalid b64Pad formatting option");return e}function z(a,e){var b=(a&65535)+(e&65535);return((a>>>16)+(e>>>16)+(b>>>16)&65535)<<16|b&65535}
+function A(a,e,b,f,c){var d=(a&65535)+(e&65535)+(b&65535)+(f&65535)+(c&65535);return((a>>>16)+(e>>>16)+(b>>>16)+(f>>>16)+(c>>>16)+(d>>>16)&65535)<<16|d&65535}
+function B(a,e){var b=[],f,c,d,g,h,C,t,j,D,l=[1732584193,4023233417,2562383102,271733878,3285377520],n=[1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1518500249,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,1859775393,
1859775393,1859775393,1859775393,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,2400959708,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782,3395469782];a[e>>>5]|=128<<24-e%32;a[(e+
-65>>>9<<4)+15]=e;C=a.length;for(s=0;s<C;s+=16){f=k[0];c=k[1];d=k[2];g=k[3];h=k[4];for(i=0;80>i;i+=1)b[i]=16>i?a[i+s]:(b[i-3]^b[i-8]^b[i-14]^b[i-16])<<1|(b[i-3]^b[i-8]^b[i-14]^b[i-16])>>>31,B=20>i?z(f<<5|f>>>27,c&d^~c&g,h,m[i],b[i]):40>i?z(f<<5|f>>>27,c^d^g,h,m[i],b[i]):60>i?z(f<<5|f>>>27,c&d^c&g^d&g,h,m[i],b[i]):z(f<<5|f>>>27,c^d^g,h,m[i],b[i]),h=g,g=d,d=c<<30|c>>>2,c=f,f=B;k[0]=y(f,k[0]);k[1]=y(c,k[1]);k[2]=y(d,k[2]);k[3]=y(g,k[3]);k[4]=y(h,k[4])}return k}
-window.jsSHA=function(a,e,b){var f=null,c=0,d=[0],g=0,h=null,g="undefined"!==typeof b?b:8;8===g||16===g||j("charSize must be 8 or 16");"HEX"===e?(0!==a.length%2&&j("srcString of HEX type must be in byte increments"),h=t(a),c=h.binLen,d=h.value):"ASCII"===e||"TEXT"===e?(h=r(a,g),c=h.binLen,d=h.value):"B64"===e?(h=u(a),c=h.binLen,d=h.value):j("inputFormat must be HEX, TEXT, ASCII, or B64");this.getHash=function(b,a,e){var g=null,h=d.slice(),m="";switch(a){case "HEX":g=v;break;case "B64":g=w;break;default:j("format must be HEX or B64")}"SHA-1"===
-b?(null===f&&(f=A(h,c)),m=g(f,x(e))):j("Chosen SHA variant is not supported");return m};this.getHMAC=function(b,a,e,f,h){var m,n,l,D,q,E,F=[],G=[],p=null;switch(f){case "HEX":m=v;break;case "B64":m=w;break;default:j("outputFormat must be HEX or B64")}"SHA-1"===e?(l=64,E=160):j("Chosen SHA variant is not supported");"HEX"===a?(p=t(b),q=p.binLen,n=p.value):"ASCII"===a||"TEXT"===a?(p=r(b,g),q=p.binLen,n=p.value):"B64"===a?(p=u(b),q=p.binLen,n=p.value):j("inputFormat must be HEX, TEXT, ASCII, or B64");
-b=8*l;a=l/4-1;l<q/8?("SHA-1"===e?n=A(n,q):j("Unexpected error in HMAC implementation"),n[a]&=4294967040):l>q/8&&(n[a]&=4294967040);for(l=0;l<=a;l+=1)F[l]=n[l]^909522486,G[l]=n[l]^1549556828;"SHA-1"===e?D=A(G.concat(A(F.concat(d),b+c)),b+E):j("Unexpected error in HMAC implementation");return m(D,x(h))}};})();
+65>>>9<<4)+15]=e;D=a.length;for(t=0;t<D;t+=16){f=l[0];c=l[1];d=l[2];g=l[3];h=l[4];for(j=0;80>j;j+=1)b[j]=16>j?a[j+t]:(b[j-3]^b[j-8]^b[j-14]^b[j-16])<<1|(b[j-3]^b[j-8]^b[j-14]^b[j-16])>>>31,C=20>j?A(f<<5|f>>>27,c&d^~c&g,h,n[j],b[j]):40>j?A(f<<5|f>>>27,c^d^g,h,n[j],b[j]):60>j?A(f<<5|f>>>27,c&d^c&g^d&g,h,n[j],b[j]):A(f<<5|f>>>27,c^d^g,h,n[j],b[j]),h=g,g=d,d=c<<30|c>>>2,c=f,f=C;l[0]=z(f,l[0]);l[1]=z(c,l[1]);l[2]=z(d,l[2]);l[3]=z(g,l[3]);l[4]=z(h,l[4])}return l}
+window.jsSHA=function(a,e,b){var f=null,c=0,d=[0],g=0,h=null,g="undefined"!==typeof b?b:8;8===g||16===g||k("charSize must be 8 or 16");"HEX"===e?(0!==a.length%2&&k("srcString of HEX type must be in byte increments"),h=u(a),c=h.binLen,d=h.value):"ASCII"===e||"TEXT"===e?(h=s(a,g),c=h.binLen,d=h.value):"B64"===e?(h=v(a),c=h.binLen,d=h.value):k("inputFormat must be HEX, TEXT, ASCII, or B64");this.getHash=function(b,a,e){var g=null,h=d.slice(),n="";switch(a){case "HEX":g=w;break;case "B64":g=x;break;default:k("format must be HEX or B64")}"SHA-1"===
+b?(null===f&&(f=B(h,c)),n=g(f,y(e))):k("Chosen SHA variant is not supported");return n};this.getHMAC=function(b,a,e,f,h){var n,p,m,E,r,F,G=[],H=[],q=null;switch(f){case "HEX":n=w;break;case "B64":n=x;break;default:k("outputFormat must be HEX or B64")}"SHA-1"===e?(m=64,F=160):k("Chosen SHA variant is not supported");"HEX"===a?(q=u(b),r=q.binLen,p=q.value):"ASCII"===a||"TEXT"===a?(q=s(b,g),r=q.binLen,p=q.value):"B64"===a?(q=v(b),r=q.binLen,p=q.value):k("inputFormat must be HEX, TEXT, ASCII, or B64");
+b=8*m;a=m/4-1;m<r/8?("SHA-1"===e?p=B(p,r):k("Unexpected error in HMAC implementation"),p[a]&=4294967040):m>r/8&&(p[a]&=4294967040);for(m=0;m<=a;m+=1)G[m]=p[m]^909522486,H[m]=p[m]^1549556828;"SHA-1"===e?E=B(H.concat(B(G.concat(d),b+c)),b+F):k("Unexpected error in HMAC implementation");return n(E,y(h))}};})();
diff --git a/src/sha256.js b/src/sha256.js
index 8c95abe..9ceb3b3 100755
--- a/src/sha256.js
+++ b/src/sha256.js
@@ -9,17 +9,17 @@
Several functions taken from Paul Johnson
*/
-function m(a){throw a;}var q=null;function s(a,b){var c=[],f=(1<<b)-1,d=a.length*b,e;for(e=0;e<d;e+=b)c[e>>>5]|=(a.charCodeAt(e/b)&f)<<32-b-e%32;return{value:c,binLen:d}}function v(a){var b=[],c=a.length,f,d;0!==c%2&&m("String of HEX type must be in byte increments");for(f=0;f<c;f+=2)d=parseInt(a.substr(f,2),16),isNaN(d)&&m("String of HEX type contains invalid characters"),b[f>>>3]|=d<<24-4*(f%8);return{value:b,binLen:4*c}}
-function z(a){var b=[],c=0,f,d,e,j,k;-1===a.search(/^[a-zA-Z0-9=+\/]+$/)&&m("Invalid character in base-64 string");f=a.indexOf("=");a=a.replace(/\=/g,"");-1!==f&&f<a.length&&m("Invalid '=' found in base-64 string");for(d=0;d<a.length;d+=4){k=a.substr(d,4);for(e=j=0;e<k.length;e+=1)f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(k[e]),j|=f<<18-6*e;for(e=0;e<k.length-1;e+=1)b[c>>2]|=(j>>>16-8*e&255)<<24-8*(c%4),c+=1}return{value:b,binLen:8*c}}
-function C(a,b){var c="",f=4*a.length,d,e;for(d=0;d<f;d+=1)e=a[d>>>2]>>>8*(3-d%4),c+="0123456789abcdef".charAt(e>>>4&15)+"0123456789abcdef".charAt(e&15);return b.outputUpper?c.toUpperCase():c}
-function D(a,b){var c="",f=4*a.length,d,e,j;for(d=0;d<f;d+=3){j=(a[d>>>2]>>>8*(3-d%4)&255)<<16|(a[d+1>>>2]>>>8*(3-(d+1)%4)&255)<<8|a[d+2>>>2]>>>8*(3-(d+2)%4)&255;for(e=0;4>e;e+=1)c=8*d+6*e<=32*a.length?c+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(j>>>6*(3-e)&63):c+b.b64Pad}return c}
-function E(a){var b={outputUpper:!1,b64Pad:"="};try{a.hasOwnProperty("outputUpper")&&(b.outputUpper=a.outputUpper),a.hasOwnProperty("b64Pad")&&(b.b64Pad=a.b64Pad)}catch(c){}"boolean"!==typeof b.outputUpper&&m("Invalid outputUpper formatting option");"string"!==typeof b.b64Pad&&m("Invalid b64Pad formatting option");return b}function F(a,b){return a>>>b|a<<32-b}function G(a,b,c){return a&b^~a&c}function R(a,b,c){return a&b^a&c^b&c}function S(a){return F(a,2)^F(a,13)^F(a,22)}
-function T(a){return F(a,6)^F(a,11)^F(a,25)}function U(a){return F(a,7)^F(a,18)^a>>>3}function V(a){return F(a,17)^F(a,19)^a>>>10}function W(a,b){var c=(a&65535)+(b&65535);return((a>>>16)+(b>>>16)+(c>>>16)&65535)<<16|c&65535}function X(a,b,c,f){var d=(a&65535)+(b&65535)+(c&65535)+(f&65535);return((a>>>16)+(b>>>16)+(c>>>16)+(f>>>16)+(d>>>16)&65535)<<16|d&65535}
-function Y(a,b,c,f,d){var e=(a&65535)+(b&65535)+(c&65535)+(f&65535)+(d&65535);return((a>>>16)+(b>>>16)+(c>>>16)+(f>>>16)+(d>>>16)+(e>>>16)&65535)<<16|e&65535}
-function Z(a,b,c){var f,d,e,j,k,i,y,A,H,g,I,t,h,l,r,n,w,x,p,J,K,L,M,N,O,P,u=[],Q,B;"SHA-224"===c||"SHA-256"===c?(I=64,l=16,r=1,O=Number,n=W,w=X,x=Y,p=U,J=V,K=S,L=T,N=R,M=G,P=[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,
+function n(a){throw a;}var r=null;function t(a,b){var c=[],f=(1<<b)-1,d=a.length*b,e;for(e=0;e<d;e+=b)c[e>>>5]|=(a.charCodeAt(e/b)&f)<<32-b-e%32;return{value:c,binLen:d}}function w(a){var b=[],c=a.length,f,d;0!==c%2&&n("String of HEX type must be in byte increments");for(f=0;f<c;f+=2)d=parseInt(a.substr(f,2),16),isNaN(d)&&n("String of HEX type contains invalid characters"),b[f>>>3]|=d<<24-4*(f%8);return{value:b,binLen:4*c}}
+function A(a){var b=[],c=0,f,d,e,k,l;-1===a.search(/^[a-zA-Z0-9=+\/]+$/)&&n("Invalid character in base-64 string");f=a.indexOf("=");a=a.replace(/\=/g,"");-1!==f&&f<a.length&&n("Invalid '=' found in base-64 string");for(d=0;d<a.length;d+=4){l=a.substr(d,4);for(e=k=0;e<l.length;e+=1)f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(l[e]),k|=f<<18-6*e;for(e=0;e<l.length-1;e+=1)b[c>>2]|=(k>>>16-8*e&255)<<24-8*(c%4),c+=1}return{value:b,binLen:8*c}}
+function D(a,b){var c="",f=4*a.length,d,e;for(d=0;d<f;d+=1)e=a[d>>>2]>>>8*(3-d%4),c+="0123456789abcdef".charAt(e>>>4&15)+"0123456789abcdef".charAt(e&15);return b.outputUpper?c.toUpperCase():c}
+function E(a,b){var c="",f=4*a.length,d,e,k;for(d=0;d<f;d+=3){k=(a[d>>>2]>>>8*(3-d%4)&255)<<16|(a[d+1>>>2]>>>8*(3-(d+1)%4)&255)<<8|a[d+2>>>2]>>>8*(3-(d+2)%4)&255;for(e=0;4>e;e+=1)c=8*d+6*e<=32*a.length?c+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k>>>6*(3-e)&63):c+b.b64Pad}return c}
+function F(a){var b={outputUpper:!1,b64Pad:"="};try{a.hasOwnProperty("outputUpper")&&(b.outputUpper=a.outputUpper),a.hasOwnProperty("b64Pad")&&(b.b64Pad=a.b64Pad)}catch(c){}"boolean"!==typeof b.outputUpper&&n("Invalid outputUpper formatting option");"string"!==typeof b.b64Pad&&n("Invalid b64Pad formatting option");return b}function G(a,b){return a>>>b|a<<32-b}function H(a,b,c){return a&b^~a&c}function S(a,b,c){return a&b^a&c^b&c}function T(a){return G(a,2)^G(a,13)^G(a,22)}
+function U(a){return G(a,6)^G(a,11)^G(a,25)}function V(a){return G(a,7)^G(a,18)^a>>>3}function W(a){return G(a,17)^G(a,19)^a>>>10}function X(a,b){var c=(a&65535)+(b&65535);return((a>>>16)+(b>>>16)+(c>>>16)&65535)<<16|c&65535}function Y(a,b,c,f){var d=(a&65535)+(b&65535)+(c&65535)+(f&65535);return((a>>>16)+(b>>>16)+(c>>>16)+(f>>>16)+(d>>>16)&65535)<<16|d&65535}
+function Z(a,b,c,f,d){var e=(a&65535)+(b&65535)+(c&65535)+(f&65535)+(d&65535);return((a>>>16)+(b>>>16)+(c>>>16)+(f>>>16)+(d>>>16)+(e>>>16)&65535)<<16|e&65535}
+function $(a,b,c){var f,d,e,k,l,j,z,B,I,g,J,u,h,m,s,p,x,y,q,K,L,M,N,O,P,Q,v=[],R,C;"SHA-224"===c||"SHA-256"===c?(J=64,m=16,s=1,P=Number,p=X,x=Y,y=Z,q=V,K=W,L=T,M=U,O=S,N=H,Q=[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],g="SHA-224"===c?[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]:[1779033703,3144134277,1013904242,2773480762,
-1359893119,2600822924,528734635,1541459225]):m("Unexpected error in SHA-2 implementation");a[b>>>5]|=128<<24-b%32;a[(b+65>>>9<<4)+15]=b;Q=a.length;for(t=0;t<Q;t+=l){b=g[0];f=g[1];d=g[2];e=g[3];j=g[4];k=g[5];i=g[6];y=g[7];for(h=0;h<I;h+=1)u[h]=16>h?new O(a[h*r+t],a[h*r+t+1]):w(J(u[h-2]),u[h-7],p(u[h-15]),u[h-16]),A=x(y,L(j),M(j,k,i),P[h],u[h]),H=n(K(b),N(b,f,d)),y=i,i=k,k=j,j=n(e,A),e=d,d=f,f=b,b=n(A,H);g[0]=n(b,g[0]);g[1]=n(f,g[1]);g[2]=n(d,g[2]);g[3]=n(e,g[3]);g[4]=n(j,g[4]);g[5]=n(k,g[5]);g[6]=
-n(i,g[6]);g[7]=n(y,g[7])}"SHA-224"===c?B=[g[0],g[1],g[2],g[3],g[4],g[5],g[6]]:"SHA-256"===c?B=g:m("Unexpected error in SHA-2 implementation");return B}
-window.jsSHA=function(a,b,c){var f=q,d=q,e=0,j=[0],k=0,i=q,k="undefined"!==typeof c?c:8;8===k||16===k||m("charSize must be 8 or 16");"HEX"===b?(0!==a.length%2&&m("srcString of HEX type must be in byte increments"),i=v(a),e=i.binLen,j=i.value):"ASCII"===b||"TEXT"===b?(i=s(a,k),e=i.binLen,j=i.value):"B64"===b?(i=z(a),e=i.binLen,j=i.value):m("inputFormat must be HEX, TEXT, ASCII, or B64");this.getHash=function(a,b,c){var g=q,k=j.slice(),i="";switch(b){case "HEX":g=C;break;case "B64":g=D;break;default:m("format must be HEX or B64")}"SHA-224"===
-a?(q===f&&(f=Z(k,e,a)),i=g(f,E(c))):"SHA-256"===a?(q===d&&(d=Z(k,e,a)),i=g(d,E(c))):m("Chosen SHA variant is not supported");return i};this.getHMAC=function(a,b,c,d,f){var i,h,l,r,n,w=[],x=[],p=q;switch(d){case "HEX":i=C;break;case "B64":i=D;break;default:m("outputFormat must be HEX or B64")}"SHA-224"===c?(l=64,n=224):"SHA-256"===c?(l=64,n=256):m("Chosen SHA variant is not supported");"HEX"===b?(p=v(a),r=p.binLen,h=p.value):"ASCII"===b||"TEXT"===b?(p=s(a,k),r=p.binLen,h=p.value):"B64"===b?(p=z(a),
-r=p.binLen,h=p.value):m("inputFormat must be HEX, TEXT, ASCII, or B64");a=8*l;b=l/4-1;l<r/8?(h=Z(h,r,c),h[b]&=4294967040):l>r/8&&(h[b]&=4294967040);for(l=0;l<=b;l+=1)w[l]=h[l]^909522486,x[l]=h[l]^1549556828;c=Z(x.concat(Z(w.concat(j),a+e,c)),a+n,c);return i(c,E(f))}};})();
+1359893119,2600822924,528734635,1541459225]):n("Unexpected error in SHA-2 implementation");a[b>>>5]|=128<<24-b%32;a[(b+65>>>9<<4)+15]=b;R=a.length;for(u=0;u<R;u+=m){b=g[0];f=g[1];d=g[2];e=g[3];k=g[4];l=g[5];j=g[6];z=g[7];for(h=0;h<J;h+=1)v[h]=16>h?new P(a[h*s+u],a[h*s+u+1]):x(K(v[h-2]),v[h-7],q(v[h-15]),v[h-16]),B=y(z,M(k),N(k,l,j),Q[h],v[h]),I=p(L(b),O(b,f,d)),z=j,j=l,l=k,k=p(e,B),e=d,d=f,f=b,b=p(B,I);g[0]=p(b,g[0]);g[1]=p(f,g[1]);g[2]=p(d,g[2]);g[3]=p(e,g[3]);g[4]=p(k,g[4]);g[5]=p(l,g[5]);g[6]=
+p(j,g[6]);g[7]=p(z,g[7])}"SHA-224"===c?C=[g[0],g[1],g[2],g[3],g[4],g[5],g[6]]:"SHA-256"===c?C=g:n("Unexpected error in SHA-2 implementation");return C}
+window.jsSHA=function(a,b,c){var f=r,d=r,e=0,k=[0],l=0,j=r,l="undefined"!==typeof c?c:8;8===l||16===l||n("charSize must be 8 or 16");"HEX"===b?(0!==a.length%2&&n("srcString of HEX type must be in byte increments"),j=w(a),e=j.binLen,k=j.value):"ASCII"===b||"TEXT"===b?(j=t(a,l),e=j.binLen,k=j.value):"B64"===b?(j=A(a),e=j.binLen,k=j.value):n("inputFormat must be HEX, TEXT, ASCII, or B64");this.getHash=function(a,b,c){var g=r,l=k.slice(),j="";switch(b){case "HEX":g=D;break;case "B64":g=E;break;default:n("format must be HEX or B64")}"SHA-224"===
+a?(r===f&&(f=$(l,e,a)),j=g(f,F(c))):"SHA-256"===a?(r===d&&(d=$(l,e,a)),j=g(d,F(c))):n("Chosen SHA variant is not supported");return j};this.getHMAC=function(a,b,c,d,f){var j,h,m,s,p,x=[],y=[],q=r;switch(d){case "HEX":j=D;break;case "B64":j=E;break;default:n("outputFormat must be HEX or B64")}"SHA-224"===c?(m=64,p=224):"SHA-256"===c?(m=64,p=256):n("Chosen SHA variant is not supported");"HEX"===b?(q=w(a),s=q.binLen,h=q.value):"ASCII"===b||"TEXT"===b?(q=t(a,l),s=q.binLen,h=q.value):"B64"===b?(q=A(a),
+s=q.binLen,h=q.value):n("inputFormat must be HEX, TEXT, ASCII, or B64");a=8*m;b=m/4-1;m<s/8?(h=$(h,s,c),h[b]&=4294967040):m>s/8&&(h[b]&=4294967040);for(m=0;m<=b;m+=1)x[m]=h[m]^909522486,y[m]=h[m]^1549556828;c=$(y.concat($(x.concat(k),a+e,c)),a+p,c);return j(c,F(f))}};})();
diff --git a/src/sha512.js b/src/sha512.js
index 9eb3162..cafb3a2 100755
--- a/src/sha512.js
+++ b/src/sha512.js
@@ -9,23 +9,23 @@
Several functions taken from Paul Johnson
*/
-function m(a){throw a;}var p=null;function r(a,b){this.a=a;this.b=b}function t(a,b){var d=[],h=(1<<b)-1,f=a.length*b,g;for(g=0;g<f;g+=b)d[g>>>5]|=(a.charCodeAt(g/b)&h)<<32-b-g%32;return{value:d,binLen:f}}function w(a){var b=[],d=a.length,h,f;0!==d%2&&m("String of HEX type must be in byte increments");for(h=0;h<d;h+=2)f=parseInt(a.substr(h,2),16),isNaN(f)&&m("String of HEX type contains invalid characters"),b[h>>>3]|=f<<24-4*(h%8);return{value:b,binLen:4*d}}
-function A(a){var b=[],d=0,h,f,g,j,l;-1===a.search(/^[a-zA-Z0-9=+\/]+$/)&&m("Invalid character in base-64 string");h=a.indexOf("=");a=a.replace(/\=/g,"");-1!==h&&h<a.length&&m("Invalid '=' found in base-64 string");for(f=0;f<a.length;f+=4){l=a.substr(f,4);for(g=j=0;g<l.length;g+=1)h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(l[g]),j|=h<<18-6*g;for(g=0;g<l.length-1;g+=1)b[d>>2]|=(j>>>16-8*g&255)<<24-8*(d%4),d+=1}return{value:b,binLen:8*d}}
-function D(a,b){var d="",h=4*a.length,f,g;for(f=0;f<h;f+=1)g=a[f>>>2]>>>8*(3-f%4),d+="0123456789abcdef".charAt(g>>>4&15)+"0123456789abcdef".charAt(g&15);return b.outputUpper?d.toUpperCase():d}
-function E(a,b){var d="",h=4*a.length,f,g,j;for(f=0;f<h;f+=3){j=(a[f>>>2]>>>8*(3-f%4)&255)<<16|(a[f+1>>>2]>>>8*(3-(f+1)%4)&255)<<8|a[f+2>>>2]>>>8*(3-(f+2)%4)&255;for(g=0;4>g;g+=1)d=8*f+6*g<=32*a.length?d+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(j>>>6*(3-g)&63):d+b.b64Pad}return d}
-function F(a){var b={outputUpper:!1,b64Pad:"="};try{a.hasOwnProperty("outputUpper")&&(b.outputUpper=a.outputUpper),a.hasOwnProperty("b64Pad")&&(b.b64Pad=a.b64Pad)}catch(d){}"boolean"!==typeof b.outputUpper&&m("Invalid outputUpper formatting option");"string"!==typeof b.b64Pad&&m("Invalid b64Pad formatting option");return b}function G(a,b){var d=p,d=new r(a.a,a.b);return d=32>=b?new r(d.a>>>b|d.b<<32-b,d.b>>>b|d.a<<32-b):new r(d.b>>>b-32|d.a<<64-b,d.a>>>b-32|d.b<<64-b)}
-function H(a,b){var d=p;return d=32>=b?new r(a.a>>>b,a.b>>>b|a.a<<32-b):new r(0,a.a>>>b-32)}function I(a,b,d){return new r(a.a&b.a^~a.a&d.a,a.b&b.b^~a.b&d.b)}function T(a,b,d){return new r(a.a&b.a^a.a&d.a^b.a&d.a,a.b&b.b^a.b&d.b^b.b&d.b)}function U(a){var b=G(a,28),d=G(a,34),a=G(a,39);return new r(b.a^d.a^a.a,b.b^d.b^a.b)}function V(a){var b=G(a,14),d=G(a,18),a=G(a,41);return new r(b.a^d.a^a.a,b.b^d.b^a.b)}function W(a){var b=G(a,1),d=G(a,8),a=H(a,7);return new r(b.a^d.a^a.a,b.b^d.b^a.b)}
-function X(a){var b=G(a,19),d=G(a,61),a=H(a,6);return new r(b.a^d.a^a.a,b.b^d.b^a.b)}function Y(a,b){var d,h,f;d=(a.b&65535)+(b.b&65535);h=(a.b>>>16)+(b.b>>>16)+(d>>>16);f=(h&65535)<<16|d&65535;d=(a.a&65535)+(b.a&65535)+(h>>>16);h=(a.a>>>16)+(b.a>>>16)+(d>>>16);return new r((h&65535)<<16|d&65535,f)}
-function Z(a,b,d,h){var f,g,j;f=(a.b&65535)+(b.b&65535)+(d.b&65535)+(h.b&65535);g=(a.b>>>16)+(b.b>>>16)+(d.b>>>16)+(h.b>>>16)+(f>>>16);j=(g&65535)<<16|f&65535;f=(a.a&65535)+(b.a&65535)+(d.a&65535)+(h.a&65535)+(g>>>16);g=(a.a>>>16)+(b.a>>>16)+(d.a>>>16)+(h.a>>>16)+(f>>>16);return new r((g&65535)<<16|f&65535,j)}
-function aa(a,b,d,h,f){var g,j,l;g=(a.b&65535)+(b.b&65535)+(d.b&65535)+(h.b&65535)+(f.b&65535);j=(a.b>>>16)+(b.b>>>16)+(d.b>>>16)+(h.b>>>16)+(f.b>>>16)+(g>>>16);l=(j&65535)<<16|g&65535;g=(a.a&65535)+(b.a&65535)+(d.a&65535)+(h.a&65535)+(f.a&65535)+(j>>>16);j=(a.a>>>16)+(b.a>>>16)+(d.a>>>16)+(h.a>>>16)+(f.a>>>16)+(g>>>16);return new r((j&65535)<<16|g&65535,l)}
-function $(a,b,d){var h,f,g,j,l,i,z,B,J,e,K,u,k,L,s,n,x,y,q,M,N,O,P,Q,c,R,v=[],S,C;"SHA-384"===d||"SHA-512"===d?(K=80,h=(b+128>>>10<<5)+31,L=32,s=2,c=r,n=Y,x=Z,y=aa,q=W,M=X,N=U,O=V,Q=T,P=I,R=[new c(1116352408,3609767458),new c(1899447441,602891725),new c(3049323471,3964484399),new c(3921009573,2173295548),new c(961987163,4081628472),new c(1508970993,3053834265),new c(2453635748,2937671579),new c(2870763221,3664609560),new c(3624381080,2734883394),new c(310598401,1164996542),new c(607225278,1323610764),
+function n(a){throw a;}var q=null;function s(a,b){this.a=a;this.b=b}function u(a,b){var d=[],h=(1<<b)-1,f=a.length*b,g;for(g=0;g<f;g+=b)d[g>>>5]|=(a.charCodeAt(g/b)&h)<<32-b-g%32;return{value:d,binLen:f}}function x(a){var b=[],d=a.length,h,f;0!==d%2&&n("String of HEX type must be in byte increments");for(h=0;h<d;h+=2)f=parseInt(a.substr(h,2),16),isNaN(f)&&n("String of HEX type contains invalid characters"),b[h>>>3]|=f<<24-4*(h%8);return{value:b,binLen:4*d}}
+function B(a){var b=[],d=0,h,f,g,k,m;-1===a.search(/^[a-zA-Z0-9=+\/]+$/)&&n("Invalid character in base-64 string");h=a.indexOf("=");a=a.replace(/\=/g,"");-1!==h&&h<a.length&&n("Invalid '=' found in base-64 string");for(f=0;f<a.length;f+=4){m=a.substr(f,4);for(g=k=0;g<m.length;g+=1)h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(m[g]),k|=h<<18-6*g;for(g=0;g<m.length-1;g+=1)b[d>>2]|=(k>>>16-8*g&255)<<24-8*(d%4),d+=1}return{value:b,binLen:8*d}}
+function E(a,b){var d="",h=4*a.length,f,g;for(f=0;f<h;f+=1)g=a[f>>>2]>>>8*(3-f%4),d+="0123456789abcdef".charAt(g>>>4&15)+"0123456789abcdef".charAt(g&15);return b.outputUpper?d.toUpperCase():d}
+function F(a,b){var d="",h=4*a.length,f,g,k;for(f=0;f<h;f+=3){k=(a[f>>>2]>>>8*(3-f%4)&255)<<16|(a[f+1>>>2]>>>8*(3-(f+1)%4)&255)<<8|a[f+2>>>2]>>>8*(3-(f+2)%4)&255;for(g=0;4>g;g+=1)d=8*f+6*g<=32*a.length?d+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k>>>6*(3-g)&63):d+b.b64Pad}return d}
+function G(a){var b={outputUpper:!1,b64Pad:"="};try{a.hasOwnProperty("outputUpper")&&(b.outputUpper=a.outputUpper),a.hasOwnProperty("b64Pad")&&(b.b64Pad=a.b64Pad)}catch(d){}"boolean"!==typeof b.outputUpper&&n("Invalid outputUpper formatting option");"string"!==typeof b.b64Pad&&n("Invalid b64Pad formatting option");return b}function H(a,b){var d=q;return d=32>=b?new s(a.a>>>b|a.b<<32-b&4294967295,a.b>>>b|a.a<<32-b&4294967295):new s(a.b>>>b-32|a.a<<64-b&4294967295,a.a>>>b-32|a.b<<64-b&4294967295)}
+function I(a,b){var d=q;return d=32>=b?new s(a.a>>>b,a.b>>>b|a.a<<32-b&4294967295):new s(0,a.a>>>b-32)}function J(a,b,d){return new s(a.a&b.a^~a.a&d.a,a.b&b.b^~a.b&d.b)}function U(a,b,d){return new s(a.a&b.a^a.a&d.a^b.a&d.a,a.b&b.b^a.b&d.b^b.b&d.b)}function V(a){var b=H(a,28),d=H(a,34);a=H(a,39);return new s(b.a^d.a^a.a,b.b^d.b^a.b)}function W(a){var b=H(a,14),d=H(a,18);a=H(a,41);return new s(b.a^d.a^a.a,b.b^d.b^a.b)}
+function X(a){var b=H(a,1),d=H(a,8);a=I(a,7);return new s(b.a^d.a^a.a,b.b^d.b^a.b)}function Y(a){var b=H(a,19),d=H(a,61);a=I(a,6);return new s(b.a^d.a^a.a,b.b^d.b^a.b)}function Z(a,b){var d,h,f;d=(a.b&65535)+(b.b&65535);h=(a.b>>>16)+(b.b>>>16)+(d>>>16);f=(h&65535)<<16|d&65535;d=(a.a&65535)+(b.a&65535)+(h>>>16);h=(a.a>>>16)+(b.a>>>16)+(d>>>16);return new s((h&65535)<<16|d&65535,f)}
+function aa(a,b,d,h){var f,g,k;f=(a.b&65535)+(b.b&65535)+(d.b&65535)+(h.b&65535);g=(a.b>>>16)+(b.b>>>16)+(d.b>>>16)+(h.b>>>16)+(f>>>16);k=(g&65535)<<16|f&65535;f=(a.a&65535)+(b.a&65535)+(d.a&65535)+(h.a&65535)+(g>>>16);g=(a.a>>>16)+(b.a>>>16)+(d.a>>>16)+(h.a>>>16)+(f>>>16);return new s((g&65535)<<16|f&65535,k)}
+function ba(a,b,d,h,f){var g,k,m;g=(a.b&65535)+(b.b&65535)+(d.b&65535)+(h.b&65535)+(f.b&65535);k=(a.b>>>16)+(b.b>>>16)+(d.b>>>16)+(h.b>>>16)+(f.b>>>16)+(g>>>16);m=(k&65535)<<16|g&65535;g=(a.a&65535)+(b.a&65535)+(d.a&65535)+(h.a&65535)+(f.a&65535)+(k>>>16);k=(a.a>>>16)+(b.a>>>16)+(d.a>>>16)+(h.a>>>16)+(f.a>>>16)+(g>>>16);return new s((k&65535)<<16|g&65535,m)}
+function $(a,b,d){var h,f,g,k,m,j,A,C,K,e,L,v,l,M,t,p,y,z,r,N,O,P,Q,R,c,S,w=[],T,D;"SHA-384"===d||"SHA-512"===d?(L=80,h=(b+128>>>10<<5)+31,M=32,t=2,c=s,p=Z,y=aa,z=ba,r=X,N=Y,O=V,P=W,R=U,Q=J,S=[new c(1116352408,3609767458),new c(1899447441,602891725),new c(3049323471,3964484399),new c(3921009573,2173295548),new c(961987163,4081628472),new c(1508970993,3053834265),new c(2453635748,2937671579),new c(2870763221,3664609560),new c(3624381080,2734883394),new c(310598401,1164996542),new c(607225278,1323610764),
new c(1426881987,3590304994),new c(1925078388,4068182383),new c(2162078206,991336113),new c(2614888103,633803317),new c(3248222580,3479774868),new c(3835390401,2666613458),new c(4022224774,944711139),new c(264347078,2341262773),new c(604807628,2007800933),new c(770255983,1495990901),new c(1249150122,1856431235),new c(1555081692,3175218132),new c(1996064986,2198950837),new c(2554220882,3999719339),new c(2821834349,766784016),new c(2952996808,2566594879),new c(3210313671,3203337956),new c(3336571891,
1034457026),new c(3584528711,2466948901),new c(113926993,3758326383),new c(338241895,168717936),new c(666307205,1188179964),new c(773529912,1546045734),new c(1294757372,1522805485),new c(1396182291,2643833823),new c(1695183700,2343527390),new c(1986661051,1014477480),new c(2177026350,1206759142),new c(2456956037,344077627),new c(2730485921,1290863460),new c(2820302411,3158454273),new c(3259730800,3505952657),new c(3345764771,106217008),new c(3516065817,3606008344),new c(3600352804,1432725776),new c(4094571909,
1467031594),new c(275423344,851169720),new c(430227734,3100823752),new c(506948616,1363258195),new c(659060556,3750685593),new c(883997877,3785050280),new c(958139571,3318307427),new c(1322822218,3812723403),new c(1537002063,2003034995),new c(1747873779,3602036899),new c(1955562222,1575990012),new c(2024104815,1125592928),new c(2227730452,2716904306),new c(2361852424,442776044),new c(2428436474,593698344),new c(2756734187,3733110249),new c(3204031479,2999351573),new c(3329325298,3815920427),new c(3391569614,
3928383900),new c(3515267271,566280711),new c(3940187606,3454069534),new c(4118630271,4000239992),new c(116418474,1914138554),new c(174292421,2731055270),new c(289380356,3203993006),new c(460393269,320620315),new c(685471733,587496836),new c(852142971,1086792851),new c(1017036298,365543100),new c(1126000580,2618297676),new c(1288033470,3409855158),new c(1501505948,4234509866),new c(1607167915,987167468),new c(1816402316,1246189591)],e="SHA-384"===d?[new c(3418070365,3238371032),new c(1654270250,914150663),
-new c(2438529370,812702999),new c(355462360,4144912697),new c(1731405415,4290775857),new c(41048885895,1750603025),new c(3675008525,1694076839),new c(1203062813,3204075428)]:[new c(1779033703,4089235720),new c(3144134277,2227873595),new c(1013904242,4271175723),new c(2773480762,1595750129),new c(1359893119,2917565137),new c(2600822924,725511199),new c(528734635,4215389547),new c(1541459225,327033209)]):m("Unexpected error in SHA-2 implementation");a[b>>>5]|=128<<24-b%32;a[h]=b;S=a.length;for(u=0;u<
-S;u+=L){b=e[0];h=e[1];f=e[2];g=e[3];j=e[4];l=e[5];i=e[6];z=e[7];for(k=0;k<K;k+=1)v[k]=16>k?new c(a[k*s+u],a[k*s+u+1]):x(M(v[k-2]),v[k-7],q(v[k-15]),v[k-16]),B=y(z,O(j),P(j,l,i),R[k],v[k]),J=n(N(b),Q(b,h,f)),z=i,i=l,l=j,j=n(g,B),g=f,f=h,h=b,b=n(B,J);e[0]=n(b,e[0]);e[1]=n(h,e[1]);e[2]=n(f,e[2]);e[3]=n(g,e[3]);e[4]=n(j,e[4]);e[5]=n(l,e[5]);e[6]=n(i,e[6]);e[7]=n(z,e[7])}"SHA-384"===d?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]:"SHA-512"===d?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]:m("Unexpected error in SHA-2 implementation");return C}
-window.jsSHA=function(a,b,d){var h=p,f=p,g=0,j=[0],l=0,i=p,l="undefined"!==typeof d?d:8;8===l||16===l||m("charSize must be 8 or 16");"HEX"===b?(0!==a.length%2&&m("srcString of HEX type must be in byte increments"),i=w(a),g=i.binLen,j=i.value):"ASCII"===b||"TEXT"===b?(i=t(a,l),g=i.binLen,j=i.value):"B64"===b?(i=A(a),g=i.binLen,j=i.value):m("inputFormat must be HEX, TEXT, ASCII, or B64");this.getHash=function(a,b,d){var e=p,l=j.slice(),i="";switch(b){case "HEX":e=D;break;case "B64":e=E;break;default:m("format must be HEX or B64")}"SHA-384"===
-a?(p===h&&(h=$(l,g,a)),i=e(h,F(d))):"SHA-512"===a?(p===f&&(f=$(l,g,a)),i=e(f,F(d))):m("Chosen SHA variant is not supported");return i};this.getHMAC=function(a,b,d,e,f){var h,k,i,s,n,x=[],y=[],q=p;switch(e){case "HEX":h=D;break;case "B64":h=E;break;default:m("outputFormat must be HEX or B64")}"SHA-384"===d?(i=128,n=384):"SHA-512"===d?(i=128,n=512):m("Chosen SHA variant is not supported");"HEX"===b?(q=w(a),s=q.binLen,k=q.value):"ASCII"===b||"TEXT"===b?(q=t(a,l),s=q.binLen,k=q.value):"B64"===b?(q=A(a),
-s=q.binLen,k=q.value):m("inputFormat must be HEX, TEXT, ASCII, or B64");a=8*i;b=i/4-1;i<s/8?(k=$(k,s,d),k[b]&=4294967040):i>s/8&&(k[b]&=4294967040);for(i=0;i<=b;i+=1)x[i]=k[i]^909522486,y[i]=k[i]^1549556828;d=$(y.concat($(x.concat(j),a+g,d)),a+n,d);return h(d,F(f))}};})();
+new c(2438529370,812702999),new c(355462360,4144912697),new c(1731405415,4290775857),new c(41048885895,1750603025),new c(3675008525,1694076839),new c(1203062813,3204075428)]:[new c(1779033703,4089235720),new c(3144134277,2227873595),new c(1013904242,4271175723),new c(2773480762,1595750129),new c(1359893119,2917565137),new c(2600822924,725511199),new c(528734635,4215389547),new c(1541459225,327033209)]):n("Unexpected error in SHA-2 implementation");a[b>>>5]|=128<<24-b%32;a[h]=b;T=a.length;for(v=0;v<
+T;v+=M){b=e[0];h=e[1];f=e[2];g=e[3];k=e[4];m=e[5];j=e[6];A=e[7];for(l=0;l<L;l+=1)w[l]=16>l?new c(a[l*t+v],a[l*t+v+1]):y(N(w[l-2]),w[l-7],r(w[l-15]),w[l-16]),C=z(A,P(k),Q(k,m,j),S[l],w[l]),K=p(O(b),R(b,h,f)),A=j,j=m,m=k,k=p(g,C),g=f,f=h,h=b,b=p(C,K);e[0]=p(b,e[0]);e[1]=p(h,e[1]);e[2]=p(f,e[2]);e[3]=p(g,e[3]);e[4]=p(k,e[4]);e[5]=p(m,e[5]);e[6]=p(j,e[6]);e[7]=p(A,e[7])}"SHA-384"===d?D=[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]:"SHA-512"===d?D=[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]:n("Unexpected error in SHA-2 implementation");return D}
+window.jsSHA=function(a,b,d){var h=q,f=q,g=0,k=[0],m=0,j=q,m="undefined"!==typeof d?d:8;8===m||16===m||n("charSize must be 8 or 16");"HEX"===b?(0!==a.length%2&&n("srcString of HEX type must be in byte increments"),j=x(a),g=j.binLen,k=j.value):"ASCII"===b||"TEXT"===b?(j=u(a,m),g=j.binLen,k=j.value):"B64"===b?(j=B(a),g=j.binLen,k=j.value):n("inputFormat must be HEX, TEXT, ASCII, or B64");this.getHash=function(a,b,d){var e=q,m=k.slice(),j="";switch(b){case "HEX":e=E;break;case "B64":e=F;break;default:n("format must be HEX or B64")}"SHA-384"===
+a?(q===h&&(h=$(m,g,a)),j=e(h,G(d))):"SHA-512"===a?(q===f&&(f=$(m,g,a)),j=e(f,G(d))):n("Chosen SHA variant is not supported");return j};this.getHMAC=function(a,b,d,e,f){var h,l,j,t,p,y=[],z=[],r=q;switch(e){case "HEX":h=E;break;case "B64":h=F;break;default:n("outputFormat must be HEX or B64")}"SHA-384"===d?(j=128,p=384):"SHA-512"===d?(j=128,p=512):n("Chosen SHA variant is not supported");"HEX"===b?(r=x(a),t=r.binLen,l=r.value):"ASCII"===b||"TEXT"===b?(r=u(a,m),t=r.binLen,l=r.value):"B64"===b?(r=B(a),
+t=r.binLen,l=r.value):n("inputFormat must be HEX, TEXT, ASCII, or B64");a=8*j;b=j/4-1;j<t/8?(l=$(l,t,d),l[b]&=4294967040):j>t/8&&(l[b]&=4294967040);for(j=0;j<=b;j+=1)y[j]=l[j]^909522486,z[j]=l[j]^1549556828;d=$(z.concat($(y.concat(k),a+g,d)),a+p,d);return h(d,G(f))}};})();
diff --git a/src/sha_dev.js b/src/sha_dev.js
index 7d08763..ceeaf6b 100755
--- a/src/sha_dev.js
+++ b/src/sha_dev.js
@@ -285,20 +285,20 @@ var SUPPORTED_ALGS = 4 | 2 | 1;
*/
function rotr_64(x, n)
{
- var retVal = null, tmp = new Int_64(x.highOrder, x.lowOrder);
+ var retVal = null;
if (32 >= n)
{
retVal = new Int_64(
- (tmp.highOrder >>> n) | (tmp.lowOrder << (32 - n)),
- (tmp.lowOrder >>> n) | (tmp.highOrder << (32 - n))
+ (x.highOrder >>> n) | ((x.lowOrder << (32 - n)) & 0xFFFFFFFF),
+ (x.lowOrder >>> n) | ((x.highOrder << (32 - n)) & 0xFFFFFFFF)
);
}
else
{
retVal = new Int_64(
- (tmp.lowOrder >>> (n - 32)) | (tmp.highOrder << (64 - n)),
- (tmp.highOrder >>> (n - 32)) | (tmp.lowOrder << (64 - n))
+ (x.lowOrder >>> (n - 32)) | ((x.highOrder << (64 - n)) & 0xFFFFFFFF),
+ (x.highOrder >>> (n - 32)) | ((x.lowOrder << (64 - n)) & 0xFFFFFFFF)
);
}
@@ -334,7 +334,7 @@ var SUPPORTED_ALGS = 4 | 2 | 1;
{
retVal = new Int_64(
x.highOrder >>> n,
- x.lowOrder >>> n | (x.highOrder << (32 - n))
+ x.lowOrder >>> n | ((x.highOrder << (32 - n)) & 0xFFFFFFFF)
);
}
else
@@ -1318,25 +1318,25 @@ var SUPPORTED_ALGS = 4 | 2 | 1;
if (("SHA-1" === variant) && (1 & SUPPORTED_ALGS))
{
retVal = coreSHA1(
- keyWithOPad.concat(
- coreSHA1(
- keyWithIPad.concat(strToHash),
- blockBitSize + strBinLen
- )
- ),
- blockBitSize + hashBitSize);
+ keyWithOPad.concat(
+ coreSHA1(
+ keyWithIPad.concat(strToHash),
+ blockBitSize + strBinLen
+ )
+ ),
+ blockBitSize + hashBitSize);
}
else if (6 & SUPPORTED_ALGS)
{
retVal = coreSHA2(
- keyWithOPad.concat(
- coreSHA2(
- keyWithIPad.concat(strToHash),
- blockBitSize + strBinLen,
- variant
- )
- ),
- blockBitSize + hashBitSize, variant);
+ keyWithOPad.concat(
+ coreSHA2(
+ keyWithIPad.concat(strToHash),
+ blockBitSize + strBinLen,
+ variant
+ )
+ ),
+ blockBitSize + hashBitSize, variant);
}
else
{