summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Turek <brian.turek@gmail.com>2012-11-24 22:54:53 -0500
committerBrian Turek <brian.turek@gmail.com>2012-11-24 22:54:53 -0500
commit1e409869aed838b06d014735f8b05f5f10f2f1a7 (patch)
treeaac8be81bbe1097337a8ee8fd81b6955eb99fe9a
parenteb34495a2d67fc3147c81837cc856efdb4c9037a (diff)
downloadjsSHA-1e409869aed838b06d014735f8b05f5f10f2f1a7.zip
jsSHA-1e409869aed838b06d014735f8b05f5f10f2f1a7.tar.gz
jsSHA-1e409869aed838b06d014735f8b05f5f10f2f1a7.tar.bz2
Recompiled with newer Google Closure Compiler
-rwxr-xr-xCHANGELOG4
-rwxr-xr-xsrc/sha.js54
-rwxr-xr-xsrc/sha1.js22
-rwxr-xr-xsrc/sha256.js26
-rwxr-xr-xsrc/sha512.js32
-rwxr-xr-xtest/test.html2
6 files changed, 70 insertions, 70 deletions
diff --git a/CHANGELOG b/CHANGELOG
index d4f07d9..19297bb 100755
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -5,7 +5,7 @@
1.4 (XXXX-XX-XX)
=========================
- Added new input type, TEXT, that is functionally identical to ASCII*
-- Added new input type, B64, fpr base-64 encoded strings
+- Added new input type, B64, for base-64 encoded strings
- Added new input and output formatting parameters
- getHash and getHMAC take an optional parameter, outputFormatOpts,
that is a hash list containing the keys "outputUpper" (boolean, only
@@ -26,7 +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!)
+- Possible fix for 64-bit Safari issue (thanks Ron Garret and Chris Warren-Smith!)
* 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 6f9fe71..ffef44b 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,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,
+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,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"===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))}};})();
+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),
+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))}};})();
diff --git a/src/sha1.js b/src/sha1.js
index 0109f8e..03b4a1d 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 q(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 s(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 t(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 u(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 v(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 w(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 x(a,e){var b=(a&65535)+(e&65535);return((a>>>16)+(e>>>16)+(b>>>16)&65535)<<16|b&65535}
-function y(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 z(a,e){var b=[],f,c,d,g,h,A,r,i,B,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 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,
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;B=a.length;for(r=0;r<B;r+=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+r]:(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,A=20>i?y(f<<5|f>>>27,c&d^~c&g,h,m[i],b[i]):40>i?y(f<<5|f>>>27,c^d^g,h,m[i],b[i]):60>i?y(f<<5|f>>>27,c&d^c&g^d&g,h,m[i],b[i]):y(f<<5|f>>>27,c^d^g,h,m[i],b[i]),h=g,g=d,d=c<<30|c>>>2,c=f,f=A;k[0]=x(f,k[0]);k[1]=x(c,k[1]);k[2]=x(d,k[2]);k[3]=x(g,k[3]);k[4]=x(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=s(a),c=h.binLen,d=h.value):"ASCII"===e||"TEXT"===e?(h=q(a,g),c=h.binLen,d=h.value):"B64"===e?(h=t(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=u;break;case "B64":g=v;break;default:j("format must be HEX or B64")}if("SHA-1"===
-b){null===f&&(f=z(h,c));m=g(f,w(e))}else j("Chosen SHA variant is not supported");return m};this.getHMAC=function(b,a,e,f,h){var m,n,l,C,p,D,E=[],F=[],o=null;switch(f){case "HEX":m=u;break;case "B64":m=v;break;default:j("outputFormat must be HEX or B64")}if("SHA-1"===e){l=64;D=160}else j("Chosen SHA variant is not supported");if("HEX"===a){o=s(b);p=o.binLen;n=o.value}else if("ASCII"===a||"TEXT"===a){o=q(b,g);p=o.binLen;n=o.value}else if("B64"===a){o=t(b);p=o.binLen;n=o.value}else j("inputFormat must be HEX, TEXT, ASCII, or B64");
-b=l*8;a=l/4-1;if(l<p/8){"SHA-1"===e?n=z(n,p):j("Unexpected error in HMAC implementation");n[a]=n[a]&4294967040}else l>p/8&&(n[a]=n[a]&4294967040);for(l=0;l<=a;l=l+1){E[l]=n[l]^909522486;F[l]=n[l]^1549556828}"SHA-1"===e?C=z(F.concat(z(E.concat(d),b+c)),b+D):j("Unexpected error in HMAC implementation");return m(C,w(h))}};})();
+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))}};})();
diff --git a/src/sha256.js b/src/sha256.js
index ada5da4..8c95abe 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 p=null;function r(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 u(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 y(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 B(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 C(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 D(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 E(a,b){return a>>>b|a<<32-b}function F(a,b,c){return a&b^~a&c}function Q(a,b,c){return a&b^a&c^b&c}function R(a){return E(a,2)^E(a,13)^E(a,22)}
-function S(a){return E(a,6)^E(a,11)^E(a,25)}function T(a){return E(a,7)^E(a,18)^a>>>3}function U(a){return E(a,17)^E(a,19)^a>>>10}function V(a,b){var c=(a&65535)+(b&65535);return((a>>>16)+(b>>>16)+(c>>>16)&65535)<<16|c&65535}function W(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 X(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 Y(a,b,c){var f,d,e,j,k,i,x,z,G,g,H,s,h,l,q,n,v,w,o,I,J,K,L,M,N,O,t=[],P,A;"SHA-224"===c||"SHA-256"===c?(H=64,l=16,q=1,N=Number,n=V,v=W,w=X,o=T,I=U,J=R,K=S,M=Q,L=F,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,
+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,
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;P=a.length;for(s=0;s<P;s+=l){b=g[0];f=g[1];d=g[2];e=g[3];j=g[4];k=g[5];i=g[6];x=g[7];for(h=0;h<H;h+=1)t[h]=16>h?new N(a[h*q+s],a[h*q+s+1]):v(I(t[h-2]),t[h-7],o(t[h-15]),t[h-16]),z=w(x,K(j),L(j,k,i),O[h],t[h]),G=n(J(b),M(b,f,d)),x=i,i=k,k=j,j=n(e,z),e=d,d=f,f=b,b=n(z,G);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(x,g[7])}"SHA-224"===c?A=[g[0],g[1],g[2],g[3],g[4],g[5],g[6]]:"SHA-256"===c?A=g:m("Unexpected error in SHA-2 implementation");return A}
-window.jsSHA=function(a,b,c){var f=p,d=p,e=0,j=[0],k=0,i=p,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=u(a),e=i.binLen,j=i.value):"ASCII"===b||"TEXT"===b?(i=r(a,k),e=i.binLen,j=i.value):"B64"===b?(i=y(a),e=i.binLen,j=i.value):m("inputFormat must be HEX, TEXT, ASCII, or B64");this.getHash=function(a,b,c){var g=p,k=j.slice(),i="";switch(b){case "HEX":g=B;break;case "B64":g=C;break;default:m("format must be HEX or B64")}if("SHA-224"===
-a){p===f&&(f=Y(k,e,a));i=g(f,D(c))}else if("SHA-256"===a){p===d&&(d=Y(k,e,a));i=g(d,D(c))}else m("Chosen SHA variant is not supported");return i};this.getHMAC=function(a,b,c,d,f){var i,h,l,q,n,v=[],w=[],o=p;switch(d){case "HEX":i=B;break;case "B64":i=C;break;default:m("outputFormat must be HEX or B64")}if("SHA-224"===c){l=64;n=224}else if("SHA-256"===c){l=64;n=256}else m("Chosen SHA variant is not supported");if("HEX"===b){o=u(a);q=o.binLen;h=o.value}else if("ASCII"===b||"TEXT"===b){o=r(a,k);q=o.binLen;
-h=o.value}else if("B64"===b){o=y(a);q=o.binLen;h=o.value}else m("inputFormat must be HEX, TEXT, ASCII, or B64");a=l*8;b=l/4-1;if(l<q/8){h=Y(h,q,c);h[b]=h[b]&4294967040}else l>q/8&&(h[b]=h[b]&4294967040);for(l=0;l<=b;l=l+1){v[l]=h[l]^909522486;w[l]=h[l]^1549556828}c=Y(w.concat(Y(v.concat(j),a+e,c)),a+n,c);return i(c,D(f))}};})();
+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))}};})();
diff --git a/src/sha512.js b/src/sha512.js
index f829644..9eb3162 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 o=null;function q(a,b){this.a=a;this.b=b}function s(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 v(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 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,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)}
-function Z(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 q((j&65535)<<16|g&65535,l)}
-function $(a,b,d){var h,f,g,j,l,i,y,A,I,e,J,t,k,K,r,n,w,x,p,L,M,N,O,P,c,Q,u=[],R,B;"SHA-384"===d||"SHA-512"===d?(J=80,h=(b+128>>>10<<5)+31,K=32,r=2,c=q,n=X,w=Y,x=Z,p=V,L=W,M=T,N=U,P=S,O=H,Q=[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 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),
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;R=a.length;for(t=0;t<
-R;t+=K){b=e[0];h=e[1];f=e[2];g=e[3];j=e[4];l=e[5];i=e[6];y=e[7];for(k=0;k<J;k+=1)u[k]=16>k?new c(a[k*r+t],a[k*r+t+1]):w(L(u[k-2]),u[k-7],p(u[k-15]),u[k-16]),A=x(y,N(j),O(j,l,i),Q[k],u[k]),I=n(M(b),P(b,h,f)),y=i,i=l,l=j,j=n(g,A),g=f,f=h,h=b,b=n(A,I);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(y,e[7])}"SHA-384"===d?B=[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?B=[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 B}
-window.jsSHA=function(a,b,d){var h=o,f=o,g=0,j=[0],l=0,i=o,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=v(a),g=i.binLen,j=i.value):"ASCII"===b||"TEXT"===b?(i=s(a,l),g=i.binLen,j=i.value):"B64"===b?(i=z(a),g=i.binLen,j=i.value):m("inputFormat must be HEX, TEXT, ASCII, or B64");this.getHash=function(a,b,d){var e=o,l=j.slice(),i="";switch(b){case "HEX":e=C;break;case "B64":e=D;break;default:m("format must be HEX or B64")}if("SHA-384"===
-a){o===h&&(h=$(l,g,a));i=e(h,E(d))}else if("SHA-512"===a){o===f&&(f=$(l,g,a));i=e(f,E(d))}else m("Chosen SHA variant is not supported");return i};this.getHMAC=function(a,b,d,e,f){var h,k,i,r,n,w=[],x=[],p=o;switch(e){case "HEX":h=C;break;case "B64":h=D;break;default:m("outputFormat must be HEX or B64")}if("SHA-384"===d){i=128;n=384}else if("SHA-512"===d){i=128;n=512}else m("Chosen SHA variant is not supported");if("HEX"===b){p=v(a);r=p.binLen;k=p.value}else if("ASCII"===b||"TEXT"===b){p=s(a,l);r=
-p.binLen;k=p.value}else if("B64"===b){p=z(a);r=p.binLen;k=p.value}else m("inputFormat must be HEX, TEXT, ASCII, or B64");a=i*8;b=i/4-1;if(i<r/8){k=$(k,r,d);k[b]=k[b]&4294967040}else i>r/8&&(k[b]=k[b]&4294967040);for(i=0;i<=b;i=i+1){w[i]=k[i]^909522486;x[i]=k[i]^1549556828}d=$(x.concat($(w.concat(j),a+g,d)),a+n,d);return h(d,E(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)]):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))}};})();
diff --git a/test/test.html b/test/test.html
index fefe8cc..8307d9d 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_dev.js"></script>
+ <script type="text/javascript" src="../src/sha.js"></script>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<style type="text/css">
table