summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/sha.js52
-rw-r--r--src/sha1.js24
-rw-r--r--src/sha256.js32
-rw-r--r--src/sha512.js46
4 files changed, 77 insertions, 77 deletions
diff --git a/src/sha.js b/src/sha.js
index c5f9949..4b8e78c 100644
--- a/src/sha.js
+++ b/src/sha.js
@@ -9,29 +9,29 @@
Several functions taken from Paul Johnston
*/
-'use strict';(function(V){function w(b,a,d){var c=0,f=[],g=0,h,e,p,k,l,r,z,q=!1,t=[],u=[],m,v=!1;d=d||{};h=d.encoding||"UTF8";m=d.numRounds||1;p=L(a,h);if(m!==parseInt(m,10)||1>m)throw Error("numRounds must a integer >= 1");if("SHA-1"===b)l=512,r=M,z=W,k=160;else if(r=function(a,d){return N(a,d,b)},z=function(a,d,c,f){var g;a=a.slice();var n=f.slice();if("SHA-224"===b||"SHA-256"===b)g=(d+65>>>9<<4)+15,f=16;else if("SHA-384"===b||"SHA-512"===b)g=(d+129>>>10<<5)+31,f=32;else throw Error("Unexpected error in SHA-2 implementation");
-for(;a.length<=g;)a.push(0);a[d>>>5]|=128<<24-d%32;a[g]=d+c;c=a.length;for(d=0;d<c;d+=f)n=N(a.slice(d,d+f),n,b);if("SHA-224"===b)a=[n[0],n[1],n[2],n[3],n[4],n[5],n[6]];else if("SHA-256"===b)a=n;else if("SHA-384"===b)a=[n[0].a,n[0].b,n[1].a,n[1].b,n[2].a,n[2].b,n[3].a,n[3].b,n[4].a,n[4].b,n[5].a,n[5].b];else if("SHA-512"===b)a=[n[0].a,n[0].b,n[1].a,n[1].b,n[2].a,n[2].b,n[3].a,n[3].b,n[4].a,n[4].b,n[5].a,n[5].b,n[6].a,n[6].b,n[7].a,n[7].b];else throw Error("Unexpected error in SHA-2 implementation");
-return a},"SHA-224"===b)l=512,k=224;else if("SHA-256"===b)l=512,k=256;else if("SHA-384"===b)l=1024,k=384;else if("SHA-512"===b)l=1024,k=512;else throw Error("Chosen SHA variant is not supported");e=y(b);this.setHMACKey=function(a,d,f){var g;if(!0===q)throw Error("HMAC key already set");if(!0===v)throw Error("Cannot set HMAC key after calling update");h=(f||{}).encoding||"UTF8";d=L(d,h)(a);a=d.binLen;d=d.value;g=l>>>3;f=g/4-1;if(g<a/8){for(d=z(d,a,0,y(b));d.length<=f;)d.push(0);d[f]&=4294967040}else if(g>
-a/8){for(;d.length<=f;)d.push(0);d[f]&=4294967040}for(a=0;a<=f;a+=1)t[a]=d[a]^909522486,u[a]=d[a]^1549556828;e=r(t,e);c=l;q=!0};this.update=function(a){var b,d,h,k=0,q=l>>>5;b=p(a,f,g);a=b.binLen;d=b.value;b=a>>>5;for(h=0;h<b;h+=q)k+l<=a&&(e=r(d.slice(h,h+q),e),k+=l);c+=k;f=d.slice(k>>>5);g=a%l;v=!0};this.getHash=function(a,d){var h,l,p,r;if(!0===q)throw Error("Cannot call getHash after setting HMAC key");p=O(d);switch(a){case "HEX":h=function(a){return P(a,p)};break;case "B64":h=function(a){return Q(a,
-p)};break;case "BYTES":h=R;break;default:throw Error("format must be HEX, B64, or BYTES");}r=z(f,g,c,e);for(l=1;l<m;l+=1)r=z(r,k,0,y(b));return h(r)};this.getHMAC=function(a,d){var h,p,m,t;if(!1===q)throw Error("Cannot call getHMAC without first setting HMAC key");m=O(d);switch(a){case "HEX":h=function(a){return P(a,m)};break;case "B64":h=function(a){return Q(a,m)};break;case "BYTES":h=R;break;default:throw Error("outputFormat must be HEX, B64, or BYTES");}p=z(f,g,c,e);t=r(u,y(b));t=z(p,k,l,t);return h(t)}}
-function c(b,a){this.a=b;this.b=a}function X(b,a,d){var c=b.length,f,g,h,e,p;a=a||[0];d=d||0;p=d>>>3;if(0!==c%2)throw Error("String of HEX type must be in byte increments");for(f=0;f<c;f+=2){g=parseInt(b.substr(f,2),16);if(isNaN(g))throw Error("String of HEX type contains invalid characters");e=(f>>>1)+p;for(h=e>>>2;a.length<=h;)a.push(0);a[h]|=g<<8*(3-e%4)}return{value:a,binLen:4*c+d}}function Y(b,a,d){var c=[],f,g,h,e,c=a||[0];d=d||0;g=d>>>3;for(f=0;f<b.length;f+=1)a=b.charCodeAt(f),e=f+g,h=e>>>
-2,c.length<=h&&c.push(0),c[h]|=a<<8*(3-e%4);return{value:c,binLen:8*b.length+d}}function Z(b,a,d){var c=[],f=0,g,h,e,p,k,l,c=a||[0];d=d||0;a=d>>>3;if(-1===b.search(/^[a-zA-Z0-9=+\/]+$/))throw Error("Invalid character in base-64 string");h=b.indexOf("=");b=b.replace(/\=/g,"");if(-1!==h&&h<b.length)throw Error("Invalid '=' found in base-64 string");for(h=0;h<b.length;h+=4){k=b.substr(h,4);for(e=p=0;e<k.length;e+=1)g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(k[e]),p|=
-g<<18-6*e;for(e=0;e<k.length-1;e+=1){l=f+a;for(g=l>>>2;c.length<=g;)c.push(0);c[g]|=(p>>>16-8*e&255)<<8*(3-l%4);f+=1}}return{value:c,binLen:8*f+d}}function P(b,a){var d="",c=4*b.length,f,g;for(f=0;f<c;f+=1)g=b[f>>>2]>>>8*(3-f%4),d+="0123456789abcdef".charAt(g>>>4&15)+"0123456789abcdef".charAt(g&15);return a.outputUpper?d.toUpperCase():d}function Q(b,a){var d="",c=4*b.length,f,g,e;for(f=0;f<c;f+=3)for(e=f+1>>>2,g=b.length<=e?0:b[e],e=f+2>>>2,e=b.length<=e?0:b[e],e=(b[f>>>2]>>>8*(3-f%4)&255)<<16|(g>>>
-8*(3-(f+1)%4)&255)<<8|e>>>8*(3-(f+2)%4)&255,g=0;4>g;g+=1)8*f+6*g<=32*b.length?d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>>6*(3-g)&63):d+=a.b64Pad;return d}function R(b){var a="",d=4*b.length,c,f;for(c=0;c<d;c+=1)f=b[c>>>2]>>>8*(3-c%4)&255,a+=String.fromCharCode(f);return a}function O(b){var a={outputUpper:!1,b64Pad:"="};b=b||{};a.outputUpper=b.outputUpper||!1;!0===b.hasOwnProperty("b64Pad")&&(a.b64Pad=b.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 L(b,a){var d;switch(a){case "UTF8":case "UTF16BE":case "UTF16LE":break;default:throw Error("encoding must be UTF8, UTF16BE, or UTF16LE");}switch(b){case "HEX":d=X;break;case "TEXT":d=function(b,d,c){var e=[],x=[],p=0,k,l,r,m,q,e=d||[0];d=c||0;r=d>>>3;if("UTF8"===a)for(k=0;k<b.length;k+=1)for(c=b.charCodeAt(k),x=[],128>c?x.push(c):2048>c?(x.push(192|c>>>6),x.push(128|c&63)):55296>c||57344<=c?x.push(224|
-c>>>12,128|c>>>6&63,128|c&63):(k+=1,c=65536+((c&1023)<<10|b.charCodeAt(k)&1023),x.push(240|c>>>18,128|c>>>12&63,128|c>>>6&63,128|c&63)),l=0;l<x.length;l+=1){q=p+r;for(m=q>>>2;e.length<=m;)e.push(0);e[m]|=x[l]<<8*(3-q%4);p+=1}else if("UTF16BE"===a||"UTF16LE"===a)for(k=0;k<b.length;k+=1){c=b.charCodeAt(k);"UTF16LE"===a&&(l=c&255,c=l<<8|c>>>8);q=p+r;for(m=q>>>2;e.length<=m;)e.push(0);e[m]|=c<<8*(2-q%4);p+=2}return{value:e,binLen:8*p+d}};break;case "B64":d=Z;break;case "BYTES":d=Y;break;default:throw Error("format must be HEX, TEXT, B64, or BYTES");
-}return d}function v(b,a){return b<<a|b>>>32-a}function t(b,a){return b>>>a|b<<32-a}function m(b,a){var d=null,d=new c(b.a,b.b);return d=32>=a?new c(d.a>>>a|d.b<<32-a&4294967295,d.b>>>a|d.a<<32-a&4294967295):new c(d.b>>>a-32|d.a<<64-a&4294967295,d.a>>>a-32|d.b<<64-a&4294967295)}function S(b,a){var d=null;return d=32>=a?new c(b.a>>>a,b.b>>>a|b.a<<32-a&4294967295):new c(0,b.a>>>a-32)}function aa(b,a,d){return b&a^~b&d}function ba(b,a,d){return new c(b.a&a.a^~b.a&d.a,b.b&a.b^~b.b&d.b)}function T(b,a,
-d){return b&a^b&d^a&d}function ca(b,a,d){return new c(b.a&a.a^b.a&d.a^a.a&d.a,b.b&a.b^b.b&d.b^a.b&d.b)}function da(b){return t(b,2)^t(b,13)^t(b,22)}function ea(b){var a=m(b,28),d=m(b,34);b=m(b,39);return new c(a.a^d.a^b.a,a.b^d.b^b.b)}function fa(b){return t(b,6)^t(b,11)^t(b,25)}function ga(b){var a=m(b,14),d=m(b,18);b=m(b,41);return new c(a.a^d.a^b.a,a.b^d.b^b.b)}function ha(b){return t(b,7)^t(b,18)^b>>>3}function ia(b){var a=m(b,1),d=m(b,8);b=S(b,7);return new c(a.a^d.a^b.a,a.b^d.b^b.b)}function ja(b){return t(b,
-17)^t(b,19)^b>>>10}function ka(b){var a=m(b,19),d=m(b,61);b=S(b,6);return new c(a.a^d.a^b.a,a.b^d.b^b.b)}function B(b,a){var d=(b&65535)+(a&65535);return((b>>>16)+(a>>>16)+(d>>>16)&65535)<<16|d&65535}function la(b,a,d,c){var e=(b&65535)+(a&65535)+(d&65535)+(c&65535);return((b>>>16)+(a>>>16)+(d>>>16)+(c>>>16)+(e>>>16)&65535)<<16|e&65535}function C(b,a,d,c,e){var g=(b&65535)+(a&65535)+(d&65535)+(c&65535)+(e&65535);return((b>>>16)+(a>>>16)+(d>>>16)+(c>>>16)+(e>>>16)+(g>>>16)&65535)<<16|g&65535}function ma(b,
-a){var d,e,f;d=(b.b&65535)+(a.b&65535);e=(b.b>>>16)+(a.b>>>16)+(d>>>16);f=(e&65535)<<16|d&65535;d=(b.a&65535)+(a.a&65535)+(e>>>16);e=(b.a>>>16)+(a.a>>>16)+(d>>>16);return new c((e&65535)<<16|d&65535,f)}function na(b,a,d,e){var f,g,h;f=(b.b&65535)+(a.b&65535)+(d.b&65535)+(e.b&65535);g=(b.b>>>16)+(a.b>>>16)+(d.b>>>16)+(e.b>>>16)+(f>>>16);h=(g&65535)<<16|f&65535;f=(b.a&65535)+(a.a&65535)+(d.a&65535)+(e.a&65535)+(g>>>16);g=(b.a>>>16)+(a.a>>>16)+(d.a>>>16)+(e.a>>>16)+(f>>>16);return new c((g&65535)<<16|
-f&65535,h)}function oa(b,a,d,e,f){var g,h,m;g=(b.b&65535)+(a.b&65535)+(d.b&65535)+(e.b&65535)+(f.b&65535);h=(b.b>>>16)+(a.b>>>16)+(d.b>>>16)+(e.b>>>16)+(f.b>>>16)+(g>>>16);m=(h&65535)<<16|g&65535;g=(b.a&65535)+(a.a&65535)+(d.a&65535)+(e.a&65535)+(f.a&65535)+(h>>>16);h=(b.a>>>16)+(a.a>>>16)+(d.a>>>16)+(e.a>>>16)+(f.a>>>16)+(g>>>16);return new c((h&65535)<<16|g&65535,m)}function y(b){var a,d;if("SHA-1"===b)b=[1732584193,4023233417,2562383102,271733878,3285377520];else switch(a=[3238371032,914150663,
-812702999,4144912697,4290775857,1750603025,1694076839,3204075428],d=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],b){case "SHA-224":b=a;break;case "SHA-256":b=d;break;case "SHA-384":b=[new c(3418070365,a[0]),new c(1654270250,a[1]),new c(2438529370,a[2]),new c(355462360,a[3]),new c(1731405415,a[4]),new c(41048885895,a[5]),new c(3675008525,a[6]),new c(1203062813,a[7])];break;case "SHA-512":b=[new c(d[0],4089235720),new c(d[1],2227873595),new c(d[2],4271175723),
-new c(d[3],1595750129),new c(d[4],2917565137),new c(d[5],725511199),new c(d[6],4215389547),new c(d[7],327033209)];break;default:throw Error("Unknown SHA variant");}return b}function M(b,a){var d=[],c,e,g,h,m,p,k,l=a.slice();c=l[0];e=l[1];g=l[2];h=l[3];m=l[4];for(k=0;80>k;k+=1)d[k]=16>k?b[k]:v(d[k-3]^d[k-8]^d[k-14]^d[k-16],1),p=20>k?C(v(c,5),e&g^~e&h,m,1518500249,d[k]):40>k?C(v(c,5),e^g^h,m,1859775393,d[k]):60>k?C(v(c,5),T(e,g,h),m,2400959708,d[k]):C(v(c,5),e^g^h,m,3395469782,d[k]),m=h,h=g,g=v(e,30),
-e=c,c=p;l[0]=B(c,l[0]);l[1]=B(e,l[1]);l[2]=B(g,l[2]);l[3]=B(h,l[3]);l[4]=B(m,l[4]);return l}function W(b,a,c,e){var f;b=b.slice();e=e.slice();for(f=(a+65>>>9<<4)+15;b.length<=f;)b.push(0);b[a>>>5]|=128<<24-a%32;b[f]=a+c;c=b.length;for(a=0;a<c;a+=16)e=M(b.slice(a,a+16),e);return e}function N(b,a,d){var n,f,g,h,m,p,k,l,r,t,q,v,u,w,y,D,E,F,G,H,I,J,A=[],K;a=a.slice();if("SHA-224"===d||"SHA-256"===d)t=64,v=1,J=Number,u=B,w=la,y=C,D=ha,E=ja,F=da,G=fa,I=T,H=aa,K=e;else if("SHA-384"===d||"SHA-512"===d)t=
-80,v=2,J=c,u=ma,w=na,y=oa,D=ia,E=ka,F=ea,G=ga,I=ca,H=ba,K=U;else throw Error("Unexpected error in SHA-2 implementation");d=a[0];n=a[1];f=a[2];g=a[3];h=a[4];m=a[5];p=a[6];k=a[7];for(q=0;q<t;q+=1)16>q?(r=q*v,l=b.length<=r?0:b[r],r=b.length<=r+1?0:b[r+1],A[q]=new J(l,r)):A[q]=w(E(A[q-2]),A[q-7],D(A[q-15]),A[q-16]),l=y(k,G(h),H(h,m,p),K[q],A[q]),r=u(F(d),I(d,n,f)),k=p,p=m,m=h,h=u(g,l),g=f,f=n,n=d,d=u(l,r);a[0]=u(d,a[0]);a[1]=u(n,a[1]);a[2]=u(f,a[2]);a[3]=u(g,a[3]);a[4]=u(h,a[4]);a[5]=u(m,a[5]);a[6]=u(p,
-a[6]);a[7]=u(k,a[7]);return a}var e,U;e=[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];U=[new c(e[0],3609767458),new c(e[1],602891725),new c(e[2],3964484399),new c(e[3],2173295548),new c(e[4],4081628472),new c(e[5],3053834265),new c(e[6],2937671579),new c(e[7],3664609560),new c(e[8],2734883394),new c(e[9],1164996542),new c(e[10],1323610764),new c(e[11],3590304994),
-new c(e[12],4068182383),new c(e[13],991336113),new c(e[14],633803317),new c(e[15],3479774868),new c(e[16],2666613458),new c(e[17],944711139),new c(e[18],2341262773),new c(e[19],2007800933),new c(e[20],1495990901),new c(e[21],1856431235),new c(e[22],3175218132),new c(e[23],2198950837),new c(e[24],3999719339),new c(e[25],766784016),new c(e[26],2566594879),new c(e[27],3203337956),new c(e[28],1034457026),new c(e[29],2466948901),new c(e[30],3758326383),new c(e[31],168717936),new c(e[32],1188179964),new c(e[33],
-1546045734),new c(e[34],1522805485),new c(e[35],2643833823),new c(e[36],2343527390),new c(e[37],1014477480),new c(e[38],1206759142),new c(e[39],344077627),new c(e[40],1290863460),new c(e[41],3158454273),new c(e[42],3505952657),new c(e[43],106217008),new c(e[44],3606008344),new c(e[45],1432725776),new c(e[46],1467031594),new c(e[47],851169720),new c(e[48],3100823752),new c(e[49],1363258195),new c(e[50],3750685593),new c(e[51],3785050280),new c(e[52],3318307427),new c(e[53],3812723403),new c(e[54],
-2003034995),new c(e[55],3602036899),new c(e[56],1575990012),new c(e[57],1125592928),new c(e[58],2716904306),new c(e[59],442776044),new c(e[60],593698344),new c(e[61],3733110249),new c(e[62],2999351573),new c(e[63],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)];"function"===typeof define&&define.amd?define(function(){return w}):"undefined"!==typeof exports?"undefined"!==typeof module&&module.exports?module.exports=exports=w:exports=w:V.jsSHA=w})(this);
+'use strict';(function(V){function w(c,a,d){var b=0,f=[],g=0,h,e,n,k,m,q,v,p=!1,r=[],t=[],l,u=!1;d=d||{};h=d.encoding||"UTF8";l=d.numRounds||1;n=L(a,h);if(l!==parseInt(l,10)||1>l)throw Error("numRounds must a integer >= 1");if("SHA-1"===c)m=512,q=M,v=W,k=160;else if(q=function(a,d){return N(a,d,c)},v=function(a,d,b,f){var g,C;if("SHA-224"===c||"SHA-256"===c)g=(d+65>>>9<<4)+15,C=16;else if("SHA-384"===c||"SHA-512"===c)g=(d+129>>>10<<5)+31,C=32;else throw Error("Unexpected error in SHA-2 implementation");
+for(;a.length<=g;)a.push(0);a[d>>>5]|=128<<24-d%32;a[g]=d+b;b=a.length;for(d=0;d<b;d+=C)f=N(a.slice(d,d+C),f,c);if("SHA-224"===c)a=[f[0],f[1],f[2],f[3],f[4],f[5],f[6]];else if("SHA-256"===c)a=f;else if("SHA-384"===c)a=[f[0].a,f[0].b,f[1].a,f[1].b,f[2].a,f[2].b,f[3].a,f[3].b,f[4].a,f[4].b,f[5].a,f[5].b];else if("SHA-512"===c)a=[f[0].a,f[0].b,f[1].a,f[1].b,f[2].a,f[2].b,f[3].a,f[3].b,f[4].a,f[4].b,f[5].a,f[5].b,f[6].a,f[6].b,f[7].a,f[7].b];else throw Error("Unexpected error in SHA-2 implementation");
+return a},"SHA-224"===c)m=512,k=224;else if("SHA-256"===c)m=512,k=256;else if("SHA-384"===c)m=1024,k=384;else if("SHA-512"===c)m=1024,k=512;else throw Error("Chosen SHA variant is not supported");e=y(c);this.setHMACKey=function(a,d,f){var g;if(!0===p)throw Error("HMAC key already set");if(!0===u)throw Error("Cannot set HMAC key after calling update");h=(f||{}).encoding||"UTF8";d=L(d,h)(a);a=d.binLen;d=d.value;g=m>>>3;f=g/4-1;if(g<a/8){for(d=v(d,a,0,y(c));d.length<=f;)d.push(0);d[f]&=4294967040}else if(g>
+a/8){for(;d.length<=f;)d.push(0);d[f]&=4294967040}for(a=0;a<=f;a+=1)r[a]=d[a]^909522486,t[a]=d[a]^1549556828;e=q(r,e);b=m;p=!0};this.update=function(a){var c,d,h,k=0,p=m>>>5;c=n(a,f,g);a=c.binLen;d=c.value;c=a>>>5;for(h=0;h<c;h+=p)k+m<=a&&(e=q(d.slice(h,h+p),e),k+=m);b+=k;f=d.slice(k>>>5);g=a%m;u=!0};this.getHash=function(a,d){var h,m,n,q;if(!0===p)throw Error("Cannot call getHash after setting HMAC key");n=O(d);switch(a){case "HEX":h=function(a){return P(a,n)};break;case "B64":h=function(a){return Q(a,
+n)};break;case "BYTES":h=R;break;default:throw Error("format must be HEX, B64, or BYTES");}q=v(f.slice(),g,b,e.slice());for(m=1;m<l;m+=1)q=v(q,k,0,y(c));return h(q)};this.getHMAC=function(a,d){var h,n,l,r;if(!1===p)throw Error("Cannot call getHMAC without first setting HMAC key");l=O(d);switch(a){case "HEX":h=function(a){return P(a,l)};break;case "B64":h=function(a){return Q(a,l)};break;case "BYTES":h=R;break;default:throw Error("outputFormat must be HEX, B64, or BYTES");}n=v(f.slice(),g,b,e.slice());
+r=q(t,y(c));r=v(n,k,m,r);return h(r)}}function b(c,a){this.a=c;this.b=a}function X(c,a,d){var b=c.length,f,g,h,e,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){g=parseInt(c.substr(f,2),16);if(isNaN(g))throw Error("String of HEX type contains invalid characters");e=(f>>>1)+n;for(h=e>>>2;a.length<=h;)a.push(0);a[h]|=g<<8*(3-e%4)}return{value:a,binLen:4*b+d}}function Y(c,a,d){var b=[],f,g,h,e,b=a||[0];d=d||0;g=d>>>3;for(f=0;f<c.length;f+=
+1)a=c.charCodeAt(f),e=f+g,h=e>>>2,b.length<=h&&b.push(0),b[h]|=a<<8*(3-e%4);return{value:b,binLen:8*c.length+d}}function Z(c,a,d){var b=[],f=0,g,h,e,n,k,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");h=c.indexOf("=");c=c.replace(/\=/g,"");if(-1!==h&&h<c.length)throw Error("Invalid '=' found in base-64 string");for(h=0;h<c.length;h+=4){k=c.substr(h,4);for(e=n=0;e<k.length;e+=1)g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(k[e]),
+n|=g<<18-6*e;for(e=0;e<k.length-1;e+=1){m=f+a;for(g=m>>>2;b.length<=g;)b.push(0);b[g]|=(n>>>16-8*e&255)<<8*(3-m%4);f+=1}}return{value:b,binLen:8*f+d}}function P(c,a){var d="",b=4*c.length,f,g;for(f=0;f<b;f+=1)g=c[f>>>2]>>>8*(3-f%4),d+="0123456789abcdef".charAt(g>>>4&15)+"0123456789abcdef".charAt(g&15);return a.outputUpper?d.toUpperCase():d}function Q(c,a){var d="",b=4*c.length,f,g,e;for(f=0;f<b;f+=3)for(e=f+1>>>2,g=c.length<=e?0:c[e],e=f+2>>>2,e=c.length<=e?0:c[e],e=(c[f>>>2]>>>8*(3-f%4)&255)<<16|
+(g>>>8*(3-(f+1)%4)&255)<<8|e>>>8*(3-(f+2)%4)&255,g=0;4>g;g+=1)8*f+6*g<=32*c.length?d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>>6*(3-g)&63):d+=a.b64Pad;return d}function R(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 O(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 L(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=X;break;case "TEXT":d=function(c,d,b){var e=[],x=[],n=0,k,m,q,l,p,e=d||[0];d=b||0;q=d>>>3;if("UTF8"===a)for(k=0;k<c.length;k+=1)for(b=c.charCodeAt(k),x=[],128>b?x.push(b):2048>b?(x.push(192|b>>>6),x.push(128|b&63)):55296>b||57344<=b?x.push(224|
+b>>>12,128|b>>>6&63,128|b&63):(k+=1,b=65536+((b&1023)<<10|c.charCodeAt(k)&1023),x.push(240|b>>>18,128|b>>>12&63,128|b>>>6&63,128|b&63)),m=0;m<x.length;m+=1){p=n+q;for(l=p>>>2;e.length<=l;)e.push(0);e[l]|=x[m]<<8*(3-p%4);n+=1}else if("UTF16BE"===a||"UTF16LE"===a)for(k=0;k<c.length;k+=1){b=c.charCodeAt(k);"UTF16LE"===a&&(m=b&255,b=m<<8|b>>>8);p=n+q;for(l=p>>>2;e.length<=l;)e.push(0);e[l]|=b<<8*(2-p%4);n+=2}return{value:e,binLen:8*n+d}};break;case "B64":d=Z;break;case "BYTES":d=Y;break;default:throw Error("format must be HEX, TEXT, B64, or BYTES");
+}return d}function u(c,a){return c<<a|c>>>32-a}function r(c,a){return c>>>a|c<<32-a}function l(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 S(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 aa(c,a,d){return c&a^~c&d}function ba(c,a,d){return new b(c.a&a.a^~c.a&d.a,c.b&a.b^~c.b&d.b)}function T(c,a,
+d){return c&a^c&d^a&d}function ca(c,a,d){return new b(c.a&a.a^c.a&d.a^a.a&d.a,c.b&a.b^c.b&d.b^a.b&d.b)}function da(c){return r(c,2)^r(c,13)^r(c,22)}function ea(c){var a=l(c,28),d=l(c,34);c=l(c,39);return new b(a.a^d.a^c.a,a.b^d.b^c.b)}function fa(c){return r(c,6)^r(c,11)^r(c,25)}function ga(c){var a=l(c,14),d=l(c,18);c=l(c,41);return new b(a.a^d.a^c.a,a.b^d.b^c.b)}function ha(c){return r(c,7)^r(c,18)^c>>>3}function ia(c){var a=l(c,1),d=l(c,8);c=S(c,7);return new b(a.a^d.a^c.a,a.b^d.b^c.b)}function ja(c){return r(c,
+17)^r(c,19)^c>>>10}function ka(c){var a=l(c,19),d=l(c,61);c=S(c,6);return new b(a.a^d.a^c.a,a.b^d.b^c.b)}function A(c,a){var d=(c&65535)+(a&65535);return((c>>>16)+(a>>>16)+(d>>>16)&65535)<<16|d&65535}function la(c,a,d,b){var f=(c&65535)+(a&65535)+(d&65535)+(b&65535);return((c>>>16)+(a>>>16)+(d>>>16)+(b>>>16)+(f>>>16)&65535)<<16|f&65535}function B(c,a,d,b,f){var e=(c&65535)+(a&65535)+(d&65535)+(b&65535)+(f&65535);return((c>>>16)+(a>>>16)+(d>>>16)+(b>>>16)+(f>>>16)+(e>>>16)&65535)<<16|e&65535}function ma(c,
+a){var d,e,f;d=(c.b&65535)+(a.b&65535);e=(c.b>>>16)+(a.b>>>16)+(d>>>16);f=(e&65535)<<16|d&65535;d=(c.a&65535)+(a.a&65535)+(e>>>16);e=(c.a>>>16)+(a.a>>>16)+(d>>>16);return new b((e&65535)<<16|d&65535,f)}function na(c,a,d,e){var f,g,h;f=(c.b&65535)+(a.b&65535)+(d.b&65535)+(e.b&65535);g=(c.b>>>16)+(a.b>>>16)+(d.b>>>16)+(e.b>>>16)+(f>>>16);h=(g&65535)<<16|f&65535;f=(c.a&65535)+(a.a&65535)+(d.a&65535)+(e.a&65535)+(g>>>16);g=(c.a>>>16)+(a.a>>>16)+(d.a>>>16)+(e.a>>>16)+(f>>>16);return new b((g&65535)<<16|
+f&65535,h)}function oa(c,a,d,e,f){var g,h,l;g=(c.b&65535)+(a.b&65535)+(d.b&65535)+(e.b&65535)+(f.b&65535);h=(c.b>>>16)+(a.b>>>16)+(d.b>>>16)+(e.b>>>16)+(f.b>>>16)+(g>>>16);l=(h&65535)<<16|g&65535;g=(c.a&65535)+(a.a&65535)+(d.a&65535)+(e.a&65535)+(f.a&65535)+(h>>>16);h=(c.a>>>16)+(a.a>>>16)+(d.a>>>16)+(e.a>>>16)+(f.a>>>16)+(g>>>16);return new b((h&65535)<<16|g&65535,l)}function y(c){var a,d;if("SHA-1"===c)c=[1732584193,4023233417,2562383102,271733878,3285377520];else switch(a=[3238371032,914150663,
+812702999,4144912697,4290775857,1750603025,1694076839,3204075428],d=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],c){case "SHA-224":c=a;break;case "SHA-256":c=d;break;case "SHA-384":c=[new b(3418070365,a[0]),new b(1654270250,a[1]),new b(2438529370,a[2]),new b(355462360,a[3]),new b(1731405415,a[4]),new b(41048885895,a[5]),new b(3675008525,a[6]),new b(1203062813,a[7])];break;case "SHA-512":c=[new b(d[0],4089235720),new b(d[1],2227873595),new b(d[2],4271175723),
+new b(d[3],1595750129),new b(d[4],2917565137),new b(d[5],725511199),new b(d[6],4215389547),new b(d[7],327033209)];break;default:throw Error("Unknown SHA variant");}return c}function M(c,a){var d=[],b,e,g,h,l,n,k;b=a[0];e=a[1];g=a[2];h=a[3];l=a[4];for(k=0;80>k;k+=1)d[k]=16>k?c[k]:u(d[k-3]^d[k-8]^d[k-14]^d[k-16],1),n=20>k?B(u(b,5),e&g^~e&h,l,1518500249,d[k]):40>k?B(u(b,5),e^g^h,l,1859775393,d[k]):60>k?B(u(b,5),T(e,g,h),l,2400959708,d[k]):B(u(b,5),e^g^h,l,3395469782,d[k]),l=h,h=g,g=u(e,30),e=b,b=n;a[0]=
+A(b,a[0]);a[1]=A(e,a[1]);a[2]=A(g,a[2]);a[3]=A(h,a[3]);a[4]=A(l,a[4]);return a}function W(c,a,b,e){var f;for(f=(a+65>>>9<<4)+15;c.length<=f;)c.push(0);c[a>>>5]|=128<<24-a%32;c[f]=a+b;b=c.length;for(a=0;a<b;a+=16)e=M(c.slice(a,a+16),e);return e}function N(c,a,d){var l,f,g,h,r,n,k,m,q,v,p,u,t,w,y,D,E,F,G,H,I,J,z=[],K;if("SHA-224"===d||"SHA-256"===d)v=64,u=1,J=Number,t=A,w=la,y=B,D=ha,E=ja,F=da,G=fa,I=T,H=aa,K=e;else if("SHA-384"===d||"SHA-512"===d)v=80,u=2,J=b,t=ma,w=na,y=oa,D=ia,E=ka,F=ea,G=ga,I=ca,
+H=ba,K=U;else throw Error("Unexpected error in SHA-2 implementation");d=a[0];l=a[1];f=a[2];g=a[3];h=a[4];r=a[5];n=a[6];k=a[7];for(p=0;p<v;p+=1)16>p?(q=p*u,m=c.length<=q?0:c[q],q=c.length<=q+1?0:c[q+1],z[p]=new J(m,q)):z[p]=w(E(z[p-2]),z[p-7],D(z[p-15]),z[p-16]),m=y(k,G(h),H(h,r,n),K[p],z[p]),q=t(F(d),I(d,l,f)),k=n,n=r,r=h,h=t(g,m),g=f,f=l,l=d,d=t(m,q);a[0]=t(d,a[0]);a[1]=t(l,a[1]);a[2]=t(f,a[2]);a[3]=t(g,a[3]);a[4]=t(h,a[4]);a[5]=t(r,a[5]);a[6]=t(n,a[6]);a[7]=t(k,a[7]);return a}var e,U;e=[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];U=[new b(e[0],3609767458),new b(e[1],602891725),new b(e[2],3964484399),new b(e[3],2173295548),new b(e[4],4081628472),new b(e[5],3053834265),new b(e[6],2937671579),new b(e[7],3664609560),new b(e[8],2734883394),new b(e[9],1164996542),new b(e[10],1323610764),new b(e[11],3590304994),new b(e[12],4068182383),new b(e[13],991336113),new b(e[14],
+633803317),new b(e[15],3479774868),new b(e[16],2666613458),new b(e[17],944711139),new b(e[18],2341262773),new b(e[19],2007800933),new b(e[20],1495990901),new b(e[21],1856431235),new b(e[22],3175218132),new b(e[23],2198950837),new b(e[24],3999719339),new b(e[25],766784016),new b(e[26],2566594879),new b(e[27],3203337956),new b(e[28],1034457026),new b(e[29],2466948901),new b(e[30],3758326383),new b(e[31],168717936),new b(e[32],1188179964),new b(e[33],1546045734),new b(e[34],1522805485),new b(e[35],2643833823),
+new b(e[36],2343527390),new b(e[37],1014477480),new b(e[38],1206759142),new b(e[39],344077627),new b(e[40],1290863460),new b(e[41],3158454273),new b(e[42],3505952657),new b(e[43],106217008),new b(e[44],3606008344),new b(e[45],1432725776),new b(e[46],1467031594),new b(e[47],851169720),new b(e[48],3100823752),new b(e[49],1363258195),new b(e[50],3750685593),new b(e[51],3785050280),new b(e[52],3318307427),new b(e[53],3812723403),new b(e[54],2003034995),new b(e[55],3602036899),new b(e[56],1575990012),
+new b(e[57],1125592928),new b(e[58],2716904306),new b(e[59],442776044),new b(e[60],593698344),new b(e[61],3733110249),new b(e[62],2999351573),new b(e[63],3815920427),new b(3391569614,3928383900),new b(3515267271,566280711),new b(3940187606,3454069534),new b(4118630271,4000239992),new b(116418474,1914138554),new b(174292421,2731055270),new b(289380356,3203993006),new b(460393269,320620315),new b(685471733,587496836),new b(852142971,1086792851),new b(1017036298,365543100),new b(1126000580,2618297676),
+new b(1288033470,3409855158),new b(1501505948,4234509866),new b(1607167915,987167468),new b(1816402316,1246189591)];"function"===typeof define&&define.amd?define(function(){return w}):"undefined"!==typeof exports?"undefined"!==typeof module&&module.exports?module.exports=exports=w:exports=w:V.jsSHA=w})(this);
diff --git a/src/sha1.js b/src/sha1.js
index 66592e6..d70cce0 100644
--- a/src/sha1.js
+++ b/src/sha1.js
@@ -9,15 +9,15 @@
Several functions taken from Paul Johnston
*/
-'use strict';(function(E){function p(e,c,d){var g=0,b=[],a=0,f,l,m,h,k,u,q,v=!1,n=[],r=[],t,p=!1;d=d||{};f=d.encoding||"UTF8";t=d.numRounds||1;m=y(c,f);if(t!==parseInt(t,10)||1>t)throw Error("numRounds must a integer >= 1");if("SHA-1"===e)k=512,u=z,q=F,h=160;else throw Error("Chosen SHA variant is not supported");l=w(e);this.setHMACKey=function(b,a,c){var d;if(!0===v)throw Error("HMAC key already set");if(!0===p)throw Error("Cannot set HMAC key after calling update");f=(c||{}).encoding||"UTF8";a=
-y(a,f)(b);b=a.binLen;a=a.value;d=k>>>3;c=d/4-1;if(d<b/8){for(a=q(a,b,0,w(e));a.length<=c;)a.push(0);a[c]&=4294967040}else if(d>b/8){for(;a.length<=c;)a.push(0);a[c]&=4294967040}for(b=0;b<=c;b+=1)n[b]=a[b]^909522486,r[b]=a[b]^1549556828;l=u(n,l);g=k;v=!0};this.update=function(c){var e,d,f,h=0,q=k>>>5;e=m(c,b,a);c=e.binLen;d=e.value;e=c>>>5;for(f=0;f<e;f+=q)h+k<=c&&(l=u(d.slice(f,f+q),l),h+=k);g+=h;b=d.slice(h>>>5);a=c%k;p=!0};this.getHash=function(c,d){var f,k,m,n;if(!0===v)throw Error("Cannot call getHash after setting HMAC key");
-m=A(d);switch(c){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");}n=q(b,a,g,l);for(k=1;k<t;k+=1)n=q(n,h,0,w(e));return f(n)};this.getHMAC=function(c,d){var f,m,n,p;if(!1===v)throw Error("Cannot call getHMAC without first setting HMAC key");n=A(d);switch(c){case "HEX":f=function(a){return B(a,n)};break;case "B64":f=function(a){return C(a,n)};break;case "BYTES":f=D;break;default:throw Error("outputFormat must be HEX, B64, or BYTES");
-}m=q(b,a,g,l);p=u(r,w(e));p=q(m,h,k,p);return f(p)}}function G(e,c,d){var g=e.length,b,a,f,l,m;c=c||[0];d=d||0;m=d>>>3;if(0!==g%2)throw Error("String of HEX type must be in byte increments");for(b=0;b<g;b+=2){a=parseInt(e.substr(b,2),16);if(isNaN(a))throw Error("String of HEX type contains invalid characters");l=(b>>>1)+m;for(f=l>>>2;c.length<=f;)c.push(0);c[f]|=a<<8*(3-l%4)}return{value:c,binLen:4*g+d}}function H(e,c,d){var g=[],b,a,f,l,g=c||[0];d=d||0;a=d>>>3;for(b=0;b<e.length;b+=1)c=e.charCodeAt(b),
-l=b+a,f=l>>>2,g.length<=f&&g.push(0),g[f]|=c<<8*(3-l%4);return{value:g,binLen:8*e.length+d}}function I(e,c,d){var g=[],b=0,a,f,l,m,h,k,g=c||[0];d=d||0;c=d>>>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(l=m=0;l<h.length;l+=1)a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(h[l]),
-m|=a<<18-6*l;for(l=0;l<h.length-1;l+=1){k=b+c;for(a=k>>>2;g.length<=a;)g.push(0);g[a]|=(m>>>16-8*l&255)<<8*(3-k%4);b+=1}}return{value:g,binLen:8*b+d}}function B(e,c){var d="",g=4*e.length,b,a;for(b=0;b<g;b+=1)a=e[b>>>2]>>>8*(3-b%4),d+="0123456789abcdef".charAt(a>>>4&15)+"0123456789abcdef".charAt(a&15);return c.outputUpper?d.toUpperCase():d}function C(e,c){var d="",g=4*e.length,b,a,f;for(b=0;b<g;b+=3)for(f=b+1>>>2,a=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|
-(a>>>8*(3-(b+1)%4)&255)<<8|f>>>8*(3-(b+2)%4)&255,a=0;4>a;a+=1)8*b+6*a<=32*e.length?d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>>6*(3-a)&63):d+=c.b64Pad;return d}function D(e){var c="",d=4*e.length,g,b;for(g=0;g<d;g+=1)b=e[g>>>2]>>>8*(3-g%4)&255,c+=String.fromCharCode(b);return c}function A(e){var c={outputUpper:!1,b64Pad:"="};e=e||{};c.outputUpper=e.outputUpper||!1;!0===e.hasOwnProperty("b64Pad")&&(c.b64Pad=e.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 y(e,c){var d;switch(c){case "UTF8":case "UTF16BE":case "UTF16LE":break;default:throw Error("encoding must be UTF8, UTF16BE, or UTF16LE");}switch(e){case "HEX":d=G;break;case "TEXT":d=function(e,b,a){var f=[],d=[],m=0,h,k,n,q,p,f=b||[0];b=a||0;n=b>>>3;if("UTF8"===c)for(h=0;h<e.length;h+=1)for(a=e.charCodeAt(h),d=[],128>a?d.push(a):2048>a?(d.push(192|a>>>6),d.push(128|a&63)):55296>a||57344<=a?d.push(224|
-a>>>12,128|a>>>6&63,128|a&63):(h+=1,a=65536+((a&1023)<<10|e.charCodeAt(h)&1023),d.push(240|a>>>18,128|a>>>12&63,128|a>>>6&63,128|a&63)),k=0;k<d.length;k+=1){p=m+n;for(q=p>>>2;f.length<=q;)f.push(0);f[q]|=d[k]<<8*(3-p%4);m+=1}else if("UTF16BE"===c||"UTF16LE"===c)for(h=0;h<e.length;h+=1){a=e.charCodeAt(h);"UTF16LE"===c&&(k=a&255,a=k<<8|a>>>8);p=m+n;for(q=p>>>2;f.length<=q;)f.push(0);f[q]|=a<<8*(2-p%4);m+=2}return{value:f,binLen:8*m+b}};break;case "B64":d=I;break;case "BYTES":d=H;break;default:throw Error("format must be HEX, TEXT, B64, or BYTES");
-}return d}function n(e,c){return e<<c|e>>>32-c}function r(e,c){var d=(e&65535)+(c&65535);return((e>>>16)+(c>>>16)+(d>>>16)&65535)<<16|d&65535}function x(e,c,d,g,b){var a=(e&65535)+(c&65535)+(d&65535)+(g&65535)+(b&65535);return((e>>>16)+(c>>>16)+(d>>>16)+(g>>>16)+(b>>>16)+(a>>>16)&65535)<<16|a&65535}function w(e){if("SHA-1"===e)e=[1732584193,4023233417,2562383102,271733878,3285377520];else throw Error("No SHA variants supported");return e}function z(e,c){var d=[],g,b,a,f,l,m,h,k=c.slice();g=k[0];b=
-k[1];a=k[2];f=k[3];l=k[4];for(h=0;80>h;h+=1)d[h]=16>h?e[h]:n(d[h-3]^d[h-8]^d[h-14]^d[h-16],1),m=20>h?x(n(g,5),b&a^~b&f,l,1518500249,d[h]):40>h?x(n(g,5),b^a^f,l,1859775393,d[h]):60>h?x(n(g,5),b&a^b&f^a&f,l,2400959708,d[h]):x(n(g,5),b^a^f,l,3395469782,d[h]),l=f,f=a,a=n(b,30),b=g,g=m;k[0]=r(g,k[0]);k[1]=r(b,k[1]);k[2]=r(a,k[2]);k[3]=r(f,k[3]);k[4]=r(l,k[4]);return k}function F(e,c,d,g){var b;e=e.slice();g=g.slice();for(b=(c+65>>>9<<4)+15;e.length<=b;)e.push(0);e[c>>>5]|=128<<24-c%32;e[b]=c+d;d=e.length;
-for(c=0;c<d;c+=16)g=z(e.slice(c,c+16),g);return g}"function"===typeof define&&define.amd?define(function(){return p}):"undefined"!==typeof exports?"undefined"!==typeof module&&module.exports?module.exports=exports=p:exports=p:E.jsSHA=p})(this);
+'use strict';(function(E){function p(e,a,c){var g=0,b=[],d=0,f,k,l,h,m,u,q,v=!1,n=[],r=[],t,p=!1;c=c||{};f=c.encoding||"UTF8";t=c.numRounds||1;l=y(a,f);if(t!==parseInt(t,10)||1>t)throw Error("numRounds must a integer >= 1");if("SHA-1"===e)m=512,u=z,q=F,h=160;else throw Error("Chosen SHA variant is not supported");k=w(e);this.setHMACKey=function(a,b,d){var c;if(!0===v)throw Error("HMAC key already set");if(!0===p)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=q(b,a,0,w(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)n[a]=b[a]^909522486,r[a]=b[a]^1549556828;k=u(n,k);g=m;v=!0};this.update=function(a){var e,c,f,h=0,q=m>>>5;e=l(a,b,d);a=e.binLen;c=e.value;e=a>>>5;for(f=0;f<e;f+=q)h+m<=a&&(k=u(c.slice(f,f+q),k),h+=m);g+=h;b=c.slice(h>>>5);d=a%m;p=!0};this.getHash=function(a,c){var f,l,m,n;if(!0===v)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");}n=q(b.slice(),d,g,k.slice());for(l=1;l<t;l+=1)n=q(n,h,0,w(e));return f(n)};this.getHMAC=function(a,c){var f,l,n,p;if(!1===v)throw Error("Cannot call getHMAC without first setting HMAC key");n=A(c);switch(a){case "HEX":f=function(a){return B(a,n)};break;case "B64":f=function(a){return C(a,n)};break;case "BYTES":f=
+D;break;default:throw Error("outputFormat must be HEX, B64, or BYTES");}l=q(b.slice(),d,g,k.slice());p=u(r,w(e));p=q(l,h,m,p);return f(p)}}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,n,q,p,f=b||[0];b=d||0;n=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){p=l+n;for(q=p>>>2;f.length<=q;)f.push(0);f[q]|=c[m]<<8*(3-p%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);p=l+n;for(q=p>>>2;f.length<=
+q;)f.push(0);f[q]|=d<<8*(2-p%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 n(e,a){return e<<a|e>>>32-a}function r(e,a){var c=(e&65535)+(a&65535);return((e>>>16)+(a>>>16)+(c>>>16)&65535)<<16|c&65535}function x(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 w(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]:n(c[h-3]^c[h-8]^c[h-14]^c[h-16],1),l=20>h?x(n(g,5),b&d^~b&f,k,1518500249,c[h]):40>h?x(n(g,5),b^d^f,k,1859775393,c[h]):60>h?x(n(g,5),b&d^b&f^d&f,k,2400959708,c[h]):x(n(g,5),b^d^f,k,3395469782,c[h]),k=f,f=d,d=n(b,30),b=g,g=l;a[0]=r(g,a[0]);a[1]=r(b,a[1]);a[2]=r(d,a[2]);a[3]=r(f,a[3]);
+a[4]=r(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 p}):"undefined"!==typeof exports?"undefined"!==typeof module&&module.exports?module.exports=exports=p:exports=p:E.jsSHA=p})(this);
diff --git a/src/sha256.js b/src/sha256.js
index 513816e..0b04a97 100644
--- a/src/sha256.js
+++ b/src/sha256.js
@@ -9,19 +9,19 @@
Several functions taken from Paul Johnston
*/
-'use strict';(function(I){function u(c,a,b){var g=0,e=[],f=0,d,h,q,m,n,E,t,p=!1,l=[],r=[],k,x=!1;b=b||{};d=b.encoding||"UTF8";k=b.numRounds||1;q=y(a,d);if(k!==parseInt(k,10)||1>k)throw Error("numRounds must a integer >= 1");E=function(a,b){return z(a,b,c)};t=function(a,b,f,e){var g;a=a.slice();var d=e.slice();if("SHA-224"===c||"SHA-256"===c)g=(b+65>>>9<<4)+15,e=16;else throw Error("Unexpected error in SHA-2 implementation");for(;a.length<=g;)a.push(0);a[b>>>5]|=128<<24-b%32;a[g]=b+f;f=a.length;for(b=
-0;b<f;b+=e)d=z(a.slice(b,b+e),d,c);if("SHA-224"===c)a=[d[0],d[1],d[2],d[3],d[4],d[5],d[6]];else if("SHA-256"===c)a=d;else throw Error("Unexpected error in SHA-2 implementation");return a};if("SHA-224"===c)n=512,m=224;else if("SHA-256"===c)n=512,m=256;else throw Error("Chosen SHA variant is not supported");h=v(c);this.setHMACKey=function(a,b,e){var f;if(!0===p)throw Error("HMAC key already set");if(!0===x)throw Error("Cannot set HMAC key after calling update");d=(e||{}).encoding||"UTF8";b=y(b,d)(a);
-a=b.binLen;b=b.value;f=n>>>3;e=f/4-1;if(f<a/8){for(b=t(b,a,0,v(c));b.length<=e;)b.push(0);b[e]&=4294967040}else if(f>a/8){for(;b.length<=e;)b.push(0);b[e]&=4294967040}for(a=0;a<=e;a+=1)l[a]=b[a]^909522486,r[a]=b[a]^1549556828;h=E(l,h);g=n;p=!0};this.update=function(a){var b,c,d,m=0,p=n>>>5;b=q(a,e,f);a=b.binLen;c=b.value;b=a>>>5;for(d=0;d<b;d+=p)m+n<=a&&(h=E(c.slice(d,d+p),h),m+=n);g+=m;e=c.slice(m>>>5);f=a%n;x=!0};this.getHash=function(a,b){var d,n,q,l;if(!0===p)throw Error("Cannot call getHash after setting HMAC key");
-q=A(b);switch(a){case "HEX":d=function(a){return B(a,q)};break;case "B64":d=function(a){return C(a,q)};break;case "BYTES":d=D;break;default:throw Error("format must be HEX, B64, or BYTES");}l=t(e,f,g,h);for(n=1;n<k;n+=1)l=t(l,m,0,v(c));return d(l)};this.getHMAC=function(a,b){var d,q,l,k;if(!1===p)throw Error("Cannot call getHMAC without first setting HMAC key");l=A(b);switch(a){case "HEX":d=function(a){return B(a,l)};break;case "B64":d=function(a){return C(a,l)};break;case "BYTES":d=D;break;default:throw Error("outputFormat must be HEX, B64, or BYTES");
-}q=t(e,f,g,h);k=E(r,v(c));k=t(q,m,n,k);return d(k)}}function l(){}function J(c,a,b){var g=c.length,e,f,d,h,q;a=a||[0];b=b||0;q=b>>>3;if(0!==g%2)throw Error("String of HEX type must be in byte increments");for(e=0;e<g;e+=2){f=parseInt(c.substr(e,2),16);if(isNaN(f))throw Error("String of HEX type contains invalid characters");h=(e>>>1)+q;for(d=h>>>2;a.length<=d;)a.push(0);a[d]|=f<<8*(3-h%4)}return{value:a,binLen:4*g+b}}function K(c,a,b){var g=[],e,f,d,h,g=a||[0];b=b||0;f=b>>>3;for(e=0;e<c.length;e+=
-1)a=c.charCodeAt(e),h=e+f,d=h>>>2,g.length<=d&&g.push(0),g[d]|=a<<8*(3-h%4);return{value:g,binLen:8*c.length+b}}function L(c,a,b){var g=[],e=0,f,d,h,q,m,n,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");d=c.indexOf("=");c=c.replace(/\=/g,"");if(-1!==d&&d<c.length)throw Error("Invalid '=' found in base-64 string");for(d=0;d<c.length;d+=4){m=c.substr(d,4);for(h=q=0;h<m.length;h+=1)f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(m[h]),
-q|=f<<18-6*h;for(h=0;h<m.length-1;h+=1){n=e+a;for(f=n>>>2;g.length<=f;)g.push(0);g[f]|=(q>>>16-8*h&255)<<8*(3-n%4);e+=1}}return{value:g,binLen:8*e+b}}function B(c,a){var b="",g=4*c.length,e,f;for(e=0;e<g;e+=1)f=c[e>>>2]>>>8*(3-e%4),b+="0123456789abcdef".charAt(f>>>4&15)+"0123456789abcdef".charAt(f&15);return a.outputUpper?b.toUpperCase():b}function C(c,a){var b="",g=4*c.length,e,f,d;for(e=0;e<g;e+=3)for(d=e+1>>>2,f=c.length<=d?0:c[d],d=e+2>>>2,d=c.length<=d?0:c[d],d=(c[e>>>2]>>>8*(3-e%4)&255)<<16|
-(f>>>8*(3-(e+1)%4)&255)<<8|d>>>8*(3-(e+2)%4)&255,f=0;4>f;f+=1)8*e+6*f<=32*c.length?b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(d>>>6*(3-f)&63):b+=a.b64Pad;return b}function D(c){var a="",b=4*c.length,g,e;for(g=0;g<b;g+=1)e=c[g>>>2]>>>8*(3-g%4)&255,a+=String.fromCharCode(e);return a}function A(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 y(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=J;break;case "TEXT":b=function(b,c,f){var d=[],h=[],q=0,m,n,l,k,p,d=c||[0];c=f||0;l=c>>>3;if("UTF8"===a)for(m=0;m<b.length;m+=1)for(f=b.charCodeAt(m),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):(m+=1,f=65536+((f&1023)<<10|b.charCodeAt(m)&1023),h.push(240|f>>>18,128|f>>>12&63,128|f>>>6&63,128|f&63)),n=0;n<h.length;n+=1){p=q+l;for(k=p>>>2;d.length<=k;)d.push(0);d[k]|=h[n]<<8*(3-p%4);q+=1}else if("UTF16BE"===a||"UTF16LE"===a)for(m=0;m<b.length;m+=1){f=b.charCodeAt(m);"UTF16LE"===a&&(n=f&255,f=n<<8|f>>>8);p=q+l;for(k=p>>>2;d.length<=k;)d.push(0);d[k]|=f<<8*(2-p%4);q+=2}return{value:d,binLen:8*q+c}};break;case "B64":b=L;break;case "BYTES":b=K;break;default:throw Error("format must be HEX, TEXT, B64, or BYTES");
-}return b}function k(c,a){return c>>>a|c<<32-a}function M(c,a,b){return c&a^~c&b}function N(c,a,b){return c&a^c&b^a&b}function O(c){return k(c,2)^k(c,13)^k(c,22)}function P(c){return k(c,6)^k(c,11)^k(c,25)}function Q(c){return k(c,7)^k(c,18)^c>>>3}function R(c){return k(c,17)^k(c,19)^c>>>10}function S(c,a){var b=(c&65535)+(a&65535);return((c>>>16)+(a>>>16)+(b>>>16)&65535)<<16|b&65535}function T(c,a,b,g){var e=(c&65535)+(a&65535)+(b&65535)+(g&65535);return((c>>>16)+(a>>>16)+(b>>>16)+(g>>>16)+(e>>>
-16)&65535)<<16|e&65535}function U(c,a,b,g,e){var f=(c&65535)+(a&65535)+(b&65535)+(g&65535)+(e&65535);return((c>>>16)+(a>>>16)+(b>>>16)+(g>>>16)+(e>>>16)+(f>>>16)&65535)<<16|f&65535}function v(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 l,new l,new l,new l,new l,new l,new l,
-new l];break;case "SHA-512":c=[new l,new l,new l,new l,new l,new l,new l,new l];break;default:throw Error("Unknown SHA variant");}return c}function z(c,a,b){var g,e,f,d,h,l,m,n,k,t,p,u,r,v,x,y,z,A,B,C,D,F,w=[],G;a=a.slice();if("SHA-224"===b||"SHA-256"===b)t=64,u=1,F=Number,r=S,v=T,x=U,y=Q,z=R,A=O,B=P,D=N,C=M,G=H;else throw Error("Unexpected error in SHA-2 implementation");b=a[0];g=a[1];e=a[2];f=a[3];d=a[4];h=a[5];l=a[6];m=a[7];for(p=0;p<t;p+=1)16>p?(k=p*u,n=c.length<=k?0:c[k],k=c.length<=k+1?0:c[k+
-1],w[p]=new F(n,k)):w[p]=v(z(w[p-2]),w[p-7],y(w[p-15]),w[p-16]),n=x(m,B(d),C(d,h,l),G[p],w[p]),k=r(A(b),D(b,g,e)),m=l,l=h,h=d,d=r(f,n),f=e,e=g,g=b,b=r(n,k);a[0]=r(b,a[0]);a[1]=r(g,a[1]);a[2]=r(e,a[2]);a[3]=r(f,a[3]);a[4]=r(d,a[4]);a[5]=r(h,a[5]);a[6]=r(l,a[6]);a[7]=r(m,a[7]);return a}var H;H=[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 u}):"undefined"!==typeof exports?"undefined"!==typeof module&&module.exports?module.exports=exports=u:exports=u:I.jsSHA=u})(this);
+'use strict';(function(I){function u(c,a,b){var g=0,d=[],f=0,e,h,q,m,n,E,t,p=!1,l=[],r=[],k,x=!1;b=b||{};e=b.encoding||"UTF8";k=b.numRounds||1;q=y(a,e);if(k!==parseInt(k,10)||1>k)throw Error("numRounds must a integer >= 1");E=function(a,b){return z(a,b,c)};t=function(a,b,f,d){var g,e;if("SHA-224"===c||"SHA-256"===c)g=(b+65>>>9<<4)+15,e=16;else throw Error("Unexpected error in SHA-2 implementation");for(;a.length<=g;)a.push(0);a[b>>>5]|=128<<24-b%32;a[g]=b+f;f=a.length;for(b=0;b<f;b+=e)d=z(a.slice(b,
+b+e),d,c);if("SHA-224"===c)a=[d[0],d[1],d[2],d[3],d[4],d[5],d[6]];else if("SHA-256"===c)a=d;else throw Error("Unexpected error in SHA-2 implementation");return a};if("SHA-224"===c)n=512,m=224;else if("SHA-256"===c)n=512,m=256;else throw Error("Chosen SHA variant is not supported");h=v(c);this.setHMACKey=function(a,b,d){var f;if(!0===p)throw Error("HMAC key already set");if(!0===x)throw Error("Cannot set HMAC key after calling update");e=(d||{}).encoding||"UTF8";b=y(b,e)(a);a=b.binLen;b=b.value;f=
+n>>>3;d=f/4-1;if(f<a/8){for(b=t(b,a,0,v(c));b.length<=d;)b.push(0);b[d]&=4294967040}else if(f>a/8){for(;b.length<=d;)b.push(0);b[d]&=4294967040}for(a=0;a<=d;a+=1)l[a]=b[a]^909522486,r[a]=b[a]^1549556828;h=E(l,h);g=n;p=!0};this.update=function(a){var b,c,e,m=0,p=n>>>5;b=q(a,d,f);a=b.binLen;c=b.value;b=a>>>5;for(e=0;e<b;e+=p)m+n<=a&&(h=E(c.slice(e,e+p),h),m+=n);g+=m;d=c.slice(m>>>5);f=a%n;x=!0};this.getHash=function(a,b){var e,n,q,l;if(!0===p)throw Error("Cannot call getHash after setting HMAC key");
+q=A(b);switch(a){case "HEX":e=function(a){return B(a,q)};break;case "B64":e=function(a){return C(a,q)};break;case "BYTES":e=D;break;default:throw Error("format must be HEX, B64, or BYTES");}l=t(d.slice(),f,g,h.slice());for(n=1;n<k;n+=1)l=t(l,m,0,v(c));return e(l)};this.getHMAC=function(a,b){var e,q,l,k;if(!1===p)throw Error("Cannot call getHMAC without first setting HMAC key");l=A(b);switch(a){case "HEX":e=function(a){return B(a,l)};break;case "B64":e=function(a){return C(a,l)};break;case "BYTES":e=
+D;break;default:throw Error("outputFormat must be HEX, B64, or BYTES");}q=t(d.slice(),f,g,h.slice());k=E(r,v(c));k=t(q,m,n,k);return e(k)}}function l(){}function J(c,a,b){var g=c.length,d,f,e,h,q;a=a||[0];b=b||0;q=b>>>3;if(0!==g%2)throw Error("String of HEX type must be in byte increments");for(d=0;d<g;d+=2){f=parseInt(c.substr(d,2),16);if(isNaN(f))throw Error("String of HEX type contains invalid characters");h=(d>>>1)+q;for(e=h>>>2;a.length<=e;)a.push(0);a[e]|=f<<8*(3-h%4)}return{value:a,binLen:4*
+g+b}}function K(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 L(c,a,b){var g=[],d=0,f,e,h,q,m,n,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){m=c.substr(e,
+4);for(h=q=0;h<m.length;h+=1)f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(m[h]),q|=f<<18-6*h;for(h=0;h<m.length-1;h+=1){n=d+a;for(f=n>>>2;g.length<=f;)g.push(0);g[f]|=(q>>>16-8*h&255)<<8*(3-n%4);d+=1}}return{value:g,binLen:8*d+b}}function B(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 C(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 D(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 A(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 y(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=J;break;case "TEXT":b=function(b,c,f){var e=[],h=[],q=0,m,n,l,k,p,e=c||[0];c=f||0;l=c>>>3;if("UTF8"===
+a)for(m=0;m<b.length;m+=1)for(f=b.charCodeAt(m),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):(m+=1,f=65536+((f&1023)<<10|b.charCodeAt(m)&1023),h.push(240|f>>>18,128|f>>>12&63,128|f>>>6&63,128|f&63)),n=0;n<h.length;n+=1){p=q+l;for(k=p>>>2;e.length<=k;)e.push(0);e[k]|=h[n]<<8*(3-p%4);q+=1}else if("UTF16BE"===a||"UTF16LE"===a)for(m=0;m<b.length;m+=1){f=b.charCodeAt(m);"UTF16LE"===a&&(n=f&255,f=n<<8|f>>>8);p=q+l;for(k=p>>>
+2;e.length<=k;)e.push(0);e[k]|=f<<8*(2-p%4);q+=2}return{value:e,binLen:8*q+c}};break;case "B64":b=L;break;case "BYTES":b=K;break;default:throw Error("format must be HEX, TEXT, B64, or BYTES");}return b}function k(c,a){return c>>>a|c<<32-a}function M(c,a,b){return c&a^~c&b}function N(c,a,b){return c&a^c&b^a&b}function O(c){return k(c,2)^k(c,13)^k(c,22)}function P(c){return k(c,6)^k(c,11)^k(c,25)}function Q(c){return k(c,7)^k(c,18)^c>>>3}function R(c){return k(c,17)^k(c,19)^c>>>10}function S(c,a){var b=
+(c&65535)+(a&65535);return((c>>>16)+(a>>>16)+(b>>>16)&65535)<<16|b&65535}function T(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 U(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 v(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 l,new l,new l,new l,new l,new l,new l,new l];break;case "SHA-512":c=[new l,new l,new l,new l,new l,new l,new l,new l];break;default:throw Error("Unknown SHA variant");}return c}function z(c,a,b){var g,d,f,e,h,l,m,n,k,t,p,u,r,v,x,y,z,A,B,C,D,F,w=[],G;if("SHA-224"===b||"SHA-256"===b)t=64,u=1,F=Number,r=S,v=T,x=U,y=Q,z=R,A=O,B=P,D=N,C=M,G=H;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];l=a[6];m=a[7];for(p=0;p<t;p+=1)16>p?(k=p*u,n=c.length<=k?0:c[k],k=c.length<=k+1?0:c[k+1],w[p]=new F(n,k)):w[p]=v(z(w[p-2]),w[p-7],y(w[p-15]),w[p-16]),n=x(m,B(e),C(e,h,l),G[p],w[p]),k=r(A(b),D(b,g,d)),m=l,l=h,h=e,e=r(f,n),f=d,d=g,g=b,b=r(n,k);a[0]=r(b,a[0]);a[1]=r(g,a[1]);a[2]=r(d,a[2]);a[3]=r(f,a[3]);a[4]=r(e,a[4]);a[5]=r(h,a[5]);a[6]=r(l,a[6]);a[7]=r(m,a[7]);return a}var H;H=[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 u}):"undefined"!==typeof exports?"undefined"!==typeof module&&module.exports?module.exports=exports=u:exports=u:I.jsSHA=u})(this);
diff --git a/src/sha512.js b/src/sha512.js
index d7488c2..29c9a4b 100644
--- a/src/sha512.js
+++ b/src/sha512.js
@@ -9,26 +9,26 @@
Several functions taken from Paul Johnston
*/
-'use strict';(function(I){function w(p,c,b){var a=0,e=[],g=0,f,h,l,m,n,u,r,q=!1,k=[],t=[],v,z=!1;b=b||{};f=b.encoding||"UTF8";v=b.numRounds||1;l=A(c,f);if(v!==parseInt(v,10)||1>v)throw Error("numRounds must a integer >= 1");u=function(c,b){return B(c,b,p)};r=function(c,b,d,g){var e;c=c.slice();var a=g.slice();if("SHA-384"===p||"SHA-512"===p)e=(b+129>>>10<<5)+31,g=32;else throw Error("Unexpected error in SHA-2 implementation");for(;c.length<=e;)c.push(0);c[b>>>5]|=128<<24-b%32;c[e]=b+d;d=c.length;
-for(b=0;b<d;b+=g)a=B(c.slice(b,b+g),a,p);if("SHA-384"===p)c=[a[0].a,a[0].b,a[1].a,a[1].b,a[2].a,a[2].b,a[3].a,a[3].b,a[4].a,a[4].b,a[5].a,a[5].b];else if("SHA-512"===p)c=[a[0].a,a[0].b,a[1].a,a[1].b,a[2].a,a[2].b,a[3].a,a[3].b,a[4].a,a[4].b,a[5].a,a[5].b,a[6].a,a[6].b,a[7].a,a[7].b];else throw Error("Unexpected error in SHA-2 implementation");return c};if("SHA-384"===p)n=1024,m=384;else if("SHA-512"===p)n=1024,m=512;else throw Error("Chosen SHA variant is not supported");h=x(p);this.setHMACKey=function(c,
-b,d){var g;if(!0===q)throw Error("HMAC key already set");if(!0===z)throw Error("Cannot set HMAC key after calling update");f=(d||{}).encoding||"UTF8";b=A(b,f)(c);c=b.binLen;b=b.value;g=n>>>3;d=g/4-1;if(g<c/8){for(b=r(b,c,0,x(p));b.length<=d;)b.push(0);b[d]&=4294967040}else if(g>c/8){for(;b.length<=d;)b.push(0);b[d]&=4294967040}for(c=0;c<=d;c+=1)k[c]=b[c]^909522486,t[c]=b[c]^1549556828;h=u(k,h);a=n;q=!0};this.update=function(c){var b,p,d,f=0,m=n>>>5;b=l(c,e,g);c=b.binLen;p=b.value;b=c>>>5;for(d=0;d<
-b;d+=m)f+n<=c&&(h=u(p.slice(d,d+m),h),f+=n);a+=f;e=p.slice(f>>>5);g=c%n;z=!0};this.getHash=function(c,b){var d,f,n,l;if(!0===q)throw Error("Cannot call getHash after setting HMAC key");n=C(b);switch(c){case "HEX":d=function(c){return D(c,n)};break;case "B64":d=function(c){return E(c,n)};break;case "BYTES":d=F;break;default:throw Error("format must be HEX, B64, or BYTES");}l=r(e,g,a,h);for(f=1;f<v;f+=1)l=r(l,m,0,x(p));return d(l)};this.getHMAC=function(c,b){var d,f,l,k;if(!1===q)throw Error("Cannot call getHMAC without first setting HMAC key");
-l=C(b);switch(c){case "HEX":d=function(c){return D(c,l)};break;case "B64":d=function(c){return E(c,l)};break;case "BYTES":d=F;break;default:throw Error("outputFormat must be HEX, B64, or BYTES");}f=r(e,g,a,h);k=u(t,x(p));k=r(f,m,n,k);return d(k)}}function b(b,c){this.a=b;this.b=c}function J(b,c,d){var a=b.length,e,g,f,h,l;c=c||[0];d=d||0;l=d>>>3;if(0!==a%2)throw Error("String of HEX type must be in byte increments");for(e=0;e<a;e+=2){g=parseInt(b.substr(e,2),16);if(isNaN(g))throw Error("String of HEX type contains invalid characters");
-h=(e>>>1)+l;for(f=h>>>2;c.length<=f;)c.push(0);c[f]|=g<<8*(3-h%4)}return{value:c,binLen:4*a+d}}function K(b,c,d){var a=[],e,g,f,h,a=c||[0];d=d||0;g=d>>>3;for(e=0;e<b.length;e+=1)c=b.charCodeAt(e),h=e+g,f=h>>>2,a.length<=f&&a.push(0),a[f]|=c<<8*(3-h%4);return{value:a,binLen:8*b.length+d}}function L(b,c,d){var a=[],e=0,g,f,h,l,m,n,a=c||[0];d=d||0;c=d>>>3;if(-1===b.search(/^[a-zA-Z0-9=+\/]+$/))throw Error("Invalid character in base-64 string");f=b.indexOf("=");b=b.replace(/\=/g,"");if(-1!==f&&f<b.length)throw Error("Invalid '=' found in base-64 string");
-for(f=0;f<b.length;f+=4){m=b.substr(f,4);for(h=l=0;h<m.length;h+=1)g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(m[h]),l|=g<<18-6*h;for(h=0;h<m.length-1;h+=1){n=e+c;for(g=n>>>2;a.length<=g;)a.push(0);a[g]|=(l>>>16-8*h&255)<<8*(3-n%4);e+=1}}return{value:a,binLen:8*e+d}}function D(b,c){var d="",a=4*b.length,e,g;for(e=0;e<a;e+=1)g=b[e>>>2]>>>8*(3-e%4),d+="0123456789abcdef".charAt(g>>>4&15)+"0123456789abcdef".charAt(g&15);return c.outputUpper?d.toUpperCase():d}function E(b,
-c){var d="",a=4*b.length,e,g,f;for(e=0;e<a;e+=3)for(f=e+1>>>2,g=b.length<=f?0:b[f],f=e+2>>>2,f=b.length<=f?0:b[f],f=(b[e>>>2]>>>8*(3-e%4)&255)<<16|(g>>>8*(3-(e+1)%4)&255)<<8|f>>>8*(3-(e+2)%4)&255,g=0;4>g;g+=1)8*e+6*g<=32*b.length?d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>>6*(3-g)&63):d+=c.b64Pad;return d}function F(b){var c="",d=4*b.length,a,e;for(a=0;a<d;a+=1)e=b[a>>>2]>>>8*(3-a%4)&255,c+=String.fromCharCode(e);return c}function C(b){var c={outputUpper:!1,b64Pad:"="};
-b=b||{};c.outputUpper=b.outputUpper||!1;!0===b.hasOwnProperty("b64Pad")&&(c.b64Pad=b.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 A(b,c){var d;switch(c){case "UTF8":case "UTF16BE":case "UTF16LE":break;default:throw Error("encoding must be UTF8, UTF16BE, or UTF16LE");}switch(b){case "HEX":d=J;break;case "TEXT":d=function(b,d,a){var p=[],h=[],l=0,m,n,k,
-r,q,p=d||[0];d=a||0;k=d>>>3;if("UTF8"===c)for(m=0;m<b.length;m+=1)for(a=b.charCodeAt(m),h=[],128>a?h.push(a):2048>a?(h.push(192|a>>>6),h.push(128|a&63)):55296>a||57344<=a?h.push(224|a>>>12,128|a>>>6&63,128|a&63):(m+=1,a=65536+((a&1023)<<10|b.charCodeAt(m)&1023),h.push(240|a>>>18,128|a>>>12&63,128|a>>>6&63,128|a&63)),n=0;n<h.length;n+=1){q=l+k;for(r=q>>>2;p.length<=r;)p.push(0);p[r]|=h[n]<<8*(3-q%4);l+=1}else if("UTF16BE"===c||"UTF16LE"===c)for(m=0;m<b.length;m+=1){a=b.charCodeAt(m);"UTF16LE"===c&&
-(n=a&255,a=n<<8|a>>>8);q=l+k;for(r=q>>>2;p.length<=r;)p.push(0);p[r]|=a<<8*(2-q%4);l+=2}return{value:p,binLen:8*l+d}};break;case "B64":d=L;break;case "BYTES":d=K;break;default:throw Error("format must be HEX, TEXT, B64, or BYTES");}return d}function k(a,c){var d=null,d=new b(a.a,a.b);return d=32>=c?new b(d.a>>>c|d.b<<32-c&4294967295,d.b>>>c|d.a<<32-c&4294967295):new b(d.b>>>c-32|d.a<<64-c&4294967295,d.a>>>c-32|d.b<<64-c&4294967295)}function G(a,c){var d=null;return d=32>=c?new b(a.a>>>c,a.b>>>c|a.a<<
-32-c&4294967295):new b(0,a.a>>>c-32)}function M(a,c,d){return new b(a.a&c.a^~a.a&d.a,a.b&c.b^~a.b&d.b)}function N(a,c,d){return new b(a.a&c.a^a.a&d.a^c.a&d.a,a.b&c.b^a.b&d.b^c.b&d.b)}function O(a){var c=k(a,28),d=k(a,34);a=k(a,39);return new b(c.a^d.a^a.a,c.b^d.b^a.b)}function P(a){var c=k(a,14),d=k(a,18);a=k(a,41);return new b(c.a^d.a^a.a,c.b^d.b^a.b)}function Q(a){var c=k(a,1),d=k(a,8);a=G(a,7);return new b(c.a^d.a^a.a,c.b^d.b^a.b)}function R(a){var c=k(a,19),d=k(a,61);a=G(a,6);return new b(c.a^
-d.a^a.a,c.b^d.b^a.b)}function S(a,c){var d,k,e;d=(a.b&65535)+(c.b&65535);k=(a.b>>>16)+(c.b>>>16)+(d>>>16);e=(k&65535)<<16|d&65535;d=(a.a&65535)+(c.a&65535)+(k>>>16);k=(a.a>>>16)+(c.a>>>16)+(d>>>16);return new b((k&65535)<<16|d&65535,e)}function T(a,c,d,k){var e,g,f;e=(a.b&65535)+(c.b&65535)+(d.b&65535)+(k.b&65535);g=(a.b>>>16)+(c.b>>>16)+(d.b>>>16)+(k.b>>>16)+(e>>>16);f=(g&65535)<<16|e&65535;e=(a.a&65535)+(c.a&65535)+(d.a&65535)+(k.a&65535)+(g>>>16);g=(a.a>>>16)+(c.a>>>16)+(d.a>>>16)+(k.a>>>16)+(e>>>
-16);return new b((g&65535)<<16|e&65535,f)}function U(a,c,d,k,e){var g,f,h;g=(a.b&65535)+(c.b&65535)+(d.b&65535)+(k.b&65535)+(e.b&65535);f=(a.b>>>16)+(c.b>>>16)+(d.b>>>16)+(k.b>>>16)+(e.b>>>16)+(g>>>16);h=(f&65535)<<16|g&65535;g=(a.a&65535)+(c.a&65535)+(d.a&65535)+(k.a&65535)+(e.a&65535)+(f>>>16);f=(a.a>>>16)+(c.a>>>16)+(d.a>>>16)+(k.a>>>16)+(e.a>>>16)+(g>>>16);return new b((f&65535)<<16|g&65535,h)}function x(a){var c,d;c=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,
-3204075428];d=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225];switch(a){case "SHA-224":a=c;break;case "SHA-256":a=d;break;case "SHA-384":a=[new b(3418070365,c[0]),new b(1654270250,c[1]),new b(2438529370,c[2]),new b(355462360,c[3]),new b(1731405415,c[4]),new b(41048885895,c[5]),new b(3675008525,c[6]),new b(1203062813,c[7])];break;case "SHA-512":a=[new b(d[0],4089235720),new b(d[1],2227873595),new b(d[2],4271175723),new b(d[3],1595750129),new b(d[4],2917565137),
-new b(d[5],725511199),new b(d[6],4215389547),new b(d[7],327033209)];break;default:throw Error("Unknown SHA variant");}return a}function B(a,c,d){var k,e,g,f,h,l,m,n,u,r,q,w,t,v,z,x,A,B,C,D,E,F,y=[],G;c=c.slice();if("SHA-384"===d||"SHA-512"===d)r=80,w=2,F=b,t=S,v=T,z=U,x=Q,A=R,B=O,C=P,E=N,D=M,G=H;else throw Error("Unexpected error in SHA-2 implementation");d=c[0];k=c[1];e=c[2];g=c[3];f=c[4];h=c[5];l=c[6];m=c[7];for(q=0;q<r;q+=1)16>q?(u=q*w,n=a.length<=u?0:a[u],u=a.length<=u+1?0:a[u+1],y[q]=new F(n,
-u)):y[q]=v(A(y[q-2]),y[q-7],x(y[q-15]),y[q-16]),n=z(m,C(f),D(f,h,l),G[q],y[q]),u=t(B(d),E(d,k,e)),m=l,l=h,h=f,f=t(g,n),g=e,e=k,k=d,d=t(n,u);c[0]=t(d,c[0]);c[1]=t(k,c[1]);c[2]=t(e,c[2]);c[3]=t(g,c[3]);c[4]=t(f,c[4]);c[5]=t(h,c[5]);c[6]=t(l,c[6]);c[7]=t(m,c[7]);return c}var a,H;a=[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];H=[new b(a[0],3609767458),new b(a[1],
-602891725),new b(a[2],3964484399),new b(a[3],2173295548),new b(a[4],4081628472),new b(a[5],3053834265),new b(a[6],2937671579),new b(a[7],3664609560),new b(a[8],2734883394),new b(a[9],1164996542),new b(a[10],1323610764),new b(a[11],3590304994),new b(a[12],4068182383),new b(a[13],991336113),new b(a[14],633803317),new b(a[15],3479774868),new b(a[16],2666613458),new b(a[17],944711139),new b(a[18],2341262773),new b(a[19],2007800933),new b(a[20],1495990901),new b(a[21],1856431235),new b(a[22],3175218132),
-new b(a[23],2198950837),new b(a[24],3999719339),new b(a[25],766784016),new b(a[26],2566594879),new b(a[27],3203337956),new b(a[28],1034457026),new b(a[29],2466948901),new b(a[30],3758326383),new b(a[31],168717936),new b(a[32],1188179964),new b(a[33],1546045734),new b(a[34],1522805485),new b(a[35],2643833823),new b(a[36],2343527390),new b(a[37],1014477480),new b(a[38],1206759142),new b(a[39],344077627),new b(a[40],1290863460),new b(a[41],3158454273),new b(a[42],3505952657),new b(a[43],106217008),new b(a[44],
-3606008344),new b(a[45],1432725776),new b(a[46],1467031594),new b(a[47],851169720),new b(a[48],3100823752),new b(a[49],1363258195),new b(a[50],3750685593),new b(a[51],3785050280),new b(a[52],3318307427),new b(a[53],3812723403),new b(a[54],2003034995),new b(a[55],3602036899),new b(a[56],1575990012),new b(a[57],1125592928),new b(a[58],2716904306),new b(a[59],442776044),new b(a[60],593698344),new b(a[61],3733110249),new b(a[62],2999351573),new b(a[63],3815920427),new b(3391569614,3928383900),new b(3515267271,
-566280711),new b(3940187606,3454069534),new b(4118630271,4000239992),new b(116418474,1914138554),new b(174292421,2731055270),new b(289380356,3203993006),new b(460393269,320620315),new b(685471733,587496836),new b(852142971,1086792851),new b(1017036298,365543100),new b(1126000580,2618297676),new b(1288033470,3409855158),new b(1501505948,4234509866),new b(1607167915,987167468),new b(1816402316,1246189591)];"function"===typeof define&&define.amd?define(function(){return w}):"undefined"!==typeof exports?
-"undefined"!==typeof module&&module.exports?module.exports=exports=w:exports=w:I.jsSHA=w})(this);
+'use strict';(function(I){function w(q,c,a){var b=0,f=[],e=0,g,k,l,m,n,u,r,p=!1,h=[],t=[],v,z=!1;a=a||{};g=a.encoding||"UTF8";v=a.numRounds||1;l=A(c,g);if(v!==parseInt(v,10)||1>v)throw Error("numRounds must a integer >= 1");u=function(c,a){return B(c,a,q)};r=function(c,a,d,e){var f,b;if("SHA-384"===q||"SHA-512"===q)f=(a+129>>>10<<5)+31,b=32;else throw Error("Unexpected error in SHA-2 implementation");for(;c.length<=f;)c.push(0);c[a>>>5]|=128<<24-a%32;c[f]=a+d;d=c.length;for(a=0;a<d;a+=b)e=B(c.slice(a,
+a+b),e,q);if("SHA-384"===q)c=[e[0].a,e[0].b,e[1].a,e[1].b,e[2].a,e[2].b,e[3].a,e[3].b,e[4].a,e[4].b,e[5].a,e[5].b];else if("SHA-512"===q)c=[e[0].a,e[0].b,e[1].a,e[1].b,e[2].a,e[2].b,e[3].a,e[3].b,e[4].a,e[4].b,e[5].a,e[5].b,e[6].a,e[6].b,e[7].a,e[7].b];else throw Error("Unexpected error in SHA-2 implementation");return c};if("SHA-384"===q)n=1024,m=384;else if("SHA-512"===q)n=1024,m=512;else throw Error("Chosen SHA variant is not supported");k=x(q);this.setHMACKey=function(c,a,d){var e;if(!0===p)throw Error("HMAC key already set");
+if(!0===z)throw Error("Cannot set HMAC key after calling update");g=(d||{}).encoding||"UTF8";a=A(a,g)(c);c=a.binLen;a=a.value;e=n>>>3;d=e/4-1;if(e<c/8){for(a=r(a,c,0,x(q));a.length<=d;)a.push(0);a[d]&=4294967040}else if(e>c/8){for(;a.length<=d;)a.push(0);a[d]&=4294967040}for(c=0;c<=d;c+=1)h[c]=a[c]^909522486,t[c]=a[c]^1549556828;k=u(h,k);b=n;p=!0};this.update=function(c){var a,q,d,g=0,m=n>>>5;a=l(c,f,e);c=a.binLen;q=a.value;a=c>>>5;for(d=0;d<a;d+=m)g+n<=c&&(k=u(q.slice(d,d+m),k),g+=n);b+=g;f=q.slice(g>>>
+5);e=c%n;z=!0};this.getHash=function(c,a){var d,g,n,l;if(!0===p)throw Error("Cannot call getHash after setting HMAC key");n=C(a);switch(c){case "HEX":d=function(c){return D(c,n)};break;case "B64":d=function(c){return E(c,n)};break;case "BYTES":d=F;break;default:throw Error("format must be HEX, B64, or BYTES");}l=r(f.slice(),e,b,k.slice());for(g=1;g<v;g+=1)l=r(l,m,0,x(q));return d(l)};this.getHMAC=function(c,a){var d,g,l,h;if(!1===p)throw Error("Cannot call getHMAC without first setting HMAC key");
+l=C(a);switch(c){case "HEX":d=function(c){return D(c,l)};break;case "B64":d=function(c){return E(c,l)};break;case "BYTES":d=F;break;default:throw Error("outputFormat must be HEX, B64, or BYTES");}g=r(f.slice(),e,b,k.slice());h=u(t,x(q));h=r(g,m,n,h);return d(h)}}function a(a,c){this.a=a;this.b=c}function J(a,c,d){var b=a.length,f,e,g,k,l;c=c||[0];d=d||0;l=d>>>3;if(0!==b%2)throw Error("String of HEX type must be in byte increments");for(f=0;f<b;f+=2){e=parseInt(a.substr(f,2),16);if(isNaN(e))throw Error("String of HEX type contains invalid characters");
+k=(f>>>1)+l;for(g=k>>>2;c.length<=g;)c.push(0);c[g]|=e<<8*(3-k%4)}return{value:c,binLen:4*b+d}}function K(a,c,d){var b=[],f,e,g,k,b=c||[0];d=d||0;e=d>>>3;for(f=0;f<a.length;f+=1)c=a.charCodeAt(f),k=f+e,g=k>>>2,b.length<=g&&b.push(0),b[g]|=c<<8*(3-k%4);return{value:b,binLen:8*a.length+d}}function L(a,c,d){var b=[],f=0,e,g,k,l,m,n,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){m=a.substr(g,4);for(k=l=0;k<m.length;k+=1)e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(m[k]),l|=e<<18-6*k;for(k=0;k<m.length-1;k+=1){n=f+c;for(e=n>>>2;b.length<=e;)b.push(0);b[e]|=(l>>>16-8*k&255)<<8*(3-n%4);f+=1}}return{value:b,binLen:8*f+d}}function D(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 E(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 F(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 C(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 A(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=J;break;case "TEXT":d=function(a,d,e){var b=[],q=[],l=0,m,n,h,
+r,p,b=d||[0];d=e||0;h=d>>>3;if("UTF8"===c)for(m=0;m<a.length;m+=1)for(e=a.charCodeAt(m),q=[],128>e?q.push(e):2048>e?(q.push(192|e>>>6),q.push(128|e&63)):55296>e||57344<=e?q.push(224|e>>>12,128|e>>>6&63,128|e&63):(m+=1,e=65536+((e&1023)<<10|a.charCodeAt(m)&1023),q.push(240|e>>>18,128|e>>>12&63,128|e>>>6&63,128|e&63)),n=0;n<q.length;n+=1){p=l+h;for(r=p>>>2;b.length<=r;)b.push(0);b[r]|=q[n]<<8*(3-p%4);l+=1}else if("UTF16BE"===c||"UTF16LE"===c)for(m=0;m<a.length;m+=1){e=a.charCodeAt(m);"UTF16LE"===c&&
+(n=e&255,e=n<<8|e>>>8);p=l+h;for(r=p>>>2;b.length<=r;)b.push(0);b[r]|=e<<8*(2-p%4);l+=2}return{value:b,binLen:8*l+d}};break;case "B64":d=L;break;case "BYTES":d=K;break;default:throw Error("format must be HEX, TEXT, B64, or BYTES");}return d}function h(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 G(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 M(b,c,d){return new a(b.a&c.a^~b.a&d.a,b.b&c.b^~b.b&d.b)}function N(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 O(b){var c=h(b,28),d=h(b,34);b=h(b,39);return new a(c.a^d.a^b.a,c.b^d.b^b.b)}function P(b){var c=h(b,14),d=h(b,18);b=h(b,41);return new a(c.a^d.a^b.a,c.b^d.b^b.b)}function Q(b){var c=h(b,1),d=h(b,8);b=G(b,7);return new a(c.a^d.a^b.a,c.b^d.b^b.b)}function R(b){var c=h(b,19),d=h(b,61);b=G(b,6);return new a(c.a^
+d.a^b.a,c.b^d.b^b.b)}function S(b,c){var d,h,f;d=(b.b&65535)+(c.b&65535);h=(b.b>>>16)+(c.b>>>16)+(d>>>16);f=(h&65535)<<16|d&65535;d=(b.a&65535)+(c.a&65535)+(h>>>16);h=(b.a>>>16)+(c.a>>>16)+(d>>>16);return new a((h&65535)<<16|d&65535,f)}function T(b,c,d,h){var f,e,g;f=(b.b&65535)+(c.b&65535)+(d.b&65535)+(h.b&65535);e=(b.b>>>16)+(c.b>>>16)+(d.b>>>16)+(h.b>>>16)+(f>>>16);g=(e&65535)<<16|f&65535;f=(b.a&65535)+(c.a&65535)+(d.a&65535)+(h.a&65535)+(e>>>16);e=(b.a>>>16)+(c.a>>>16)+(d.a>>>16)+(h.a>>>16)+(f>>>
+16);return new a((e&65535)<<16|f&65535,g)}function U(b,c,d,h,f){var e,g,k;e=(b.b&65535)+(c.b&65535)+(d.b&65535)+(h.b&65535)+(f.b&65535);g=(b.b>>>16)+(c.b>>>16)+(d.b>>>16)+(h.b>>>16)+(f.b>>>16)+(e>>>16);k=(g&65535)<<16|e&65535;e=(b.a&65535)+(c.a&65535)+(d.a&65535)+(h.a&65535)+(f.a&65535)+(g>>>16);g=(b.a>>>16)+(c.a>>>16)+(d.a>>>16)+(h.a>>>16)+(f.a>>>16)+(e>>>16);return new a((g&65535)<<16|e&65535,k)}function x(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 B(b,c,d){var h,f,e,g,k,l,m,n,u,r,p,w,t,v,z,x,A,B,C,D,E,F,y=[],G;if("SHA-384"===d||"SHA-512"===d)r=80,w=2,F=a,t=S,v=T,z=U,x=Q,A=R,B=O,C=P,E=N,D=M,G=H;else throw Error("Unexpected error in SHA-2 implementation");d=c[0];h=c[1];f=c[2];e=c[3];g=c[4];k=c[5];l=c[6];m=c[7];for(p=0;p<r;p+=1)16>p?(u=p*w,n=b.length<=u?0:b[u],u=b.length<=u+1?0:b[u+1],y[p]=new F(n,u)):y[p]=v(A(y[p-
+2]),y[p-7],x(y[p-15]),y[p-16]),n=z(m,C(g),D(g,k,l),G[p],y[p]),u=t(B(d),E(d,h,f)),m=l,l=k,k=g,g=t(e,n),e=f,f=h,h=d,d=t(n,u);c[0]=t(d,c[0]);c[1]=t(h,c[1]);c[2]=t(f,c[2]);c[3]=t(e,c[3]);c[4]=t(g,c[4]);c[5]=t(k,c[5]);c[6]=t(l,c[6]);c[7]=t(m,c[7]);return c}var b,H;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];H=[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 w}):"undefined"!==typeof exports?"undefined"!==typeof module&&
+module.exports?module.exports=exports=w:exports=w:I.jsSHA=w})(this);