summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Turek <brian.turek@gmail.com>2012-11-22 12:44:50 -0500
committerBrian Turek <brian.turek@gmail.com>2012-11-22 12:44:50 -0500
commiteb34495a2d67fc3147c81837cc856efdb4c9037a (patch)
tree81ac9e68639ee82861f8a27b61b3cb2400f028d4
parent69c6ec326a6bbf51655dea80039289ad6bd374f0 (diff)
downloadjsSHA-eb34495a2d67fc3147c81837cc856efdb4c9037a.zip
jsSHA-eb34495a2d67fc3147c81837cc856efdb4c9037a.tar.gz
jsSHA-eb34495a2d67fc3147c81837cc856efdb4c9037a.tar.bz2
Possible fix for 64-bit Safari issue
-rwxr-xr-xCHANGELOG1
-rwxr-xr-xsrc/sha.js46
-rwxr-xr-xsrc/sha512.js2
-rwxr-xr-xsrc/sha_dev.js10
-rwxr-xr-xtest/test.html2
5 files changed, 31 insertions, 30 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 86d2e1b..d4f07d9 100755
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -26,6 +26,7 @@
- Significantly changed the test/test.html to make it easier to understand and
to allow for easier adding of test cases
- Replaced previous error returning code with thrown exceptions
+- Possible fix for 64-bit Safari issue (thanks Ron Garret!)
* This library misused the term ASCII so input type of TEXT was added with the
intention of deprecating ASCII
diff --git a/src/sha.js b/src/sha.js
index 5f6c1c7..6f9fe71 100755
--- a/src/sha.js
+++ b/src/sha.js
@@ -9,31 +9,31 @@
Several functions taken from Paul Johnson
*/
-function o(a){throw a;}var p=null;function q(a,b){this.a=a;this.b=b}function w(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 x(a){var b=[],c=a.length,g,f;0!==c%2&&o("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)&&o("String of HEX type contains invalid characters"),b[g>>>3]|=f<<24-4*(g%8);return{value:b,binLen:4*c}}
-function z(a){var b=[],c=0,g,f,h,i,k;-1===a.search(/^[a-zA-Z0-9=+\/]+$/)&&o("Invalid character in base-64 string");g=a.indexOf("=");a=a.replace(/\=/g,"");-1!==g&&g<a.length&&o("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)b[c>>2]|=(i>>>16-8*h&255)<<24-8*(c%4),c+=1}return{value:b,binLen:8*c}}
-function C(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 D(a,b){var c="",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)c=8*f+6*h<=32*a.length?c+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(i>>>6*(3-h)&63):c+b.b64Pad}return c}
-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){}"boolean"!==typeof b.outputUpper&&o("Invalid outputUpper formatting option");"string"!==typeof b.b64Pad&&o("Invalid b64Pad formatting option");return b}function I(a,b){return a>>>b|a<<32-b}function P(a,b){var c=p;return c=32>=b?new q(a.a>>>b|a.b<<32-b,a.b>>>b|a.a<<32-b):new q(a.b>>>b-32|a.a<<64-b,a.a>>>b-32|a.b<<64-b)}
-function Q(a,b){var c=p;return c=32>=b?new q(a.a>>>b,a.b>>>b|a.a<<32-b):new q(0,a.a>>>b-32)}function R(a,b,c){return a&b^~a&c}function S(a,b,c){return new q(a.a&b.a^~a.a&c.a,a.b&b.b^~a.b&c.b)}function T(a,b,c){return a&b^a&c^b&c}function U(a,b,c){return new q(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 V(a){return I(a,2)^I(a,13)^I(a,22)}function aa(a){var b=P(a,28),c=P(a,34),a=P(a,39);return new q(b.a^c.a^a.a,b.b^c.b^a.b)}function ba(a){return I(a,6)^I(a,11)^I(a,25)}
-function ca(a){var b=P(a,14),c=P(a,18),a=P(a,41);return new q(b.a^c.a^a.a,b.b^c.b^a.b)}function da(a){return I(a,7)^I(a,18)^a>>>3}function ea(a){var b=P(a,1),c=P(a,8),a=Q(a,7);return new q(b.a^c.a^a.a,b.b^c.b^a.b)}function fa(a){return I(a,17)^I(a,19)^a>>>10}function ga(a){var b=P(a,19),c=P(a,61),a=Q(a,6);return new q(b.a^c.a^a.a,b.b^c.b^a.b)}function X(a,b){var c=(a&65535)+(b&65535);return((a>>>16)+(b>>>16)+(c>>>16)&65535)<<16|c&65535}
-function ha(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 Y(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 ia(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 q((g&65535)<<16|c&65535,f)}
-function ja(a,b,c,g){var f,h,i;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);i=(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 q((h&65535)<<16|f&65535,i)}
-function ka(a,b,c,g,f){var h,i,k;h=(a.b&65535)+(b.b&65535)+(c.b&65535)+(g.b&65535)+(f.b&65535);i=(a.b>>>16)+(b.b>>>16)+(c.b>>>16)+(g.b>>>16)+(f.b>>>16)+(h>>>16);k=(i&65535)<<16|h&65535;h=(a.a&65535)+(b.a&65535)+(c.a&65535)+(g.a&65535)+(f.a&65535)+(i>>>16);i=(a.a>>>16)+(b.a>>>16)+(c.a>>>16)+(g.a>>>16)+(f.a>>>16)+(h>>>16);return new q((i&65535)<<16|h&65535,k)}
-function Z(a,b){var c=[],g,f,h,i,k,m,n,j,l,e=[1732584193,4023233417,2562383102,271733878,3285377520],y=[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;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)c[j]=16>j?a[j+n]:(c[j-3]^c[j-8]^c[j-14]^c[j-16])<<1|(c[j-3]^c[j-8]^c[j-14]^c[j-16])>>>31,m=20>j?Y(g<<5|g>>>27,f&h^~f&i,k,y[j],c[j]):40>j?Y(g<<5|g>>>27,f^h^i,k,y[j],c[j]):60>j?Y(g<<5|g>>>27,T(f,h,i),k,y[j],c[j]):Y(g<<5|g>>>27,f^h^i,k,y[j],c[j]),k=i,i=h,h=f<<30|f>>>2,f=g,g=m;e[0]=X(g,e[0]);e[1]=X(f,e[1]);e[2]=X(h,e[2]);e[3]=X(i,e[3]);e[4]=X(k,e[4])}return e}
-function $(a,b,c){var g,f,h,i,k,m,n,j,l,e,y,E,r,J,u,s,K,L,v,A,B,t,M,N,d,O,F=[],W,H;"SHA-224"===c||"SHA-256"===c?(y=64,g=(b+65>>>9<<4)+15,J=16,u=1,d=Number,s=X,K=ha,L=Y,v=da,A=fa,B=V,t=ba,N=T,M=R,O=[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?(y=80,g=(b+128>>>10<<5)+31,J=32,u=2,d=q,s=ia,K=ja,L=ka,v=ea,A=ga,B=aa,t=ca,N=U,M=S,O=[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,
+function o(a){throw a;}var p=null;function q(a,c){this.a=a;this.b=c}function w(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 x(a){var c=[],b=a.length,g,f;0!==b%2&&o("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)&&o("String of HEX type contains invalid characters"),c[g>>>3]|=f<<24-4*(g%8);return{value:c,binLen:4*b}}
+function z(a){var c=[],b=0,g,f,h,i,k;-1===a.search(/^[a-zA-Z0-9=+\/]+$/)&&o("Invalid character in base-64 string");g=a.indexOf("=");a=a.replace(/\=/g,"");-1!==g&&g<a.length&&o("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 C(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 D(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 G(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&&o("Invalid outputUpper formatting option");"string"!==typeof c.b64Pad&&o("Invalid b64Pad formatting option");return c}function I(a,c){return a>>>c|a<<32-c}
+function P(a,c){var b=p,b=new q(a.a,a.b);return b=32>=c?new q(b.a>>>c|b.b<<32-c,b.b>>>c|b.a<<32-c):new q(b.b>>>c-32|b.a<<64-c,b.a>>>c-32|b.b<<64-c)}function Q(a,c){var b=p;return b=32>=c?new q(a.a>>>c,a.b>>>c|a.a<<32-c):new q(0,a.a>>>c-32)}function R(a,c,b){return a&c^~a&b}function S(a,c,b){return new q(a.a&c.a^~a.a&b.a,a.b&c.b^~a.b&b.b)}function T(a,c,b){return a&c^a&b^c&b}function U(a,c,b){return new q(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 V(a){return I(a,2)^I(a,13)^I(a,22)}function aa(a){var c=P(a,28),b=P(a,34),a=P(a,39);return new q(c.a^b.a^a.a,c.b^b.b^a.b)}function ba(a){return I(a,6)^I(a,11)^I(a,25)}function ca(a){var c=P(a,14),b=P(a,18),a=P(a,41);return new q(c.a^b.a^a.a,c.b^b.b^a.b)}function da(a){return I(a,7)^I(a,18)^a>>>3}function ea(a){var c=P(a,1),b=P(a,8),a=Q(a,7);return new q(c.a^b.a^a.a,c.b^b.b^a.b)}function fa(a){return I(a,17)^I(a,19)^a>>>10}
+function ga(a){var c=P(a,19),b=P(a,61),a=Q(a,6);return new q(c.a^b.a^a.a,c.b^b.b^a.b)}function X(a,c){var b=(a&65535)+(c&65535);return((a>>>16)+(c>>>16)+(b>>>16)&65535)<<16|b&65535}function ha(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 ia(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 q((g&65535)<<16|b&65535,f)}
+function ja(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 q((h&65535)<<16|f&65535,i)}
+function ka(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 q((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],y=[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,y[j],b[j]):40>j?Y(g<<5|g>>>27,f^h^i,k,y[j],b[j]):60>j?Y(g<<5|g>>>27,T(f,h,i),k,y[j],b[j]):Y(g<<5|g>>>27,f^h^i,k,y[j],b[j]),k=i,i=h,h=f<<30|f>>>2,f=g,g=m;e[0]=X(g,e[0]);e[1]=X(f,e[1]);e[2]=X(h,e[2]);e[3]=X(i,e[3]);e[4]=X(k,e[4])}return e}
+function $(a,c,b){var g,f,h,i,k,m,n,j,l,e,y,E,r,J,u,s,K,L,v,A,B,t,M,N,d,O,F=[],W,H;"SHA-224"===b||"SHA-256"===b?(y=64,g=(c+65>>>9<<4)+15,J=16,u=1,d=Number,s=X,K=ha,L=Y,v=da,A=fa,B=V,t=ba,N=T,M=R,O=[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?(y=80,g=(c+128>>>10<<5)+31,J=32,u=2,d=q,s=ia,K=ja,L=ka,v=ea,A=ga,B=aa,t=ca,N=U,M=S,O=[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"===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)]):o("Unexpected error in SHA-2 implementation");a[b>>>5]|=128<<24-b%32;a[g]=b;W=a.length;for(E=0;E<W;E+=J){b=e[0];g=e[1];f=e[2];
-h=e[3];i=e[4];k=e[5];m=e[6];n=e[7];for(r=0;r<y;r+=1)F[r]=16>r?new d(a[r*u+E],a[r*u+E+1]):K(A(F[r-2]),F[r-7],v(F[r-15]),F[r-16]),j=L(n,t(i),M(i,k,m),O[r],F[r]),l=s(B(b),N(b,g,f)),n=m,m=k,k=i,i=s(h,j),h=f,f=g,g=b,b=s(j,l);e[0]=s(b,e[0]);e[1]=s(g,e[1]);e[2]=s(f,e[2]);e[3]=s(h,e[3]);e[4]=s(i,e[4]);e[5]=s(k,e[5]);e[6]=s(m,e[6]);e[7]=s(n,e[7])}"SHA-224"===c?H=[e[0],e[1],e[2],e[3],e[4],e[5],e[6]]:"SHA-256"===c?H=e:"SHA-384"===c?H=[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?H=[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]:o("Unexpected error in SHA-2 implementation");return H}
-window.jsSHA=function(a,b,c){var g=p,f=p,h=p,i=p,k=p,m=0,n=[0],j=0,l=p,j="undefined"!==typeof c?c:8;8===j||16===j||o("charSize must be 8 or 16");"HEX"===b?(0!==a.length%2&&o("srcString of HEX type must be in byte increments"),l=x(a),m=l.binLen,n=l.value):"ASCII"===b||"TEXT"===b?(l=w(a,j),m=l.binLen,n=l.value):"B64"===b?(l=z(a),m=l.binLen,n=l.value):o("inputFormat must be HEX, TEXT, ASCII, or B64");this.getHash=function(a,b,c){var j=p,l=n.slice(),u="";switch(b){case "HEX":j=C;break;case "B64":j=D;
-break;default:o("format must be HEX or B64")}if("SHA-1"===a){p===g&&(g=Z(l,m));u=j(g,G(c))}else if("SHA-224"===a){p===f&&(f=$(l,m,a));u=j(f,G(c))}else if("SHA-256"===a){p===h&&(h=$(l,m,a));u=j(h,G(c))}else if("SHA-384"===a){p===i&&(i=$(l,m,a));u=j(i,G(c))}else if("SHA-512"===a){p===k&&(k=$(l,m,a));u=j(k,G(c))}else o("Chosen SHA variant is not supported");return u};this.getHMAC=function(a,b,c,f,g){var h,i,k,l,v,A=[],B=[],t=p;switch(f){case "HEX":h=C;break;case "B64":h=D;break;default:o("outputFormat must be HEX or B64")}if("SHA-1"===
+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)]):o("Unexpected error in SHA-2 implementation");a[c>>>5]|=128<<24-c%32;a[g]=c;W=a.length;for(E=0;E<W;E+=J){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(r=0;r<y;r+=1)F[r]=16>r?new d(a[r*u+E],a[r*u+E+1]):K(A(F[r-2]),F[r-7],v(F[r-15]),F[r-16]),j=L(n,t(i),M(i,k,m),O[r],F[r]),l=s(B(c),N(c,g,f)),n=m,m=k,k=i,i=s(h,j),h=f,f=g,g=c,c=s(j,l);e[0]=s(c,e[0]);e[1]=s(g,e[1]);e[2]=s(f,e[2]);e[3]=s(h,e[3]);e[4]=s(i,e[4]);e[5]=s(k,e[5]);e[6]=s(m,e[6]);e[7]=s(n,e[7])}"SHA-224"===b?H=[e[0],e[1],e[2],e[3],e[4],e[5],e[6]]:"SHA-256"===b?H=e:"SHA-384"===b?H=[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?H=[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]:o("Unexpected error in SHA-2 implementation");return H}
+window.jsSHA=function(a,c,b){var g=p,f=p,h=p,i=p,k=p,m=0,n=[0],j=0,l=p,j="undefined"!==typeof b?b:8;8===j||16===j||o("charSize must be 8 or 16");"HEX"===c?(0!==a.length%2&&o("srcString of HEX type must be in byte increments"),l=x(a),m=l.binLen,n=l.value):"ASCII"===c||"TEXT"===c?(l=w(a,j),m=l.binLen,n=l.value):"B64"===c?(l=z(a),m=l.binLen,n=l.value):o("inputFormat must be HEX, TEXT, ASCII, or B64");this.getHash=function(a,c,b){var j=p,l=n.slice(),u="";switch(c){case "HEX":j=C;break;case "B64":j=D;
+break;default:o("format must be HEX or B64")}if("SHA-1"===a){p===g&&(g=Z(l,m));u=j(g,G(b))}else if("SHA-224"===a){p===f&&(f=$(l,m,a));u=j(f,G(b))}else if("SHA-256"===a){p===h&&(h=$(l,m,a));u=j(h,G(b))}else if("SHA-384"===a){p===i&&(i=$(l,m,a));u=j(i,G(b))}else if("SHA-512"===a){p===k&&(k=$(l,m,a));u=j(k,G(b))}else o("Chosen SHA variant is not supported");return u};this.getHMAC=function(a,b,c,f,g){var h,i,k,l,v,A=[],B=[],t=p;switch(f){case "HEX":h=C;break;case "B64":h=D;break;default:o("outputFormat must be HEX or B64")}if("SHA-1"===
c){k=64;v=160}else if("SHA-224"===c){k=64;v=224}else if("SHA-256"===c){k=64;v=256}else if("SHA-384"===c){k=128;v=384}else if("SHA-512"===c){k=128;v=512}else o("Chosen SHA variant is not supported");if("HEX"===b){t=x(a);l=t.binLen;i=t.value}else if("ASCII"===b||"TEXT"===b){t=w(a,j);l=t.binLen;i=t.value}else if("B64"===b){t=z(a);l=t.binLen;i=t.value}else o("inputFormat must be HEX, TEXT, ASCII, or B64");a=k*8;b=k/4-1;if(k<l/8){i="SHA-1"===c?Z(i,l):$(i,l,c);i[b]=i[b]&4294967040}else k>l/8&&(i[b]=i[b]&
4294967040);for(k=0;k<=b;k=k+1){A[k]=i[k]^909522486;B[k]=i[k]^1549556828}c="SHA-1"===c?Z(B.concat(Z(A.concat(n),a+m)),a+v):$(B.concat($(A.concat(n),a+m,c)),a+v,c);return h(c,G(g))}};})();
diff --git a/src/sha512.js b/src/sha512.js
index 5d60943..f829644 100755
--- a/src/sha512.js
+++ b/src/sha512.js
@@ -13,7 +13,7 @@ function m(a){throw a;}var o=null;function q(a,b){this.a=a;this.b=b}function s(a
function z(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 C(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 D(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 E(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 F(a,b){var d=o;return d=32>=b?new q(a.a>>>b|a.b<<32-b,a.b>>>b|a.a<<32-b):new q(a.b>>>b-32|a.a<<64-b,a.a>>>b-32|a.b<<64-b)}
+function E(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 F(a,b){var d=o,d=new q(a.a,a.b);return d=32>=b?new q(d.a>>>b|d.b<<32-b,d.b>>>b|d.a<<32-b):new q(d.b>>>b-32|d.a<<64-b,d.a>>>b-32|d.b<<64-b)}
function G(a,b){var d=o;return d=32>=b?new q(a.a>>>b,a.b>>>b|a.a<<32-b):new q(0,a.a>>>b-32)}function H(a,b,d){return new q(a.a&b.a^~a.a&d.a,a.b&b.b^~a.b&d.b)}function S(a,b,d){return new q(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 T(a){var b=F(a,28),d=F(a,34),a=F(a,39);return new q(b.a^d.a^a.a,b.b^d.b^a.b)}function U(a){var b=F(a,14),d=F(a,18),a=F(a,41);return new q(b.a^d.a^a.a,b.b^d.b^a.b)}function V(a){var b=F(a,1),d=F(a,8),a=G(a,7);return new q(b.a^d.a^a.a,b.b^d.b^a.b)}
function W(a){var b=F(a,19),d=F(a,61),a=G(a,6);return new q(b.a^d.a^a.a,b.b^d.b^a.b)}function X(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 q((h&65535)<<16|d&65535,f)}
function Y(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 q((g&65535)<<16|f&65535,j)}
diff --git a/src/sha_dev.js b/src/sha_dev.js
index 0262904..7d08763 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;
+ var retVal = null, tmp = new Int_64(x.highOrder, x.lowOrder);
if (32 >= n)
{
retVal = new Int_64(
- (x.highOrder >>> n) | (x.lowOrder << (32 - n)),
- (x.lowOrder >>> n) | (x.highOrder << (32 - n))
+ (tmp.highOrder >>> n) | (tmp.lowOrder << (32 - n)),
+ (tmp.lowOrder >>> n) | (tmp.highOrder << (32 - n))
);
}
else
{
retVal = new Int_64(
- (x.lowOrder >>> (n - 32)) | (x.highOrder << (64 - n)),
- (x.highOrder >>> (n - 32)) | (x.lowOrder << (64 - n))
+ (tmp.lowOrder >>> (n - 32)) | (tmp.highOrder << (64 - n)),
+ (tmp.highOrder >>> (n - 32)) | (tmp.lowOrder << (64 - n))
);
}
diff --git a/test/test.html b/test/test.html
index 8307d9d..fefe8cc 100755
--- a/test/test.html
+++ b/test/test.html
@@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>jsSHA (http://caligatio.github.com/jsSHA/) - Test</title>
- <script type="text/javascript" src="../src/sha.js"></script>
+ <script type="text/javascript" src="../src/sha_dev.js"></script>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<style type="text/css">
table