blob: 0db925dd46b2a1e73efb5e82e7cf45eac2883438 [file] [log] [blame]
/*
* Crypto-JS v2.5.1
* http://code.google.com/p/crypto-js/
* (c) 2009-2011 by Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(typeof Crypto=="undefined"||!Crypto.util)&&function(){var d=window.Crypto={},k=d.util={rotl:function(b,c){return b<<c|b>>>32-c},rotr:function(b,c){return b<<32-c|b>>>c},endian:function(b){if(b.constructor==Number)return k.rotl(b,8)&16711935|k.rotl(b,24)&4278255360;for(var c=0;c<b.length;c++)b[c]=k.endian(b[c]);return b},randomBytes:function(b){b=new Uint8Array(b);crypto.getRandomValues(b);return[].map.call(b,function(b){return b})},bytesToWords:function(b){for(var c=[],a=0,e=0;a<b.length;a++,e+=
8)c[e>>>5]|=b[a]<<24-e%32;return c},wordsToBytes:function(b){for(var c=[],a=0;a<b.length*32;a+=8)c.push(b[a>>>5]>>>24-a%32&255);return c},bytesToHex:function(b){for(var c=[],a=0;a<b.length;a++)c.push((b[a]>>>4).toString(16)),c.push((b[a]&15).toString(16));return c.join("")},hexToBytes:function(b){for(var c=[],a=0;a<b.length;a+=2)c.push(parseInt(b.substr(a,2),16));return c},bytesToBase64:function(b){if(typeof btoa=="function")return btoa(h.bytesToString(b));for(var c=[],a=0;a<b.length;a+=3)for(var e=
b[a]<<16|b[a+1]<<8|b[a+2],l=0;l<4;l++)a*8+l*6<=b.length*8?c.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>>6*(3-l)&63)):c.push("=");return c.join("")},base64ToBytes:function(b){if(typeof atob=="function")return h.stringToBytes(atob(b));for(var b=b.replace(/[^A-Z0-9+\/]/ig,""),c=[],a=0,e=0;a<b.length;e=++a%4)e!=0&&c.push(("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(b.charAt(a-1))&Math.pow(2,-2*e+8)-1)<<e*2|"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(b.charAt(a))>>>
6-e*2);return c}},d=d.charenc={};d.UTF8={stringToBytes:function(b){return h.stringToBytes(unescape(encodeURIComponent(b)))},bytesToString:function(b){return decodeURIComponent(escape(h.bytesToString(b)))}};var h=d.Binary={stringToBytes:function(b){for(var c=[],a=0;a<b.length;a++)c.push(b.charCodeAt(a)&255);return c},bytesToString:function(b){for(var c=[],a=0;a<b.length;a++)c.push(String.fromCharCode(b[a]));return c.join("")}}}();
(function(){var d=Crypto,k=d.util,h=d.charenc,b=h.UTF8,c=h.Binary,a=d.SHA1=function(e,l){var b=k.wordsToBytes(a._sha1(e));return l&&l.asBytes?b:l&&l.asString?c.bytesToString(b):k.bytesToHex(b)};a._sha1=function(e){e.constructor==String&&(e=b.stringToBytes(e));var a=k.bytesToWords(e),g=e.length*8,e=[],c=1732584193,j=-271733879,d=-1732584194,h=271733878,s=-1009589776;a[g>>5]|=128<<24-g%32;a[(g+64>>>9<<4)+15]=g;for(g=0;g<a.length;g+=16){for(var f=c,n=j,r=d,m=h,o=s,p=0;p<80;p++){if(p<16)e[p]=a[g+p];else{var v=
e[p-3]^e[p-8]^e[p-14]^e[p-16];e[p]=v<<1|v>>>31}v=(c<<5|c>>>27)+s+(e[p]>>>0)+(p<20?(j&d|~j&h)+1518500249:p<40?(j^d^h)+1859775393:p<60?(j&d|j&h|d&h)-1894007588:(j^d^h)-899497514);s=h;h=d;d=j<<30|j>>>2;j=c;c=v}c+=f;j+=n;d+=r;h+=m;s+=o}return[c,j,d,h,s]};a._blocksize=16;a._digestsize=20})();
(function(){var d=Crypto,k=d.util,h=d.charenc,b=h.UTF8,c=h.Binary;d.HMAC=function(a,e,l,g){e.constructor==String&&(e=b.stringToBytes(e));l.constructor==String&&(l=b.stringToBytes(l));l.length>a._blocksize*4&&(l=a(l,{asBytes:!0}));for(var d=l.slice(0),l=l.slice(0),j=0;j<a._blocksize*4;j++)d[j]^=92,l[j]^=54;a=a(d.concat(a(l.concat(e),{asBytes:!0})),{asBytes:!0});return g&&g.asBytes?a:g&&g.asString?c.bytesToString(a):k.bytesToHex(a)}})();
(function(){var d=Crypto,k=d.util,h=d.charenc,b=h.UTF8,c=h.Binary;d.PBKDF2=function(a,e,l,g){function t(a,e){return d.HMAC(j,e,a,{asBytes:!0})}a.constructor==String&&(a=b.stringToBytes(a));e.constructor==String&&(e=b.stringToBytes(e));for(var j=g&&g.hasher||d.SHA1,h=g&&g.iterations||1,q=[],s=1;q.length<l;){for(var f=t(a,e.concat(k.wordsToBytes([s]))),n=f,r=1;r<h;r++)for(var n=t(a,n),m=0;m<f.length;m++)f[m]^=n[m];q=q.concat(f);s++}q.length=l;return g&&g.asBytes?q:g&&g.asString?c.bytesToString(q):k.bytesToHex(q)}})();
(function(d){function k(a,e){var b=a._blocksize*4;return b-e.length%b}var h=d.pad={},b=function(a){for(var e=a.pop(),b=1;b<e;b++)a.pop()};h.NoPadding={pad:function(){},unpad:function(){}};h.ZeroPadding={pad:function(a,e){var b=a._blocksize*4,g=e.length%b;if(g!=0)for(g=b-g;g>0;g--)e.push(0)},unpad:function(){}};h.iso7816={pad:function(a,e){var b=k(a,e);for(e.push(128);b>1;b--)e.push(0)},unpad:function(a){for(;a.pop()!=128;);}};h.ansix923={pad:function(a,e){for(var b=k(a,e),g=1;g<b;g++)e.push(0);e.push(b)},
unpad:b};h.iso10126={pad:function(a,e){for(var b=k(a,e),g=1;g<b;g++)e.push(Math.floor(Math.random()*256));e.push(b)},unpad:b};h.pkcs7={pad:function(a,e){for(var b=k(a,e),g=0;g<b;g++)e.push(b)},unpad:b};var d=d.mode={},c=d.Mode=function(a){if(a)this._padding=a};c.prototype={encrypt:function(a,e,b){this._padding.pad(a,e);this._doEncrypt(a,e,b)},decrypt:function(a,e,b){this._doDecrypt(a,e,b);this._padding.unpad(e)},_padding:h.iso7816};b=(d.ECB=function(){c.apply(this,arguments)}).prototype=new c;b._doEncrypt=
function(a,e){for(var b=a._blocksize*4,g=0;g<e.length;g+=b)a._encryptblock(e,g)};b._doDecrypt=function(a,b){for(var c=a._blocksize*4,g=0;g<b.length;g+=c)a._decryptblock(b,g)};b.fixOptions=function(b){b.iv=[]};b=(d.CBC=function(){c.apply(this,arguments)}).prototype=new c;b._doEncrypt=function(b,e,c){for(var g=b._blocksize*4,d=0;d<e.length;d+=g){if(d==0)for(var j=0;j<g;j++)e[j]^=c[j];else for(j=0;j<g;j++)e[d+j]^=e[d+j-g];b._encryptblock(e,d)}};b._doDecrypt=function(b,e,c){for(var g=b._blocksize*4,d=
0;d<e.length;d+=g){var j=e.slice(d,d+g);b._decryptblock(e,d);for(var h=0;h<g;h++)e[d+h]^=c[h];c=j}};b=(d.CFB=function(){c.apply(this,arguments)}).prototype=new c;b._padding=h.NoPadding;b._doEncrypt=function(b,e,c){for(var g=b._blocksize*4,c=c.slice(0),d=0;d<e.length;d++){var j=d%g;j==0&&b._encryptblock(c,0);e[d]^=c[j];c[j]=e[d]}};b._doDecrypt=function(b,e,c){for(var g=b._blocksize*4,c=c.slice(0),d=0;d<e.length;d++){var j=d%g;j==0&&b._encryptblock(c,0);var h=e[d];e[d]^=c[j];c[j]=h}};b=(d.OFB=function(){c.apply(this,
arguments)}).prototype=new c;b._padding=h.NoPadding;b._doEncrypt=function(b,e,c){for(var d=b._blocksize*4,c=c.slice(0),h=0;h<e.length;h++)h%d==0&&b._encryptblock(c,0),e[h]^=c[h%d]};b._doDecrypt=b._doEncrypt;d=(d.CTR=function(){c.apply(this,arguments)}).prototype=new c;d._padding=h.NoPadding;d._doEncrypt=function(b,e,c){for(var d=b._blocksize*4,c=c.slice(0),h=0;h<e.length;){var j=c.slice(0);b._encryptblock(j,0);for(var k=0;h<e.length&&k<d;k++,h++)e[h]^=j[k];++c[d-1]==256&&(c[d-1]=0,++c[d-2]==256&&
(c[d-2]=0,++c[d-3]==256&&(c[d-3]=0,++c[d-4])))}};d._doDecrypt=d._doEncrypt})(Crypto);
(function(){function d(b,e){for(var c=0,i=0;i<8;i++){e&1&&(c^=b);var a=b&128,b=b<<1&255;a&&(b^=27);e>>>=1}return c}for(var k=Crypto,h=k.util,b=k.charenc.UTF8,c=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,
208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,
206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],a=[],e=0;e<256;e++)a[c[e]]=e;for(var l=[],g=[],t=[],j=[],u=[],q=[],e=0;e<256;e++)l[e]=d(e,2),g[e]=d(e,3),t[e]=d(e,9),j[e]=d(e,11),u[e]=d(e,13),q[e]=d(e,14);var s=[0,1,2,4,8,16,32,64,128,27,54],f=[[],[],[],[]],n,r,m,o=k.AES={encrypt:function(e,c,a){var a=a||{},i=a.mode||new k.mode.OFB;i.fixOptions&&i.fixOptions(a);var e=e.constructor==String?b.stringToBytes(e):e,d=a.iv||h.randomBytes(o._blocksize*4),c=c.constructor==String?k.PBKDF2(c,
d,32,{asBytes:!0}):c;o._init(c);i.encrypt(o,e,d);e=a.iv?e:d.concat(e);return a&&a.asBytes?e:h.bytesToBase64(e)},decrypt:function(e,c,a){var a=a||{},i=a.mode||new k.mode.OFB;i.fixOptions&&i.fixOptions(a);var e=e.constructor==String?h.base64ToBytes(e):e,d=a.iv||e.splice(0,o._blocksize*4),c=c.constructor==String?k.PBKDF2(c,d,32,{asBytes:!0}):c;o._init(c);i.decrypt(o,e,d);return a&&a.asBytes?e:b.bytesToString(e)},_blocksize:4,_encryptblock:function(b,e){for(var a=0;a<o._blocksize;a++)for(var i=0;i<4;i++)f[a][i]=
b[e+i*4+a];for(a=0;a<4;a++)for(i=0;i<4;i++)f[a][i]^=m[i][a];for(var d=1;d<r;d++){for(a=0;a<4;a++)for(i=0;i<4;i++)f[a][i]=c[f[a][i]];f[1].push(f[1].shift());f[2].push(f[2].shift());f[2].push(f[2].shift());f[3].unshift(f[3].pop());for(i=0;i<4;i++){var a=f[0][i],h=f[1][i],j=f[2][i],k=f[3][i];f[0][i]=l[a]^g[h]^j^k;f[1][i]=a^l[h]^g[j]^k;f[2][i]=a^h^l[j]^g[k];f[3][i]=g[a]^h^j^l[k]}for(a=0;a<4;a++)for(i=0;i<4;i++)f[a][i]^=m[d*4+i][a]}for(a=0;a<4;a++)for(i=0;i<4;i++)f[a][i]=c[f[a][i]];f[1].push(f[1].shift());
f[2].push(f[2].shift());f[2].push(f[2].shift());f[3].unshift(f[3].pop());for(a=0;a<4;a++)for(i=0;i<4;i++)f[a][i]^=m[r*4+i][a];for(a=0;a<o._blocksize;a++)for(i=0;i<4;i++)b[e+i*4+a]=f[a][i]},_decryptblock:function(b,e){for(var c=0;c<o._blocksize;c++)for(var d=0;d<4;d++)f[c][d]=b[e+d*4+c];for(c=0;c<4;c++)for(d=0;d<4;d++)f[c][d]^=m[r*4+d][c];for(var h=1;h<r;h++){f[1].unshift(f[1].pop());f[2].push(f[2].shift());f[2].push(f[2].shift());f[3].push(f[3].shift());for(c=0;c<4;c++)for(d=0;d<4;d++)f[c][d]=a[f[c][d]];
for(c=0;c<4;c++)for(d=0;d<4;d++)f[c][d]^=m[(r-h)*4+d][c];for(d=0;d<4;d++){var c=f[0][d],g=f[1][d],k=f[2][d],l=f[3][d];f[0][d]=q[c]^j[g]^u[k]^t[l];f[1][d]=t[c]^q[g]^j[k]^u[l];f[2][d]=u[c]^t[g]^q[k]^j[l];f[3][d]=j[c]^u[g]^t[k]^q[l]}}f[1].unshift(f[1].pop());f[2].push(f[2].shift());f[2].push(f[2].shift());f[3].push(f[3].shift());for(c=0;c<4;c++)for(d=0;d<4;d++)f[c][d]=a[f[c][d]];for(c=0;c<4;c++)for(d=0;d<4;d++)f[c][d]^=m[d][c];for(c=0;c<o._blocksize;c++)for(d=0;d<4;d++)b[e+d*4+c]=f[c][d]},_init:function(c){n=
c.length/4;r=n+6;o._keyexpansion(c)},_keyexpansion:function(a){m=[];for(var b=0;b<n;b++)m[b]=[a[b*4],a[b*4+1],a[b*4+2],a[b*4+3]];for(b=n;b<o._blocksize*(r+1);b++)a=[m[b-1][0],m[b-1][1],m[b-1][2],m[b-1][3]],b%n==0?(a.push(a.shift()),a[0]=c[a[0]],a[1]=c[a[1]],a[2]=c[a[2]],a[3]=c[a[3]],a[0]^=s[b/n]):n>6&&b%n==4&&(a[0]=c[a[0]],a[1]=c[a[1]],a[2]=c[a[2]],a[3]=c[a[3]]),m[b]=[m[b-n][0]^a[0],m[b-n][1]^a[1],m[b-n][2]^a[2],m[b-n][3]^a[3]]}}})();