diff options
author | Brian Turek <brian.turek@gmail.com> | 2015-08-26 19:21:33 -0400 |
---|---|---|
committer | Brian Turek <brian.turek@gmail.com> | 2015-08-26 19:21:33 -0400 |
commit | 74190d0f48f4ee637cf0086a1cc85e7b882af18b (patch) | |
tree | 0572105e0ebd65eaa23e8f179df8616fee355a99 | |
parent | a11967ec84b0f30097ddabf6280cbb8d52d81f65 (diff) | |
download | jsSHA-74190d0f48f4ee637cf0086a1cc85e7b882af18b.zip jsSHA-74190d0f48f4ee637cf0086a1cc85e7b882af18b.tar.gz jsSHA-74190d0f48f4ee637cf0086a1cc85e7b882af18b.tar.bz2 |
Fixed inability to have blank b64Pad (#32)
-rw-r--r-- | CHANGELOG | 4 | ||||
-rw-r--r-- | src/sha.js | 2 | ||||
-rw-r--r-- | src/sha1.js | 24 | ||||
-rw-r--r-- | src/sha256.js | 16 | ||||
-rw-r--r-- | src/sha512.js | 28 | ||||
-rw-r--r-- | src/sha_dev.js | 8 |
6 files changed, 45 insertions, 37 deletions
@@ -1,6 +1,10 @@ ------------------------- jsSHA - ChangeLog ------------------------- +2.0.2 (XXX-XX-XX) +========================= +- Fixed inability to have a blank "b64Pad" (thanks xlc!) + 2.0.1 (2015-06-25) ========================= - Fixed major issue with all hashes failing if raw input was a particular size @@ -17,7 +17,7 @@ function(a){return N(a,n)};break;case "B64":g=function(a){return O(a,n)};break;c }!1===p&&(n=r(f,k,b,e),e=u(v,z(c)),e=r(n,h,m,e));p=!0;return g(e)}}function b(c,a){this.a=c;this.b=a}function V(c,a,d){var b=c.length,f,k,e,l,n;a=a||[0];d=d||0;n=d>>>3;if(0!==b%2)throw Error("String of HEX type must be in byte increments");for(f=0;f<b;f+=2){k=parseInt(c.substr(f,2),16);if(isNaN(k))throw Error("String of HEX type contains invalid characters");l=(f>>>1)+n;for(e=l>>>2;a.length<=e;)a.push(0);a[e]|=k<<8*(3-l%4)}return{value:a,binLen:4*b+d}}function W(c,a,d){var b=[],f,k,e,l,b=a||[0];d= d||0;k=d>>>3;for(f=0;f<c.length;f+=1)a=c.charCodeAt(f),l=f+k,e=l>>>2,b.length<=e&&b.push(0),b[e]|=a<<8*(3-l%4);return{value:b,binLen:8*c.length+d}}function X(c,a,d){var b=[],f=0,e,g,l,n,h,m,b=a||[0];d=d||0;a=d>>>3;if(-1===c.search(/^[a-zA-Z0-9=+\/]+$/))throw Error("Invalid character in base-64 string");g=c.indexOf("=");c=c.replace(/\=/g,"");if(-1!==g&&g<c.length)throw Error("Invalid '=' found in base-64 string");for(g=0;g<c.length;g+=4){h=c.substr(g,4);for(l=n=0;l<h.length;l+=1)e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(h[l]), n|=e<<18-6*l;for(l=0;l<h.length-1;l+=1){m=f+a;for(e=m>>>2;b.length<=e;)b.push(0);b[e]|=(n>>>16-8*l&255)<<8*(3-m%4);f+=1}}return{value:b,binLen:8*f+d}}function N(c,a){var d="",b=4*c.length,f,e;for(f=0;f<b;f+=1)e=c[f>>>2]>>>8*(3-f%4),d+="0123456789abcdef".charAt(e>>>4&15)+"0123456789abcdef".charAt(e&15);return a.outputUpper?d.toUpperCase():d}function O(c,a){var d="",b=4*c.length,f,e,g;for(f=0;f<b;f+=3)for(g=f+1>>>2,e=c.length<=g?0:c[g],g=f+2>>>2,g=c.length<=g?0:c[g],g=(c[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)8*f+6*e<=32*c.length?d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(g>>>6*(3-e)&63):d+=a.b64Pad;return d}function P(c){var a="",d=4*c.length,b,f;for(b=0;b<d;b+=1)f=c[b>>>2]>>>8*(3-b%4)&255,a+=String.fromCharCode(f);return a}function M(c){var a={outputUpper:!1,b64Pad:"="};c=c||{};a.outputUpper=c.outputUpper||!1;a.b64Pad=c.b64Pad||"=";if("boolean"!==typeof a.outputUpper)throw Error("Invalid outputUpper formatting option"); +(e>>>8*(3-(f+1)%4)&255)<<8|g>>>8*(3-(f+2)%4)&255,e=0;4>e;e+=1)8*f+6*e<=32*c.length?d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(g>>>6*(3-e)&63):d+=a.b64Pad;return d}function P(c){var a="",d=4*c.length,b,f;for(b=0;b<d;b+=1)f=c[b>>>2]>>>8*(3-b%4)&255,a+=String.fromCharCode(f);return a}function M(c){var a={outputUpper:!1,b64Pad:"="};c=c||{};a.outputUpper=c.outputUpper||!1;!0===c.hasOwnProperty("b64Pad")&&(a.b64Pad=c.b64Pad);if("boolean"!==typeof a.outputUpper)throw Error("Invalid outputUpper formatting option"); if("string"!==typeof a.b64Pad)throw Error("Invalid b64Pad formatting option");return a}function J(c,a){var d;switch(a){case "UTF8":case "UTF16BE":case "UTF16LE":break;default:throw Error("encoding must be UTF8, UTF16BE, or UTF16LE");}switch(c){case "HEX":d=V;break;case "TEXT":d=function(c,d,b){var e=[],l=[],n=0,h,m,u,r,p,e=d||[0];d=b||0;u=d>>>3;if("UTF8"===a)for(h=0;h<c.length;h+=1)for(b=c.charCodeAt(h),l=[],128>b?l.push(b):2048>b?(l.push(192|b>>>6),l.push(128|b&63)):55296>b||57344<=b?l.push(224| b>>>12,128|b>>>6&63,128|b&63):(h+=1,b=65536+((b&1023)<<10|c.charCodeAt(h)&1023),l.push(240|b>>>18,128|b>>>12&63,128|b>>>6&63,128|b&63)),m=0;m<l.length;m+=1){p=n+u;for(r=p>>>2;e.length<=r;)e.push(0);e[r]|=l[m]<<8*(3-p%4);n+=1}else if("UTF16BE"===a||"UTF16LE"===a)for(h=0;h<c.length;h+=1){b=c.charCodeAt(h);"UTF16LE"===a&&(m=b&255,b=m<<8|b>>>8);p=n+u;for(r=p>>>2;e.length<=r;)e.push(0);e[r]|=b<<8*(2-p%4);n+=2}return{value:e,binLen:8*n+d}};break;case "B64":d=X;break;case "BYTES":d=W;break;default:throw Error("format must be HEX, TEXT, B64, or BYTES"); }return d}function w(c,a){return c<<a|c>>>32-a}function q(c,a){return c>>>a|c<<32-a}function v(c,a){var d=null,d=new b(c.a,c.b);return d=32>=a?new b(d.a>>>a|d.b<<32-a&4294967295,d.b>>>a|d.a<<32-a&4294967295):new b(d.b>>>a-32|d.a<<64-a&4294967295,d.a>>>a-32|d.b<<64-a&4294967295)}function Q(c,a){var d=null;return d=32>=a?new b(c.a>>>a,c.b>>>a|c.a<<32-a&4294967295):new b(0,c.a>>>a-32)}function Y(c,a,d){return c&a^~c&d}function Z(c,a,d){return new b(c.a&a.a^~c.a&d.a,c.b&a.b^~c.b&d.b)}function R(c,a,d){return c& diff --git a/src/sha1.js b/src/sha1.js index 022c4fd..b6e54ec 100644 --- a/src/sha1.js +++ b/src/sha1.js @@ -9,15 +9,15 @@ Several functions taken from Paul Johnston */ -'use strict';(function(E){function t(c,a,e){var g=0,b=[],d=0,f,k,l,h,m,w,n,q=!1,r=!1,p=[],t=[],v,u=!1;e=e||{};f=e.encoding||"UTF8";v=e.numRounds||1;l=y(a,f);if(v!==parseInt(v,10)||1>v)throw Error("numRounds must a integer >= 1");if("SHA-1"===c)m=512,w=z,n=F,h=160;else throw Error("Chosen SHA variant is not supported");k=x(c);this.setHMACKey=function(a,b,d){var e;if(!0===r)throw Error("HMAC key already set");if(!0===q)throw Error("Cannot set HMAC key after finalizing hash");if(!0===u)throw Error("Cannot set HMAC key after calling update"); -f=(d||{}).encoding||"UTF8";b=y(b,f)(a);a=b.binLen;b=b.value;e=m>>>3;d=e/4-1;if(e<a/8){for(b=n(b,a,0,x(c));b.length<=d;)b.push(0);b[d]&=4294967040}else if(e>a/8){for(;b.length<=d;)b.push(0);b[d]&=4294967040}for(a=0;a<=d;a+=1)p[a]=b[a]^909522486,t[a]=b[a]^1549556828;k=w(p,k);g=m;r=!0};this.update=function(a){var c,e,f,h=0,n=m>>>5;c=l(a,b,d);a=c.binLen;e=c.value;c=a>>>5;for(f=0;f<c;f+=n)h+m<=a&&(k=w(e.slice(f,f+n),k),h+=m);g+=h;b=e.slice(h>>>5);d=a%m;u=!0};this.getHash=function(a,e){var f,l,m;if(!0=== -r)throw Error("Cannot call getHash after setting HMAC key");m=A(e);switch(a){case "HEX":f=function(a){return B(a,m)};break;case "B64":f=function(a){return C(a,m)};break;case "BYTES":f=D;break;default:throw Error("format must be HEX, B64, or BYTES");}if(!1===q)for(k=n(b,d,g,k),l=1;l<v;l+=1)k=n(k,h,0,x(c));q=!0;return f(k)};this.getHMAC=function(a,e){var f,l,p;if(!1===r)throw Error("Cannot call getHMAC without first setting HMAC key");p=A(e);switch(a){case "HEX":f=function(a){return B(a,p)};break;case "B64":f= -function(a){return C(a,p)};break;case "BYTES":f=D;break;default:throw Error("outputFormat must be HEX, B64, or BYTES");}!1===q&&(l=n(b,d,g,k),k=w(t,x(c)),k=n(l,h,m,k));q=!0;return f(k)}}function G(c,a,e){var g=c.length,b,d,f,k,l;a=a||[0];e=e||0;l=e>>>3;if(0!==g%2)throw Error("String of HEX type must be in byte increments");for(b=0;b<g;b+=2){d=parseInt(c.substr(b,2),16);if(isNaN(d))throw Error("String of HEX type contains invalid characters");k=(b>>>1)+l;for(f=k>>>2;a.length<=f;)a.push(0);a[f]|=d<< -8*(3-k%4)}return{value:a,binLen:4*g+e}}function H(c,a,e){var g=[],b,d,f,k,g=a||[0];e=e||0;d=e>>>3;for(b=0;b<c.length;b+=1)a=c.charCodeAt(b),k=b+d,f=k>>>2,g.length<=f&&g.push(0),g[f]|=a<<8*(3-k%4);return{value:g,binLen:8*c.length+e}}function I(c,a,e){var g=[],b=0,d,f,k,l,h,m,g=a||[0];e=e||0;a=e>>>3;if(-1===c.search(/^[a-zA-Z0-9=+\/]+$/))throw Error("Invalid character in base-64 string");f=c.indexOf("=");c=c.replace(/\=/g,"");if(-1!==f&&f<c.length)throw Error("Invalid '=' found in base-64 string"); -for(f=0;f<c.length;f+=4){h=c.substr(f,4);for(k=l=0;k<h.length;k+=1)d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(h[k]),l|=d<<18-6*k;for(k=0;k<h.length-1;k+=1){m=b+a;for(d=m>>>2;g.length<=d;)g.push(0);g[d]|=(l>>>16-8*k&255)<<8*(3-m%4);b+=1}}return{value:g,binLen:8*b+e}}function B(c,a){var e="",g=4*c.length,b,d;for(b=0;b<g;b+=1)d=c[b>>>2]>>>8*(3-b%4),e+="0123456789abcdef".charAt(d>>>4&15)+"0123456789abcdef".charAt(d&15);return a.outputUpper?e.toUpperCase():e}function C(c, -a){var e="",g=4*c.length,b,d,f;for(b=0;b<g;b+=3)for(f=b+1>>>2,d=c.length<=f?0:c[f],f=b+2>>>2,f=c.length<=f?0:c[f],f=(c[b>>>2]>>>8*(3-b%4)&255)<<16|(d>>>8*(3-(b+1)%4)&255)<<8|f>>>8*(3-(b+2)%4)&255,d=0;4>d;d+=1)8*b+6*d<=32*c.length?e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>>6*(3-d)&63):e+=a.b64Pad;return e}function D(c){var a="",e=4*c.length,g,b;for(g=0;g<e;g+=1)b=c[g>>>2]>>>8*(3-g%4)&255,a+=String.fromCharCode(b);return a}function A(c){var a={outputUpper:!1,b64Pad:"="}; -c=c||{};a.outputUpper=c.outputUpper||!1;a.b64Pad=c.b64Pad||"=";if("boolean"!==typeof a.outputUpper)throw Error("Invalid outputUpper formatting option");if("string"!==typeof a.b64Pad)throw Error("Invalid b64Pad formatting option");return a}function y(c,a){var e;switch(a){case "UTF8":case "UTF16BE":case "UTF16LE":break;default:throw Error("encoding must be UTF8, UTF16BE, or UTF16LE");}switch(c){case "HEX":e=G;break;case "TEXT":e=function(e,b,d){var f=[],c=[],l=0,h,m,p,n,q,f=b||[0];b=d||0;p=b>>>3;if("UTF8"=== -a)for(h=0;h<e.length;h+=1)for(d=e.charCodeAt(h),c=[],128>d?c.push(d):2048>d?(c.push(192|d>>>6),c.push(128|d&63)):55296>d||57344<=d?c.push(224|d>>>12,128|d>>>6&63,128|d&63):(h+=1,d=65536+((d&1023)<<10|e.charCodeAt(h)&1023),c.push(240|d>>>18,128|d>>>12&63,128|d>>>6&63,128|d&63)),m=0;m<c.length;m+=1){q=l+p;for(n=q>>>2;f.length<=n;)f.push(0);f[n]|=c[m]<<8*(3-q%4);l+=1}else if("UTF16BE"===a||"UTF16LE"===a)for(h=0;h<e.length;h+=1){d=e.charCodeAt(h);"UTF16LE"===a&&(m=d&255,d=m<<8|d>>>8);q=l+p;for(n=q>>> -2;f.length<=n;)f.push(0);f[n]|=d<<8*(2-q%4);l+=2}return{value:f,binLen:8*l+b}};break;case "B64":e=I;break;case "BYTES":e=H;break;default:throw Error("format must be HEX, TEXT, B64, or BYTES");}return e}function r(c,a){return c<<a|c>>>32-a}function p(c,a){var e=(c&65535)+(a&65535);return((c>>>16)+(a>>>16)+(e>>>16)&65535)<<16|e&65535}function u(c,a,e,g,b){var d=(c&65535)+(a&65535)+(e&65535)+(g&65535)+(b&65535);return((c>>>16)+(a>>>16)+(e>>>16)+(g>>>16)+(b>>>16)+(d>>>16)&65535)<<16|d&65535}function x(c){if("SHA-1"=== -c)c=[1732584193,4023233417,2562383102,271733878,3285377520];else throw Error("No SHA variants supported");return c}function z(c,a){var e=[],g,b,d,f,k,l,h;g=a[0];b=a[1];d=a[2];f=a[3];k=a[4];for(h=0;80>h;h+=1)e[h]=16>h?c[h]:r(e[h-3]^e[h-8]^e[h-14]^e[h-16],1),l=20>h?u(r(g,5),b&d^~b&f,k,1518500249,e[h]):40>h?u(r(g,5),b^d^f,k,1859775393,e[h]):60>h?u(r(g,5),b&d^b&f^d&f,k,2400959708,e[h]):u(r(g,5),b^d^f,k,3395469782,e[h]),k=f,f=d,d=r(b,30),b=g,g=l;a[0]=p(g,a[0]);a[1]=p(b,a[1]);a[2]=p(d,a[2]);a[3]=p(f,a[3]); -a[4]=p(k,a[4]);return a}function F(c,a,e,g){var b;for(b=(a+65>>>9<<4)+15;c.length<=b;)c.push(0);c[a>>>5]|=128<<24-a%32;c[b]=a+e;e=c.length;for(a=0;a<e;a+=16)g=z(c.slice(a,a+16),g);return g}"function"===typeof define&&define.amd?define(function(){return t}):"undefined"!==typeof exports?"undefined"!==typeof module&&module.exports?module.exports=exports=t:exports=t:E.jsSHA=t})(this); +'use strict';(function(E){function t(e,a,c){var g=0,b=[],d=0,f,k,l,h,m,w,n,q=!1,r=!1,p=[],t=[],v,u=!1;c=c||{};f=c.encoding||"UTF8";v=c.numRounds||1;l=y(a,f);if(v!==parseInt(v,10)||1>v)throw Error("numRounds must a integer >= 1");if("SHA-1"===e)m=512,w=z,n=F,h=160;else throw Error("Chosen SHA variant is not supported");k=x(e);this.setHMACKey=function(a,b,d){var c;if(!0===r)throw Error("HMAC key already set");if(!0===q)throw Error("Cannot set HMAC key after finalizing hash");if(!0===u)throw Error("Cannot set HMAC key after calling update"); +f=(d||{}).encoding||"UTF8";b=y(b,f)(a);a=b.binLen;b=b.value;c=m>>>3;d=c/4-1;if(c<a/8){for(b=n(b,a,0,x(e));b.length<=d;)b.push(0);b[d]&=4294967040}else if(c>a/8){for(;b.length<=d;)b.push(0);b[d]&=4294967040}for(a=0;a<=d;a+=1)p[a]=b[a]^909522486,t[a]=b[a]^1549556828;k=w(p,k);g=m;r=!0};this.update=function(a){var e,c,f,h=0,n=m>>>5;e=l(a,b,d);a=e.binLen;c=e.value;e=a>>>5;for(f=0;f<e;f+=n)h+m<=a&&(k=w(c.slice(f,f+n),k),h+=m);g+=h;b=c.slice(h>>>5);d=a%m;u=!0};this.getHash=function(a,c){var f,l,m;if(!0=== +r)throw Error("Cannot call getHash after setting HMAC key");m=A(c);switch(a){case "HEX":f=function(a){return B(a,m)};break;case "B64":f=function(a){return C(a,m)};break;case "BYTES":f=D;break;default:throw Error("format must be HEX, B64, or BYTES");}if(!1===q)for(k=n(b,d,g,k),l=1;l<v;l+=1)k=n(k,h,0,x(e));q=!0;return f(k)};this.getHMAC=function(a,c){var f,l,p;if(!1===r)throw Error("Cannot call getHMAC without first setting HMAC key");p=A(c);switch(a){case "HEX":f=function(a){return B(a,p)};break;case "B64":f= +function(a){return C(a,p)};break;case "BYTES":f=D;break;default:throw Error("outputFormat must be HEX, B64, or BYTES");}!1===q&&(l=n(b,d,g,k),k=w(t,x(e)),k=n(l,h,m,k));q=!0;return f(k)}}function G(e,a,c){var g=e.length,b,d,f,k,l;a=a||[0];c=c||0;l=c>>>3;if(0!==g%2)throw Error("String of HEX type must be in byte increments");for(b=0;b<g;b+=2){d=parseInt(e.substr(b,2),16);if(isNaN(d))throw Error("String of HEX type contains invalid characters");k=(b>>>1)+l;for(f=k>>>2;a.length<=f;)a.push(0);a[f]|=d<< +8*(3-k%4)}return{value:a,binLen:4*g+c}}function H(e,a,c){var g=[],b,d,f,k,g=a||[0];c=c||0;d=c>>>3;for(b=0;b<e.length;b+=1)a=e.charCodeAt(b),k=b+d,f=k>>>2,g.length<=f&&g.push(0),g[f]|=a<<8*(3-k%4);return{value:g,binLen:8*e.length+c}}function I(e,a,c){var g=[],b=0,d,f,k,l,h,m,g=a||[0];c=c||0;a=c>>>3;if(-1===e.search(/^[a-zA-Z0-9=+\/]+$/))throw Error("Invalid character in base-64 string");f=e.indexOf("=");e=e.replace(/\=/g,"");if(-1!==f&&f<e.length)throw Error("Invalid '=' found in base-64 string"); +for(f=0;f<e.length;f+=4){h=e.substr(f,4);for(k=l=0;k<h.length;k+=1)d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(h[k]),l|=d<<18-6*k;for(k=0;k<h.length-1;k+=1){m=b+a;for(d=m>>>2;g.length<=d;)g.push(0);g[d]|=(l>>>16-8*k&255)<<8*(3-m%4);b+=1}}return{value:g,binLen:8*b+c}}function B(e,a){var c="",g=4*e.length,b,d;for(b=0;b<g;b+=1)d=e[b>>>2]>>>8*(3-b%4),c+="0123456789abcdef".charAt(d>>>4&15)+"0123456789abcdef".charAt(d&15);return a.outputUpper?c.toUpperCase():c}function C(e, +a){var c="",g=4*e.length,b,d,f;for(b=0;b<g;b+=3)for(f=b+1>>>2,d=e.length<=f?0:e[f],f=b+2>>>2,f=e.length<=f?0:e[f],f=(e[b>>>2]>>>8*(3-b%4)&255)<<16|(d>>>8*(3-(b+1)%4)&255)<<8|f>>>8*(3-(b+2)%4)&255,d=0;4>d;d+=1)8*b+6*d<=32*e.length?c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>>6*(3-d)&63):c+=a.b64Pad;return c}function D(e){var a="",c=4*e.length,g,b;for(g=0;g<c;g+=1)b=e[g>>>2]>>>8*(3-g%4)&255,a+=String.fromCharCode(b);return a}function A(e){var a={outputUpper:!1,b64Pad:"="}; +e=e||{};a.outputUpper=e.outputUpper||!1;!0===e.hasOwnProperty("b64Pad")&&(a.b64Pad=e.b64Pad);if("boolean"!==typeof a.outputUpper)throw Error("Invalid outputUpper formatting option");if("string"!==typeof a.b64Pad)throw Error("Invalid b64Pad formatting option");return a}function y(e,a){var c;switch(a){case "UTF8":case "UTF16BE":case "UTF16LE":break;default:throw Error("encoding must be UTF8, UTF16BE, or UTF16LE");}switch(e){case "HEX":c=G;break;case "TEXT":c=function(e,b,d){var f=[],c=[],l=0,h,m,p, +n,q,f=b||[0];b=d||0;p=b>>>3;if("UTF8"===a)for(h=0;h<e.length;h+=1)for(d=e.charCodeAt(h),c=[],128>d?c.push(d):2048>d?(c.push(192|d>>>6),c.push(128|d&63)):55296>d||57344<=d?c.push(224|d>>>12,128|d>>>6&63,128|d&63):(h+=1,d=65536+((d&1023)<<10|e.charCodeAt(h)&1023),c.push(240|d>>>18,128|d>>>12&63,128|d>>>6&63,128|d&63)),m=0;m<c.length;m+=1){q=l+p;for(n=q>>>2;f.length<=n;)f.push(0);f[n]|=c[m]<<8*(3-q%4);l+=1}else if("UTF16BE"===a||"UTF16LE"===a)for(h=0;h<e.length;h+=1){d=e.charCodeAt(h);"UTF16LE"===a&& +(m=d&255,d=m<<8|d>>>8);q=l+p;for(n=q>>>2;f.length<=n;)f.push(0);f[n]|=d<<8*(2-q%4);l+=2}return{value:f,binLen:8*l+b}};break;case "B64":c=I;break;case "BYTES":c=H;break;default:throw Error("format must be HEX, TEXT, B64, or BYTES");}return c}function r(e,a){return e<<a|e>>>32-a}function p(e,a){var c=(e&65535)+(a&65535);return((e>>>16)+(a>>>16)+(c>>>16)&65535)<<16|c&65535}function u(e,a,c,g,b){var d=(e&65535)+(a&65535)+(c&65535)+(g&65535)+(b&65535);return((e>>>16)+(a>>>16)+(c>>>16)+(g>>>16)+(b>>>16)+ +(d>>>16)&65535)<<16|d&65535}function x(e){if("SHA-1"===e)e=[1732584193,4023233417,2562383102,271733878,3285377520];else throw Error("No SHA variants supported");return e}function z(e,a){var c=[],g,b,d,f,k,l,h;g=a[0];b=a[1];d=a[2];f=a[3];k=a[4];for(h=0;80>h;h+=1)c[h]=16>h?e[h]:r(c[h-3]^c[h-8]^c[h-14]^c[h-16],1),l=20>h?u(r(g,5),b&d^~b&f,k,1518500249,c[h]):40>h?u(r(g,5),b^d^f,k,1859775393,c[h]):60>h?u(r(g,5),b&d^b&f^d&f,k,2400959708,c[h]):u(r(g,5),b^d^f,k,3395469782,c[h]),k=f,f=d,d=r(b,30),b=g,g=l;a[0]= +p(g,a[0]);a[1]=p(b,a[1]);a[2]=p(d,a[2]);a[3]=p(f,a[3]);a[4]=p(k,a[4]);return a}function F(e,a,c,g){var b;for(b=(a+65>>>9<<4)+15;e.length<=b;)e.push(0);e[a>>>5]|=128<<24-a%32;e[b]=a+c;c=e.length;for(a=0;a<c;a+=16)g=z(e.slice(a,a+16),g);return g}"function"===typeof define&&define.amd?define(function(){return t}):"undefined"!==typeof exports?"undefined"!==typeof module&&module.exports?module.exports=exports=t:exports=t:E.jsSHA=t})(this); diff --git a/src/sha256.js b/src/sha256.js index d2a8085..d732636 100644 --- a/src/sha256.js +++ b/src/sha256.js @@ -17,11 +17,11 @@ function(a){return D(a,q)};break;case "BYTES":e=E;break;default:throw Error("out a[e]|=f<<8*(3-h%4)}return{value:a,binLen:4*g+b}}function J(c,a,b){var g=[],d,f,e,h,g=a||[0];b=b||0;f=b>>>3;for(d=0;d<c.length;d+=1)a=c.charCodeAt(d),h=d+f,e=h>>>2,g.length<=e&&g.push(0),g[e]|=a<<8*(3-h%4);return{value:g,binLen:8*c.length+b}}function K(c,a,b){var g=[],d=0,f,e,h,n,l,m,g=a||[0];b=b||0;a=b>>>3;if(-1===c.search(/^[a-zA-Z0-9=+\/]+$/))throw Error("Invalid character in base-64 string");e=c.indexOf("=");c=c.replace(/\=/g,"");if(-1!==e&&e<c.length)throw Error("Invalid '=' found in base-64 string"); for(e=0;e<c.length;e+=4){l=c.substr(e,4);for(h=n=0;h<l.length;h+=1)f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(l[h]),n|=f<<18-6*h;for(h=0;h<l.length-1;h+=1){m=d+a;for(f=m>>>2;g.length<=f;)g.push(0);g[f]|=(n>>>16-8*h&255)<<8*(3-m%4);d+=1}}return{value:g,binLen:8*d+b}}function C(c,a){var b="",g=4*c.length,d,f;for(d=0;d<g;d+=1)f=c[d>>>2]>>>8*(3-d%4),b+="0123456789abcdef".charAt(f>>>4&15)+"0123456789abcdef".charAt(f&15);return a.outputUpper?b.toUpperCase():b}function D(c, a){var b="",g=4*c.length,d,f,e;for(d=0;d<g;d+=3)for(e=d+1>>>2,f=c.length<=e?0:c[e],e=d+2>>>2,e=c.length<=e?0:c[e],e=(c[d>>>2]>>>8*(3-d%4)&255)<<16|(f>>>8*(3-(d+1)%4)&255)<<8|e>>>8*(3-(d+2)%4)&255,f=0;4>f;f+=1)8*d+6*f<=32*c.length?b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>>6*(3-f)&63):b+=a.b64Pad;return b}function E(c){var a="",b=4*c.length,g,d;for(g=0;g<b;g+=1)d=c[g>>>2]>>>8*(3-g%4)&255,a+=String.fromCharCode(d);return a}function B(c){var a={outputUpper:!1,b64Pad:"="}; -c=c||{};a.outputUpper=c.outputUpper||!1;a.b64Pad=c.b64Pad||"=";if("boolean"!==typeof a.outputUpper)throw Error("Invalid outputUpper formatting option");if("string"!==typeof a.b64Pad)throw Error("Invalid b64Pad formatting option");return a}function z(c,a){var b;switch(a){case "UTF8":case "UTF16BE":case "UTF16LE":break;default:throw Error("encoding must be UTF8, UTF16BE, or UTF16LE");}switch(c){case "HEX":b=I;break;case "TEXT":b=function(b,c,f){var e=[],h=[],n=0,l,m,k,r,p,e=c||[0];c=f||0;k=c>>>3;if("UTF8"=== -a)for(l=0;l<b.length;l+=1)for(f=b.charCodeAt(l),h=[],128>f?h.push(f):2048>f?(h.push(192|f>>>6),h.push(128|f&63)):55296>f||57344<=f?h.push(224|f>>>12,128|f>>>6&63,128|f&63):(l+=1,f=65536+((f&1023)<<10|b.charCodeAt(l)&1023),h.push(240|f>>>18,128|f>>>12&63,128|f>>>6&63,128|f&63)),m=0;m<h.length;m+=1){p=n+k;for(r=p>>>2;e.length<=r;)e.push(0);e[r]|=h[m]<<8*(3-p%4);n+=1}else if("UTF16BE"===a||"UTF16LE"===a)for(l=0;l<b.length;l+=1){f=b.charCodeAt(l);"UTF16LE"===a&&(m=f&255,f=m<<8|f>>>8);p=n+k;for(r=p>>> -2;e.length<=r;)e.push(0);e[r]|=f<<8*(2-p%4);n+=2}return{value:e,binLen:8*n+c}};break;case "B64":b=K;break;case "BYTES":b=J;break;default:throw Error("format must be HEX, TEXT, B64, or BYTES");}return b}function t(c,a){return c>>>a|c<<32-a}function L(c,a,b){return c&a^~c&b}function M(c,a,b){return c&a^c&b^a&b}function N(c){return t(c,2)^t(c,13)^t(c,22)}function O(c){return t(c,6)^t(c,11)^t(c,25)}function P(c){return t(c,7)^t(c,18)^c>>>3}function Q(c){return t(c,17)^t(c,19)^c>>>10}function R(c,a){var b= -(c&65535)+(a&65535);return((c>>>16)+(a>>>16)+(b>>>16)&65535)<<16|b&65535}function S(c,a,b,g){var d=(c&65535)+(a&65535)+(b&65535)+(g&65535);return((c>>>16)+(a>>>16)+(b>>>16)+(g>>>16)+(d>>>16)&65535)<<16|d&65535}function T(c,a,b,g,d){var f=(c&65535)+(a&65535)+(b&65535)+(g&65535)+(d&65535);return((c>>>16)+(a>>>16)+(b>>>16)+(g>>>16)+(d>>>16)+(f>>>16)&65535)<<16|f&65535}function w(c){var a,b;a=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428];b=[1779033703,3144134277, -1013904242,2773480762,1359893119,2600822924,528734635,1541459225];switch(c){case "SHA-224":c=a;break;case "SHA-256":c=b;break;case "SHA-384":c=[new k,new k,new k,new k,new k,new k,new k,new k];break;case "SHA-512":c=[new k,new k,new k,new k,new k,new k,new k,new k];break;default:throw Error("Unknown SHA variant");}return c}function A(c,a,b){var g,d,f,e,h,n,l,m,k,r,p,t,q,v,u,y,w,z,A,B,C,D,x=[],E;if("SHA-224"===b||"SHA-256"===b)r=64,t=1,D=Number,q=R,v=S,u=T,y=P,w=Q,z=N,A=O,C=M,B=L,E=G;else throw Error("Unexpected error in SHA-2 implementation"); -b=a[0];g=a[1];d=a[2];f=a[3];e=a[4];h=a[5];n=a[6];l=a[7];for(p=0;p<r;p+=1)16>p?(k=p*t,m=c.length<=k?0:c[k],k=c.length<=k+1?0:c[k+1],x[p]=new D(m,k)):x[p]=v(w(x[p-2]),x[p-7],y(x[p-15]),x[p-16]),m=u(l,A(e),B(e,h,n),E[p],x[p]),k=q(z(b),C(b,g,d)),l=n,n=h,h=e,e=q(f,m),f=d,d=g,g=b,b=q(m,k);a[0]=q(b,a[0]);a[1]=q(g,a[1]);a[2]=q(d,a[2]);a[3]=q(f,a[3]);a[4]=q(e,a[4]);a[5]=q(h,a[5]);a[6]=q(n,a[6]);a[7]=q(l,a[7]);return a}var G;G=[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];"function"===typeof define&&define.amd?define(function(){return v}):"undefined"!==typeof exports?"undefined"!==typeof module&&module.exports?module.exports=exports=v:exports=v:H.jsSHA=v})(this); +c=c||{};a.outputUpper=c.outputUpper||!1;!0===c.hasOwnProperty("b64Pad")&&(a.b64Pad=c.b64Pad);if("boolean"!==typeof a.outputUpper)throw Error("Invalid outputUpper formatting option");if("string"!==typeof a.b64Pad)throw Error("Invalid b64Pad formatting option");return a}function z(c,a){var b;switch(a){case "UTF8":case "UTF16BE":case "UTF16LE":break;default:throw Error("encoding must be UTF8, UTF16BE, or UTF16LE");}switch(c){case "HEX":b=I;break;case "TEXT":b=function(b,c,f){var e=[],h=[],n=0,l,m,k, +r,p,e=c||[0];c=f||0;k=c>>>3;if("UTF8"===a)for(l=0;l<b.length;l+=1)for(f=b.charCodeAt(l),h=[],128>f?h.push(f):2048>f?(h.push(192|f>>>6),h.push(128|f&63)):55296>f||57344<=f?h.push(224|f>>>12,128|f>>>6&63,128|f&63):(l+=1,f=65536+((f&1023)<<10|b.charCodeAt(l)&1023),h.push(240|f>>>18,128|f>>>12&63,128|f>>>6&63,128|f&63)),m=0;m<h.length;m+=1){p=n+k;for(r=p>>>2;e.length<=r;)e.push(0);e[r]|=h[m]<<8*(3-p%4);n+=1}else if("UTF16BE"===a||"UTF16LE"===a)for(l=0;l<b.length;l+=1){f=b.charCodeAt(l);"UTF16LE"===a&& +(m=f&255,f=m<<8|f>>>8);p=n+k;for(r=p>>>2;e.length<=r;)e.push(0);e[r]|=f<<8*(2-p%4);n+=2}return{value:e,binLen:8*n+c}};break;case "B64":b=K;break;case "BYTES":b=J;break;default:throw Error("format must be HEX, TEXT, B64, or BYTES");}return b}function t(c,a){return c>>>a|c<<32-a}function L(c,a,b){return c&a^~c&b}function M(c,a,b){return c&a^c&b^a&b}function N(c){return t(c,2)^t(c,13)^t(c,22)}function O(c){return t(c,6)^t(c,11)^t(c,25)}function P(c){return t(c,7)^t(c,18)^c>>>3}function Q(c){return t(c, +17)^t(c,19)^c>>>10}function R(c,a){var b=(c&65535)+(a&65535);return((c>>>16)+(a>>>16)+(b>>>16)&65535)<<16|b&65535}function S(c,a,b,g){var d=(c&65535)+(a&65535)+(b&65535)+(g&65535);return((c>>>16)+(a>>>16)+(b>>>16)+(g>>>16)+(d>>>16)&65535)<<16|d&65535}function T(c,a,b,g,d){var f=(c&65535)+(a&65535)+(b&65535)+(g&65535)+(d&65535);return((c>>>16)+(a>>>16)+(b>>>16)+(g>>>16)+(d>>>16)+(f>>>16)&65535)<<16|f&65535}function w(c){var a,b;a=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839, +3204075428];b=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225];switch(c){case "SHA-224":c=a;break;case "SHA-256":c=b;break;case "SHA-384":c=[new k,new k,new k,new k,new k,new k,new k,new k];break;case "SHA-512":c=[new k,new k,new k,new k,new k,new k,new k,new k];break;default:throw Error("Unknown SHA variant");}return c}function A(c,a,b){var g,d,f,e,h,n,l,m,k,r,p,t,q,v,u,y,w,z,A,B,C,D,x=[],E;if("SHA-224"===b||"SHA-256"===b)r=64,t=1,D=Number,q=R,v=S,u=T,y=P, +w=Q,z=N,A=O,C=M,B=L,E=G;else throw Error("Unexpected error in SHA-2 implementation");b=a[0];g=a[1];d=a[2];f=a[3];e=a[4];h=a[5];n=a[6];l=a[7];for(p=0;p<r;p+=1)16>p?(k=p*t,m=c.length<=k?0:c[k],k=c.length<=k+1?0:c[k+1],x[p]=new D(m,k)):x[p]=v(w(x[p-2]),x[p-7],y(x[p-15]),x[p-16]),m=u(l,A(e),B(e,h,n),E[p],x[p]),k=q(z(b),C(b,g,d)),l=n,n=h,h=e,e=q(f,m),f=d,d=g,g=b,b=q(m,k);a[0]=q(b,a[0]);a[1]=q(g,a[1]);a[2]=q(d,a[2]);a[3]=q(f,a[3]);a[4]=q(e,a[4]);a[5]=q(h,a[5]);a[6]=q(n,a[6]);a[7]=q(l,a[7]);return a}var G; +G=[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];"function"===typeof define&&define.amd?define(function(){return v}):"undefined"!==typeof exports?"undefined"!==typeof module&&module.exports?module.exports=exports=v:exports=v:H.jsSHA=v})(this); diff --git a/src/sha512.js b/src/sha512.js index 44a6398..ceb4d9c 100644 --- a/src/sha512.js +++ b/src/sha512.js @@ -17,18 +17,18 @@ u)throw Error("Cannot call getHMAC without first setting HMAC key");m=E(a);switc for(f=0;f<b;f+=2){e=parseInt(a.substr(f,2),16);if(isNaN(e))throw Error("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 Error("Invalid character in base-64 string"); g=a.indexOf("=");a=a.replace(/\=/g,"");if(-1!==g&&g<a.length)throw Error("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)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 Error("Invalid outputUpper formatting option");if("string"!==typeof c.b64Pad)throw Error("Invalid b64Pad formatting option");return c}function C(a,c){var d;switch(c){case "UTF8":case "UTF16BE":case "UTF16LE":break;default:throw Error("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 Error("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 Error("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 Error("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}): +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;!0===a.hasOwnProperty("b64Pad")&&(c.b64Pad=a.b64Pad);if("boolean"!==typeof c.outputUpper)throw Error("Invalid outputUpper formatting option");if("string"!==typeof c.b64Pad)throw Error("Invalid b64Pad formatting option");return c}function C(a,c){var d;switch(c){case "UTF8":case "UTF16BE":case "UTF16LE":break;default:throw Error("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 Error("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 Error("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 Error("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); diff --git a/src/sha_dev.js b/src/sha_dev.js index f16f15a..8222d1b 100644 --- a/src/sha_dev.js +++ b/src/sha_dev.js @@ -395,7 +395,11 @@ var SUPPORTED_ALGS = 4 | 2 | 1; outputOptions = options || {}; retVal["outputUpper"] = outputOptions["outputUpper"] || false; - retVal["b64Pad"] = outputOptions["b64Pad"] || "="; + + if (true === outputOptions.hasOwnProperty("b64Pad")) + { + retVal["b64Pad"] = outputOptions["b64Pad"]; + } if ("boolean" !== typeof(retVal["outputUpper"])) { @@ -1297,7 +1301,7 @@ var SUPPORTED_ALGS = 4 | 2 | 1; actually 72 (64 + 8) but the below math fails if remainderBinLen + 72 % 512 = 0. Since remainderBinLen % 8 = 0, "shorting" the addition is OK. */ - offset = (((remainderBinLen + 65) >>> 9) << 4) + 15;; + offset = (((remainderBinLen + 65) >>> 9) << 4) + 15; binaryStringInc = 16; } else if ((variant === "SHA-384" || variant === "SHA-512") && |