├── images ├── icon.png ├── info.png ├── star.png ├── icon128.png ├── icon16.png ├── icon48.png └── popout.png ├── lib ├── cryptojs │ ├── components │ │ ├── pad-nopadding-min.js │ │ ├── pad-ansix923-min.js │ │ ├── pad-iso97971-min.js │ │ ├── pad-zeropadding-min.js │ │ ├── pad-iso10126-min.js │ │ ├── mode-ecb-min.js │ │ ├── mode-ofb-min.js │ │ ├── enc-utf16-min.js │ │ ├── mode-ctr-min.js │ │ ├── sha224-min.js │ │ ├── mode-cfb-min.js │ │ ├── x64-core-min.js │ │ ├── evpkdf-min.js │ │ ├── sha384-min.js │ │ ├── hmac-min.js │ │ ├── pbkdf2-min.js │ │ ├── rc4-min.js │ │ ├── enc-base64-min.js │ │ ├── sha1-min.js │ │ ├── sha256-min.js │ │ ├── md5-min.js │ │ ├── rabbit-min.js │ │ ├── aes-min.js │ │ ├── core-min.js │ │ ├── cipher-core-min.js │ │ ├── sha512-min.js │ │ └── tripledes-min.js │ ├── LICENSE │ └── rollups │ │ ├── sha1.js │ │ ├── sha256.js │ │ ├── hmac-sha1.js │ │ ├── sha224.js │ │ ├── md5.js │ │ ├── hmac-sha256.js │ │ ├── pbkdf2.js │ │ ├── hmac-sha224.js │ │ ├── hmac-md5.js │ │ ├── sha512.js │ │ ├── sha384.js │ │ ├── hmac-sha512.js │ │ ├── hmac-sha384.js │ │ ├── rc4.js │ │ ├── rabbit.js │ │ └── aes.js ├── snov │ ├── rot13.js │ ├── numbers.js │ ├── romanconverter.js │ └── ipcalc.js └── hash │ ├── whirpool.js │ ├── md4.js │ ├── ripemd.js │ └── crc.js ├── manifest.json ├── README.md ├── popup.js ├── main.css └── popup.html /images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s12v/hasher/HEAD/images/icon.png -------------------------------------------------------------------------------- /images/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s12v/hasher/HEAD/images/info.png -------------------------------------------------------------------------------- /images/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s12v/hasher/HEAD/images/star.png -------------------------------------------------------------------------------- /images/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s12v/hasher/HEAD/images/icon128.png -------------------------------------------------------------------------------- /images/icon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s12v/hasher/HEAD/images/icon16.png -------------------------------------------------------------------------------- /images/icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s12v/hasher/HEAD/images/icon48.png -------------------------------------------------------------------------------- /images/popout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/s12v/hasher/HEAD/images/popout.png -------------------------------------------------------------------------------- /lib/cryptojs/components/pad-nopadding-min.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | CryptoJS.pad.NoPadding={pad:function(){},unpad:function(){}}; 8 | -------------------------------------------------------------------------------- /lib/cryptojs/components/pad-ansix923-min.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | CryptoJS.pad.AnsiX923={pad:function(a,d){var b=a.sigBytes,c=4*d,c=c-b%c,b=b+c-1;a.clamp();a.words[b>>>2]|=c<<24-8*(b%4);a.sigBytes+=c},unpad:function(a){a.sigBytes-=a.words[a.sigBytes-1>>>2]&255}}; 8 | -------------------------------------------------------------------------------- /lib/cryptojs/components/pad-iso97971-min.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | CryptoJS.pad.Iso97971={pad:function(a,b){a.concat(CryptoJS.lib.WordArray.create([2147483648],1));CryptoJS.pad.ZeroPadding.pad(a,b)},unpad:function(a){CryptoJS.pad.ZeroPadding.unpad(a);a.sigBytes--}}; 8 | -------------------------------------------------------------------------------- /lib/cryptojs/components/pad-zeropadding-min.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | CryptoJS.pad.ZeroPadding={pad:function(a,c){var b=4*c;a.clamp();a.sigBytes+=b-(a.sigBytes%b||b)},unpad:function(a){for(var c=a.words,b=a.sigBytes-1;!(c[b>>>2]>>>24-8*(b%4)&255);)b--;a.sigBytes=b+1}}; 8 | -------------------------------------------------------------------------------- /lib/cryptojs/components/pad-iso10126-min.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | CryptoJS.pad.Iso10126={pad:function(a,c){var b=4*c,b=b-a.sigBytes%b;a.concat(CryptoJS.lib.WordArray.random(b-1)).concat(CryptoJS.lib.WordArray.create([b<<24],1))},unpad:function(a){a.sigBytes-=a.words[a.sigBytes-1>>>2]&255}}; 8 | -------------------------------------------------------------------------------- /lib/cryptojs/components/mode-ecb-min.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | CryptoJS.mode.ECB=function(){var a=CryptoJS.lib.BlockCipherMode.extend();a.Encryptor=a.extend({processBlock:function(a,b){this._cipher.encryptBlock(a,b)}});a.Decryptor=a.extend({processBlock:function(a,b){this._cipher.decryptBlock(a,b)}});return a}(); 8 | -------------------------------------------------------------------------------- /lib/cryptojs/components/mode-ofb-min.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | CryptoJS.mode.OFB=function(){var b=CryptoJS.lib.BlockCipherMode.extend(),d=b.Encryptor=b.extend({processBlock:function(b,e){var a=this._cipher,d=a.blockSize,f=this._iv,c=this._keystream;f&&(c=this._keystream=f.slice(0),this._iv=void 0);a.encryptBlock(c,0);for(a=0;a>>2]>>>16-8*(a%4)&65535));return c.join("")},parse:function(b){for(var d=b.length,c=[],a=0;a>>1]|=b.charCodeAt(a)<<16-16*(a%2);return f.create(c,2*d)}}})(); 8 | -------------------------------------------------------------------------------- /lib/cryptojs/components/mode-ctr-min.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | CryptoJS.mode.CTR=function(){var b=CryptoJS.lib.BlockCipherMode.extend(),g=b.Encryptor=b.extend({processBlock:function(b,f){var a=this._cipher,e=a.blockSize,c=this._iv,d=this._counter;c&&(d=this._counter=c.slice(0),this._iv=void 0);c=d.slice(0);a.encryptBlock(c,0);d[e-1]=d[e-1]+1|0;for(a=0;a 5 | */ 6 | Rot13 = function () { 7 | /** 8 | * @return String 9 | */ 10 | this.encode = function(text) { 11 | var normall = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; 12 | var rotall = "nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM"; 13 | 14 | var result = ""; 15 | for (var i = 0; i < text.length; i++) { 16 | c = text.substr(i, 1); 17 | x = normall.indexOf(c); 18 | if (x > -1) { 19 | result += rotall.substr(x, 1); 20 | } else { 21 | result += c; 22 | } 23 | } 24 | 25 | return result; 26 | } 27 | } 28 | 29 | -------------------------------------------------------------------------------- /lib/cryptojs/components/sha384-min.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | (function(){var c=CryptoJS,a=c.x64,b=a.Word,e=a.WordArray,a=c.algo,d=a.SHA512,a=a.SHA384=d.extend({_doReset:function(){this._hash=e.create([b.create(3418070365,3238371032),b.create(1654270250,914150663),b.create(2438529370,812702999),b.create(355462360,4144912697),b.create(1731405415,4290775857),b.create(2394180231,1750603025),b.create(3675008525,1694076839),b.create(1203062813,3204075428)])},_doFinalize:function(){d._doFinalize.call(this);this._hash.sigBytes-=16}});c.SHA384=d._createHelper(a);c.HmacSHA384= 8 | d._createHmacHelper(a)})(); 9 | -------------------------------------------------------------------------------- /lib/cryptojs/components/hmac-min.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | (function(){var c=CryptoJS,j=c.enc.Utf8;c.algo.HMAC=c.lib.Base.extend({init:function(a,b){a=this._hasher=a.create();"string"==typeof b&&(b=j.parse(b));var c=a.blockSize,e=4*c;b.sigBytes>e&&(b=a.finalize(b));for(var f=this._oKey=b.clone(),g=this._iKey=b.clone(),h=f.words,i=g.words,d=0;de;e++){var d=(d+1)%256,c=(c+a[d])%256,f=a[d];a[d]=a[c];a[c]=f;b|=a[(a[d]+a[c])%256]<<24-8*e}this._i=d;this._j=c;return b}var g=CryptoJS,j=g.lib.StreamCipher,h=g.algo,i=h.RC4=j.extend({_doReset:function(){for(var a=this._key,d=a.words,a=a.sigBytes,c=this._S=[],b=0;256>b;b++)c[b]=b;for(var e=b=0;256>b;b++){var f=b%a,e=(e+c[b]+(d[f>>>2]>>>24-8*(f%4)&255))%256,f=c[b];c[b]=c[e];c[e]=f}this._i=this._j=0},_doProcessBlock:function(a, 8 | d){a[d]^=k.call(this)},keySize:8,ivSize:0});g.RC4=j._createHelper(i);h=h.RC4Drop=i.extend({cfg:i.cfg.extend({drop:192}),_doReset:function(){i._doReset.call(this);for(var a=this.cfg.drop;0>>2]>>>24-8*(a%4)&255)<<16|(e[a+1>>>2]>>>24-8*((a+1)%4)&255)<<8|e[a+2>>>2]>>>24-8*((a+2)%4)&255,g=0;4>g&&a+0.75*g>>6*(3-g)&63));if(e=c.charAt(64))for(;b.length%4;)b.push(e);return b.join("")},parse:function(b){var b=b.replace(/\s/g,""),e=b.length,f=this._map,c=f.charAt(64);c&&(c=b.indexOf(c),-1!=c&&(e=c)); 8 | for(var c=[],a=0,d=0;d>>6-2*(d%4);c[a>>>2]|=(g|h)<<24-8*(a%4);a++}return i.create(c,a)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})(); 9 | -------------------------------------------------------------------------------- /lib/cryptojs/components/sha1-min.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | (function(){var d=CryptoJS,c=d.lib,l=c.WordArray,c=c.Hasher,j=[],k=d.algo.SHA1=c.extend({_doReset:function(){this._hash=l.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(c,m){for(var a=this._hash.words,e=a[0],f=a[1],h=a[2],i=a[3],d=a[4],b=0;80>b;b++){if(16>b)j[b]=c[m+b]|0;else{var g=j[b-3]^j[b-8]^j[b-14]^j[b-16];j[b]=g<<1|g>>>31}g=(e<<5|e>>>27)+d+j[b];g=20>b?g+((f&h|~f&i)+1518500249):40>b?g+((f^h^i)+1859775393):60>b?g+((f&h|f&i|h&i)-1894007588):g+((f^h^i)- 8 | 899497514);d=i;i=h;h=f<<30|f>>>2;f=e;e=g}a[0]=a[0]+e|0;a[1]=a[1]+f|0;a[2]=a[2]+h|0;a[3]=a[3]+i|0;a[4]=a[4]+d|0},_doFinalize:function(){var d=this._data,c=d.words,a=8*this._nDataBytes,e=8*d.sigBytes;c[e>>>5]|=128<<24-e%32;c[(e+64>>>9<<4)+15]=a;d.sigBytes=4*c.length;this._process()}});d.SHA1=c._createHelper(k);d.HmacSHA1=c._createHmacHelper(k)})(); 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Hasher (Chrome extension) 2 | Chrome web store: 3 | https://chrome.google.com/webstore/detail/kignjplbjlocolcfldfhbonmbblpfbjb 4 | 5 | Standalone version for other browsers: 6 | https://s12v.github.io/hasher/ 7 | 8 | The extension is used to compute cryptographic hashes and perform conversions. 9 | It is useful for programmers and system administrators. 10 | The extension is implemented in JavaScript. All calculations are performed on the client side. 11 | 12 | * Hash: MD5, SHA-1, SHA-2 (224, 256, 384, 512), RIPEMD-160, MD4, Whirpool 13 | * HMAC: MD5, SHA-1, SHA-2 (224, 256, 384, 512), RIPEMD-160, MD4 14 | * CRC: CRC-8, CRC-16, FCS-16, FCS/CRC-32 15 | * Cipher (interoperable with OpenSSL): AES-256, DES, Triple DES, Rabbit, RC4, RC4Drop. CBC/Pkcs7 is used. 16 | * Net: Subnet calculator, Ip ↔ Dec, Ip → Bin, Ip → Hex 17 | * Time: Unix ↔ Datetime, Unix ↔ RFC-1123, Unix ↔ ISO 8601 18 | * Numbers: Dec ↔ Hex, Dec ↔ Bin, Dec ↔ Roman 19 | * Strings: ASCII ↔ Hex, UTF-8 ↔ Hex, UTF-16 ↔ Hex 20 | * Encode: Base64, ROT-13, JavaScript encodeURI(), encodeURIComponent(), HTML special chars encode/decode 21 | -------------------------------------------------------------------------------- /lib/cryptojs/components/sha256-min.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | (function(k){var h=CryptoJS,i=h.lib,r=i.WordArray,i=i.Hasher,c=h.algo,p=[],q=[];(function(){function g(a){for(var b=k.sqrt(a),d=2;d<=b;d++)if(!(a%d))return!1;return!0}function d(a){return 4294967296*(a-(a|0))|0}for(var a=2,b=0;64>b;)g(a)&&(8>b&&(p[b]=d(k.pow(a,0.5))),q[b]=d(k.pow(a,1/3)),b++),a++})();var g=[],c=c.SHA256=i.extend({_doReset:function(){this._hash=r.create(p.slice(0))},_doProcessBlock:function(i,d){for(var a=this._hash.words,b=a[0],m=a[1],n=a[2],h=a[3],f=a[4],c=a[5],o=a[6],k=a[7],e=0;64> 8 | e;e++){if(16>e)g[e]=i[d+e]|0;else{var j=g[e-15],l=g[e-2];g[e]=((j<<25|j>>>7)^(j<<14|j>>>18)^j>>>3)+g[e-7]+((l<<15|l>>>17)^(l<<13|l>>>19)^l>>>10)+g[e-16]}j=k+((f<<26|f>>>6)^(f<<21|f>>>11)^(f<<7|f>>>25))+(f&c^~f&o)+q[e]+g[e];l=((b<<30|b>>>2)^(b<<19|b>>>13)^(b<<10|b>>>22))+(b&m^b&n^m&n);k=o;o=c;c=f;f=h+j|0;h=n;n=m;m=b;b=j+l|0}a[0]=a[0]+b|0;a[1]=a[1]+m|0;a[2]=a[2]+n|0;a[3]=a[3]+h|0;a[4]=a[4]+f|0;a[5]=a[5]+c|0;a[6]=a[6]+o|0;a[7]=a[7]+k|0},_doFinalize:function(){var c=this._data,d=c.words,a=8*this._nDataBytes, 9 | b=8*c.sigBytes;d[b>>>5]|=128<<24-b%32;d[(b+64>>>9<<4)+15]=a;c.sigBytes=4*d.length;this._process()}});h.SHA256=i._createHelper(c);h.HmacSHA256=i._createHmacHelper(c)})(Math); 10 | -------------------------------------------------------------------------------- /lib/cryptojs/LICENSE: -------------------------------------------------------------------------------- 1 | © 2009–2012 by Jeff Mott. All rights reserved. 2 | 3 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 4 | 5 | Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 6 | Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the following disclaimer in the documentation or other materials provided with the distribution. 7 | Neither the name CryptoJS nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 8 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS," AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /lib/cryptojs/components/md5-min.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | (function(q){function k(b,c,a,f,d,e,g){b=b+(c&a|~c&f)+d+g;return(b<>>32-e)+c}function l(b,c,a,f,d,e,g){b=b+(c&f|a&~f)+d+g;return(b<>>32-e)+c}function m(b,c,a,f,d,e,g){b=b+(c^a^f)+d+g;return(b<>>32-e)+c}function n(b,c,a,f,d,e,g){b=b+(a^(c|~f))+d+g;return(b<>>32-e)+c}var o=CryptoJS,j=o.lib,r=j.WordArray,j=j.Hasher,p=o.algo,i=[];(function(){for(var b=0;64>b;b++)i[b]=4294967296*q.abs(q.sin(b+1))|0})();p=p.MD5=j.extend({_doReset:function(){this._hash=r.create([1732584193,4023233417, 8 | 2562383102,271733878])},_doProcessBlock:function(b,c){for(var a=0;16>a;a++){var f=c+a,d=b[f];b[f]=(d<<8|d>>>24)&16711935|(d<<24|d>>>8)&4278255360}for(var f=this._hash.words,d=f[0],e=f[1],g=f[2],h=f[3],a=0;64>a;a+=4)16>a?(d=k(d,e,g,h,b[c+a],7,i[a]),h=k(h,d,e,g,b[c+a+1],12,i[a+1]),g=k(g,h,d,e,b[c+a+2],17,i[a+2]),e=k(e,g,h,d,b[c+a+3],22,i[a+3])):32>a?(d=l(d,e,g,h,b[c+(a+1)%16],5,i[a]),h=l(h,d,e,g,b[c+(a+6)%16],9,i[a+1]),g=l(g,h,d,e,b[c+(a+11)%16],14,i[a+2]),e=l(e,g,h,d,b[c+a%16],20,i[a+3])):48>a?(d= 9 | m(d,e,g,h,b[c+(3*a+5)%16],4,i[a]),h=m(h,d,e,g,b[c+(3*a+8)%16],11,i[a+1]),g=m(g,h,d,e,b[c+(3*a+11)%16],16,i[a+2]),e=m(e,g,h,d,b[c+(3*a+14)%16],23,i[a+3])):(d=n(d,e,g,h,b[c+3*a%16],6,i[a]),h=n(h,d,e,g,b[c+(3*a+7)%16],10,i[a+1]),g=n(g,h,d,e,b[c+(3*a+14)%16],15,i[a+2]),e=n(e,g,h,d,b[c+(3*a+5)%16],21,i[a+3]));f[0]=f[0]+d|0;f[1]=f[1]+e|0;f[2]=f[2]+g|0;f[3]=f[3]+h|0},_doFinalize:function(){var b=this._data,c=b.words,a=8*this._nDataBytes,f=8*b.sigBytes;c[f>>>5]|=128<<24-f%32;c[(f+64>>>9<<4)+14]=(a<<8|a>>> 10 | 24)&16711935|(a<<24|a>>>8)&4278255360;b.sigBytes=4*(c.length+1);this._process();b=this._hash.words;for(c=0;4>c;c++)a=b[c],b[c]=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360}});o.MD5=j._createHelper(p);o.HmacMD5=j._createHmacHelper(p)})(Math); 11 | -------------------------------------------------------------------------------- /lib/snov/numbers.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @author Sergey Novikov 3 | */ 4 | numbers = { 5 | /* 6 | asciiToHex : function(str) { 7 | var result = ""; 8 | for (var i = 0; i < str.length; i++) { 9 | code = str.charCodeAt(i); 10 | if (!isNaN(code)) { 11 | result += code.toString(16); 12 | } else { 13 | return "NaN"; 14 | } 15 | } 16 | return result; 17 | }, 18 | hexToAscii : function(str) { 19 | if (/[^0-9a-f]/.test(str)) { 20 | return "NaN"; 21 | } 22 | var result = ""; 23 | while (str.length >= 2) { 24 | var code = parseInt(str.substring(0, 2), 16); 25 | if (!isNaN(code)) { 26 | result = result + String.fromCharCode(code); 27 | } else { 28 | return "NaN"; 29 | } 30 | str = str.substring(2, str.length); 31 | } 32 | return result; 33 | }, 34 | */ 35 | decToHex : function(str) { 36 | if (/[^\d]/.test(str)) { 37 | return "NaN"; 38 | } 39 | return this.convert(str, 10, 16); 40 | }, 41 | hexToDec : function(str) { 42 | if (/[^0-9a-f]/.test(str)) { 43 | return "NaN"; 44 | } 45 | return this.convert(str, 16, 10); 46 | }, 47 | decToBin : function(str) { 48 | if (/[^\d]/.test(str)) { 49 | return "NaN"; 50 | } 51 | return this.convert(str, 10, 2); 52 | }, 53 | binToDec : function(str) { 54 | if (/[^01]/.test(str)) { 55 | return "NaN"; 56 | } 57 | return this.convert(str, 2, 10); 58 | }, 59 | convert : function(str, from, to) { 60 | if (from < 2 || from > 36 || to < 2 || to > 36) { 61 | return "NaN" 62 | } 63 | if (str.length == 0) { 64 | return ""; 65 | } 66 | var code = parseInt(str, from); 67 | if (code == code + 1) { 68 | return "Out of range"; 69 | } else if (isNaN(code)) { 70 | return "NaN"; 71 | } else { 72 | return code.toString(to); 73 | } 74 | } 75 | }; 76 | -------------------------------------------------------------------------------- /lib/cryptojs/components/rabbit-min.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | (function(){function k(){var c=this._X,b=this._C;b[0]=b[0]+1295307597+this._b|0;b[1]=b[1]+3545052371+(1295307597>b[0]>>>0?1:0)|0;b[2]=b[2]+886263092+(3545052371>b[1]>>>0?1:0)|0;b[3]=b[3]+1295307597+(886263092>b[2]>>>0?1:0)|0;b[4]=b[4]+3545052371+(1295307597>b[3]>>>0?1:0)|0;b[5]=b[5]+886263092+(3545052371>b[4]>>>0?1:0)|0;b[6]=b[6]+1295307597+(886263092>b[5]>>>0?1:0)|0;b[7]=b[7]+3545052371+(1295307597>b[6]>>>0?1:0)|0;this._b=3545052371>b[7]>>>0?1:0;for(var a=0;8>a;a++){var d=c[a]+b[a],e=d&65535,g=d>>> 8 | 16;h[a]=((e*e>>>17)+e*g>>>15)+g*g^((d&4294901760)*d|0)+((d&65535)*d|0)}var b=h[0],a=h[1],d=h[2],e=h[3],g=h[4],f=h[5],i=h[6],j=h[7];c[0]=b+(j<<16|j>>>16)+(i<<16|i>>>16)|0;c[1]=a+(b<<8|b>>>24)+j|0;c[2]=d+(a<<16|a>>>16)+(b<<16|b>>>16)|0;c[3]=e+(d<<8|d>>>24)+a|0;c[4]=g+(e<<16|e>>>16)+(d<<16|d>>>16)|0;c[5]=f+(g<<8|g>>>24)+e|0;c[6]=i+(f<<16|f>>>16)+(g<<16|g>>>16)|0;c[7]=j+(i<<8|i>>>24)+f|0}var l=CryptoJS,m=l.lib.StreamCipher,f=[],h=[],n=l.algo.Rabbit=m.extend({_doReset:function(){for(var c=this._key.words, 9 | b=c[0],a=c[1],d=c[2],e=c[3],c=this._X=[b,e<<16|d>>>16,a,b<<16|e>>>16,d,a<<16|b>>>16,e,d<<16|a>>>16],b=this._C=[d<<16|d>>>16,b&4294901760|a&65535,e<<16|e>>>16,a&4294901760|d&65535,b<<16|b>>>16,d&4294901760|e&65535,a<<16|a>>>16,e&4294901760|b&65535],a=this._b=0;4>a;a++)k.call(this);for(a=0;8>a;a++)b[a]^=c[a+4&7];if(c=this.cfg.iv){a=c.words;c=a[0];a=a[1];c=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360;a=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360;d=c>>>16|a&4294901760;e=a<<16|c&65535;b[0]^=c;b[1]^= 10 | d;b[2]^=a;b[3]^=e;b[4]^=c;b[5]^=d;b[6]^=a;b[7]^=e;for(a=0;4>a;a++)k.call(this)}},_doProcessBlock:function(c,b){var a=this._X;k.call(this);f[0]=a[0]^a[5]>>>16^a[3]<<16;f[1]=a[2]^a[7]>>>16^a[5]<<16;f[2]=a[4]^a[1]>>>16^a[7]<<16;f[3]=a[6]^a[3]>>>16^a[1]<<16;for(a=0;4>a;a++){var d=f[a],d=(d<<8|d>>>24)&16711935|(d<<24|d>>>8)&4278255360;c[b+a]^=d}},blockSize:4,ivSize:2});l.Rabbit=m._createHelper(n)})(); 11 | -------------------------------------------------------------------------------- /lib/cryptojs/components/aes-min.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | (function(){var r=CryptoJS,u=r.lib.BlockCipher,o=r.algo,g=[],v=[],w=[],x=[],y=[],z=[],p=[],q=[],s=[],t=[];(function(){for(var b=[],c=0;256>c;c++)b[c]=128>c?c<<1:c<<1^283;for(var a=0,f=0,c=0;256>c;c++){var d=f^f<<1^f<<2^f<<3^f<<4,d=d>>>8^d&255^99;g[a]=d;v[d]=a;var e=b[a],A=b[e],h=b[A],i=257*b[d]^16843008*d;w[a]=i<<24|i>>>8;x[a]=i<<16|i>>>16;y[a]=i<<8|i>>>24;z[a]=i;i=16843009*h^65537*A^257*e^16843008*a;p[d]=i<<24|i>>>8;q[d]=i<<16|i>>>16;s[d]=i<<8|i>>>24;t[d]=i;a?(a=e^b[b[b[h^e]]],f^=b[b[f]]):a=f=1}})(); 8 | var B=[0,1,2,4,8,16,32,64,128,27,54],o=o.AES=u.extend({_doReset:function(){for(var b=this._key,c=b.words,a=b.sigBytes/4,b=4*((this._nRounds=a+6)+1),f=this._keySchedule=[],d=0;d>>24]<<24|g[e>>>16&255]<<16|g[e>>>8&255]<<8|g[e&255]):(e=e<<8|e>>>24,e=g[e>>>24]<<24|g[e>>>16&255]<<16|g[e>>>8&255]<<8|g[e&255],e^=B[d/a|0]<<24);f[d]=f[d-a]^e}c=this._invKeySchedule=[];for(a=0;aa||4>=d?e:p[g[e>>>24]]^q[g[e>>> 9 | 16&255]]^s[g[e>>>8&255]]^t[g[e&255]]},encryptBlock:function(b,c){this._doCryptBlock(b,c,this._keySchedule,w,x,y,z,g)},decryptBlock:function(b,c){var a=b[c+1];b[c+1]=b[c+3];b[c+3]=a;this._doCryptBlock(b,c,this._invKeySchedule,p,q,s,t,v);a=b[c+1];b[c+1]=b[c+3];b[c+3]=a},_doCryptBlock:function(b,c,a,f,d,e,g,h){for(var i=this._nRounds,k=b[c]^a[0],l=b[c+1]^a[1],m=b[c+2]^a[2],j=b[c+3]^a[3],n=4,r=1;r>>24]^d[l>>>16&255]^e[m>>>8&255]^g[j&255]^a[n++],p=f[l>>>24]^d[m>>>16&255]^e[j>>>8&255]^ 10 | g[k&255]^a[n++],q=f[m>>>24]^d[j>>>16&255]^e[k>>>8&255]^g[l&255]^a[n++],j=f[j>>>24]^d[k>>>16&255]^e[l>>>8&255]^g[m&255]^a[n++],k=o,l=p,m=q;o=(h[k>>>24]<<24|h[l>>>16&255]<<16|h[m>>>8&255]<<8|h[j&255])^a[n++];p=(h[l>>>24]<<24|h[m>>>16&255]<<16|h[j>>>8&255]<<8|h[k&255])^a[n++];q=(h[m>>>24]<<24|h[j>>>16&255]<<16|h[k>>>8&255]<<8|h[l&255])^a[n++];j=(h[j>>>24]<<24|h[k>>>16&255]<<16|h[l>>>8&255]<<8|h[m&255])^a[n++];b[c]=o;b[c+1]=p;b[c+2]=q;b[c+3]=j},keySize:8});r.AES=u._createHelper(o)})(); 11 | -------------------------------------------------------------------------------- /lib/snov/romanconverter.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Conversion from decimal to roman 3 | * 4 | * @author Sergey Novikov 5 | */ 6 | function RomanConverter() { 7 | } 8 | 9 | /** 10 | * @return String 11 | */ 12 | RomanConverter.prototype.decToRoman = function(str) { 13 | var rcode = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"] 14 | var dvalue = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1] 15 | var roman = ""; 16 | 17 | // validate input 18 | if (str.length == 0) { 19 | return ""; 20 | } 21 | if (/[^\d]/.test(str)) { 22 | return "NaN"; 23 | } 24 | 25 | num = parseInt(str, 10); 26 | if (num <= 0 || num >= 4000) { 27 | return "Out of range"; 28 | } 29 | for (var i = 0; i < rcode.length; i++) { 30 | while (num >= dvalue[i]) { 31 | num -= dvalue[i]; 32 | roman += rcode[i]; 33 | } 34 | } 35 | return roman; 36 | } 37 | 38 | /** 39 | * @return String 40 | */ 41 | RomanConverter.prototype.romanToDec = function(str) { 42 | var decimal = 0; 43 | var lastNumber = 0; 44 | 45 | // validate input 46 | if (str.length == 0) { 47 | return ""; 48 | } 49 | str = str.toUpperCase(); 50 | if (/[^MDCLXVI]/.test(str)) { 51 | return "NaN" 52 | } 53 | 54 | var processDecimal = function(decimal, lastNumber, lastDecimal) { 55 | if (lastNumber > decimal) { 56 | return lastDecimal - decimal; 57 | } else { 58 | return lastDecimal + decimal; 59 | } 60 | } 61 | 62 | for (var i = str.length - 1; i >= 0; i--) { 63 | switch (str.charAt(i)) { 64 | case 'M': 65 | decimal = processDecimal(1000, lastNumber, decimal); 66 | lastNumber = 1000; 67 | break; 68 | case 'D': 69 | decimal = processDecimal(500, lastNumber, decimal); 70 | lastNumber = 500; 71 | break; 72 | case 'C': 73 | decimal = processDecimal(100, lastNumber, decimal); 74 | lastNumber = 100; 75 | break; 76 | case 'L': 77 | decimal = processDecimal(50, lastNumber, decimal); 78 | lastNumber = 50; 79 | break; 80 | case 'X': 81 | decimal = processDecimal(10, lastNumber, decimal); 82 | lastNumber = 10; 83 | break; 84 | case 'V': 85 | decimal = processDecimal(5, lastNumber, decimal); 86 | lastNumber = 5; 87 | break; 88 | case 'I': 89 | decimal = processDecimal(1, lastNumber, decimal); 90 | lastNumber = 1; 91 | break; 92 | } 93 | } 94 | return decimal; 95 | } 96 | -------------------------------------------------------------------------------- /popup.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | 3 | /* 4 | * I decided to leave popout button on the popout page 5 | * 6 | if (typeof chrome.extension != "undefined") { 7 | if (chrome.extension.getBackgroundPage().separatePopup == true) { 8 | $("#popup").hide(); 9 | } else { 10 | $("#popup").show(); 11 | } 12 | } 13 | */ 14 | 15 | /* 16 | * Events registration 17 | */ 18 | $("#input").keyup(function () { 19 | hasher.update(); 20 | }); 21 | $("#input").change(function () { 22 | hasher.update(); 23 | }); 24 | 25 | // Open separate window (pop-out) 26 | $("#button-popout").click(function () { 27 | if (typeof chrome.extension != "undefined") { 28 | //chrome.extension.getBackgroundPage().separatePopup = true; 29 | /* 30 | chrome.windows.create({ 31 | url: 'popup.html', 32 | type: 'popup', 33 | width: 700, 34 | height: 800 35 | }); 36 | */ 37 | chrome.tabs.create({ 38 | url: 'popup.html' 39 | }); 40 | } 41 | }); 42 | 43 | // Click on tab (Hash/HMAC/...) 44 | $("#tabs li").click(function () { 45 | // highlight active tab, remove highlight on everything else 46 | $("#tabs li").removeClass("on"); 47 | $(this).addClass("on"); 48 | 49 | // show/hide optional fields 50 | if (tabs[this.id] == tabs.hmac || tabs[this.id] == tabs.cipher) { 51 | $("#input-password-wrapper").show(); 52 | } else { 53 | $("#input-password-wrapper").hide(); 54 | } 55 | 56 | hasher.tab = tabs[this.id]; 57 | hasher.init(); 58 | hasher.update(); 59 | $("#input-value").focus(); 60 | }); 61 | 62 | /* 63 | * Animations 64 | */ 65 | $(".buttons-2").mouseenter(function(){ 66 | $(this).animate( 67 | { 68 | opacity: 0.8 69 | }, 70 | 150 71 | ); 72 | }); 73 | $(".buttons-2").mouseleave(function(){ 74 | $(this).animate( 75 | { 76 | opacity: 0.4 77 | }, 78 | 300 79 | ); 80 | }); 81 | 82 | 83 | /* 84 | * Hash navigation 85 | */ 86 | onHashChange = function () { 87 | var hash = window.location.hash.slice(1) 88 | $(".screens").hide(); 89 | if (hash == "info") { 90 | $("#screen-2").show().scrollTop(); 91 | } else { 92 | $("#screen-1").show().scrollTop(); 93 | } 94 | } 95 | $(window).bind('hashchange', onHashChange); 96 | 97 | /* 98 | * Init 99 | */ 100 | onHashChange(); 101 | hasher.init(); 102 | hasher.update(); 103 | 104 | // Focus hack, see http://stackoverflow.com/a/11400653/1295557 105 | if (location.search != "?focusHack") location.search = "?focusHack"; 106 | //$("#input-value").focus(); 107 | window.scrollTo(0, 0); 108 | }); -------------------------------------------------------------------------------- /lib/cryptojs/components/core-min.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | var CryptoJS=CryptoJS||function(h,o){var f={},j=f.lib={},k=j.Base=function(){function a(){}return{extend:function(b){a.prototype=this;var c=new a;b&&c.mixIn(b);c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.$super.extend(this)}}}(),i=j.WordArray=k.extend({init:function(a,b){a= 8 | this.words=a||[];this.sigBytes=b!=o?b:4*a.length},toString:function(a){return(a||p).stringify(this)},concat:function(a){var b=this.words,c=a.words,d=this.sigBytes,a=a.sigBytes;this.clamp();if(d%4)for(var e=0;e>>2]|=(c[e>>>2]>>>24-8*(e%4)&255)<<24-8*((d+e)%4);else if(65535>>2]=c[e>>>2];else b.push.apply(b,c);this.sigBytes+=a;return this},clamp:function(){var a=this.words,b=this.sigBytes;a[b>>>2]&=4294967295<<32-8*(b%4);a.length=h.ceil(b/4)},clone:function(){var a= 9 | k.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var b=[],c=0;c>>2]>>>24-8*(d%4)&255;c.push((e>>>4).toString(16));c.push((e&15).toString(16))}return c.join("")},parse:function(a){for(var b=a.length,c=[],d=0;d>>3]|=parseInt(a.substr(d,2),16)<<24-4*(d%8);return i.create(c,b/2)}},n=l.Latin1={stringify:function(a){for(var b= 10 | a.words,a=a.sigBytes,c=[],d=0;d>>2]>>>24-8*(d%4)&255));return c.join("")},parse:function(a){for(var b=a.length,c=[],d=0;d>>2]|=(a.charCodeAt(d)&255)<<24-8*(d%4);return i.create(c,b)}},q=l.Utf8={stringify:function(a){try{return decodeURIComponent(escape(n.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return n.parse(unescape(encodeURIComponent(a)))}},m=j.BufferedBlockAlgorithm=k.extend({reset:function(){this._data=i.create(); 11 | this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=q.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,c=b.words,d=b.sigBytes,e=this.blockSize,f=d/(4*e),f=a?h.ceil(f):h.max((f|0)-this._minBufferSize,0),a=f*e,d=h.min(4*a,d);if(a){for(var g=0;g0;){u[q]=[]}for(p=0;p<256;p++){B=s.charCodeAt(p/2);f=((p&1)==0)?B>>>8:B&255;e=f<<1;if(e>=256){e^=285}b=e<<1;if(b>=256){b^=285}a=b^f;G=b<<1;if(G>=256){G^=285}F=G^f;u[0][p]=[0,0];u[0][p][0]=(f<<24)|(f<<16)|(b<<8)|(f);u[0][p][1]=(G<<24)|(a<<16)|(e<<8)|(F);for(var q=1;q<8;q++){u[q][p]=[0,0];u[q][p][0]=(u[q-1][p][0]>>>8)|((u[q-1][p][1]<<24));u[q][p][1]=(u[q-1][p][1]>>>8)|((u[q-1][p][0]<<24))}}w[0]=[0,0];for(v=1;v<=h;v++){A=8*(v-1);w[v]=[0,0];w[v][0]=(u[0][A][0]&4278190080)^(u[1][A+1][0]&16711680)^(u[2][A+2][0]&65280)^(u[3][A+3][0]&255);w[v][1]=(u[4][A+4][1]&4278190080)^(u[5][A+5][1]&16711680)^(u[6][A+6][1]&65280)^(u[7][A+7][1]&255)}var z=[],y=[],n=0,j=0,d=[],o=[],m=[],l=[],g=[];var E=function(){var C,c,I,H,x;for(C=0,c=0;C<8;C++,c+=8){l[C]=[0,0];l[C][0]=((y[c]&255)<<24)^((y[c+1]&255)<<16)^((y[c+2]&255)<<8)^((y[c+3]&255));l[C][1]=((y[c+4]&255)<<24)^((y[c+5]&255)<<16)^((y[c+6]&255)<<8)^((y[c+7]&255))}for(C=0;C<8;C++){g[C]=[0,0];o[C]=[0,0];g[C][0]=l[C][0]^(o[C][0]=d[C][0]);g[C][1]=l[C][1]^(o[C][1]=d[C][1])}for(I=1;I<=h;I++){for(C=0;C<8;C++){m[C]=[0,0];for(x=0,H=56,c=0;x<8;x++,H-=8,c=H<32?1:0){m[C][0]^=u[x][(o[(C-x)&7][c]>>>(H%32))&255][0];m[C][1]^=u[x][(o[(C-x)&7][c]>>>(H%32))&255][1]}}for(C=0;C<8;C++){o[C][0]=m[C][0];o[C][1]=m[C][1]}o[0][0]^=w[I][0];o[0][1]^=w[I][1];for(C=0;C<8;C++){m[C][0]=o[C][0];m[C][1]=o[C][1];for(x=0,H=56,c=0;x<8;x++,H-=8,c=H<32?1:0){m[C][0]^=u[x][(g[(C-x)&7][c]>>>(H%32))&255][0];m[C][1]^=u[x][(g[(C-x)&7][c]>>>(H%32))&255][1]}}for(C=0;C<8;C++){g[C][0]=m[C][0];g[C][1]=m[C][1]}}for(C=0;C<8;C++){d[C][0]^=g[C][0]^l[C][0];d[C][1]^=g[C][1]^l[C][1]}};D=Whirlpool=function(c){return D.init().add(c).finalize()};D.version="3.0";D.init=function(){for(var c=32;c-->0;){z[c]=0}n=j=0;y=[0];for(c=8;c-->0;){d[c]=[0,0]}return D};var k=function(r){var c,x,t=r.toString();r=[];for(c=0;c=256){r.push(x>>>8&255)}r.push(x&255)}return r};D.add=function(c,K){if(!c){return D}if(!K){c=k(c);K=c.length*8}var r=0,t=(8-(K&7))&7,C=n&7,x,H,J,I=K;for(x=31,J=0;x>=0;x--){J+=(z[x]&255)+(I%256);z[x]=J&255;J>>>=8;I=Math.floor(I/256)}while(K>8){H=((c[r]<>>(8-t));if(H<0||H>=256){return"Whirlpool requires a byte array"}y[j++]|=H>>>C;n+=8-C;if(n==512){E();n=j=0;y=[]}y[j]=((H<<(8-C))&255);n+=C;K-=8;r++}if(K>0){H=(c[r]<>>C}else{H=0}if(C+K<8){n+=K}else{j++;n+=8-C;K-=8-C;if(n==512){E();n=j=0;y=[]}y[j]=((H<<(8-C))&255);n+=K}return D};D.finalize=function(){var r,c,t,H="",C=[],x="0123456789abcdef".split("");y[j]|=128>>>(n&7);j++;if(j>32){while(j<64){y[j++]=0}E();j=0;y=[]}while(j<32){y[j++]=0}y.push.apply(y,z);E();for(r=0,c=0;r<8;r++,c+=8){t=d[r][0];C[c]=t>>>24&255;C[c+1]=t>>>16&255;C[c+2]=t>>>8&255;C[c+3]=t&255;t=d[r][1];C[c+4]=t>>>24&255;C[c+5]=t>>>16&255;C[c+6]=t>>>8&255;C[c+7]=t&255}for(r=0;r>>4];H+=x[C[r]&15]}return H}})(); 3 | -------------------------------------------------------------------------------- /lib/cryptojs/rollups/sha1.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | var CryptoJS=CryptoJS||function(i,m){var p={},h=p.lib={},n=h.Base=function(){function a(){}return{extend:function(b){a.prototype=this;var c=new a;b&&c.mixIn(b);c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.$super.extend(this)}}}(),o=h.WordArray=n.extend({init:function(a,b){a= 8 | this.words=a||[];this.sigBytes=b!=m?b:4*a.length},toString:function(a){return(a||e).stringify(this)},concat:function(a){var b=this.words,c=a.words,d=this.sigBytes,a=a.sigBytes;this.clamp();if(d%4)for(var f=0;f>>2]|=(c[f>>>2]>>>24-8*(f%4)&255)<<24-8*((d+f)%4);else if(65535>>2]=c[f>>>2];else b.push.apply(b,c);this.sigBytes+=a;return this},clamp:function(){var a=this.words,b=this.sigBytes;a[b>>>2]&=4294967295<<32-8*(b%4);a.length=i.ceil(b/4)},clone:function(){var a= 9 | n.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var b=[],c=0;c>>2]>>>24-8*(d%4)&255;c.push((f>>>4).toString(16));c.push((f&15).toString(16))}return c.join("")},parse:function(a){for(var b=a.length,c=[],d=0;d>>3]|=parseInt(a.substr(d,2),16)<<24-4*(d%8);return o.create(c,b/2)}},g=q.Latin1={stringify:function(a){for(var b= 10 | a.words,a=a.sigBytes,c=[],d=0;d>>2]>>>24-8*(d%4)&255));return c.join("")},parse:function(a){for(var b=a.length,c=[],d=0;d>>2]|=(a.charCodeAt(d)&255)<<24-8*(d%4);return o.create(c,b)}},j=q.Utf8={stringify:function(a){try{return decodeURIComponent(escape(g.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return g.parse(unescape(encodeURIComponent(a)))}},k=h.BufferedBlockAlgorithm=n.extend({reset:function(){this._data=o.create(); 11 | this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=j.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,c=b.words,d=b.sigBytes,f=this.blockSize,e=d/(4*f),e=a?i.ceil(e):i.max((e|0)-this._minBufferSize,0),a=e*f,d=i.min(4*a,d);if(a){for(var g=0;gb;b++){if(16>b)h[b]=o[i+b]|0;else{var c=h[b-3]^h[b-8]^h[b-14]^h[b-16];h[b]=c<<1|c>>>31}c=(g<<5|g>>>27)+a+h[b];c=20>b?c+((j&k|~j&l)+1518500249):40>b?c+((j^k^l)+1859775393):60>b?c+((j&k|j&l|k&l)-1894007588):c+((j^k^l)- 14 | 899497514);a=l;l=k;k=j<<30|j>>>2;j=g;g=c}e[0]=e[0]+g|0;e[1]=e[1]+j|0;e[2]=e[2]+k|0;e[3]=e[3]+l|0;e[4]=e[4]+a|0},_doFinalize:function(){var i=this._data,h=i.words,e=8*this._nDataBytes,g=8*i.sigBytes;h[g>>>5]|=128<<24-g%32;h[(g+64>>>9<<4)+15]=e;i.sigBytes=4*h.length;this._process()}});i.SHA1=m._createHelper(n);i.HmacSHA1=m._createHmacHelper(n)})(); 15 | -------------------------------------------------------------------------------- /lib/cryptojs/components/cipher-core-min.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | CryptoJS.lib.Cipher||function(r){var f=CryptoJS,e=f.lib,i=e.Base,j=e.WordArray,o=e.BufferedBlockAlgorithm,p=f.enc.Base64,s=f.algo.EvpKDF,l=e.Cipher=o.extend({cfg:i.extend(),createEncryptor:function(a,b){return this.create(this._ENC_XFORM_MODE,a,b)},createDecryptor:function(a,b){return this.create(this._DEC_XFORM_MODE,a,b)},init:function(a,b,c){this.cfg=this.cfg.extend(c);this._xformMode=a;this._key=b;this.reset()},reset:function(){o.reset.call(this);this._doReset()},process:function(a){this._append(a); 8 | return this._process()},finalize:function(a){a&&this._append(a);return this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){return function(a){return{encrypt:function(b,c,d){return("string"==typeof c?q:g).encrypt(a,b,c,d)},decrypt:function(b,c,d){return("string"==typeof c?q:g).decrypt(a,b,c,d)}}}}()});e.StreamCipher=l.extend({_doFinalize:function(){return this._process(!0)},blockSize:1});var k=f.mode={},t=e.BlockCipherMode=i.extend({createEncryptor:function(a, 9 | b){return this.Encryptor.create(a,b)},createDecryptor:function(a,b){return this.Decryptor.create(a,b)},init:function(a,b){this._cipher=a;this._iv=b}}),k=k.CBC=function(){function a(a,b,m){var h=this._iv;h?this._iv=r:h=this._prevBlock;for(var e=0;e>>2]&255}};e.BlockCipher=l.extend({cfg:l.cfg.extend({mode:k,padding:u}),reset:function(){l.reset.call(this);var a=this.cfg,b=a.iv,a=a.mode;if(this._xformMode==this._ENC_XFORM_MODE)var c=a.createEncryptor; 11 | else c=a.createDecryptor,this._minBufferSize=1;this._mode=c.call(a,this,b&&b.words)},_doProcessBlock:function(a,b){this._mode.processBlock(a,b)},_doFinalize:function(){var a=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){a.pad(this._data,this.blockSize);var b=this._process(!0)}else b=this._process(!0),a.unpad(b);return b},blockSize:4});var n=e.CipherParams=i.extend({init:function(a){this.mixIn(a)},toString:function(a){return(a||this.formatter).stringify(this)}}),k=(f.format={}).OpenSSL= 12 | {stringify:function(a){var b=a.ciphertext,a=a.salt,b=(a?j.create([1398893684,1701076831]).concat(a).concat(b):b).toString(p);return b=b.replace(/(.{64})/g,"$1\n")},parse:function(a){var a=p.parse(a),b=a.words;if(1398893684==b[0]&&1701076831==b[1]){var c=j.create(b.slice(2,4));b.splice(0,4);a.sigBytes-=16}return n.create({ciphertext:a,salt:c})}},g=e.SerializableCipher=i.extend({cfg:i.extend({format:k}),encrypt:function(a,b,c,d){var d=this.cfg.extend(d),e=a.createEncryptor(c,d),b=e.finalize(b),e=e.cfg; 13 | return n.create({ciphertext:b,key:c,iv:e.iv,algorithm:a,mode:e.mode,padding:e.padding,blockSize:a.blockSize,formatter:d.format})},decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);return a.createDecryptor(c,d).finalize(b.ciphertext)},_parse:function(a,b){return"string"==typeof a?b.parse(a):a}}),f=(f.kdf={}).OpenSSL={compute:function(a,b,c,d){d||(d=j.random(8));a=s.create({keySize:b+c}).compute(a,d);c=j.create(a.words.slice(b),4*c);a.sigBytes=4*b;return n.create({key:a,iv:c, 14 | salt:d})}},q=e.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:f}),encrypt:function(a,b,c,d){d=this.cfg.extend(d);c=d.kdf.compute(c,a.keySize,a.ivSize);d.iv=c.iv;a=g.encrypt.call(this,a,b,c.key,d);a.mixIn(c);return a},decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);c=d.kdf.compute(c,a.keySize,a.ivSize,b.salt);d.iv=c.iv;return g.decrypt.call(this,a,b,c.key,d)}})}(); 15 | -------------------------------------------------------------------------------- /lib/cryptojs/rollups/sha256.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | var CryptoJS=CryptoJS||function(i,p){var f={},q=f.lib={},j=q.Base=function(){function a(){}return{extend:function(h){a.prototype=this;var d=new a;h&&d.mixIn(h);d.$super=this;return d},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var d in a)a.hasOwnProperty(d)&&(this[d]=a[d]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.$super.extend(this)}}}(),k=q.WordArray=j.extend({init:function(a,h){a= 8 | this.words=a||[];this.sigBytes=h!=p?h:4*a.length},toString:function(a){return(a||m).stringify(this)},concat:function(a){var h=this.words,d=a.words,c=this.sigBytes,a=a.sigBytes;this.clamp();if(c%4)for(var b=0;b>>2]|=(d[b>>>2]>>>24-8*(b%4)&255)<<24-8*((c+b)%4);else if(65535>>2]=d[b>>>2];else h.push.apply(h,d);this.sigBytes+=a;return this},clamp:function(){var a=this.words,b=this.sigBytes;a[b>>>2]&=4294967295<<32-8*(b%4);a.length=i.ceil(b/4)},clone:function(){var a= 9 | j.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var b=[],d=0;d>>2]>>>24-8*(c%4)&255;d.push((e>>>4).toString(16));d.push((e&15).toString(16))}return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c>>3]|=parseInt(a.substr(c,2),16)<<24-4*(c%8);return k.create(d,b/2)}},s=r.Latin1={stringify:function(a){for(var b= 10 | a.words,a=a.sigBytes,d=[],c=0;c>>2]>>>24-8*(c%4)&255));return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c>>2]|=(a.charCodeAt(c)&255)<<24-8*(c%4);return k.create(d,b)}},g=r.Utf8={stringify:function(a){try{return decodeURIComponent(escape(s.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return s.parse(unescape(encodeURIComponent(a)))}},b=q.BufferedBlockAlgorithm=j.extend({reset:function(){this._data=k.create(); 11 | this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=g.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,d=b.words,c=b.sigBytes,e=this.blockSize,f=c/(4*e),f=a?i.ceil(f):i.max((f|0)-this._minBufferSize,0),a=f*e,c=i.min(4*a,c);if(a){for(var g=0;ge;)f(b)&&(8>e&&(k[e]=g(i.pow(b,0.5))),r[e]=g(i.pow(b,1/3)),e++),b++})();var m=[],j=j.SHA256=f.extend({_doReset:function(){this._hash=q.create(k.slice(0))},_doProcessBlock:function(f,g){for(var b=this._hash.words,e=b[0],a=b[1],h=b[2],d=b[3],c=b[4],i=b[5],j=b[6],k=b[7],l=0;64> 14 | l;l++){if(16>l)m[l]=f[g+l]|0;else{var n=m[l-15],o=m[l-2];m[l]=((n<<25|n>>>7)^(n<<14|n>>>18)^n>>>3)+m[l-7]+((o<<15|o>>>17)^(o<<13|o>>>19)^o>>>10)+m[l-16]}n=k+((c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25))+(c&i^~c&j)+r[l]+m[l];o=((e<<30|e>>>2)^(e<<19|e>>>13)^(e<<10|e>>>22))+(e&a^e&h^a&h);k=j;j=i;i=c;c=d+n|0;d=h;h=a;a=e;e=n+o|0}b[0]=b[0]+e|0;b[1]=b[1]+a|0;b[2]=b[2]+h|0;b[3]=b[3]+d|0;b[4]=b[4]+c|0;b[5]=b[5]+i|0;b[6]=b[6]+j|0;b[7]=b[7]+k|0},_doFinalize:function(){var f=this._data,g=f.words,b=8*this._nDataBytes, 15 | e=8*f.sigBytes;g[e>>>5]|=128<<24-e%32;g[(e+64>>>9<<4)+15]=b;f.sigBytes=4*g.length;this._process()}});p.SHA256=f._createHelper(j);p.HmacSHA256=f._createHmacHelper(j)})(Math); 16 | -------------------------------------------------------------------------------- /lib/cryptojs/components/sha512-min.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | (function(){function a(){return v.create.apply(v,arguments)}var d=CryptoJS,r=d.lib.Hasher,e=d.x64,v=e.Word,S=e.WordArray,e=d.algo,da=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317), 8 | a(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291, 9 | 2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899), 10 | a(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470, 11 | 3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],s=[];(function(){for(var T=0;80>T;T++)s[T]=a()})();e=e.SHA512=r.extend({_doReset:function(){this._hash=S.create([a(1779033703,4089235720),a(3144134277,2227873595),a(1013904242,4271175723),a(2773480762,1595750129),a(1359893119,2917565137),a(2600822924,725511199),a(528734635,4215389547),a(1541459225,327033209)])},_doProcessBlock:function(a,e){for(var f=this._hash.words,C=f[0],d=f[1],D=f[2],E=f[3],F=f[4],G=f[5],H= 12 | f[6],f=f[7],r=C.high,I=C.low,v=d.high,J=d.low,X=D.high,K=D.low,Y=E.high,L=E.low,Z=F.high,M=F.low,$=G.high,N=G.low,aa=H.high,O=H.low,ba=f.high,P=f.low,j=r,g=I,w=v,t=J,x=X,u=K,U=Y,y=L,k=Z,h=M,Q=$,z=N,R=aa,A=O,V=ba,B=P,l=0;80>l;l++){var o=s[l];if(16>l)var i=o.high=a[e+2*l]|0,b=o.low=a[e+2*l+1]|0;else{var i=s[l-15],b=i.high,m=i.low,i=(m<<31|b>>>1)^(m<<24|b>>>8)^b>>>7,m=(b<<31|m>>>1)^(b<<24|m>>>8)^(b<<25|m>>>7),q=s[l-2],b=q.high,c=q.low,q=(c<<13|b>>>19)^(b<<3|c>>>29)^b>>>6,c=(b<<13|c>>>19)^(c<<3|b>>>29)^ 13 | (b<<26|c>>>6),b=s[l-7],W=b.high,p=s[l-16],n=p.high,p=p.low,b=m+b.low,i=i+W+(b>>>0>>0?1:0),b=b+c,i=i+q+(b>>>0>>0?1:0),b=b+p,i=i+n+(b>>>0

>>0?1:0);o.high=i;o.low=b}var W=k&Q^~k&R,p=h&z^~h&A,o=j&w^j&x^w&x,S=g&t^g&u^t&u,m=(g<<4|j>>>28)^(j<<30|g>>>2)^(j<<25|g>>>7),q=(j<<4|g>>>28)^(g<<30|j>>>2)^(g<<25|j>>>7),c=da[l],ea=c.high,ca=c.low,c=B+((k<<18|h>>>14)^(k<<14|h>>>18)^(h<<23|k>>>9)),n=V+((h<<18|k>>>14)^(h<<14|k>>>18)^(k<<23|h>>>9))+(c>>>0>>0?1:0),c=c+p,n=n+W+(c>>>0

>>0?1:0),c=c+ca,n=n+ea+ 14 | (c>>>0>>0?1:0),c=c+b,n=n+i+(c>>>0>>0?1:0),b=q+S,o=m+o+(b>>>0>>0?1:0),V=R,B=A,R=Q,A=z,Q=k,z=h,h=y+c|0,k=U+n+(h>>>0>>0?1:0)|0,U=x,y=u,x=w,u=t,w=j,t=g,g=c+b|0,j=n+o+(g>>>0>>0?1:0)|0}I=C.low=I+g|0;C.high=r+j+(I>>>0>>0?1:0)|0;J=d.low=J+t|0;d.high=v+w+(J>>>0>>0?1:0)|0;K=D.low=K+u|0;D.high=X+x+(K>>>0>>0?1:0)|0;L=E.low=L+y|0;E.high=Y+U+(L>>>0>>0?1:0)|0;M=F.low=M+h|0;F.high=Z+k+(M>>>0>>0?1:0)|0;N=G.low=N+z|0;G.high=$+Q+(N>>>0>>0?1:0)|0;O=H.low=O+A|0;H.high=aa+R+(O>>>0>> 15 | 0?1:0)|0;P=f.low=P+B|0;f.high=ba+V+(P>>>0>>0?1:0)|0},_doFinalize:function(){var a=this._data,d=a.words,f=8*this._nDataBytes,e=8*a.sigBytes;d[e>>>5]|=128<<24-e%32;d[(e+128>>>10<<5)+31]=f;a.sigBytes=4*d.length;this._process();this._hash=this._hash.toX32()},blockSize:32});d.SHA512=r._createHelper(e);d.HmacSHA512=r._createHmacHelper(e)})(); 16 | -------------------------------------------------------------------------------- /lib/cryptojs/rollups/hmac-sha1.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | var CryptoJS=CryptoJS||function(i,j){var f={},b=f.lib={},m=b.Base=function(){function a(){}return{extend:function(e){a.prototype=this;var c=new a;e&&c.mixIn(e);c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.$super.extend(this)}}}(),l=b.WordArray=m.extend({init:function(a,e){a= 8 | this.words=a||[];this.sigBytes=e!=j?e:4*a.length},toString:function(a){return(a||d).stringify(this)},concat:function(a){var e=this.words,c=a.words,o=this.sigBytes,a=a.sigBytes;this.clamp();if(o%4)for(var b=0;b>>2]|=(c[b>>>2]>>>24-8*(b%4)&255)<<24-8*((o+b)%4);else if(65535>>2]=c[b>>>2];else e.push.apply(e,c);this.sigBytes+=a;return this},clamp:function(){var a=this.words,e=this.sigBytes;a[e>>>2]&=4294967295<<32-8*(e%4);a.length=i.ceil(e/4)},clone:function(){var a= 9 | m.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var e=[],c=0;c>>2]>>>24-8*(b%4)&255;c.push((d>>>4).toString(16));c.push((d&15).toString(16))}return c.join("")},parse:function(a){for(var e=a.length,c=[],b=0;b>>3]|=parseInt(a.substr(b,2),16)<<24-4*(b%8);return l.create(c,e/2)}},h=n.Latin1={stringify:function(a){for(var e= 10 | a.words,a=a.sigBytes,b=[],d=0;d>>2]>>>24-8*(d%4)&255));return b.join("")},parse:function(a){for(var b=a.length,c=[],d=0;d>>2]|=(a.charCodeAt(d)&255)<<24-8*(d%4);return l.create(c,b)}},k=n.Utf8={stringify:function(a){try{return decodeURIComponent(escape(h.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return h.parse(unescape(encodeURIComponent(a)))}},g=b.BufferedBlockAlgorithm=m.extend({reset:function(){this._data=l.create(); 11 | this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=k.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,c=b.words,d=b.sigBytes,f=this.blockSize,g=d/(4*f),g=a?i.ceil(g):i.max((g|0)-this._minBufferSize,0),a=g*f,d=i.min(4*a,d);if(a){for(var h=0;he;e++){if(16>e)b[e]=f[i+e]|0;else{var c=b[e-3]^b[e-8]^b[e-14]^b[e-16];b[e]=c<<1|c>>>31}c=(h<<5|h>>>27)+a+b[e];c=20>e?c+((k&g|~k&j)+1518500249):40>e?c+((k^g^j)+1859775393):60>e?c+((k&g|k&j|g&j)-1894007588):c+((k^g^j)- 14 | 899497514);a=j;j=g;g=k<<30|k>>>2;k=h;h=c}d[0]=d[0]+h|0;d[1]=d[1]+k|0;d[2]=d[2]+g|0;d[3]=d[3]+j|0;d[4]=d[4]+a|0},_doFinalize:function(){var b=this._data,f=b.words,d=8*this._nDataBytes,h=8*b.sigBytes;f[h>>>5]|=128<<24-h%32;f[(h+64>>>9<<4)+15]=d;b.sigBytes=4*f.length;this._process()}});i.SHA1=j._createHelper(m);i.HmacSHA1=j._createHmacHelper(m)})(); 15 | (function(){var i=CryptoJS,j=i.enc.Utf8;i.algo.HMAC=i.lib.Base.extend({init:function(f,b){f=this._hasher=f.create();"string"==typeof b&&(b=j.parse(b));var i=f.blockSize,l=4*i;b.sigBytes>l&&(b=f.finalize(b));for(var n=this._oKey=b.clone(),d=this._iKey=b.clone(),h=n.words,k=d.words,g=0;g>>2]|=(d[b>>>2]>>>24-8*(b%4)&255)<<24-8*((c+b)%4);else if(65535>>2]=d[b>>>2];else i.push.apply(i,d);this.sigBytes+=a;return this},clamp:function(){var a=this.words,b=this.sigBytes;a[b>>>2]&=4294967295<<32-8*(b%4);a.length=h.ceil(b/4)},clone:function(){var a= 9 | k.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var b=[],d=0;d>>2]>>>24-8*(c%4)&255;d.push((e>>>4).toString(16));d.push((e&15).toString(16))}return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c>>3]|=parseInt(a.substr(c,2),16)<<24-4*(c%8);return j.create(d,b/2)}},q=p.Latin1={stringify:function(a){for(var b= 10 | a.words,a=a.sigBytes,d=[],c=0;c>>2]>>>24-8*(c%4)&255));return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c>>2]|=(a.charCodeAt(c)&255)<<24-8*(c%4);return j.create(d,b)}},r=p.Utf8={stringify:function(a){try{return decodeURIComponent(escape(q.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return q.parse(unescape(encodeURIComponent(a)))}},b=g.BufferedBlockAlgorithm=k.extend({reset:function(){this._data=j.create(); 11 | this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=r.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,d=b.words,c=b.sigBytes,e=this.blockSize,f=c/(4*e),f=a?h.ceil(f):h.max((f|0)-this._minBufferSize,0),a=f*e,c=h.min(4*a,c);if(a){for(var g=0;ge;)f(b)&&(8>e&&(j[e]=g(h.pow(b,0.5))),p[e]=g(h.pow(b,1/3)),e++),b++})();var n=[],k=k.SHA256=f.extend({_doReset:function(){this._hash=g.create(j.slice(0))},_doProcessBlock:function(f,g){for(var b=this._hash.words,e=b[0],a=b[1],i=b[2],d=b[3],c=b[4],h=b[5],k=b[6],l=b[7],m=0;64> 14 | m;m++){if(16>m)n[m]=f[g+m]|0;else{var j=n[m-15],o=n[m-2];n[m]=((j<<25|j>>>7)^(j<<14|j>>>18)^j>>>3)+n[m-7]+((o<<15|o>>>17)^(o<<13|o>>>19)^o>>>10)+n[m-16]}j=l+((c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25))+(c&h^~c&k)+p[m]+n[m];o=((e<<30|e>>>2)^(e<<19|e>>>13)^(e<<10|e>>>22))+(e&a^e&i^a&i);l=k;k=h;h=c;c=d+j|0;d=i;i=a;a=e;e=j+o|0}b[0]=b[0]+e|0;b[1]=b[1]+a|0;b[2]=b[2]+i|0;b[3]=b[3]+d|0;b[4]=b[4]+c|0;b[5]=b[5]+h|0;b[6]=b[6]+k|0;b[7]=b[7]+l|0},_doFinalize:function(){var f=this._data,g=f.words,b=8*this._nDataBytes, 15 | e=8*f.sigBytes;g[e>>>5]|=128<<24-e%32;g[(e+64>>>9<<4)+15]=b;f.sigBytes=4*g.length;this._process()}});l.SHA256=f._createHelper(k);l.HmacSHA256=f._createHmacHelper(k)})(Math); 16 | (function(){var h=CryptoJS,l=h.lib.WordArray,f=h.algo,g=f.SHA256,f=f.SHA224=g.extend({_doReset:function(){this._hash=l.create([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){g._doFinalize.call(this);this._hash.sigBytes-=4}});h.SHA224=g._createHelper(f);h.HmacSHA224=g._createHmacHelper(f)})(); 17 | -------------------------------------------------------------------------------- /main.css: -------------------------------------------------------------------------------- 1 | 2 | body { 3 | /* margin: 0;*/ 4 | /* padding: 0;*/ 5 | min-width: 600px; 6 | /* min-height: 700px;*/ 7 | overflow-x: hidden; 8 | font-family: sans-serif; 9 | } 10 | 11 | ul.buttons { 12 | margin: 0; 13 | padding: 0; 14 | list-style-type: none; 15 | } 16 | ul.buttons li, a.button { 17 | display: inline-block; 18 | background: -webkit-linear-gradient(top, #f7f7f7, #ededed); 19 | border: 1px solid #d9d9d9; 20 | border-radius: 3px; 21 | color: #444; 22 | margin: 0; 23 | height: 28px; 24 | line-height: 28px; 25 | padding: 0px 10px; 26 | cursor: pointer; 27 | font-family: sans-serif; 28 | font-weight: bold; 29 | font-size: 11px; 30 | text-decoration: none; 31 | text-shadow: 0 1px 0 #ffffff; 32 | } 33 | ul.buttons li { 34 | margin-right: 5px; 35 | } 36 | ul.buttons li.l1 { 37 | margin: 0; 38 | border-radius: 3px 0 0 3px; 39 | } 40 | ul.buttons li.l2 { 41 | margin: 0; 42 | border-radius: 0; 43 | border-left: none; 44 | } 45 | ul.buttons li.l3 { 46 | border-left: none; 47 | border-radius: 0 3px 3px 0; 48 | } 49 | ul.buttons li:hover, a.button:hover { 50 | border: 1px solid #bebebe; 51 | box-shadow: 1px 1px 1px #e9e9e9; 52 | } 53 | ul.buttons li.l2:hover, ul.buttons li.l3:hover { 54 | margin-left: -1px; 55 | } 56 | ul.buttons li.on { 57 | color: #111; 58 | background: -webkit-linear-gradient(top, #efefef, #d7d7d7); 59 | border: 1px solid #b6b6b6; 60 | -webkit-box-shadow: inset 0 0 3px #c3c3c3; 61 | text-shadow: 0 1px 0 #f6f6f6; 62 | } 63 | ul.buttons li.l2.on, ul.buttons li.l3.on { 64 | margin-left: -1px; 65 | } 66 | 67 | #input { 68 | margin-top: 5px; 69 | } 70 | #input textarea { 71 | width: 100%; 72 | font-family: monospace; 73 | } 74 | #input input { 75 | width: 200px; 76 | font-family: monospace; 77 | } 78 | #input .title { 79 | font-size: 12px; 80 | font-weight: bold; 81 | font-family: sans-serif; 82 | } 83 | 84 | #output .element { 85 | margin-top: 5px; 86 | font-size: 12px; 87 | } 88 | #output .title { 89 | font-weight: bold; 90 | font-family: sans-serif; 91 | } 92 | #output .expand { 93 | position: relative; 94 | left: 10px; 95 | bottom: 0px; 96 | /* padding: 2px 18px 2px 10px;*/ 97 | padding: 2px 10px 2px 10px; 98 | background-color: #f5f5f5; 99 | /* background-image: url("images/arrow_down.png");*/ 100 | /* background-image: url("images/arrow_down.png"), -webkit-linear-gradient(top, #ffffff, #f5f5f5);*/ 101 | background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5); 102 | background-repeat: no-repeat; 103 | /* background-position: 88% center;*/ 104 | background-position: left center; 105 | border-radius: 5px 5px 0 0; 106 | border-top: 1px solid #e3e3e3; 107 | border-right: 1px solid #e0e0e0; 108 | border-left: 1px solid #eeeeee; 109 | cursor: pointer; 110 | color: #777777; 111 | font-size: 11px; 112 | display: none; 113 | text-decoration: underline; 114 | } 115 | #output .expand:hover { 116 | color: cornflowerblue; 117 | } 118 | #output .note { 119 | position: relative; 120 | left: 20px; 121 | bottom: 3px; 122 | padding: 1px 8px; 123 | border-radius: 3px; 124 | background-color: cornsilk; 125 | color: #111111; 126 | font-weight: bold; 127 | font-size: 11px; 128 | } 129 | #output .value { 130 | padding: 5px; 131 | position: relative; 132 | background-color: #f5f5f5; 133 | width: 100%; 134 | font-family: monospace; 135 | border-radius: 3px; 136 | cursor: pointer; 137 | } 138 | /*#output .value input { 139 | padding: 6px; 140 | background-color: transparent; 141 | border: none; 142 | font-family: monospace; 143 | width: 100%; 144 | cursor: pointer; 145 | }*/ 146 | #output .value textarea { 147 | font-family: monospace; 148 | font-size: 12px; 149 | margin: 0; 150 | padding: 0; 151 | background-color: transparent; 152 | border: none; 153 | width: 100%; 154 | cursor: pointer; 155 | } 156 | #output .ruler { 157 | font-family: monospace; 158 | font-size: 12px; 159 | position: absolute; 160 | left: 5px; 161 | top: 5px; 162 | } 163 | #output .ruler span:hover { 164 | outline: 1px solid dodgerblue; 165 | } 166 | 167 | #info { 168 | float: right; 169 | text-align: right; 170 | height: 30px; 171 | line-height: 30px; 172 | } 173 | /*#info a { 174 | color: #999; 175 | text-decoration: none; 176 | } 177 | #info a:hover { 178 | color: #555; 179 | }*/ 180 | 181 | .buttons-2 { 182 | opacity: 0.4; 183 | cursor: pointer; 184 | padding: 7px; 185 | /* border: 1px solid transparent;*/ 186 | /* border-radius: 3px;*/ 187 | vertical-align: top; 188 | /* margin-top: 2px;*/ 189 | } 190 | 191 | .screens { 192 | display: none; 193 | } 194 | 195 | h1 { 196 | font-size: 22px; 197 | margin: 0; 198 | padding: 0; 199 | } -------------------------------------------------------------------------------- /lib/cryptojs/rollups/md5.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | var CryptoJS=CryptoJS||function(o,q){var l={},m=l.lib={},n=m.Base=function(){function a(){}return{extend:function(e){a.prototype=this;var c=new a;e&&c.mixIn(e);c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.$super.extend(this)}}}(),j=m.WordArray=n.extend({init:function(a,e){a= 8 | this.words=a||[];this.sigBytes=e!=q?e:4*a.length},toString:function(a){return(a||r).stringify(this)},concat:function(a){var e=this.words,c=a.words,d=this.sigBytes,a=a.sigBytes;this.clamp();if(d%4)for(var b=0;b>>2]|=(c[b>>>2]>>>24-8*(b%4)&255)<<24-8*((d+b)%4);else if(65535>>2]=c[b>>>2];else e.push.apply(e,c);this.sigBytes+=a;return this},clamp:function(){var a=this.words,e=this.sigBytes;a[e>>>2]&=4294967295<<32-8*(e%4);a.length=o.ceil(e/4)},clone:function(){var a= 9 | n.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var e=[],c=0;c>>2]>>>24-8*(d%4)&255;c.push((b>>>4).toString(16));c.push((b&15).toString(16))}return c.join("")},parse:function(a){for(var b=a.length,c=[],d=0;d>>3]|=parseInt(a.substr(d,2),16)<<24-4*(d%8);return j.create(c,b/2)}},p=k.Latin1={stringify:function(a){for(var b= 10 | a.words,a=a.sigBytes,c=[],d=0;d>>2]>>>24-8*(d%4)&255));return c.join("")},parse:function(a){for(var b=a.length,c=[],d=0;d>>2]|=(a.charCodeAt(d)&255)<<24-8*(d%4);return j.create(c,b)}},h=k.Utf8={stringify:function(a){try{return decodeURIComponent(escape(p.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return p.parse(unescape(encodeURIComponent(a)))}},b=m.BufferedBlockAlgorithm=n.extend({reset:function(){this._data=j.create(); 11 | this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=h.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,c=b.words,d=b.sigBytes,f=this.blockSize,i=d/(4*f),i=a?o.ceil(i):o.max((i|0)-this._minBufferSize,0),a=i*f,d=o.min(4*a,d);if(a){for(var h=0;h>>32-d)+f}function l(b,f,a,e,c,d,g){b=b+(f&e|a&~e)+c+g;return(b<>>32-d)+f}function m(b,f,a,e,c,d,g){b=b+(f^a^e)+c+g;return(b<>>32-d)+f}function n(b,f,a,e,c,d,g){b=b+(a^(f|~e))+c+g;return(b<>>32-d)+f}var j=CryptoJS,k=j.lib,r=k.WordArray,k=k.Hasher,p=j.algo,h=[];(function(){for(var b=0;64>b;b++)h[b]=4294967296*o.abs(o.sin(b+1))|0})();p=p.MD5=k.extend({_doReset:function(){this._hash=r.create([1732584193,4023233417, 14 | 2562383102,271733878])},_doProcessBlock:function(b,f){for(var a=0;16>a;a++){var e=f+a,c=b[e];b[e]=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360}for(var e=this._hash.words,c=e[0],d=e[1],g=e[2],i=e[3],a=0;64>a;a+=4)16>a?(c=q(c,d,g,i,b[f+a],7,h[a]),i=q(i,c,d,g,b[f+a+1],12,h[a+1]),g=q(g,i,c,d,b[f+a+2],17,h[a+2]),d=q(d,g,i,c,b[f+a+3],22,h[a+3])):32>a?(c=l(c,d,g,i,b[f+(a+1)%16],5,h[a]),i=l(i,c,d,g,b[f+(a+6)%16],9,h[a+1]),g=l(g,i,c,d,b[f+(a+11)%16],14,h[a+2]),d=l(d,g,i,c,b[f+a%16],20,h[a+3])):48>a?(c= 15 | m(c,d,g,i,b[f+(3*a+5)%16],4,h[a]),i=m(i,c,d,g,b[f+(3*a+8)%16],11,h[a+1]),g=m(g,i,c,d,b[f+(3*a+11)%16],16,h[a+2]),d=m(d,g,i,c,b[f+(3*a+14)%16],23,h[a+3])):(c=n(c,d,g,i,b[f+3*a%16],6,h[a]),i=n(i,c,d,g,b[f+(3*a+7)%16],10,h[a+1]),g=n(g,i,c,d,b[f+(3*a+14)%16],15,h[a+2]),d=n(d,g,i,c,b[f+(3*a+5)%16],21,h[a+3]));e[0]=e[0]+c|0;e[1]=e[1]+d|0;e[2]=e[2]+g|0;e[3]=e[3]+i|0},_doFinalize:function(){var b=this._data,f=b.words,a=8*this._nDataBytes,e=8*b.sigBytes;f[e>>>5]|=128<<24-e%32;f[(e+64>>>9<<4)+14]=(a<<8|a>>> 16 | 24)&16711935|(a<<24|a>>>8)&4278255360;b.sigBytes=4*(f.length+1);this._process();b=this._hash.words;for(f=0;4>f;f++)a=b[f],b[f]=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360}});j.MD5=k._createHelper(p);j.HmacMD5=k._createHmacHelper(p)})(Math); 17 | -------------------------------------------------------------------------------- /lib/cryptojs/rollups/hmac-sha256.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | var CryptoJS=CryptoJS||function(h,i){var e={},f=e.lib={},l=f.Base=function(){function a(){}return{extend:function(j){a.prototype=this;var d=new a;j&&d.mixIn(j);d.$super=this;return d},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var d in a)a.hasOwnProperty(d)&&(this[d]=a[d]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.$super.extend(this)}}}(),k=f.WordArray=l.extend({init:function(a,j){a= 8 | this.words=a||[];this.sigBytes=j!=i?j:4*a.length},toString:function(a){return(a||m).stringify(this)},concat:function(a){var j=this.words,d=a.words,c=this.sigBytes,a=a.sigBytes;this.clamp();if(c%4)for(var b=0;b>>2]|=(d[b>>>2]>>>24-8*(b%4)&255)<<24-8*((c+b)%4);else if(65535>>2]=d[b>>>2];else j.push.apply(j,d);this.sigBytes+=a;return this},clamp:function(){var a=this.words,b=this.sigBytes;a[b>>>2]&=4294967295<<32-8*(b%4);a.length=h.ceil(b/4)},clone:function(){var a= 9 | l.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var b=[],d=0;d>>2]>>>24-8*(c%4)&255;d.push((e>>>4).toString(16));d.push((e&15).toString(16))}return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c>>3]|=parseInt(a.substr(c,2),16)<<24-4*(c%8);return k.create(d,b/2)}},q=o.Latin1={stringify:function(a){for(var b= 10 | a.words,a=a.sigBytes,d=[],c=0;c>>2]>>>24-8*(c%4)&255));return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c>>2]|=(a.charCodeAt(c)&255)<<24-8*(c%4);return k.create(d,b)}},r=o.Utf8={stringify:function(a){try{return decodeURIComponent(escape(q.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return q.parse(unescape(encodeURIComponent(a)))}},b=f.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=k.create(); 11 | this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=r.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,d=b.words,c=b.sigBytes,e=this.blockSize,g=c/(4*e),g=a?h.ceil(g):h.max((g|0)-this._minBufferSize,0),a=g*e,c=h.min(4*a,c);if(a){for(var f=0;fg;)e(b)&&(8>g&&(k[g]=f(h.pow(b,0.5))),o[g]=f(h.pow(b,1/3)),g++),b++})();var m=[],l=l.SHA256=e.extend({_doReset:function(){this._hash=f.create(k.slice(0))},_doProcessBlock:function(e,f){for(var b=this._hash.words,g=b[0],a=b[1],j=b[2],d=b[3],c=b[4],h=b[5],l=b[6],k=b[7],n=0;64> 14 | n;n++){if(16>n)m[n]=e[f+n]|0;else{var i=m[n-15],p=m[n-2];m[n]=((i<<25|i>>>7)^(i<<14|i>>>18)^i>>>3)+m[n-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+m[n-16]}i=k+((c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25))+(c&h^~c&l)+o[n]+m[n];p=((g<<30|g>>>2)^(g<<19|g>>>13)^(g<<10|g>>>22))+(g&a^g&j^a&j);k=l;l=h;h=c;c=d+i|0;d=j;j=a;a=g;g=i+p|0}b[0]=b[0]+g|0;b[1]=b[1]+a|0;b[2]=b[2]+j|0;b[3]=b[3]+d|0;b[4]=b[4]+c|0;b[5]=b[5]+h|0;b[6]=b[6]+l|0;b[7]=b[7]+k|0},_doFinalize:function(){var e=this._data,f=e.words,b=8*this._nDataBytes, 15 | g=8*e.sigBytes;f[g>>>5]|=128<<24-g%32;f[(g+64>>>9<<4)+15]=b;e.sigBytes=4*f.length;this._process()}});i.SHA256=e._createHelper(l);i.HmacSHA256=e._createHmacHelper(l)})(Math); 16 | (function(){var h=CryptoJS,i=h.enc.Utf8;h.algo.HMAC=h.lib.Base.extend({init:function(e,f){e=this._hasher=e.create();"string"==typeof f&&(f=i.parse(f));var h=e.blockSize,k=4*h;f.sigBytes>k&&(f=e.finalize(f));for(var o=this._oKey=f.clone(),m=this._iKey=f.clone(),q=o.words,r=m.words,b=0;b>>2]|=(c[b>>>2]>>>24-8*(b%4)&255)<<24-8*((o+b)%4);else if(65535>>2]=c[b>>>2];else e.push.apply(e,c);this.sigBytes+=a;return this},clamp:function(){var a=this.words,e=this.sigBytes;a[e>>>2]&=4294967295<<32-8*(e%4);a.length=g.ceil(e/4)},clone:function(){var a= 9 | m.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var e=[],c=0;c>>2]>>>24-8*(b%4)&255;c.push((d>>>4).toString(16));c.push((d&15).toString(16))}return c.join("")},parse:function(a){for(var e=a.length,c=[],b=0;b>>3]|=parseInt(a.substr(b,2),16)<<24-4*(b%8);return l.create(c,e/2)}},j=n.Latin1={stringify:function(a){for(var e= 10 | a.words,a=a.sigBytes,b=[],d=0;d>>2]>>>24-8*(d%4)&255));return b.join("")},parse:function(a){for(var b=a.length,c=[],d=0;d>>2]|=(a.charCodeAt(d)&255)<<24-8*(d%4);return l.create(c,b)}},k=n.Utf8={stringify:function(a){try{return decodeURIComponent(escape(j.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return j.parse(unescape(encodeURIComponent(a)))}},h=b.BufferedBlockAlgorithm=m.extend({reset:function(){this._data=l.create(); 11 | this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=k.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,c=b.words,d=b.sigBytes,j=this.blockSize,h=d/(4*j),h=a?g.ceil(h):g.max((h|0)-this._minBufferSize,0),a=h*j,d=g.min(4*a,d);if(a){for(var f=0;fe;e++){if(16>e)b[e]=f[n+e]|0;else{var c=b[e-3]^b[e-8]^b[e-14]^b[e-16];b[e]=c<<1|c>>>31}c=(j<<5|j>>>27)+a+b[e];c=20>e?c+((k&h|~k&g)+1518500249):40>e?c+((k^h^g)+1859775393):60>e?c+((k&h|k&g|h&g)-1894007588):c+((k^h^g)- 14 | 899497514);a=g;g=h;h=k<<30|k>>>2;k=j;j=c}d[0]=d[0]+j|0;d[1]=d[1]+k|0;d[2]=d[2]+h|0;d[3]=d[3]+g|0;d[4]=d[4]+a|0},_doFinalize:function(){var b=this._data,f=b.words,d=8*this._nDataBytes,j=8*b.sigBytes;f[j>>>5]|=128<<24-j%32;f[(j+64>>>9<<4)+15]=d;b.sigBytes=4*f.length;this._process()}});g.SHA1=i._createHelper(m);g.HmacSHA1=i._createHmacHelper(m)})(); 15 | (function(){var g=CryptoJS,i=g.enc.Utf8;g.algo.HMAC=g.lib.Base.extend({init:function(f,b){f=this._hasher=f.create();"string"==typeof b&&(b=i.parse(b));var g=f.blockSize,l=4*g;b.sigBytes>l&&(b=f.finalize(b));for(var n=this._oKey=b.clone(),d=this._iKey=b.clone(),j=n.words,k=d.words,h=0;h>>2]|=(e[b>>>2]>>>24-8*(b%4)&255)<<24-8*((c+b)%4);else if(65535>>2]=e[b>>>2];else n.push.apply(n,e);this.sigBytes+=a;return this},clamp:function(){var a=this.words,b=this.sigBytes;a[b>>>2]&=4294967295<<32-8*(b%4);a.length=h.ceil(b/4)},clone:function(){var a= 9 | k.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var b=[],e=0;e>>2]>>>24-8*(c%4)&255;e.push((d>>>4).toString(16));e.push((d&15).toString(16))}return e.join("")},parse:function(a){for(var b=a.length,e=[],c=0;c>>3]|=parseInt(a.substr(c,2),16)<<24-4*(c%8);return i.create(e,b/2)}},r=o.Latin1={stringify:function(a){for(var b= 10 | a.words,a=a.sigBytes,e=[],c=0;c>>2]>>>24-8*(c%4)&255));return e.join("")},parse:function(a){for(var b=a.length,e=[],c=0;c>>2]|=(a.charCodeAt(c)&255)<<24-8*(c%4);return i.create(e,b)}},s=o.Utf8={stringify:function(a){try{return decodeURIComponent(escape(r.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return r.parse(unescape(encodeURIComponent(a)))}},b=f.BufferedBlockAlgorithm=k.extend({reset:function(){this._data=i.create(); 11 | this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=s.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,e=b.words,c=b.sigBytes,d=this.blockSize,f=c/(4*d),f=a?h.ceil(f):h.max((f|0)-this._minBufferSize,0),a=f*d,c=h.min(4*a,c);if(a){for(var g=0;gg;)d(b)&&(8>g&&(i[g]=f(h.pow(b,0.5))),o[g]=f(h.pow(b,1/3)),g++),b++})();var l=[],k=k.SHA256=d.extend({_doReset:function(){this._hash=f.create(i.slice(0))},_doProcessBlock:function(d,f){for(var b=this._hash.words,g=b[0],a=b[1],h=b[2],e=b[3],c=b[4],k=b[5],i=b[6],j=b[7],m=0;64> 14 | m;m++){if(16>m)l[m]=d[f+m]|0;else{var p=l[m-15],q=l[m-2];l[m]=((p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3)+l[m-7]+((q<<15|q>>>17)^(q<<13|q>>>19)^q>>>10)+l[m-16]}p=j+((c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25))+(c&k^~c&i)+o[m]+l[m];q=((g<<30|g>>>2)^(g<<19|g>>>13)^(g<<10|g>>>22))+(g&a^g&h^a&h);j=i;i=k;k=c;c=e+p|0;e=h;h=a;a=g;g=p+q|0}b[0]=b[0]+g|0;b[1]=b[1]+a|0;b[2]=b[2]+h|0;b[3]=b[3]+e|0;b[4]=b[4]+c|0;b[5]=b[5]+k|0;b[6]=b[6]+i|0;b[7]=b[7]+j|0},_doFinalize:function(){var d=this._data,f=d.words,b=8*this._nDataBytes, 15 | g=8*d.sigBytes;f[g>>>5]|=128<<24-g%32;f[(g+64>>>9<<4)+15]=b;d.sigBytes=4*f.length;this._process()}});j.SHA256=d._createHelper(k);j.HmacSHA256=d._createHmacHelper(k)})(Math); 16 | (function(){var h=CryptoJS,j=h.lib.WordArray,d=h.algo,f=d.SHA256,d=d.SHA224=f.extend({_doReset:function(){this._hash=j.create([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){f._doFinalize.call(this);this._hash.sigBytes-=4}});h.SHA224=f._createHelper(d);h.HmacSHA224=f._createHmacHelper(d)})(); 17 | (function(){var h=CryptoJS,j=h.enc.Utf8;h.algo.HMAC=h.lib.Base.extend({init:function(d,f){d=this._hasher=d.create();"string"==typeof f&&(f=j.parse(f));var h=d.blockSize,i=4*h;f.sigBytes>i&&(f=d.finalize(f));for(var o=this._oKey=f.clone(),l=this._iKey=f.clone(),r=o.words,s=l.words,b=0;b>>2]|=(c[b>>>2]>>>24-8*(b%4)&255)<<24-8*((d+b)%4);else if(65535>>2]=c[b>>>2];else f.push.apply(f,c);this.sigBytes+=a;return this},clamp:function(){var a=this.words,b=this.sigBytes;a[b>>>2]&=4294967295<<32-8*(b%4);a.length=l.ceil(b/4)},clone:function(){var a= 9 | p.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var b=[],c=0;c>>2]>>>24-8*(d%4)&255;c.push((e>>>4).toString(16));c.push((e&15).toString(16))}return c.join("")},parse:function(a){for(var b=a.length,c=[],d=0;d>>3]|=parseInt(a.substr(d,2),16)<<24-4*(d%8);return m.create(c,b/2)}},o=n.Latin1={stringify:function(a){for(var b= 10 | a.words,a=a.sigBytes,c=[],d=0;d>>2]>>>24-8*(d%4)&255));return c.join("")},parse:function(a){for(var b=a.length,c=[],d=0;d>>2]|=(a.charCodeAt(d)&255)<<24-8*(d%4);return m.create(c,b)}},j=n.Utf8={stringify:function(a){try{return decodeURIComponent(escape(o.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return o.parse(unescape(encodeURIComponent(a)))}},b=i.BufferedBlockAlgorithm=p.extend({reset:function(){this._data=m.create(); 11 | this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=j.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,c=b.words,d=b.sigBytes,e=this.blockSize,h=d/(4*e),h=a?l.ceil(h):l.max((h|0)-this._minBufferSize,0),a=h*e,d=l.min(4*a,d);if(a){for(var g=0;g>>32-d)+e}function g(b,e,a,f,c,d,g){b=b+(e&f|a&~f)+c+g;return(b<>>32-d)+e}function i(b,e,a,f,c,d,g){b=b+(e^a^f)+c+g;return(b<>>32-d)+e}function p(b,e,a,f,c,d,g){b=b+(a^(e|~f))+c+g;return(b<>>32-d)+e}var m=CryptoJS,n=m.lib,r=n.WordArray,n=n.Hasher,o=m.algo,j=[];(function(){for(var b=0;64>b;b++)j[b]=4294967296*l.abs(l.sin(b+1))|0})();o=o.MD5=n.extend({_doReset:function(){this._hash=r.create([1732584193,4023233417, 14 | 2562383102,271733878])},_doProcessBlock:function(b,e){for(var a=0;16>a;a++){var f=e+a,c=b[f];b[f]=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360}for(var f=this._hash.words,c=f[0],d=f[1],k=f[2],h=f[3],a=0;64>a;a+=4)16>a?(c=q(c,d,k,h,b[e+a],7,j[a]),h=q(h,c,d,k,b[e+a+1],12,j[a+1]),k=q(k,h,c,d,b[e+a+2],17,j[a+2]),d=q(d,k,h,c,b[e+a+3],22,j[a+3])):32>a?(c=g(c,d,k,h,b[e+(a+1)%16],5,j[a]),h=g(h,c,d,k,b[e+(a+6)%16],9,j[a+1]),k=g(k,h,c,d,b[e+(a+11)%16],14,j[a+2]),d=g(d,k,h,c,b[e+a%16],20,j[a+3])):48>a?(c= 15 | i(c,d,k,h,b[e+(3*a+5)%16],4,j[a]),h=i(h,c,d,k,b[e+(3*a+8)%16],11,j[a+1]),k=i(k,h,c,d,b[e+(3*a+11)%16],16,j[a+2]),d=i(d,k,h,c,b[e+(3*a+14)%16],23,j[a+3])):(c=p(c,d,k,h,b[e+3*a%16],6,j[a]),h=p(h,c,d,k,b[e+(3*a+7)%16],10,j[a+1]),k=p(k,h,c,d,b[e+(3*a+14)%16],15,j[a+2]),d=p(d,k,h,c,b[e+(3*a+5)%16],21,j[a+3]));f[0]=f[0]+c|0;f[1]=f[1]+d|0;f[2]=f[2]+k|0;f[3]=f[3]+h|0},_doFinalize:function(){var b=this._data,e=b.words,a=8*this._nDataBytes,f=8*b.sigBytes;e[f>>>5]|=128<<24-f%32;e[(f+64>>>9<<4)+14]=(a<<8|a>>> 16 | 24)&16711935|(a<<24|a>>>8)&4278255360;b.sigBytes=4*(e.length+1);this._process();b=this._hash.words;for(e=0;4>e;e++)a=b[e],b[e]=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360}});m.MD5=n._createHelper(o);m.HmacMD5=n._createHmacHelper(o)})(Math); 17 | (function(){var l=CryptoJS,q=l.enc.Utf8;l.algo.HMAC=l.lib.Base.extend({init:function(g,i){g=this._hasher=g.create();"string"==typeof i&&(i=q.parse(i));var l=g.blockSize,m=4*l;i.sigBytes>m&&(i=g.finalize(i));for(var n=this._oKey=i.clone(),r=this._iKey=i.clone(),o=n.words,j=r.words,b=0;b 2 | 3 | 4 | Hasher 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 |

41 |
42 |
  • Hash
  • HMAC
  • CRC
  • Cipher
  • Net
  • Time
  • Num
  • Strings
  • Encode
43 | 44 |
45 |
46 | Input: 47 |
48 | 49 | 55 |
56 | 57 | 58 |
59 |
60 |
61 | 62 |
63 | 64 |
65 | Back 66 |
67 | 68 |
69 | 70 | 71 | 72 |
73 | 74 |

75 | About 76 |

77 | 78 |

79 | This extension is used to compute cryptographic hashes and do common conversions. It might be useful for programmers and system administrators. 80 | It's entirely implemented in JavaScript, all calculations are performed on client side, so it's safe. 81 |

82 | 83 |
    84 |
  • 85 | Hash: 86 | MD5, SHA-1, SHA-2 (224, 256, 384, 512), RIPEMD-160, MD4, Whirpool 87 |
  • 88 |
  • 89 | HMAC: 90 | MD5, SHA-1, SHA-2 (224, 256, 384, 512), RIPEMD-160, MD4 91 |
  • 92 |
  • 93 | CRC: 94 | CRC-8, CRC-16, FCS-16, FCS/CRC-32 95 |
  • 96 |
  • 97 | Cipher (interoperable with OpenSSL): 98 | AES-256, DES, Triple DES, Rabbit, RC4, RC4Drop. CBC/Pkcs7 is used. 99 |
  • 100 |
  • 101 | Net: 102 | Subnet calculator, Ip ↔ Dec, Ip → Bin, Ip → Hex 103 |
  • 104 |
  • 105 | Time: 106 | Unix ↔ Datetime, Unix ↔ RFC-1123, Unix ↔ ISO 8601 107 |
  • 108 |
  • 109 | Numbers: 110 | Dec ↔ Hex, Dec ↔ Bin, Dec ↔ Roman 111 |
  • 112 |
  • 113 | Strings: 114 | ASCII ↔ Hex, UTF-8 ↔ Hex, UTF-16 ↔ Hex 115 |
  • 116 |
  • 117 | Encode: 118 | Base64, ROT-13, JavaScript encodeURI(), encodeURIComponent(), HTML special chars encode/decode 119 |
  • 120 |
121 | 122 |

123 | Usage: enter text and click on the result. It will be copied to clipboard. 124 |

125 | 126 |

127 | Extension is using crypto-js and other open-source libraries.
128 | See the source code on github. 129 |

130 | 131 |

132 | Developed by Sergey Novikov 133 |

134 |
135 | 136 | 137 | -------------------------------------------------------------------------------- /lib/hash/md4.js: -------------------------------------------------------------------------------- 1 | /* 2 | * A JavaScript implementation of the RSA Data Security, Inc. MD4 Message 3 | * Digest Algorithm, as defined in RFC 1320. 4 | * Version 2.1 Copyright (C) Jerrad Pierce, Paul Johnston 1999 - 2002. 5 | * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet 6 | * Distributed under the BSD License 7 | * See http://pajhome.org.uk/crypt/md5 for more info. 8 | */ 9 | 10 | var hexcase = 0; 11 | var b64pad = ""; 12 | var chrsz = 8; 13 | 14 | function hex_md4(s){ return binl2hex(core_md4(str2binl(s), s.length * chrsz));} 15 | function b64_md4(s){ return binl2b64(core_md4(str2binl(s), s.length * chrsz));} 16 | function str_md4(s){ return binl2str(core_md4(str2binl(s), s.length * chrsz));} 17 | function hex_hmac_md4(key, data) { return binl2hex(core_hmac_md4(key, data)); } 18 | function b64_hmac_md4(key, data) { return binl2b64(core_hmac_md4(key, data)); } 19 | function str_hmac_md4(key, data) { return binl2str(core_hmac_md4(key, data)); } 20 | 21 | function md4_vm_test() 22 | { 23 | return hex_md4("abc") == "a448017aaf21d8525fc10ae87aa6729d"; 24 | } 25 | 26 | function core_md4(x, len) 27 | { 28 | x[len >> 5] |= 0x80 << (len % 32); 29 | x[(((len + 64) >>> 9) << 4) + 14] = len; 30 | 31 | var a = 1732584193; 32 | var b = -271733879; 33 | var c = -1732584194; 34 | var d = 271733878; 35 | 36 | for(var i = 0; i < x.length; i += 16) 37 | { 38 | var olda = a; 39 | var oldb = b; 40 | var oldc = c; 41 | var oldd = d; 42 | 43 | a = md4_ff(a, b, c, d, x[i+ 0], 3 ); 44 | d = md4_ff(d, a, b, c, x[i+ 1], 7 ); 45 | c = md4_ff(c, d, a, b, x[i+ 2], 11); 46 | b = md4_ff(b, c, d, a, x[i+ 3], 19); 47 | a = md4_ff(a, b, c, d, x[i+ 4], 3 ); 48 | d = md4_ff(d, a, b, c, x[i+ 5], 7 ); 49 | c = md4_ff(c, d, a, b, x[i+ 6], 11); 50 | b = md4_ff(b, c, d, a, x[i+ 7], 19); 51 | a = md4_ff(a, b, c, d, x[i+ 8], 3 ); 52 | d = md4_ff(d, a, b, c, x[i+ 9], 7 ); 53 | c = md4_ff(c, d, a, b, x[i+10], 11); 54 | b = md4_ff(b, c, d, a, x[i+11], 19); 55 | a = md4_ff(a, b, c, d, x[i+12], 3 ); 56 | d = md4_ff(d, a, b, c, x[i+13], 7 ); 57 | c = md4_ff(c, d, a, b, x[i+14], 11); 58 | b = md4_ff(b, c, d, a, x[i+15], 19); 59 | 60 | a = md4_gg(a, b, c, d, x[i+ 0], 3 ); 61 | d = md4_gg(d, a, b, c, x[i+ 4], 5 ); 62 | c = md4_gg(c, d, a, b, x[i+ 8], 9 ); 63 | b = md4_gg(b, c, d, a, x[i+12], 13); 64 | a = md4_gg(a, b, c, d, x[i+ 1], 3 ); 65 | d = md4_gg(d, a, b, c, x[i+ 5], 5 ); 66 | c = md4_gg(c, d, a, b, x[i+ 9], 9 ); 67 | b = md4_gg(b, c, d, a, x[i+13], 13); 68 | a = md4_gg(a, b, c, d, x[i+ 2], 3 ); 69 | d = md4_gg(d, a, b, c, x[i+ 6], 5 ); 70 | c = md4_gg(c, d, a, b, x[i+10], 9 ); 71 | b = md4_gg(b, c, d, a, x[i+14], 13); 72 | a = md4_gg(a, b, c, d, x[i+ 3], 3 ); 73 | d = md4_gg(d, a, b, c, x[i+ 7], 5 ); 74 | c = md4_gg(c, d, a, b, x[i+11], 9 ); 75 | b = md4_gg(b, c, d, a, x[i+15], 13); 76 | 77 | a = md4_hh(a, b, c, d, x[i+ 0], 3 ); 78 | d = md4_hh(d, a, b, c, x[i+ 8], 9 ); 79 | c = md4_hh(c, d, a, b, x[i+ 4], 11); 80 | b = md4_hh(b, c, d, a, x[i+12], 15); 81 | a = md4_hh(a, b, c, d, x[i+ 2], 3 ); 82 | d = md4_hh(d, a, b, c, x[i+10], 9 ); 83 | c = md4_hh(c, d, a, b, x[i+ 6], 11); 84 | b = md4_hh(b, c, d, a, x[i+14], 15); 85 | a = md4_hh(a, b, c, d, x[i+ 1], 3 ); 86 | d = md4_hh(d, a, b, c, x[i+ 9], 9 ); 87 | c = md4_hh(c, d, a, b, x[i+ 5], 11); 88 | b = md4_hh(b, c, d, a, x[i+13], 15); 89 | a = md4_hh(a, b, c, d, x[i+ 3], 3 ); 90 | d = md4_hh(d, a, b, c, x[i+11], 9 ); 91 | c = md4_hh(c, d, a, b, x[i+ 7], 11); 92 | b = md4_hh(b, c, d, a, x[i+15], 15); 93 | 94 | a = safe_add(a, olda); 95 | b = safe_add(b, oldb); 96 | c = safe_add(c, oldc); 97 | d = safe_add(d, oldd); 98 | 99 | } 100 | return Array(a, b, c, d); 101 | 102 | } 103 | 104 | function md4_cmn(q, a, b, x, s, t) 105 | { 106 | return safe_add(rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b); 107 | } 108 | function md4_ff(a, b, c, d, x, s) 109 | { 110 | return md4_cmn((b & c) | ((~b) & d), a, 0, x, s, 0); 111 | } 112 | function md4_gg(a, b, c, d, x, s) 113 | { 114 | return md4_cmn((b & c) | (b & d) | (c & d), a, 0, x, s, 1518500249); 115 | } 116 | function md4_hh(a, b, c, d, x, s) 117 | { 118 | return md4_cmn(b ^ c ^ d, a, 0, x, s, 1859775393); 119 | } 120 | 121 | /* 122 | * Calculate the HMAC-MD4, of a key and some data 123 | */ 124 | function core_hmac_md4(key, data) 125 | { 126 | var bkey = str2binl(key); 127 | if(bkey.length > 16) bkey = core_md4(bkey, key.length * chrsz); 128 | 129 | var ipad = Array(16), opad = Array(16); 130 | for(var i = 0; i < 16; i++) 131 | { 132 | ipad[i] = bkey[i] ^ 0x36363636; 133 | opad[i] = bkey[i] ^ 0x5C5C5C5C; 134 | } 135 | 136 | var hash = core_md4(ipad.concat(str2binl(data)), 512 + data.length * chrsz); 137 | return core_md4(opad.concat(hash), 512 + 128); 138 | } 139 | 140 | function safe_add(x, y) 141 | { 142 | var lsw = (x & 0xFFFF) + (y & 0xFFFF); 143 | var msw = (x >> 16) + (y >> 16) + (lsw >> 16); 144 | return (msw << 16) | (lsw & 0xFFFF); 145 | } 146 | 147 | function rol(num, cnt) 148 | { 149 | return (num << cnt) | (num >>> (32 - cnt)); 150 | } 151 | 152 | function str2binl(str) 153 | { 154 | var bin = Array(); 155 | var mask = (1 << chrsz) - 1; 156 | for(var i = 0; i < str.length * chrsz; i += chrsz) 157 | bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32); 158 | return bin; 159 | } 160 | 161 | function binl2str(bin) 162 | { 163 | var str = ""; 164 | var mask = (1 << chrsz) - 1; 165 | for(var i = 0; i < bin.length * 32; i += chrsz) 166 | str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask); 167 | return str; 168 | } 169 | 170 | function binl2hex(binarray) 171 | { 172 | var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; 173 | var str = ""; 174 | for(var i = 0; i < binarray.length * 4; i++) 175 | { 176 | str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) + 177 | hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF); 178 | } 179 | return str; 180 | } 181 | 182 | function binl2b64(binarray) 183 | { 184 | var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 185 | var str = ""; 186 | for(var i = 0; i < binarray.length * 4; i += 3) 187 | { 188 | var triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16) 189 | | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 ) 190 | | ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF); 191 | for(var j = 0; j < 4; j++) 192 | { 193 | if(i * 8 + j * 6 > binarray.length * 32) str += b64pad; 194 | else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); 195 | } 196 | } 197 | return str; 198 | } 199 | -------------------------------------------------------------------------------- /lib/snov/ipcalc.js: -------------------------------------------------------------------------------- 1 | /** 2 | * IP calculator 3 | * 4 | * @author Sergey Novikov 5 | */ 6 | function ipCalc(str) { 7 | 8 | /* Private variables */ 9 | 10 | var ip; 11 | var netmask; 12 | var network; 13 | var broadcast; 14 | var hostMin; 15 | var hostMax; 16 | 17 | /* Private methods */ 18 | 19 | var reset = function() { 20 | ip = null; 21 | ipValid = true; 22 | netmask = null; 23 | netmaskValid = true; 24 | network = null; 25 | broadcast = null; 26 | hostMin = null; 27 | hostMax = null; 28 | } 29 | 30 | /** 31 | * Returns int value 32 | * (255.255.255.255) = 4294967295 33 | */ 34 | var octetsToInt = function(o1, o2, o3, o4) { 35 | return parseInt(o1 * 16777216) + parseInt(o2 * 65536) + parseInt(o3 * 256) + parseInt(o4); 36 | } 37 | 38 | var bitsToInt = function(bits) { 39 | if (bits > 0 && bits <= 32) { 40 | return Math.pow(2, 32) - Math.pow(2, 32 - bits); 41 | } else if (bits == 0) { 42 | return 0; 43 | } else { 44 | return NaN; 45 | } 46 | } 47 | 48 | var getPaddedBinString = function(ival) { 49 | str = ival.toString(2); 50 | if (str.length && str.length < 32) { 51 | for (var i = 32 - str.length; i > 0; i--) { 52 | str = "0" + str; 53 | } 54 | } 55 | return str; 56 | } 57 | 58 | /* 59 | * JavaScript's bitwise functions could cause sign error 60 | */ 61 | var getAnd = function(i1, i2) { 62 | bin1 = getPaddedBinString(i1); 63 | bin2 = getPaddedBinString(i2); 64 | result = ""; 65 | for (var i = 0; i < 32; i++) { 66 | if (bin1.substr(i, 1) == bin2.substr(i, 1)) { 67 | result += bin1.substr(i, 1); 68 | } else { 69 | result += "0"; 70 | } 71 | } 72 | return parseInt(result, 2); 73 | } 74 | 75 | var getBroadcast = function(ip, netmask) { 76 | bin1 = getPaddedBinString(ip); 77 | bin2 = getPaddedBinString(netmask); 78 | result = ""; 79 | for (var i = 0; i < 32; i++) { 80 | if (bin1.substr(i, 1) == "1" || bin2.substr(i, 1) == "0") { 81 | result += "1"; 82 | } else { 83 | result += "0"; 84 | } 85 | } 86 | return parseInt(result, 2); 87 | } 88 | 89 | // May also use bitsToInt() 90 | var validNetMasks = [ 91 | // 0 and 255.255.255.255 are invalid 92 | 2147483648, 3221225472, 3758096384, 4026531840, 4160749568, 93 | 4227858432, 4261412864, 4278190080, 4286578688, 4290772992, 94 | 4292870144, 4293918720, 4294443008, 4294705152, 4294836224, 95 | 4294901760, 4294934528, 4294950912, 4294959104, 4294963200, 96 | 4294965248, 4294966272, 4294966784, 4294967040, 4294967168, 97 | 4294967232, 4294967264, 4294967280, 4294967288, 4294967292 98 | ] 99 | 100 | /** 101 | * @type boolean 102 | */ 103 | var netmaskValid = true; 104 | 105 | /** 106 | * @type boolean 107 | */ 108 | var ipValid = true; 109 | 110 | /** 111 | * Validates netmask. It should one of possible 30 netmasks 112 | */ 113 | var validateNetmask = function() { 114 | var valid = false; 115 | for (var i = 0; i < validNetMasks.length; i++) { 116 | if (netmask == validNetMasks[i]) { 117 | valid = true; 118 | break; 119 | } 120 | } 121 | 122 | if (!valid) { 123 | netmaskValid = false; 124 | netmask = null; 125 | } else { 126 | netmaskValid = true; 127 | } 128 | } 129 | 130 | /** 131 | * Validates IP. IP should be in range 0 - 2^32 132 | */ 133 | var validateIp = function() { 134 | if (ip >= 0 && ip <= 4294967296) { 135 | ipValid = true; 136 | } else { 137 | ip = null; 138 | ipValid = false; 139 | } 140 | } 141 | 142 | /* Public methods */ 143 | 144 | this.parse = function(str) { 145 | reset(); 146 | 147 | if ( (matches = /(\d+)\.(\d+)\.(\d+)\.(\d+)\/(\d+)\.(\d+)\.(\d+)\.(\d+)/.exec(str)) != null) { 148 | // 1.2.3.4/255.255.255.0 149 | if (matches.length == 9 && 150 | matches[1] >= 0 && matches[2] >= 0 && matches[3] >= 0 && matches[4] >= 0 && matches[5] >= 0 && matches[6] >= 0 && matches[7] >= 0 && matches[8] >= 0 && 151 | matches[1] <= 255 && matches[2] <= 255 && matches[3] <= 255 && matches[4] <= 255 && matches[5] <= 255 && matches[6] <= 255 && matches[7] <= 255 && matches[8] <= 255) 152 | { 153 | ip = octetsToInt(matches[1], matches[2], matches[3], matches[4]); 154 | netmask = octetsToInt(matches[5], matches[6], matches[7], matches[8]); 155 | validateIp(); 156 | validateNetmask(); 157 | } 158 | } else if ( (matches = /(\d+)\.(\d+)\.(\d+)\.(\d+)\/(\d+)/.exec(str)) != null) { 159 | // 1.2.3.4/24 160 | if (matches.length == 6 && 161 | matches[1] >= 0 && matches[2] >= 0 && matches[3] >= 0 && matches[4] >= 0 && matches[5] >= 0 && 162 | matches[1] <= 255 && matches[2] <= 255 && matches[3] <= 255 && matches[4] <= 255 && matches[5] <= 32) { 163 | ip = octetsToInt(matches[1], matches[2], matches[3], matches[4]); 164 | netmask = bitsToInt(matches[5]); 165 | validateIp(); 166 | validateNetmask(); 167 | } 168 | } else if ( (matches = /(\d+)\.(\d+)\.(\d+)\.(\d+)/.exec(str)) != null) { 169 | // 1.2.3.4 170 | if (matches.length == 5 && 171 | matches[1] >= 0 && matches[2] >= 0 && matches[3] >= 0 && matches[4] >= 0 && 172 | matches[1] <= 255 && matches[2] <= 255 && matches[3] <= 255 && matches[4] <= 255) { 173 | ip = octetsToInt(matches[1], matches[2], matches[3], matches[4]); 174 | validateIp(); 175 | } 176 | } else if (/^(\s*)(\d+)/.test(str)) { 177 | // Decimal ip 178 | ip = parseInt(str, 10); 179 | validateIp(); 180 | } 181 | 182 | // if parsing was successful, calculate network 183 | if (ip != null && netmask != null) { 184 | network = getAnd(ip, netmask); 185 | broadcast = getBroadcast(ip, netmask); 186 | hostMin = network + 1; 187 | hostMax = broadcast - 1; 188 | } 189 | } 190 | 191 | this.intToOctetString = function(val) { 192 | var byte1 = (val >>> 24 ); 193 | var byte2 = (val >>> 16 ) & 255; 194 | var byte3 = (val >>> 8 ) & 255; 195 | var byte4 = val & 255; 196 | return byte1 + '.' + byte2 + '.' + byte3 + '.' + byte4; 197 | } 198 | 199 | /** 200 | * Returns string padded with zeroes 201 | */ 202 | this.getPaddedBinString = function(ival) { 203 | return getPaddedBinString(ival); 204 | } 205 | 206 | this.getIp = function() { 207 | return ip; 208 | } 209 | 210 | this.getNetmask = function() { 211 | return netmask; 212 | } 213 | 214 | this.getNetwork = function() { 215 | return network; 216 | } 217 | 218 | this.getBroadcast = function() { 219 | return broadcast; 220 | } 221 | 222 | this.gethHostMin = function() { 223 | return hostMin; 224 | } 225 | 226 | this.gethHostMax = function() { 227 | return hostMax; 228 | } 229 | 230 | this.gethHostCount = function() { 231 | return (broadcast - network - 1); 232 | } 233 | 234 | this.isNetmaskValid = function() { 235 | return netmaskValid; 236 | } 237 | 238 | this.isIpValid = function() { 239 | return ipValid; 240 | } 241 | 242 | /* Constructor */ 243 | this.parse(str); 244 | } 245 | -------------------------------------------------------------------------------- /lib/cryptojs/rollups/sha512.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | var CryptoJS=CryptoJS||function(a,g){var m={},e=m.lib={},q=e.Base=function(){function a(){}return{extend:function(b){a.prototype=this;var d=new a;b&&d.mixIn(b);d.$super=this;return d},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var k in a)a.hasOwnProperty(k)&&(this[k]=a[k]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.$super.extend(this)}}}(),r=e.WordArray=q.extend({init:function(a,b){a= 8 | this.words=a||[];this.sigBytes=b!=g?b:4*a.length},toString:function(a){return(a||n).stringify(this)},concat:function(a){var b=this.words,d=a.words,c=this.sigBytes,a=a.sigBytes;this.clamp();if(c%4)for(var i=0;i>>2]|=(d[i>>>2]>>>24-8*(i%4)&255)<<24-8*((c+i)%4);else if(65535>>2]=d[i>>>2];else b.push.apply(b,d);this.sigBytes+=a;return this},clamp:function(){var k=this.words,b=this.sigBytes;k[b>>>2]&=4294967295<<32-8*(b%4);k.length=a.ceil(b/4)},clone:function(){var a= 9 | q.clone.call(this);a.words=this.words.slice(0);return a},random:function(k){for(var b=[],d=0;d>>2]>>>24-8*(c%4)&255;d.push((i>>>4).toString(16));d.push((i&15).toString(16))}return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c>>3]|=parseInt(a.substr(c,2),16)<<24-4*(c%8);return r.create(d,b/2)}},l=y.Latin1={stringify:function(a){for(var b= 10 | a.words,a=a.sigBytes,d=[],c=0;c>>2]>>>24-8*(c%4)&255));return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c>>2]|=(a.charCodeAt(c)&255)<<24-8*(c%4);return r.create(d,b)}},da=y.Utf8={stringify:function(a){try{return decodeURIComponent(escape(l.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return l.parse(unescape(encodeURIComponent(a)))}},h=e.BufferedBlockAlgorithm=q.extend({reset:function(){this._data= 11 | r.create();this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=da.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(k){var b=this._data,d=b.words,c=b.sigBytes,i=this.blockSize,l=c/(4*i),l=k?a.ceil(l):a.max((l|0)-this._minBufferSize,0),k=l*i,c=a.min(4*k,c);if(k){for(var h=0;hl;l++)n[l]=a()})();e=e.SHA512=m.extend({_doReset:function(){this._hash=r.create([a(1779033703,4089235720),a(3144134277,2227873595),a(1013904242,4271175723),a(2773480762,1595750129),a(1359893119,2917565137),a(2600822924,725511199),a(528734635,4215389547),a(1541459225,327033209)])},_doProcessBlock:function(a,e){for(var h=this._hash.words,g=h[0],k=h[1],b=h[2],d=h[3],c=h[4],i=h[5],m= 20 | h[6],h=h[7],q=g.high,r=g.low,W=k.high,K=k.low,X=b.high,L=b.low,Y=d.high,M=d.low,Z=c.high,N=c.low,$=i.high,O=i.low,aa=m.high,P=m.low,ba=h.high,Q=h.low,t=q,o=r,E=W,C=K,F=X,D=L,T=Y,G=M,u=Z,p=N,R=$,H=O,S=aa,I=P,U=ba,J=Q,v=0;80>v;v++){var z=n[v];if(16>v)var s=z.high=a[e+2*v]|0,f=z.low=a[e+2*v+1]|0;else{var s=n[v-15],f=s.high,w=s.low,s=(w<<31|f>>>1)^(w<<24|f>>>8)^f>>>7,w=(f<<31|w>>>1)^(f<<24|w>>>8)^(f<<25|w>>>7),B=n[v-2],f=B.high,j=B.low,B=(j<<13|f>>>19)^(f<<3|j>>>29)^f>>>6,j=(f<<13|j>>>19)^(j<<3|f>>>29)^ 21 | (f<<26|j>>>6),f=n[v-7],V=f.high,A=n[v-16],x=A.high,A=A.low,f=w+f.low,s=s+V+(f>>>0>>0?1:0),f=f+j,s=s+B+(f>>>0>>0?1:0),f=f+A,s=s+x+(f>>>0>>0?1:0);z.high=s;z.low=f}var V=u&R^~u&S,A=p&H^~p&I,z=t&E^t&F^E&F,fa=o&C^o&D^C&D,w=(o<<4|t>>>28)^(t<<30|o>>>2)^(t<<25|o>>>7),B=(t<<4|o>>>28)^(o<<30|t>>>2)^(o<<25|t>>>7),j=y[v],ga=j.high,ca=j.low,j=J+((u<<18|p>>>14)^(u<<14|p>>>18)^(p<<23|u>>>9)),x=U+((p<<18|u>>>14)^(p<<14|u>>>18)^(u<<23|p>>>9))+(j>>>0>>0?1:0),j=j+A,x=x+V+(j>>>0>>0?1:0),j=j+ca,x=x+ga+ 22 | (j>>>0>>0?1:0),j=j+f,x=x+s+(j>>>0>>0?1:0),f=B+fa,z=w+z+(f>>>0>>0?1:0),U=S,J=I,S=R,I=H,R=u,H=p,p=G+j|0,u=T+x+(p>>>0>>0?1:0)|0,T=F,G=D,F=E,D=C,E=t,C=o,o=j+f|0,t=x+z+(o>>>0>>0?1:0)|0}r=g.low=r+o|0;g.high=q+t+(r>>>0>>0?1:0)|0;K=k.low=K+C|0;k.high=W+E+(K>>>0>>0?1:0)|0;L=b.low=L+D|0;b.high=X+F+(L>>>0>>0?1:0)|0;M=d.low=M+G|0;d.high=Y+T+(M>>>0>>0?1:0)|0;N=c.low=N+p|0;c.high=Z+u+(N>>>0

>>0?1:0)|0;P=k.low=P+G|0;k.high=ba+S+(P>>>0>>0?1:0)|0;Q=n.low=Q+H|0;n.high=ca+T+(Q>>> 22 | 0>>0?1:0)|0;R=c.low=R+I|0;c.high=da+V+(R>>>0>>0?1:0)|0},_doFinalize:function(){var a=this._data,b=a.words,c=8*this._nDataBytes,g=8*a.sigBytes;b[g>>>5]|=128<<24-g%32;b[(g+128>>>10<<5)+31]=c;a.sigBytes=4*b.length;this._process();this._hash=this._hash.toX32()},blockSize:32});g.SHA512=c._createHelper(b);g.HmacSHA512=c._createHmacHelper(b)})(); 23 | (function(){var a=CryptoJS,g=a.enc.Utf8;a.algo.HMAC=a.lib.Base.extend({init:function(a,b){a=this._hasher=a.create();"string"==typeof b&&(b=g.parse(b));var k=a.blockSize,n=4*k;b.sigBytes>n&&(b=a.finalize(b));for(var x=this._oKey=b.clone(),r=this._iKey=b.clone(),j=x.words,J=r.words,l=0;l>>2]|=(f[b>>>2]>>>24-8*(b%4)&255)<<24-8*((e+b)%4);else if(65535>>2]=f[b>>>2];else j.push.apply(j,f);this.sigBytes+=a;return this},clamp:function(){var u=this.words,b=this.sigBytes;u[b>>>2]&=4294967295<<32-8*(b%4);u.length=a.ceil(b/4)},clone:function(){var a= 9 | i.clone.call(this);a.words=this.words.slice(0);return a},random:function(u){for(var b=[],f=0;f>>2]>>>24-8*(e%4)&255;f.push((c>>>4).toString(16));f.push((c&15).toString(16))}return f.join("")},parse:function(a){for(var b=a.length,f=[],e=0;e>>3]|=parseInt(a.substr(e,2),16)<<24-4*(e%8);return k.create(f,b/2)}},l=x.Latin1={stringify:function(a){for(var b= 10 | a.words,a=a.sigBytes,f=[],e=0;e>>2]>>>24-8*(e%4)&255));return f.join("")},parse:function(a){for(var b=a.length,f=[],e=0;e>>2]|=(a.charCodeAt(e)&255)<<24-8*(e%4);return k.create(f,b)}},A=x.Utf8={stringify:function(a){try{return decodeURIComponent(escape(l.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return l.parse(unescape(encodeURIComponent(a)))}},m=c.BufferedBlockAlgorithm=i.extend({reset:function(){this._data=k.create(); 11 | this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=A.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(b){var c=this._data,f=c.words,e=c.sigBytes,m=this.blockSize,l=e/(4*m),l=b?a.ceil(l):a.max((l|0)-this._minBufferSize,0),b=l*m,e=a.min(4*b,e);if(b){for(var d=0;db;b++)q[b]=a()})();c=c.SHA512=b.extend({_doReset:function(){this._hash=k.create([a(1779033703,4089235720),a(3144134277,2227873595),a(1013904242,4271175723),a(2773480762,1595750129),a(1359893119,2917565137),a(2600822924,725511199),a(528734635,4215389547),a(1541459225,327033209)])},_doProcessBlock:function(a,b){for(var c=this._hash.words,d=c[0],i=c[1],j=c[2],f=c[3],e=c[4],k=c[5],K= 19 | c[6],c=c[7],Y=d.high,L=d.low,Z=i.high,M=i.low,$=j.high,N=j.low,aa=f.high,O=f.low,ba=e.high,P=e.low,ca=k.high,Q=k.low,da=K.high,R=K.low,ea=c.high,S=c.low,r=Y,n=L,E=Z,C=M,F=$,D=N,V=aa,G=O,s=ba,o=P,T=ca,H=Q,U=da,I=R,W=ea,J=S,t=0;80>t;t++){var y=q[t];if(16>t)var p=y.high=a[b+2*t]|0,g=y.low=a[b+2*t+1]|0;else{var p=q[t-15],g=p.high,v=p.low,p=(v<<31|g>>>1)^(v<<24|g>>>8)^g>>>7,v=(g<<31|v>>>1)^(g<<24|v>>>8)^(g<<25|v>>>7),B=q[t-2],g=B.high,h=B.low,B=(h<<13|g>>>19)^(g<<3|h>>>29)^g>>>6,h=(g<<13|h>>>19)^(h<<3| 20 | g>>>29)^(g<<26|h>>>6),g=q[t-7],X=g.high,z=q[t-16],w=z.high,z=z.low,g=v+g.low,p=p+X+(g>>>0>>0?1:0),g=g+h,p=p+B+(g>>>0>>0?1:0),g=g+z,p=p+w+(g>>>0>>0?1:0);y.high=p;y.low=g}var X=s&T^~s&U,z=o&H^~o&I,y=r&E^r&F^E&F,ha=n&C^n&D^C&D,v=(n<<4|r>>>28)^(r<<30|n>>>2)^(r<<25|n>>>7),B=(r<<4|n>>>28)^(n<<30|r>>>2)^(n<<25|r>>>7),h=x[t],ia=h.high,fa=h.low,h=J+((s<<18|o>>>14)^(s<<14|o>>>18)^(o<<23|s>>>9)),w=W+((o<<18|s>>>14)^(o<<14|s>>>18)^(s<<23|o>>>9))+(h>>>0>>0?1:0),h=h+z,w=w+X+(h>>>0>>0?1:0),h=h+fa, 21 | w=w+ia+(h>>>0>>0?1:0),h=h+g,w=w+p+(h>>>0>>0?1:0),g=B+ha,y=v+y+(g>>>0>>0?1:0),W=U,J=I,U=T,I=H,T=s,H=o,o=G+h|0,s=V+w+(o>>>0>>0?1:0)|0,V=F,G=D,F=E,D=C,E=r,C=n,n=h+g|0,r=w+y+(n>>>0>>0?1:0)|0}L=d.low=L+n|0;d.high=Y+r+(L>>>0>>0?1:0)|0;M=i.low=M+C|0;i.high=Z+E+(M>>>0>>0?1:0)|0;N=j.low=N+D|0;j.high=$+F+(N>>>0>>0?1:0)|0;O=f.low=O+G|0;f.high=aa+V+(O>>>0>>0?1:0)|0;P=e.low=P+o|0;e.high=ba+s+(P>>>0>>0?1:0)|0;Q=k.low=Q+H|0;k.high=ca+T+(Q>>>0>>0?1:0)|0;R=K.low=R+I|0;K.high=da+U+ 22 | (R>>>0>>0?1:0)|0;S=c.low=S+J|0;c.high=ea+W+(S>>>0>>0?1:0)|0},_doFinalize:function(){var a=this._data,b=a.words,c=8*this._nDataBytes,d=8*a.sigBytes;b[d>>>5]|=128<<24-d%32;b[(d+128>>>10<<5)+31]=c;a.sigBytes=4*b.length;this._process();this._hash=this._hash.toX32()},blockSize:32});d.SHA512=b._createHelper(c);d.HmacSHA512=b._createHmacHelper(c)})(); 23 | (function(){var a=CryptoJS,d=a.x64,b=d.Word,c=d.WordArray,d=a.algo,i=d.SHA512,d=d.SHA384=i.extend({_doReset:function(){this._hash=c.create([b.create(3418070365,3238371032),b.create(1654270250,914150663),b.create(2438529370,812702999),b.create(355462360,4144912697),b.create(1731405415,4290775857),b.create(2394180231,1750603025),b.create(3675008525,1694076839),b.create(1203062813,3204075428)])},_doFinalize:function(){i._doFinalize.call(this);this._hash.sigBytes-=16}});a.SHA384=i._createHelper(d);a.HmacSHA384= 24 | i._createHmacHelper(d)})(); 25 | (function(){var a=CryptoJS,d=a.enc.Utf8;a.algo.HMAC=a.lib.Base.extend({init:function(a,c){a=this._hasher=a.create();"string"==typeof c&&(c=d.parse(c));var i=a.blockSize,k=4*i;c.sigBytes>k&&(c=a.finalize(c));for(var x=this._oKey=c.clone(),q=this._iKey=c.clone(),l=x.words,A=q.words,m=0;m>>b^this._rBlock)&c;this._rBlock^=a;this._lBlock^=a<>>b^this._lBlock)&c;this._lBlock^=a;this._rBlock^=a<a;a++){var f=o[a]-1;c[a]=b[f>>>5]>>>31-f%32&1}b=this._subKeys=[];for(f=0;16>f;f++){for(var d=b[f]=[],e=p[f],a=0;24>a;a++)d[a/6|0]|=c[(n[a]-1+e)%28]<<31-a%6,d[4+(a/6|0)]|=c[28+(n[a+24]-1+e)%28]<<31-a%6;d[0]=d[0]<<1|d[0]>>>31;for(a=1;7>a;a++)d[a]>>>= 24 | 4*(a-1)+3;d[7]=d[7]<<5|d[7]>>>27}c=this._invSubKeys=[];for(a=0;16>a;a++)c[a]=b[15-a]},encryptBlock:function(b,c){this._doCryptBlock(b,c,this._subKeys)},decryptBlock:function(b,c){this._doCryptBlock(b,c,this._invSubKeys)},_doCryptBlock:function(b,c,a){this._lBlock=b[c];this._rBlock=b[c+1];i.call(this,4,252645135);i.call(this,16,65535);k.call(this,2,858993459);k.call(this,8,16711935);i.call(this,1,1431655765);for(var f=0;16>f;f++){for(var d=a[f],e=this._lBlock,h=this._rBlock,g=0,j=0;8>j;j++)g|=q[j][((h^ 25 | d[j])&r[j])>>>0];this._lBlock=h;this._rBlock=e^g}a=this._lBlock;this._lBlock=this._rBlock;this._rBlock=a;i.call(this,1,1431655765);k.call(this,8,16711935);k.call(this,2,858993459);i.call(this,16,65535);i.call(this,4,252645135);b[c]=this._lBlock;b[c+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});h.DES=e._createHelper(l);g=g.TripleDES=e.extend({_doReset:function(){var b=this._key.words;this._des1=l.createEncryptor(m.create(b.slice(0,2)));this._des2=l.createEncryptor(m.create(b.slice(2,4)));this._des3= 26 | l.createEncryptor(m.create(b.slice(4,6)))},encryptBlock:function(b,c){this._des1.encryptBlock(b,c);this._des2.decryptBlock(b,c);this._des3.encryptBlock(b,c)},decryptBlock:function(b,c){this._des3.decryptBlock(b,c);this._des2.encryptBlock(b,c);this._des1.decryptBlock(b,c)},keySize:6,ivSize:2,blockSize:2});h.TripleDES=e._createHelper(g)})(); 27 | -------------------------------------------------------------------------------- /lib/cryptojs/rollups/rc4.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | var CryptoJS=CryptoJS||function(p,j){var h={},m=h.lib={},n=m.Base=function(){function a(){}return{extend:function(d){a.prototype=this;var c=new a;d&&c.mixIn(d);c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.$super.extend(this)}}}(),b=m.WordArray=n.extend({init:function(a,d){a= 8 | this.words=a||[];this.sigBytes=d!=j?d:4*a.length},toString:function(a){return(a||q).stringify(this)},concat:function(a){var d=this.words,c=a.words,g=this.sigBytes,a=a.sigBytes;this.clamp();if(g%4)for(var f=0;f>>2]|=(c[f>>>2]>>>24-8*(f%4)&255)<<24-8*((g+f)%4);else if(65535>>2]=c[f>>>2];else d.push.apply(d,c);this.sigBytes+=a;return this},clamp:function(){var a=this.words,d=this.sigBytes;a[d>>>2]&=4294967295<<32-8*(d%4);a.length=p.ceil(d/4)},clone:function(){var a= 9 | n.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var d=[],c=0;c>>2]>>>24-8*(g%4)&255;c.push((f>>>4).toString(16));c.push((f&15).toString(16))}return c.join("")},parse:function(a){for(var d=a.length,c=[],g=0;g>>3]|=parseInt(a.substr(g,2),16)<<24-4*(g%8);return b.create(c,d/2)}},k=i.Latin1={stringify:function(a){for(var d= 10 | a.words,a=a.sigBytes,c=[],g=0;g>>2]>>>24-8*(g%4)&255));return c.join("")},parse:function(a){for(var d=a.length,c=[],g=0;g>>2]|=(a.charCodeAt(g)&255)<<24-8*(g%4);return b.create(c,d)}},l=i.Utf8={stringify:function(a){try{return decodeURIComponent(escape(k.stringify(a)))}catch(d){throw Error("Malformed UTF-8 data");}},parse:function(a){return k.parse(unescape(encodeURIComponent(a)))}},e=m.BufferedBlockAlgorithm=n.extend({reset:function(){this._data=b.create(); 11 | this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=l.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var d=this._data,c=d.words,g=d.sigBytes,f=this.blockSize,o=g/(4*f),o=a?p.ceil(o):p.max((o|0)-this._minBufferSize,0),a=o*f,g=p.min(4*a,g);if(a){for(var e=0;e>>2]>>>24-8*(i%4)&255)<<16|(m[i+1>>>2]>>>24-8*((i+1)%4)&255)<<8|m[i+2>>>2]>>>24-8*((i+2)%4)&255,k=0;4>k&&i+0.75*k>>6*(3-k)&63));if(m=b.charAt(64))for(;h.length%4;)h.push(m);return h.join("")},parse:function(h){var h=h.replace(/\s/g,""),m=h.length,n=this._map,b=n.charAt(64);b&&(b=h.indexOf(b),-1!=b&&(m=b)); 14 | for(var b=[],i=0,q=0;q>>6-2*(q%4);b[i>>>2]|=(k|l)<<24-8*(i%4);i++}return j.create(b,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})(); 15 | (function(p){function j(e,b,a,d,c,g,f){e=e+(b&a|~b&d)+c+f;return(e<>>32-g)+b}function h(e,b,a,d,c,g,f){e=e+(b&d|a&~d)+c+f;return(e<>>32-g)+b}function m(e,b,a,d,c,g,f){e=e+(b^a^d)+c+f;return(e<>>32-g)+b}function n(e,b,a,d,c,g,f){e=e+(a^(b|~d))+c+f;return(e<>>32-g)+b}var b=CryptoJS,i=b.lib,q=i.WordArray,i=i.Hasher,k=b.algo,l=[];(function(){for(var e=0;64>e;e++)l[e]=4294967296*p.abs(p.sin(e+1))|0})();k=k.MD5=i.extend({_doReset:function(){this._hash=q.create([1732584193,4023233417, 16 | 2562383102,271733878])},_doProcessBlock:function(e,b){for(var a=0;16>a;a++){var d=b+a,c=e[d];e[d]=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360}for(var d=this._hash.words,c=d[0],g=d[1],f=d[2],o=d[3],a=0;64>a;a+=4)16>a?(c=j(c,g,f,o,e[b+a],7,l[a]),o=j(o,c,g,f,e[b+a+1],12,l[a+1]),f=j(f,o,c,g,e[b+a+2],17,l[a+2]),g=j(g,f,o,c,e[b+a+3],22,l[a+3])):32>a?(c=h(c,g,f,o,e[b+(a+1)%16],5,l[a]),o=h(o,c,g,f,e[b+(a+6)%16],9,l[a+1]),f=h(f,o,c,g,e[b+(a+11)%16],14,l[a+2]),g=h(g,f,o,c,e[b+a%16],20,l[a+3])):48>a?(c= 17 | m(c,g,f,o,e[b+(3*a+5)%16],4,l[a]),o=m(o,c,g,f,e[b+(3*a+8)%16],11,l[a+1]),f=m(f,o,c,g,e[b+(3*a+11)%16],16,l[a+2]),g=m(g,f,o,c,e[b+(3*a+14)%16],23,l[a+3])):(c=n(c,g,f,o,e[b+3*a%16],6,l[a]),o=n(o,c,g,f,e[b+(3*a+7)%16],10,l[a+1]),f=n(f,o,c,g,e[b+(3*a+14)%16],15,l[a+2]),g=n(g,f,o,c,e[b+(3*a+5)%16],21,l[a+3]));d[0]=d[0]+c|0;d[1]=d[1]+g|0;d[2]=d[2]+f|0;d[3]=d[3]+o|0},_doFinalize:function(){var b=this._data,i=b.words,a=8*this._nDataBytes,d=8*b.sigBytes;i[d>>>5]|=128<<24-d%32;i[(d+64>>>9<<4)+14]=(a<<8|a>>> 18 | 24)&16711935|(a<<24|a>>>8)&4278255360;b.sigBytes=4*(i.length+1);this._process();b=this._hash.words;for(i=0;4>i;i++)a=b[i],b[i]=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360}});b.MD5=i._createHelper(k);b.HmacMD5=i._createHmacHelper(k)})(Math); 19 | (function(){var p=CryptoJS,j=p.lib,h=j.Base,m=j.WordArray,j=p.algo,n=j.EvpKDF=h.extend({cfg:h.extend({keySize:4,hasher:j.MD5,iterations:1}),init:function(b){this.cfg=this.cfg.extend(b)},compute:function(b,i){for(var h=this.cfg,k=h.hasher.create(),l=m.create(),e=l.words,j=h.keySize,h=h.iterations;e.length>>2]&255}};h.BlockCipher=k.extend({cfg:k.cfg.extend({mode:l,padding:r}),reset:function(){k.reset.call(this);var a=this.cfg,b=a.iv,a=a.mode;if(this._xformMode==this._ENC_XFORM_MODE)var d=a.createEncryptor;else d=a.createDecryptor, 25 | this._minBufferSize=1;this._mode=d.call(a,this,b&&b.words)},_doProcessBlock:function(a,b){this._mode.processBlock(a,b)},_doFinalize:function(){var a=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){a.pad(this._data,this.blockSize);var b=this._process(!0)}else b=this._process(!0),a.unpad(b);return b},blockSize:4});var a=h.CipherParams=m.extend({init:function(a){this.mixIn(a)},toString:function(a){return(a||this.formatter).stringify(this)}}),l=(j.format={}).OpenSSL={stringify:function(a){var b= 26 | a.ciphertext,a=a.salt,b=(a?n.create([1398893684,1701076831]).concat(a).concat(b):b).toString(i);return b=b.replace(/(.{64})/g,"$1\n")},parse:function(b){var b=i.parse(b),f=b.words;if(1398893684==f[0]&&1701076831==f[1]){var d=n.create(f.slice(2,4));f.splice(0,4);b.sigBytes-=16}return a.create({ciphertext:b,salt:d})}},d=h.SerializableCipher=m.extend({cfg:m.extend({format:l}),encrypt:function(b,f,d,c){var c=this.cfg.extend(c),e=b.createEncryptor(d,c),f=e.finalize(f),e=e.cfg;return a.create({ciphertext:f, 27 | key:d,iv:e.iv,algorithm:b,mode:e.mode,padding:e.padding,blockSize:b.blockSize,formatter:c.format})},decrypt:function(a,b,d,c){c=this.cfg.extend(c);b=this._parse(b,c.format);return a.createDecryptor(d,c).finalize(b.ciphertext)},_parse:function(a,b){return"string"==typeof a?b.parse(a):a}}),j=(j.kdf={}).OpenSSL={compute:function(b,d,c,e){e||(e=n.random(8));b=q.create({keySize:d+c}).compute(b,e);c=n.create(b.words.slice(d),4*c);b.sigBytes=4*d;return a.create({key:b,iv:c,salt:e})}},c=h.PasswordBasedCipher= 28 | d.extend({cfg:d.cfg.extend({kdf:j}),encrypt:function(a,b,c,e){e=this.cfg.extend(e);c=e.kdf.compute(c,a.keySize,a.ivSize);e.iv=c.iv;a=d.encrypt.call(this,a,b,c.key,e);a.mixIn(c);return a},decrypt:function(a,b,c,e){e=this.cfg.extend(e);b=this._parse(b,e.format);c=e.kdf.compute(c,a.keySize,a.ivSize,b.salt);e.iv=c.iv;return d.decrypt.call(this,a,b,c.key,e)}})}(); 29 | (function(){function p(){for(var b=this._S,i=this._i,h=this._j,k=0,l=0;4>l;l++){var i=(i+1)%256,h=(h+b[i])%256,e=b[i];b[i]=b[h];b[h]=e;k|=b[(b[i]+b[h])%256]<<24-8*l}this._i=i;this._j=h;return k}var j=CryptoJS,h=j.lib.StreamCipher,m=j.algo,n=m.RC4=h.extend({_doReset:function(){for(var b=this._key,h=b.words,b=b.sigBytes,j=this._S=[],k=0;256>k;k++)j[k]=k;for(var l=k=0;256>k;k++){var e=k%b,l=(l+j[k]+(h[e>>>2]>>>24-8*(e%4)&255))%256,e=j[k];j[k]=j[l];j[l]=e}this._i=this._j=0},_doProcessBlock:function(b, 30 | h){b[h]^=p.call(this)},keySize:8,ivSize:0});j.RC4=h._createHelper(n);m=m.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var b=this.cfg.drop;0>>2]|=(c[h>>>2]>>>24-8*(h%4)&255)<<24-8*((g+h)%4);else if(65535>>2]=c[h>>>2];else a.push.apply(a,c);this.sigBytes+=b;return this},clamp:function(){var b=this.words,a=this.sigBytes;b[a>>>2]&=4294967295<<32-8*(a%4);b.length=n.ceil(a/4)},clone:function(){var b= 9 | k.clone.call(this);b.words=this.words.slice(0);return b},random:function(b){for(var a=[],c=0;c>>2]>>>24-8*(g%4)&255;c.push((h>>>4).toString(16));c.push((h&15).toString(16))}return c.join("")},parse:function(b){for(var a=b.length,c=[],g=0;g>>3]|=parseInt(b.substr(g,2),16)<<24-4*(g%8);return e.create(c,a/2)}},a=d.Latin1={stringify:function(b){for(var a= 10 | b.words,b=b.sigBytes,c=[],g=0;g>>2]>>>24-8*(g%4)&255));return c.join("")},parse:function(b){for(var a=b.length,c=[],g=0;g>>2]|=(b.charCodeAt(g)&255)<<24-8*(g%4);return e.create(c,a)}},f=d.Utf8={stringify:function(b){try{return decodeURIComponent(escape(a.stringify(b)))}catch(c){throw Error("Malformed UTF-8 data");}},parse:function(b){return a.parse(unescape(encodeURIComponent(b)))}},o=j.BufferedBlockAlgorithm=k.extend({reset:function(){this._data=e.create(); 11 | this._nDataBytes=0},_append:function(b){"string"==typeof b&&(b=f.parse(b));this._data.concat(b);this._nDataBytes+=b.sigBytes},_process:function(b){var a=this._data,c=a.words,g=a.sigBytes,h=this.blockSize,m=g/(4*h),m=b?n.ceil(m):n.max((m|0)-this._minBufferSize,0),b=m*h,g=n.min(4*b,g);if(b){for(var o=0;o>>2]>>>24-8*(d%4)&255)<<16|(j[d+1>>>2]>>>24-8*((d+1)%4)&255)<<8|j[d+2>>>2]>>>24-8*((d+2)%4)&255,a=0;4>a&&d+0.75*a>>6*(3-a)&63));if(j=e.charAt(64))for(;i.length%4;)i.push(j);return i.join("")},parse:function(i){var i=i.replace(/\s/g,""),j=i.length,k=this._map,e=k.charAt(64);e&&(e=i.indexOf(e),-1!=e&&(j=e)); 14 | for(var e=[],d=0,c=0;c>>6-2*(c%4);e[d>>>2]|=(a|f)<<24-8*(d%4);d++}return l.create(e,d)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})(); 15 | (function(n){function l(a,c,b,d,f,g,h){a=a+(c&b|~c&d)+f+h;return(a<>>32-g)+c}function i(a,c,b,d,f,g,h){a=a+(c&d|b&~d)+f+h;return(a<>>32-g)+c}function j(a,c,b,d,f,g,h){a=a+(c^b^d)+f+h;return(a<>>32-g)+c}function k(a,c,b,d,f,g,h){a=a+(b^(c|~d))+f+h;return(a<>>32-g)+c}var e=CryptoJS,d=e.lib,c=d.WordArray,d=d.Hasher,a=e.algo,f=[];(function(){for(var a=0;64>a;a++)f[a]=4294967296*n.abs(n.sin(a+1))|0})();a=a.MD5=d.extend({_doReset:function(){this._hash=c.create([1732584193,4023233417, 16 | 2562383102,271733878])},_doProcessBlock:function(a,c){for(var b=0;16>b;b++){var d=c+b,e=a[d];a[d]=(e<<8|e>>>24)&16711935|(e<<24|e>>>8)&4278255360}for(var d=this._hash.words,e=d[0],g=d[1],h=d[2],m=d[3],b=0;64>b;b+=4)16>b?(e=l(e,g,h,m,a[c+b],7,f[b]),m=l(m,e,g,h,a[c+b+1],12,f[b+1]),h=l(h,m,e,g,a[c+b+2],17,f[b+2]),g=l(g,h,m,e,a[c+b+3],22,f[b+3])):32>b?(e=i(e,g,h,m,a[c+(b+1)%16],5,f[b]),m=i(m,e,g,h,a[c+(b+6)%16],9,f[b+1]),h=i(h,m,e,g,a[c+(b+11)%16],14,f[b+2]),g=i(g,h,m,e,a[c+b%16],20,f[b+3])):48>b?(e= 17 | j(e,g,h,m,a[c+(3*b+5)%16],4,f[b]),m=j(m,e,g,h,a[c+(3*b+8)%16],11,f[b+1]),h=j(h,m,e,g,a[c+(3*b+11)%16],16,f[b+2]),g=j(g,h,m,e,a[c+(3*b+14)%16],23,f[b+3])):(e=k(e,g,h,m,a[c+3*b%16],6,f[b]),m=k(m,e,g,h,a[c+(3*b+7)%16],10,f[b+1]),h=k(h,m,e,g,a[c+(3*b+14)%16],15,f[b+2]),g=k(g,h,m,e,a[c+(3*b+5)%16],21,f[b+3]));d[0]=d[0]+e|0;d[1]=d[1]+g|0;d[2]=d[2]+h|0;d[3]=d[3]+m|0},_doFinalize:function(){var a=this._data,c=a.words,b=8*this._nDataBytes,d=8*a.sigBytes;c[d>>>5]|=128<<24-d%32;c[(d+64>>>9<<4)+14]=(b<<8|b>>> 18 | 24)&16711935|(b<<24|b>>>8)&4278255360;a.sigBytes=4*(c.length+1);this._process();a=this._hash.words;for(c=0;4>c;c++)b=a[c],a[c]=(b<<8|b>>>24)&16711935|(b<<24|b>>>8)&4278255360}});e.MD5=d._createHelper(a);e.HmacMD5=d._createHmacHelper(a)})(Math); 19 | (function(){var n=CryptoJS,l=n.lib,i=l.Base,j=l.WordArray,l=n.algo,k=l.EvpKDF=i.extend({cfg:i.extend({keySize:4,hasher:l.MD5,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,d){for(var c=this.cfg,a=c.hasher.create(),f=j.create(),i=f.words,k=c.keySize,c=c.iterations;i.length>>2]&255}};i.BlockCipher=a.extend({cfg:a.cfg.extend({mode:f,padding:q}),reset:function(){a.reset.call(this);var b=this.cfg,c=b.iv,b=b.mode;if(this._xformMode==this._ENC_XFORM_MODE)var d=b.createEncryptor;else d=b.createDecryptor, 25 | this._minBufferSize=1;this._mode=d.call(b,this,c&&c.words)},_doProcessBlock:function(a,b){this._mode.processBlock(a,b)},_doFinalize:function(){var a=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){a.pad(this._data,this.blockSize);var b=this._process(!0)}else b=this._process(!0),a.unpad(b);return b},blockSize:4});var b=i.CipherParams=j.extend({init:function(a){this.mixIn(a)},toString:function(a){return(a||this.formatter).stringify(this)}}),f=(l.format={}).OpenSSL={stringify:function(a){var b= 26 | a.ciphertext,a=a.salt,b=(a?k.create([1398893684,1701076831]).concat(a).concat(b):b).toString(d);return b=b.replace(/(.{64})/g,"$1\n")},parse:function(a){var a=d.parse(a),c=a.words;if(1398893684==c[0]&&1701076831==c[1]){var f=k.create(c.slice(2,4));c.splice(0,4);a.sigBytes-=16}return b.create({ciphertext:a,salt:f})}},p=i.SerializableCipher=j.extend({cfg:j.extend({format:f}),encrypt:function(a,c,d,f){var f=this.cfg.extend(f),e=a.createEncryptor(d,f),c=e.finalize(c),e=e.cfg;return b.create({ciphertext:c, 27 | key:d,iv:e.iv,algorithm:a,mode:e.mode,padding:e.padding,blockSize:a.blockSize,formatter:f.format})},decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);return a.createDecryptor(c,d).finalize(b.ciphertext)},_parse:function(a,b){return"string"==typeof a?b.parse(a):a}}),l=(l.kdf={}).OpenSSL={compute:function(a,d,f,e){e||(e=k.random(8));a=c.create({keySize:d+f}).compute(a,e);f=k.create(a.words.slice(d),4*f);a.sigBytes=4*d;return b.create({key:a,iv:f,salt:e})}},r=i.PasswordBasedCipher= 28 | p.extend({cfg:p.cfg.extend({kdf:l}),encrypt:function(a,b,c,d){d=this.cfg.extend(d);c=d.kdf.compute(c,a.keySize,a.ivSize);d.iv=c.iv;a=p.encrypt.call(this,a,b,c.key,d);a.mixIn(c);return a},decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);c=d.kdf.compute(c,a.keySize,a.ivSize,b.salt);d.iv=c.iv;return p.decrypt.call(this,a,b,c.key,d)}})}(); 29 | (function(){function n(){var d=this._X,c=this._C;c[0]=c[0]+1295307597+this._b|0;c[1]=c[1]+3545052371+(1295307597>c[0]>>>0?1:0)|0;c[2]=c[2]+886263092+(3545052371>c[1]>>>0?1:0)|0;c[3]=c[3]+1295307597+(886263092>c[2]>>>0?1:0)|0;c[4]=c[4]+3545052371+(1295307597>c[3]>>>0?1:0)|0;c[5]=c[5]+886263092+(3545052371>c[4]>>>0?1:0)|0;c[6]=c[6]+1295307597+(886263092>c[5]>>>0?1:0)|0;c[7]=c[7]+3545052371+(1295307597>c[6]>>>0?1:0)|0;this._b=3545052371>c[7]>>>0?1:0;for(var a=0;8>a;a++){var f=d[a]+c[a],e=f&65535,i=f>>> 30 | 16;k[a]=((e*e>>>17)+e*i>>>15)+i*i^((f&4294901760)*f|0)+((f&65535)*f|0)}var c=k[0],a=k[1],f=k[2],e=k[3],i=k[4],b=k[5],j=k[6],l=k[7];d[0]=c+(l<<16|l>>>16)+(j<<16|j>>>16)|0;d[1]=a+(c<<8|c>>>24)+l|0;d[2]=f+(a<<16|a>>>16)+(c<<16|c>>>16)|0;d[3]=e+(f<<8|f>>>24)+a|0;d[4]=i+(e<<16|e>>>16)+(f<<16|f>>>16)|0;d[5]=b+(i<<8|i>>>24)+e|0;d[6]=j+(b<<16|b>>>16)+(i<<16|i>>>16)|0;d[7]=l+(j<<8|j>>>24)+b|0}var l=CryptoJS,i=l.lib.StreamCipher,j=[],k=[],e=l.algo.Rabbit=i.extend({_doReset:function(){for(var d=this._key.words, 31 | c=d[0],a=d[1],f=d[2],e=d[3],d=this._X=[c,e<<16|f>>>16,a,c<<16|e>>>16,f,a<<16|c>>>16,e,f<<16|a>>>16],c=this._C=[f<<16|f>>>16,c&4294901760|a&65535,e<<16|e>>>16,a&4294901760|f&65535,c<<16|c>>>16,f&4294901760|e&65535,a<<16|a>>>16,e&4294901760|c&65535],a=this._b=0;4>a;a++)n.call(this);for(a=0;8>a;a++)c[a]^=d[a+4&7];if(d=this.cfg.iv){a=d.words;d=a[0];a=a[1];d=(d<<8|d>>>24)&16711935|(d<<24|d>>>8)&4278255360;a=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360;f=d>>>16|a&4294901760;e=a<<16|d&65535;c[0]^=d;c[1]^= 32 | f;c[2]^=a;c[3]^=e;c[4]^=d;c[5]^=f;c[6]^=a;c[7]^=e;for(a=0;4>a;a++)n.call(this)}},_doProcessBlock:function(d,c){var a=this._X;n.call(this);j[0]=a[0]^a[5]>>>16^a[3]<<16;j[1]=a[2]^a[7]>>>16^a[5]<<16;j[2]=a[4]^a[1]>>>16^a[7]<<16;j[3]=a[6]^a[3]>>>16^a[1]<<16;for(a=0;4>a;a++){var e=j[a],e=(e<<8|e>>>24)&16711935|(e<<24|e>>>8)&4278255360;d[c+a]^=e}},blockSize:4,ivSize:2});l.Rabbit=i._createHelper(e)})(); 33 | -------------------------------------------------------------------------------- /lib/cryptojs/rollups/aes.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | var CryptoJS=CryptoJS||function(p,h){var i={},l=i.lib={},r=l.Base=function(){function a(){}return{extend:function(e){a.prototype=this;var c=new a;e&&c.mixIn(e);c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.$super.extend(this)}}}(),o=l.WordArray=r.extend({init:function(a,e){a= 8 | this.words=a||[];this.sigBytes=e!=h?e:4*a.length},toString:function(a){return(a||s).stringify(this)},concat:function(a){var e=this.words,c=a.words,b=this.sigBytes,a=a.sigBytes;this.clamp();if(b%4)for(var d=0;d>>2]|=(c[d>>>2]>>>24-8*(d%4)&255)<<24-8*((b+d)%4);else if(65535>>2]=c[d>>>2];else e.push.apply(e,c);this.sigBytes+=a;return this},clamp:function(){var a=this.words,e=this.sigBytes;a[e>>>2]&=4294967295<<32-8*(e%4);a.length=p.ceil(e/4)},clone:function(){var a= 9 | r.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var e=[],c=0;c>>2]>>>24-8*(b%4)&255;c.push((d>>>4).toString(16));c.push((d&15).toString(16))}return c.join("")},parse:function(a){for(var e=a.length,c=[],b=0;b>>3]|=parseInt(a.substr(b,2),16)<<24-4*(b%8);return o.create(c,e/2)}},n=m.Latin1={stringify:function(a){for(var e= 10 | a.words,a=a.sigBytes,c=[],b=0;b>>2]>>>24-8*(b%4)&255));return c.join("")},parse:function(a){for(var e=a.length,c=[],b=0;b>>2]|=(a.charCodeAt(b)&255)<<24-8*(b%4);return o.create(c,e)}},k=m.Utf8={stringify:function(a){try{return decodeURIComponent(escape(n.stringify(a)))}catch(e){throw Error("Malformed UTF-8 data");}},parse:function(a){return n.parse(unescape(encodeURIComponent(a)))}},f=l.BufferedBlockAlgorithm=r.extend({reset:function(){this._data=o.create(); 11 | this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=k.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var e=this._data,c=e.words,b=e.sigBytes,d=this.blockSize,q=b/(4*d),q=a?p.ceil(q):p.max((q|0)-this._minBufferSize,0),a=q*d,b=p.min(4*a,b);if(a){for(var j=0;j>>2]>>>24-8*(m%4)&255)<<16|(l[m+1>>>2]>>>24-8*((m+1)%4)&255)<<8|l[m+2>>>2]>>>24-8*((m+2)%4)&255,n=0;4>n&&m+0.75*n>>6*(3-n)&63));if(l=o.charAt(64))for(;i.length%4;)i.push(l);return i.join("")},parse:function(i){var i=i.replace(/\s/g,""),l=i.length,r=this._map,o=r.charAt(64);o&&(o=i.indexOf(o),-1!=o&&(l=o)); 14 | for(var o=[],m=0,s=0;s>>6-2*(s%4);o[m>>>2]|=(n|k)<<24-8*(m%4);m++}return h.create(o,m)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})(); 15 | (function(p){function h(f,g,a,e,c,b,d){f=f+(g&a|~g&e)+c+d;return(f<>>32-b)+g}function i(f,g,a,e,c,b,d){f=f+(g&e|a&~e)+c+d;return(f<>>32-b)+g}function l(f,g,a,e,c,b,d){f=f+(g^a^e)+c+d;return(f<>>32-b)+g}function r(f,g,a,e,c,b,d){f=f+(a^(g|~e))+c+d;return(f<>>32-b)+g}var o=CryptoJS,m=o.lib,s=m.WordArray,m=m.Hasher,n=o.algo,k=[];(function(){for(var f=0;64>f;f++)k[f]=4294967296*p.abs(p.sin(f+1))|0})();n=n.MD5=m.extend({_doReset:function(){this._hash=s.create([1732584193,4023233417, 16 | 2562383102,271733878])},_doProcessBlock:function(f,g){for(var a=0;16>a;a++){var e=g+a,c=f[e];f[e]=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360}for(var e=this._hash.words,c=e[0],b=e[1],d=e[2],q=e[3],a=0;64>a;a+=4)16>a?(c=h(c,b,d,q,f[g+a],7,k[a]),q=h(q,c,b,d,f[g+a+1],12,k[a+1]),d=h(d,q,c,b,f[g+a+2],17,k[a+2]),b=h(b,d,q,c,f[g+a+3],22,k[a+3])):32>a?(c=i(c,b,d,q,f[g+(a+1)%16],5,k[a]),q=i(q,c,b,d,f[g+(a+6)%16],9,k[a+1]),d=i(d,q,c,b,f[g+(a+11)%16],14,k[a+2]),b=i(b,d,q,c,f[g+a%16],20,k[a+3])):48>a?(c= 17 | l(c,b,d,q,f[g+(3*a+5)%16],4,k[a]),q=l(q,c,b,d,f[g+(3*a+8)%16],11,k[a+1]),d=l(d,q,c,b,f[g+(3*a+11)%16],16,k[a+2]),b=l(b,d,q,c,f[g+(3*a+14)%16],23,k[a+3])):(c=r(c,b,d,q,f[g+3*a%16],6,k[a]),q=r(q,c,b,d,f[g+(3*a+7)%16],10,k[a+1]),d=r(d,q,c,b,f[g+(3*a+14)%16],15,k[a+2]),b=r(b,d,q,c,f[g+(3*a+5)%16],21,k[a+3]));e[0]=e[0]+c|0;e[1]=e[1]+b|0;e[2]=e[2]+d|0;e[3]=e[3]+q|0},_doFinalize:function(){var f=this._data,g=f.words,a=8*this._nDataBytes,e=8*f.sigBytes;g[e>>>5]|=128<<24-e%32;g[(e+64>>>9<<4)+14]=(a<<8|a>>> 18 | 24)&16711935|(a<<24|a>>>8)&4278255360;f.sigBytes=4*(g.length+1);this._process();f=this._hash.words;for(g=0;4>g;g++)a=f[g],f[g]=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360}});o.MD5=m._createHelper(n);o.HmacMD5=m._createHmacHelper(n)})(Math); 19 | (function(){var p=CryptoJS,h=p.lib,i=h.Base,l=h.WordArray,h=p.algo,r=h.EvpKDF=i.extend({cfg:i.extend({keySize:4,hasher:h.MD5,iterations:1}),init:function(i){this.cfg=this.cfg.extend(i)},compute:function(i,m){for(var h=this.cfg,n=h.hasher.create(),k=l.create(),f=k.words,g=h.keySize,h=h.iterations;f.length>>2]&255}};i.BlockCipher=n.extend({cfg:n.cfg.extend({mode:k,padding:g}),reset:function(){n.reset.call(this);var b=this.cfg,a=b.iv,b=b.mode;if(this._xformMode==this._ENC_XFORM_MODE)var c=b.createEncryptor;else c=b.createDecryptor, 25 | this._minBufferSize=1;this._mode=c.call(b,this,a&&a.words)},_doProcessBlock:function(b,a){this._mode.processBlock(b,a)},_doFinalize:function(){var b=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){b.pad(this._data,this.blockSize);var a=this._process(!0)}else a=this._process(!0),b.unpad(a);return a},blockSize:4});var a=i.CipherParams=l.extend({init:function(a){this.mixIn(a)},toString:function(a){return(a||this.formatter).stringify(this)}}),k=(h.format={}).OpenSSL={stringify:function(a){var d= 26 | a.ciphertext,a=a.salt,d=(a?r.create([1398893684,1701076831]).concat(a).concat(d):d).toString(m);return d=d.replace(/(.{64})/g,"$1\n")},parse:function(b){var b=m.parse(b),d=b.words;if(1398893684==d[0]&&1701076831==d[1]){var c=r.create(d.slice(2,4));d.splice(0,4);b.sigBytes-=16}return a.create({ciphertext:b,salt:c})}},e=i.SerializableCipher=l.extend({cfg:l.extend({format:k}),encrypt:function(b,d,c,e){var e=this.cfg.extend(e),f=b.createEncryptor(c,e),d=f.finalize(d),f=f.cfg;return a.create({ciphertext:d, 27 | key:c,iv:f.iv,algorithm:b,mode:f.mode,padding:f.padding,blockSize:b.blockSize,formatter:e.format})},decrypt:function(a,c,e,f){f=this.cfg.extend(f);c=this._parse(c,f.format);return a.createDecryptor(e,f).finalize(c.ciphertext)},_parse:function(a,c){return"string"==typeof a?c.parse(a):a}}),h=(h.kdf={}).OpenSSL={compute:function(b,c,e,f){f||(f=r.random(8));b=s.create({keySize:c+e}).compute(b,f);e=r.create(b.words.slice(c),4*e);b.sigBytes=4*c;return a.create({key:b,iv:e,salt:f})}},c=i.PasswordBasedCipher= 28 | e.extend({cfg:e.cfg.extend({kdf:h}),encrypt:function(a,c,f,j){j=this.cfg.extend(j);f=j.kdf.compute(f,a.keySize,a.ivSize);j.iv=f.iv;a=e.encrypt.call(this,a,c,f.key,j);a.mixIn(f);return a},decrypt:function(a,c,f,j){j=this.cfg.extend(j);c=this._parse(c,j.format);f=j.kdf.compute(f,a.keySize,a.ivSize,c.salt);j.iv=f.iv;return e.decrypt.call(this,a,c,f.key,j)}})}(); 29 | (function(){var p=CryptoJS,h=p.lib.BlockCipher,i=p.algo,l=[],r=[],o=[],m=[],s=[],n=[],k=[],f=[],g=[],a=[];(function(){for(var c=[],b=0;256>b;b++)c[b]=128>b?b<<1:b<<1^283;for(var d=0,e=0,b=0;256>b;b++){var j=e^e<<1^e<<2^e<<3^e<<4,j=j>>>8^j&255^99;l[d]=j;r[j]=d;var i=c[d],h=c[i],p=c[h],t=257*c[j]^16843008*j;o[d]=t<<24|t>>>8;m[d]=t<<16|t>>>16;s[d]=t<<8|t>>>24;n[d]=t;t=16843009*p^65537*h^257*i^16843008*d;k[j]=t<<24|t>>>8;f[j]=t<<16|t>>>16;g[j]=t<<8|t>>>24;a[j]=t;d?(d=i^c[c[c[p^i]]],e^=c[c[e]]):d=e=1}})(); 30 | var e=[0,1,2,4,8,16,32,64,128,27,54],i=i.AES=h.extend({_doReset:function(){for(var c=this._key,b=c.words,d=c.sigBytes/4,c=4*((this._nRounds=d+6)+1),i=this._keySchedule=[],j=0;j>>24]<<24|l[h>>>16&255]<<16|l[h>>>8&255]<<8|l[h&255]):(h=h<<8|h>>>24,h=l[h>>>24]<<24|l[h>>>16&255]<<16|l[h>>>8&255]<<8|l[h&255],h^=e[j/d|0]<<24);i[j]=i[j-d]^h}b=this._invKeySchedule=[];for(d=0;dd||4>=j?h:k[l[h>>>24]]^f[l[h>>> 31 | 16&255]]^g[l[h>>>8&255]]^a[l[h&255]]},encryptBlock:function(a,b){this._doCryptBlock(a,b,this._keySchedule,o,m,s,n,l)},decryptBlock:function(c,b){var d=c[b+1];c[b+1]=c[b+3];c[b+3]=d;this._doCryptBlock(c,b,this._invKeySchedule,k,f,g,a,r);d=c[b+1];c[b+1]=c[b+3];c[b+3]=d},_doCryptBlock:function(a,b,d,e,f,h,i,g){for(var l=this._nRounds,k=a[b]^d[0],m=a[b+1]^d[1],o=a[b+2]^d[2],n=a[b+3]^d[3],p=4,r=1;r>>24]^f[m>>>16&255]^h[o>>>8&255]^i[n&255]^d[p++],u=e[m>>>24]^f[o>>>16&255]^h[n>>>8&255]^ 32 | i[k&255]^d[p++],v=e[o>>>24]^f[n>>>16&255]^h[k>>>8&255]^i[m&255]^d[p++],n=e[n>>>24]^f[k>>>16&255]^h[m>>>8&255]^i[o&255]^d[p++],k=s,m=u,o=v;s=(g[k>>>24]<<24|g[m>>>16&255]<<16|g[o>>>8&255]<<8|g[n&255])^d[p++];u=(g[m>>>24]<<24|g[o>>>16&255]<<16|g[n>>>8&255]<<8|g[k&255])^d[p++];v=(g[o>>>24]<<24|g[n>>>16&255]<<16|g[k>>>8&255]<<8|g[m&255])^d[p++];n=(g[n>>>24]<<24|g[k>>>16&255]<<16|g[m>>>8&255]<<8|g[o&255])^d[p++];a[b]=s;a[b+1]=u;a[b+2]=v;a[b+3]=n},keySize:8});p.AES=h._createHelper(i)})(); 33 | -------------------------------------------------------------------------------- /lib/hash/ripemd.js: -------------------------------------------------------------------------------- 1 | /* 2 | * A JavaScript implementation of the RIPEMD-160 Algorithm 3 | * Version 2.2 Copyright Jeremy Lin, Paul Johnston 2000 - 2009. 4 | * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet 5 | * Distributed under the BSD License 6 | * See http://pajhome.org.uk/crypt/md5 for details. 7 | * Also http://www.ocf.berkeley.edu/~jjlin/jsotp/ 8 | */ 9 | 10 | /* 11 | * Configurable variables. You may need to tweak these to be compatible with 12 | * the server-side, but the defaults work in most cases. 13 | */ 14 | var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ 15 | var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ 16 | 17 | /* 18 | * These are the functions you'll usually want to call 19 | * They take string arguments and return either hex or base-64 encoded strings 20 | */ 21 | function hex_rmd160(s) { return rstr2hex(rstr_rmd160(str2rstr_utf8(s))); } 22 | function b64_rmd160(s) { return rstr2b64(rstr_rmd160(str2rstr_utf8(s))); } 23 | function any_rmd160(s, e) { return rstr2any(rstr_rmd160(str2rstr_utf8(s)), e); } 24 | function hex_hmac_rmd160(k, d) 25 | { return rstr2hex(rstr_hmac_rmd160(str2rstr_utf8(k), str2rstr_utf8(d))); } 26 | function b64_hmac_rmd160(k, d) 27 | { return rstr2b64(rstr_hmac_rmd160(str2rstr_utf8(k), str2rstr_utf8(d))); } 28 | function any_hmac_rmd160(k, d, e) 29 | { return rstr2any(rstr_hmac_rmd160(str2rstr_utf8(k), str2rstr_utf8(d)), e); } 30 | 31 | /* 32 | * Perform a simple self-test to see if the VM is working 33 | */ 34 | function rmd160_vm_test() 35 | { 36 | return hex_rmd160("abc").toLowerCase() == "8eb208f7e05d987a9b044a8e98c6b087f15a0bfc"; 37 | } 38 | 39 | /* 40 | * Calculate the rmd160 of a raw string 41 | */ 42 | function rstr_rmd160(s) 43 | { 44 | return binl2rstr(binl_rmd160(rstr2binl(s), s.length * 8)); 45 | } 46 | 47 | /* 48 | * Calculate the HMAC-rmd160 of a key and some data (raw strings) 49 | */ 50 | function rstr_hmac_rmd160(key, data) 51 | { 52 | var bkey = rstr2binl(key); 53 | if(bkey.length > 16) bkey = binl_rmd160(bkey, key.length * 8); 54 | 55 | var ipad = Array(16), opad = Array(16); 56 | for(var i = 0; i < 16; i++) 57 | { 58 | ipad[i] = bkey[i] ^ 0x36363636; 59 | opad[i] = bkey[i] ^ 0x5C5C5C5C; 60 | } 61 | 62 | var hash = binl_rmd160(ipad.concat(rstr2binl(data)), 512 + data.length * 8); 63 | return binl2rstr(binl_rmd160(opad.concat(hash), 512 + 160)); 64 | } 65 | 66 | /* 67 | * Convert a raw string to a hex string 68 | */ 69 | function rstr2hex(input) 70 | { 71 | try { hexcase } catch(e) { hexcase=0; } 72 | var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; 73 | var output = ""; 74 | var x; 75 | for(var i = 0; i < input.length; i++) 76 | { 77 | x = input.charCodeAt(i); 78 | output += hex_tab.charAt((x >>> 4) & 0x0F) 79 | + hex_tab.charAt( x & 0x0F); 80 | } 81 | return output; 82 | } 83 | 84 | /* 85 | * Convert a raw string to a base-64 string 86 | */ 87 | function rstr2b64(input) 88 | { 89 | try { b64pad } catch(e) { b64pad=''; } 90 | var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 91 | var output = ""; 92 | var len = input.length; 93 | for(var i = 0; i < len; i += 3) 94 | { 95 | var triplet = (input.charCodeAt(i) << 16) 96 | | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0) 97 | | (i + 2 < len ? input.charCodeAt(i+2) : 0); 98 | for(var j = 0; j < 4; j++) 99 | { 100 | if(i * 8 + j * 6 > input.length * 8) output += b64pad; 101 | else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F); 102 | } 103 | } 104 | return output; 105 | } 106 | 107 | /* 108 | * Convert a raw string to an arbitrary string encoding 109 | */ 110 | function rstr2any(input, encoding) 111 | { 112 | var divisor = encoding.length; 113 | var remainders = Array(); 114 | var i, q, x, quotient; 115 | 116 | /* Convert to an array of 16-bit big-endian values, forming the dividend */ 117 | var dividend = Array(Math.ceil(input.length / 2)); 118 | for(i = 0; i < dividend.length; i++) 119 | { 120 | dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1); 121 | } 122 | 123 | /* 124 | * Repeatedly perform a long division. The binary array forms the dividend, 125 | * the length of the encoding is the divisor. Once computed, the quotient 126 | * forms the dividend for the next step. We stop when the dividend is zero. 127 | * All remainders are stored for later use. 128 | */ 129 | while(dividend.length > 0) 130 | { 131 | quotient = Array(); 132 | x = 0; 133 | for(i = 0; i < dividend.length; i++) 134 | { 135 | x = (x << 16) + dividend[i]; 136 | q = Math.floor(x / divisor); 137 | x -= q * divisor; 138 | if(quotient.length > 0 || q > 0) 139 | quotient[quotient.length] = q; 140 | } 141 | remainders[remainders.length] = x; 142 | dividend = quotient; 143 | } 144 | 145 | /* Convert the remainders to the output string */ 146 | var output = ""; 147 | for(i = remainders.length - 1; i >= 0; i--) 148 | output += encoding.charAt(remainders[i]); 149 | 150 | /* Append leading zero equivalents */ 151 | var full_length = Math.ceil(input.length * 8 / 152 | (Math.log(encoding.length) / Math.log(2))) 153 | for(i = output.length; i < full_length; i++) 154 | output = encoding[0] + output; 155 | 156 | return output; 157 | } 158 | 159 | /* 160 | * Encode a string as utf-8. 161 | * For efficiency, this assumes the input is valid utf-16. 162 | */ 163 | function str2rstr_utf8(input) 164 | { 165 | var output = ""; 166 | var i = -1; 167 | var x, y; 168 | 169 | while(++i < input.length) 170 | { 171 | /* Decode utf-16 surrogate pairs */ 172 | x = input.charCodeAt(i); 173 | y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0; 174 | if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) 175 | { 176 | x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF); 177 | i++; 178 | } 179 | 180 | /* Encode output as utf-8 */ 181 | if(x <= 0x7F) 182 | output += String.fromCharCode(x); 183 | else if(x <= 0x7FF) 184 | output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F), 185 | 0x80 | ( x & 0x3F)); 186 | else if(x <= 0xFFFF) 187 | output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F), 188 | 0x80 | ((x >>> 6 ) & 0x3F), 189 | 0x80 | ( x & 0x3F)); 190 | else if(x <= 0x1FFFFF) 191 | output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07), 192 | 0x80 | ((x >>> 12) & 0x3F), 193 | 0x80 | ((x >>> 6 ) & 0x3F), 194 | 0x80 | ( x & 0x3F)); 195 | } 196 | return output; 197 | } 198 | 199 | /* 200 | * Encode a string as utf-16 201 | */ 202 | function str2rstr_utf16le(input) 203 | { 204 | var output = ""; 205 | for(var i = 0; i < input.length; i++) 206 | output += String.fromCharCode( input.charCodeAt(i) & 0xFF, 207 | (input.charCodeAt(i) >>> 8) & 0xFF); 208 | return output; 209 | } 210 | 211 | function str2rstr_utf16be(input) 212 | { 213 | var output = ""; 214 | for(var i = 0; i < input.length; i++) 215 | output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF, 216 | input.charCodeAt(i) & 0xFF); 217 | return output; 218 | } 219 | 220 | /* 221 | * Convert a raw string to an array of little-endian words 222 | * Characters >255 have their high-byte silently ignored. 223 | */ 224 | function rstr2binl(input) 225 | { 226 | var output = Array(input.length >> 2); 227 | for(var i = 0; i < output.length; i++) 228 | output[i] = 0; 229 | for(var i = 0; i < input.length * 8; i += 8) 230 | output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (i%32); 231 | return output; 232 | } 233 | 234 | /* 235 | * Convert an array of little-endian words to a string 236 | */ 237 | function binl2rstr(input) 238 | { 239 | var output = ""; 240 | for(var i = 0; i < input.length * 32; i += 8) 241 | output += String.fromCharCode((input[i>>5] >>> (i % 32)) & 0xFF); 242 | return output; 243 | } 244 | 245 | /* 246 | * Calculate the RIPE-MD160 of an array of little-endian words, and a bit length. 247 | */ 248 | function binl_rmd160(x, len) 249 | { 250 | /* append padding */ 251 | x[len >> 5] |= 0x80 << (len % 32); 252 | x[(((len + 64) >>> 9) << 4) + 14] = len; 253 | 254 | var h0 = 0x67452301; 255 | var h1 = 0xefcdab89; 256 | var h2 = 0x98badcfe; 257 | var h3 = 0x10325476; 258 | var h4 = 0xc3d2e1f0; 259 | 260 | for (var i = 0; i < x.length; i += 16) { 261 | var T; 262 | var A1 = h0, B1 = h1, C1 = h2, D1 = h3, E1 = h4; 263 | var A2 = h0, B2 = h1, C2 = h2, D2 = h3, E2 = h4; 264 | for (var j = 0; j <= 79; ++j) { 265 | T = safe_add(A1, rmd160_f(j, B1, C1, D1)); 266 | T = safe_add(T, x[i + rmd160_r1[j]]); 267 | T = safe_add(T, rmd160_K1(j)); 268 | T = safe_add(bit_rol(T, rmd160_s1[j]), E1); 269 | A1 = E1; E1 = D1; D1 = bit_rol(C1, 10); C1 = B1; B1 = T; 270 | T = safe_add(A2, rmd160_f(79-j, B2, C2, D2)); 271 | T = safe_add(T, x[i + rmd160_r2[j]]); 272 | T = safe_add(T, rmd160_K2(j)); 273 | T = safe_add(bit_rol(T, rmd160_s2[j]), E2); 274 | A2 = E2; E2 = D2; D2 = bit_rol(C2, 10); C2 = B2; B2 = T; 275 | } 276 | T = safe_add(h1, safe_add(C1, D2)); 277 | h1 = safe_add(h2, safe_add(D1, E2)); 278 | h2 = safe_add(h3, safe_add(E1, A2)); 279 | h3 = safe_add(h4, safe_add(A1, B2)); 280 | h4 = safe_add(h0, safe_add(B1, C2)); 281 | h0 = T; 282 | } 283 | return [h0, h1, h2, h3, h4]; 284 | } 285 | 286 | function rmd160_f(j, x, y, z) 287 | { 288 | return ( 0 <= j && j <= 15) ? (x ^ y ^ z) : 289 | (16 <= j && j <= 31) ? (x & y) | (~x & z) : 290 | (32 <= j && j <= 47) ? (x | ~y) ^ z : 291 | (48 <= j && j <= 63) ? (x & z) | (y & ~z) : 292 | (64 <= j && j <= 79) ? x ^ (y | ~z) : 293 | "rmd160_f: j out of range"; 294 | } 295 | function rmd160_K1(j) 296 | { 297 | return ( 0 <= j && j <= 15) ? 0x00000000 : 298 | (16 <= j && j <= 31) ? 0x5a827999 : 299 | (32 <= j && j <= 47) ? 0x6ed9eba1 : 300 | (48 <= j && j <= 63) ? 0x8f1bbcdc : 301 | (64 <= j && j <= 79) ? 0xa953fd4e : 302 | "rmd160_K1: j out of range"; 303 | } 304 | function rmd160_K2(j) 305 | { 306 | return ( 0 <= j && j <= 15) ? 0x50a28be6 : 307 | (16 <= j && j <= 31) ? 0x5c4dd124 : 308 | (32 <= j && j <= 47) ? 0x6d703ef3 : 309 | (48 <= j && j <= 63) ? 0x7a6d76e9 : 310 | (64 <= j && j <= 79) ? 0x00000000 : 311 | "rmd160_K2: j out of range"; 312 | } 313 | var rmd160_r1 = [ 314 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 315 | 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 316 | 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 317 | 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 318 | 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 319 | ]; 320 | var rmd160_r2 = [ 321 | 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 322 | 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 323 | 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 324 | 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 325 | 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 326 | ]; 327 | var rmd160_s1 = [ 328 | 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 329 | 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 330 | 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 331 | 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 332 | 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 333 | ]; 334 | var rmd160_s2 = [ 335 | 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 336 | 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 337 | 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 338 | 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 339 | 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 340 | ]; 341 | 342 | /* 343 | * Add integers, wrapping at 2^32. This uses 16-bit operations internally 344 | * to work around bugs in some JS interpreters. 345 | */ 346 | function safe_add(x, y) 347 | { 348 | var lsw = (x & 0xFFFF) + (y & 0xFFFF); 349 | var msw = (x >> 16) + (y >> 16) + (lsw >> 16); 350 | return (msw << 16) | (lsw & 0xFFFF); 351 | } 352 | 353 | /* 354 | * Bitwise rotate a 32-bit number to the left. 355 | */ 356 | function bit_rol(num, cnt) 357 | { 358 | return (num << cnt) | (num >>> (32 - cnt)); 359 | } 360 | -------------------------------------------------------------------------------- /lib/hash/crc.js: -------------------------------------------------------------------------------- 1 | /* 2 | CRC-8 in table form 3 | 4 | Copyright (c) 1989 AnDan Software. You may use this program, or 5 | code or tables extracted from it, as long as this notice is not 6 | removed or changed. 7 | */ 8 | 9 | var Crc8Tab = new Array( 10 | /* 11 | C/C++ language: 12 | unsigned char Crc8Tab[] = {...}; 13 | */ 14 | 15 | 0x00,0x1B,0x36,0x2D,0x6C,0x77,0x5A,0x41,0xD8,0xC3,0xEE,0xF5,0xB4,0xAF,0x82,0x99,0xD3,0xC8,0xE5, 16 | 0xFE,0xBF,0xA4,0x89,0x92,0x0B,0x10,0x3D,0x26,0x67,0x7C,0x51,0x4A,0xC5,0xDE,0xF3,0xE8,0xA9,0xB2, 17 | 0x9F,0x84,0x1D,0x06,0x2B,0x30,0x71,0x6A,0x47,0x5C,0x16,0x0D,0x20,0x3B,0x7A,0x61,0x4C,0x57,0xCE, 18 | 0xD5,0xF8,0xE3,0xA2,0xB9,0x94,0x8F,0xE9,0xF2,0xDF,0xC4,0x85,0x9E,0xB3,0xA8,0x31,0x2A,0x07,0x1C, 19 | 0x5D,0x46,0x6B,0x70,0x3A,0x21,0x0C,0x17,0x56,0x4D,0x60,0x7B,0xE2,0xF9,0xD4,0xCF,0x8E,0x95,0xB8, 20 | 0xA3,0x2C,0x37,0x1A,0x01,0x40,0x5B,0x76,0x6D,0xF4,0xEF,0xC2,0xD9,0x98,0x83,0xAE,0xB5,0xFF,0xE4, 21 | 0xC9,0xD2,0x93,0x88,0xA5,0xBE,0x27,0x3C,0x11,0x0A,0x4B,0x50,0x7D,0x66,0xB1,0xAA,0x87,0x9C,0xDD, 22 | 0xC6,0xEB,0xF0,0x69,0x72,0x5F,0x44,0x05,0x1E,0x33,0x28,0x62,0x79,0x54,0x4F,0x0E,0x15,0x38,0x23, 23 | 0xBA,0xA1,0x8C,0x97,0xD6,0xCD,0xE0,0xFB,0x74,0x6F,0x42,0x59,0x18,0x03,0x2E,0x35,0xAC,0xB7,0x9A, 24 | 0x81,0xC0,0xDB,0xF6,0xED,0xA7,0xBC,0x91,0x8A,0xCB,0xD0,0xFD,0xE6,0x7F,0x64,0x49,0x52,0x13,0x08, 25 | 0x25,0x3E,0x58,0x43,0x6E,0x75,0x34,0x2F,0x02,0x19,0x80,0x9B,0xB6,0xAD,0xEC,0xF7,0xDA,0xC1,0x8B, 26 | 0x90,0xBD,0xA6,0xE7,0xFC,0xD1,0xCA,0x53,0x48,0x65,0x7E,0x3F,0x24,0x09,0x12,0x9D,0x86,0xAB,0xB0, 27 | 0xF1,0xEA,0xC7,0xDC,0x45,0x5E,0x73,0x68,0x29,0x32,0x1F,0x04,0x4E,0x55,0x78,0x63,0x22,0x39,0x14, 28 | 0x0F,0x96,0x8D,0xA0,0xBB,0xFA,0xE1,0xCC,0xD7); 29 | 30 | function Crc8Add(crc,c) 31 | /* 32 | 'crc' should be initialized to 0x00. 33 | */ 34 | { 35 | return Crc8Tab[(crc^c)&0xFF]; 36 | } 37 | 38 | /* 39 | C/C++ language: 40 | 41 | inline unsigned char Crc8Add(unsigned char crc, unsigned char c) 42 | { 43 | return Crc8Tab[crc^c]; 44 | } 45 | */ 46 | 47 | /* 48 | CRC-16 (as it is in SEA's ARC) in table form 49 | 50 | The logic for this method of calculating the CRC 16 bit polynomial 51 | is taken from an article by David Schwaderer in the April 1985 52 | issue of PC Tech Journal. 53 | */ 54 | 55 | var CrcArcTab = new Array( 56 | /* 57 | C/C++ language: 58 | unsigned short CrcArcTab[] = {...}; 59 | */ 60 | 0x0000,0xC0C1,0xC181,0x0140,0xC301,0x03C0,0x0280,0xC241,0xC601,0x06C0,0x0780,0xC741,0x0500, 61 | 0xC5C1,0xC481,0x0440,0xCC01,0x0CC0,0x0D80,0xCD41,0x0F00,0xCFC1,0xCE81,0x0E40,0x0A00,0xCAC1, 62 | 0xCB81,0x0B40,0xC901,0x09C0,0x0880,0xC841,0xD801,0x18C0,0x1980,0xD941,0x1B00,0xDBC1,0xDA81, 63 | 0x1A40,0x1E00,0xDEC1,0xDF81,0x1F40,0xDD01,0x1DC0,0x1C80,0xDC41,0x1400,0xD4C1,0xD581,0x1540, 64 | 0xD701,0x17C0,0x1680,0xD641,0xD201,0x12C0,0x1380,0xD341,0x1100,0xD1C1,0xD081,0x1040,0xF001, 65 | 0x30C0,0x3180,0xF141,0x3300,0xF3C1,0xF281,0x3240,0x3600,0xF6C1,0xF781,0x3740,0xF501,0x35C0, 66 | 0x3480,0xF441,0x3C00,0xFCC1,0xFD81,0x3D40,0xFF01,0x3FC0,0x3E80,0xFE41,0xFA01,0x3AC0,0x3B80, 67 | 0xFB41,0x3900,0xF9C1,0xF881,0x3840,0x2800,0xE8C1,0xE981,0x2940,0xEB01,0x2BC0,0x2A80,0xEA41, 68 | 0xEE01,0x2EC0,0x2F80,0xEF41,0x2D00,0xEDC1,0xEC81,0x2C40,0xE401,0x24C0,0x2580,0xE541,0x2700, 69 | 0xE7C1,0xE681,0x2640,0x2200,0xE2C1,0xE381,0x2340,0xE101,0x21C0,0x2080,0xE041,0xA001,0x60C0, 70 | 0x6180,0xA141,0x6300,0xA3C1,0xA281,0x6240,0x6600,0xA6C1,0xA781,0x6740,0xA501,0x65C0,0x6480, 71 | 0xA441,0x6C00,0xACC1,0xAD81,0x6D40,0xAF01,0x6FC0,0x6E80,0xAE41,0xAA01,0x6AC0,0x6B80,0xAB41, 72 | 0x6900,0xA9C1,0xA881,0x6840,0x7800,0xB8C1,0xB981,0x7940,0xBB01,0x7BC0,0x7A80,0xBA41,0xBE01, 73 | 0x7EC0,0x7F80,0xBF41,0x7D00,0xBDC1,0xBC81,0x7C40,0xB401,0x74C0,0x7580,0xB541,0x7700,0xB7C1, 74 | 0xB681,0x7640,0x7200,0xB2C1,0xB381,0x7340,0xB101,0x71C0,0x7080,0xB041,0x5000,0x90C1,0x9181, 75 | 0x5140,0x9301,0x53C0,0x5280,0x9241,0x9601,0x56C0,0x5780,0x9741,0x5500,0x95C1,0x9481,0x5440, 76 | 0x9C01,0x5CC0,0x5D80,0x9D41,0x5F00,0x9FC1,0x9E81,0x5E40,0x5A00,0x9AC1,0x9B81,0x5B40,0x9901, 77 | 0x59C0,0x5880,0x9841,0x8801,0x48C0,0x4980,0x8941,0x4B00,0x8BC1,0x8A81,0x4A40,0x4E00,0x8EC1, 78 | 0x8F81,0x4F40,0x8D01,0x4DC0,0x4C80,0x8C41,0x4400,0x84C1,0x8581,0x4540,0x8701,0x47C0,0x4680, 79 | 0x8641,0x8201,0x42C0,0x4380,0x8341,0x4100,0x81C1,0x8081,0x4040); 80 | 81 | function CrcArcAdd(crc,c) 82 | /* 83 | 'crc' should be initialized to 0x0000. 84 | */ 85 | { 86 | return CrcArcTab[(crc^c)&0xFF]^((crc>>8)&0xFF); 87 | } 88 | 89 | /* 90 | C/C++ language: 91 | 92 | inline unsigned short CrcArcAdd(unsigned short crc, unsigned char c) 93 | { 94 | return CrcArcTab[(unsigned char)crc^c]^(unsigned short)(crc>>8); 95 | } 96 | */ 97 | 98 | /* 99 | 100 | CRC-16 (as it is in ZMODEM) in table form 101 | 102 | Copyright (c) 1989 AnDan Software. You may use this program, or 103 | code or tables extracted from it, as long as this notice is not 104 | removed or changed. 105 | */ 106 | 107 | var Crc16Tab = new Array( 108 | /* 109 | C/C++ language: 110 | 111 | unsigned short Crc16Tab[] = {...}; 112 | */ 113 | 114 | 0x0000,0x1021,0x2042,0x3063,0x4084,0x50A5,0x60C6,0x70E7,0x8108,0x9129,0xA14A,0xB16B,0xC18C, 115 | 0xD1AD,0xE1CE,0xF1EF,0x1231,0x0210,0x3273,0x2252,0x52B5,0x4294,0x72F7,0x62D6,0x9339,0x8318, 116 | 0xB37B,0xA35A,0xD3BD,0xC39C,0xF3FF,0xE3DE,0x2462,0x3443,0x0420,0x1401,0x64E6,0x74C7,0x44A4, 117 | 0x5485,0xA56A,0xB54B,0x8528,0x9509,0xE5EE,0xF5CF,0xC5AC,0xD58D,0x3653,0x2672,0x1611,0x0630, 118 | 0x76D7,0x66F6,0x5695,0x46B4,0xB75B,0xA77A,0x9719,0x8738,0xF7DF,0xE7FE,0xD79D,0xC7BC,0x48C4, 119 | 0x58E5,0x6886,0x78A7,0x0840,0x1861,0x2802,0x3823,0xC9CC,0xD9ED,0xE98E,0xF9AF,0x8948,0x9969, 120 | 0xA90A,0xB92B,0x5AF5,0x4AD4,0x7AB7,0x6A96,0x1A71,0x0A50,0x3A33,0x2A12,0xDBFD,0xCBDC,0xFBBF, 121 | 0xEB9E,0x9B79,0x8B58,0xBB3B,0xAB1A,0x6CA6,0x7C87,0x4CE4,0x5CC5,0x2C22,0x3C03,0x0C60,0x1C41, 122 | 0xEDAE,0xFD8F,0xCDEC,0xDDCD,0xAD2A,0xBD0B,0x8D68,0x9D49,0x7E97,0x6EB6,0x5ED5,0x4EF4,0x3E13, 123 | 0x2E32,0x1E51,0x0E70,0xFF9F,0xEFBE,0xDFDD,0xCFFC,0xBF1B,0xAF3A,0x9F59,0x8F78,0x9188,0x81A9, 124 | 0xB1CA,0xA1EB,0xD10C,0xC12D,0xF14E,0xE16F,0x1080,0x00A1,0x30C2,0x20E3,0x5004,0x4025,0x7046, 125 | 0x6067,0x83B9,0x9398,0xA3FB,0xB3DA,0xC33D,0xD31C,0xE37F,0xF35E,0x02B1,0x1290,0x22F3,0x32D2, 126 | 0x4235,0x5214,0x6277,0x7256,0xB5EA,0xA5CB,0x95A8,0x8589,0xF56E,0xE54F,0xD52C,0xC50D,0x34E2, 127 | 0x24C3,0x14A0,0x0481,0x7466,0x6447,0x5424,0x4405,0xA7DB,0xB7FA,0x8799,0x97B8,0xE75F,0xF77E, 128 | 0xC71D,0xD73C,0x26D3,0x36F2,0x0691,0x16B0,0x6657,0x7676,0x4615,0x5634,0xD94C,0xC96D,0xF90E, 129 | 0xE92F,0x99C8,0x89E9,0xB98A,0xA9AB,0x5844,0x4865,0x7806,0x6827,0x18C0,0x08E1,0x3882,0x28A3, 130 | 0xCB7D,0xDB5C,0xEB3F,0xFB1E,0x8BF9,0x9BD8,0xABBB,0xBB9A,0x4A75,0x5A54,0x6A37,0x7A16,0x0AF1, 131 | 0x1AD0,0x2AB3,0x3A92,0xFD2E,0xED0F,0xDD6C,0xCD4D,0xBDAA,0xAD8B,0x9DE8,0x8DC9,0x7C26,0x6C07, 132 | 0x5C64,0x4C45,0x3CA2,0x2C83,0x1CE0,0x0CC1,0xEF1F,0xFF3E,0xCF5D,0xDF7C,0xAF9B,0xBFBA,0x8FD9, 133 | 0x9FF8,0x6E17,0x7E36,0x4E55,0x5E74,0x2E93,0x3EB2,0x0ED1,0x1EF0); 134 | 135 | function Crc16Add(crc,c) 136 | /* 137 | 'crc' should be initialized to 0x0000. 138 | */ 139 | { 140 | return Crc16Tab[((crc>>8)^c)&0xFF]^((crc<<8)&0xFFFF); 141 | } 142 | 143 | /* 144 | C/C++ language: 145 | 146 | inline unsigned short Crc16Add(unsigned short crc, unsigned char c) 147 | { 148 | return Crc16Tab[(unsigned char)(crc>>8)^c]^(unsigned short)(crc<<8); 149 | } 150 | */ 151 | 152 | /* 153 | FCS-16 (as it is in PPP) in table form 154 | 155 | Described in RFC-1662 by William Allen Simpson, see RFC-1662 for references. 156 | Modified by Anders Danielsson, March 10, 2006. 157 | */ 158 | 159 | var Fcs16Tab = new Array( 160 | /* 161 | C/C++ language: 162 | unsigned short Fcs16Tab[256] = {...}; 163 | */ 164 | 165 | 0x0000,0x1189,0x2312,0x329B,0x4624,0x57AD,0x6536,0x74BF,0x8C48,0x9DC1,0xAF5A,0xBED3,0xCA6C, 166 | 0xDBE5,0xE97E,0xF8F7,0x1081,0x0108,0x3393,0x221A,0x56A5,0x472C,0x75B7,0x643E,0x9CC9,0x8D40, 167 | 0xBFDB,0xAE52,0xDAED,0xCB64,0xF9FF,0xE876,0x2102,0x308B,0x0210,0x1399,0x6726,0x76AF,0x4434, 168 | 0x55BD,0xAD4A,0xBCC3,0x8E58,0x9FD1,0xEB6E,0xFAE7,0xC87C,0xD9F5,0x3183,0x200A,0x1291,0x0318, 169 | 0x77A7,0x662E,0x54B5,0x453C,0xBDCB,0xAC42,0x9ED9,0x8F50,0xFBEF,0xEA66,0xD8FD,0xC974,0x4204, 170 | 0x538D,0x6116,0x709F,0x0420,0x15A9,0x2732,0x36BB,0xCE4C,0xDFC5,0xED5E,0xFCD7,0x8868,0x99E1, 171 | 0xAB7A,0xBAF3,0x5285,0x430C,0x7197,0x601E,0x14A1,0x0528,0x37B3,0x263A,0xDECD,0xCF44,0xFDDF, 172 | 0xEC56,0x98E9,0x8960,0xBBFB,0xAA72,0x6306,0x728F,0x4014,0x519D,0x2522,0x34AB,0x0630,0x17B9, 173 | 0xEF4E,0xFEC7,0xCC5C,0xDDD5,0xA96A,0xB8E3,0x8A78,0x9BF1,0x7387,0x620E,0x5095,0x411C,0x35A3, 174 | 0x242A,0x16B1,0x0738,0xFFCF,0xEE46,0xDCDD,0xCD54,0xB9EB,0xA862,0x9AF9,0x8B70,0x8408,0x9581, 175 | 0xA71A,0xB693,0xC22C,0xD3A5,0xE13E,0xF0B7,0x0840,0x19C9,0x2B52,0x3ADB,0x4E64,0x5FED,0x6D76, 176 | 0x7CFF,0x9489,0x8500,0xB79B,0xA612,0xD2AD,0xC324,0xF1BF,0xE036,0x18C1,0x0948,0x3BD3,0x2A5A, 177 | 0x5EE5,0x4F6C,0x7DF7,0x6C7E,0xA50A,0xB483,0x8618,0x9791,0xE32E,0xF2A7,0xC03C,0xD1B5,0x2942, 178 | 0x38CB,0x0A50,0x1BD9,0x6F66,0x7EEF,0x4C74,0x5DFD,0xB58B,0xA402,0x9699,0x8710,0xF3AF,0xE226, 179 | 0xD0BD,0xC134,0x39C3,0x284A,0x1AD1,0x0B58,0x7FE7,0x6E6E,0x5CF5,0x4D7C,0xC60C,0xD785,0xE51E, 180 | 0xF497,0x8028,0x91A1,0xA33A,0xB2B3,0x4A44,0x5BCD,0x6956,0x78DF,0x0C60,0x1DE9,0x2F72,0x3EFB, 181 | 0xD68D,0xC704,0xF59F,0xE416,0x90A9,0x8120,0xB3BB,0xA232,0x5AC5,0x4B4C,0x79D7,0x685E,0x1CE1, 182 | 0x0D68,0x3FF3,0x2E7A,0xE70E,0xF687,0xC41C,0xD595,0xA12A,0xB0A3,0x8238,0x93B1,0x6B46,0x7ACF, 183 | 0x4854,0x59DD,0x2D62,0x3CEB,0x0E70,0x1FF9,0xF78F,0xE606,0xD49D,0xC514,0xB1AB,0xA022,0x92B9, 184 | 0x8330,0x7BC7,0x6A4E,0x58D5,0x495C,0x3DE3,0x2C6A,0x1EF1,0x0F78); 185 | 186 | function Fcs16Add(fcs,c) 187 | /* 188 | 'fcs' should be initialized to 0xFFFF and after the computation it should be 189 | complemented (inverted). 190 | 191 | If the FCS-16 is calculated over the data and over the complemented FCS-16, the 192 | result will always be 0xF0B8 (without the complementation). 193 | */ 194 | { 195 | return Fcs16Tab[(fcs^c)&0xFF]^((fcs>>8)&0xFF); 196 | } 197 | 198 | /* 199 | C/C++ language: 200 | 201 | inline unsigned short Fcs16Add(unsigned short fcs, unsigned char c) 202 | { 203 | return Fcs16Tab[(unsigned char)fcs^c]^(unsigned short)(fcs>>8); 204 | } 205 | */ 206 | 207 | /* 208 | CRC-32 (as it is in ZMODEM) in table form 209 | 210 | Copyright (C) 1986 Gary S. Brown. You may use this program, or 211 | code or tables extracted from it, as desired without restriction. 212 | 213 | Modified by Anders Danielsson, February 5, 1989 and March 10, 2006. 214 | 215 | This is also known as FCS-32 (as it is in PPP), described in 216 | RFC-1662 by William Allen Simpson, see RFC-1662 for references. 217 | */ 218 | 219 | var Crc32Tab = new Array( /* CRC polynomial 0xEDB88320 */ 220 | /* 221 | C/C++ language: 222 | 223 | unsigned long Crc32Tab[] = {...}; 224 | */ 225 | 226 | 0x00000000,0x77073096,0xEE0E612C,0x990951BA,0x076DC419,0x706AF48F,0xE963A535,0x9E6495A3, 227 | 0x0EDB8832,0x79DCB8A4,0xE0D5E91E,0x97D2D988,0x09B64C2B,0x7EB17CBD,0xE7B82D07,0x90BF1D91, 228 | 0x1DB71064,0x6AB020F2,0xF3B97148,0x84BE41DE,0x1ADAD47D,0x6DDDE4EB,0xF4D4B551,0x83D385C7, 229 | 0x136C9856,0x646BA8C0,0xFD62F97A,0x8A65C9EC,0x14015C4F,0x63066CD9,0xFA0F3D63,0x8D080DF5, 230 | 0x3B6E20C8,0x4C69105E,0xD56041E4,0xA2677172,0x3C03E4D1,0x4B04D447,0xD20D85FD,0xA50AB56B, 231 | 0x35B5A8FA,0x42B2986C,0xDBBBC9D6,0xACBCF940,0x32D86CE3,0x45DF5C75,0xDCD60DCF,0xABD13D59, 232 | 0x26D930AC,0x51DE003A,0xC8D75180,0xBFD06116,0x21B4F4B5,0x56B3C423,0xCFBA9599,0xB8BDA50F, 233 | 0x2802B89E,0x5F058808,0xC60CD9B2,0xB10BE924,0x2F6F7C87,0x58684C11,0xC1611DAB,0xB6662D3D, 234 | 0x76DC4190,0x01DB7106,0x98D220BC,0xEFD5102A,0x71B18589,0x06B6B51F,0x9FBFE4A5,0xE8B8D433, 235 | 0x7807C9A2,0x0F00F934,0x9609A88E,0xE10E9818,0x7F6A0DBB,0x086D3D2D,0x91646C97,0xE6635C01, 236 | 0x6B6B51F4,0x1C6C6162,0x856530D8,0xF262004E,0x6C0695ED,0x1B01A57B,0x8208F4C1,0xF50FC457, 237 | 0x65B0D9C6,0x12B7E950,0x8BBEB8EA,0xFCB9887C,0x62DD1DDF,0x15DA2D49,0x8CD37CF3,0xFBD44C65, 238 | 0x4DB26158,0x3AB551CE,0xA3BC0074,0xD4BB30E2,0x4ADFA541,0x3DD895D7,0xA4D1C46D,0xD3D6F4FB, 239 | 0x4369E96A,0x346ED9FC,0xAD678846,0xDA60B8D0,0x44042D73,0x33031DE5,0xAA0A4C5F,0xDD0D7CC9, 240 | 0x5005713C,0x270241AA,0xBE0B1010,0xC90C2086,0x5768B525,0x206F85B3,0xB966D409,0xCE61E49F, 241 | 0x5EDEF90E,0x29D9C998,0xB0D09822,0xC7D7A8B4,0x59B33D17,0x2EB40D81,0xB7BD5C3B,0xC0BA6CAD, 242 | 0xEDB88320,0x9ABFB3B6,0x03B6E20C,0x74B1D29A,0xEAD54739,0x9DD277AF,0x04DB2615,0x73DC1683, 243 | 0xE3630B12,0x94643B84,0x0D6D6A3E,0x7A6A5AA8,0xE40ECF0B,0x9309FF9D,0x0A00AE27,0x7D079EB1, 244 | 0xF00F9344,0x8708A3D2,0x1E01F268,0x6906C2FE,0xF762575D,0x806567CB,0x196C3671,0x6E6B06E7, 245 | 0xFED41B76,0x89D32BE0,0x10DA7A5A,0x67DD4ACC,0xF9B9DF6F,0x8EBEEFF9,0x17B7BE43,0x60B08ED5, 246 | 0xD6D6A3E8,0xA1D1937E,0x38D8C2C4,0x4FDFF252,0xD1BB67F1,0xA6BC5767,0x3FB506DD,0x48B2364B, 247 | 0xD80D2BDA,0xAF0A1B4C,0x36034AF6,0x41047A60,0xDF60EFC3,0xA867DF55,0x316E8EEF,0x4669BE79, 248 | 0xCB61B38C,0xBC66831A,0x256FD2A0,0x5268E236,0xCC0C7795,0xBB0B4703,0x220216B9,0x5505262F, 249 | 0xC5BA3BBE,0xB2BD0B28,0x2BB45A92,0x5CB36A04,0xC2D7FFA7,0xB5D0CF31,0x2CD99E8B,0x5BDEAE1D, 250 | 0x9B64C2B0,0xEC63F226,0x756AA39C,0x026D930A,0x9C0906A9,0xEB0E363F,0x72076785,0x05005713, 251 | 0x95BF4A82,0xE2B87A14,0x7BB12BAE,0x0CB61B38,0x92D28E9B,0xE5D5BE0D,0x7CDCEFB7,0x0BDBDF21, 252 | 0x86D3D2D4,0xF1D4E242,0x68DDB3F8,0x1FDA836E,0x81BE16CD,0xF6B9265B,0x6FB077E1,0x18B74777, 253 | 0x88085AE6,0xFF0F6A70,0x66063BCA,0x11010B5C,0x8F659EFF,0xF862AE69,0x616BFFD3,0x166CCF45, 254 | 0xA00AE278,0xD70DD2EE,0x4E048354,0x3903B3C2,0xA7672661,0xD06016F7,0x4969474D,0x3E6E77DB, 255 | 0xAED16A4A,0xD9D65ADC,0x40DF0B66,0x37D83BF0,0xA9BCAE53,0xDEBB9EC5,0x47B2CF7F,0x30B5FFE9, 256 | 0xBDBDF21C,0xCABAC28A,0x53B39330,0x24B4A3A6,0xBAD03605,0xCDD70693,0x54DE5729,0x23D967BF, 257 | 0xB3667A2E,0xC4614AB8,0x5D681B02,0x2A6F2B94,0xB40BBE37,0xC30C8EA1,0x5A05DF1B,0x2D02EF8D); 258 | 259 | function Crc32Add(crc,c) 260 | /* 261 | 'crc' should be initialized to 0xFFFFFFFF and after the computation it should be 262 | complemented (inverted). 263 | 264 | CRC-32 is also known as FCS-32. 265 | 266 | If the FCS-32 is calculated over the data and over the complemented FCS-32, the 267 | result will always be 0xDEBB20E3 (without the complementation). 268 | */ 269 | { 270 | return Crc32Tab[(crc^c)&0xFF]^((crc>>8)&0xFFFFFF); 271 | } 272 | 273 | /* 274 | C/C++ language: 275 | 276 | inline unsigned long Crc32Add(unsigned long crc, unsigned char c) 277 | { 278 | return Crc32Tab[(unsigned char)crc^c]^(crc>>8); 279 | } 280 | */ 281 | 282 | /* 283 | Application functions that calculates CRC of a string 284 | */ 285 | 286 | function Crc8Str(str) 287 | { 288 | var n; 289 | var len=str.length; 290 | var crc; 291 | 292 | crc=0; 293 | for (n=0; n>>16)&0xFFFF; 413 | str2=n.toString(16).toUpperCase(); 414 | while (str2.length<4) 415 | { 416 | str2="0"+str2; 417 | } 418 | return "0x"+str2+str1; 419 | } 420 | 421 | // document.getElementById('idCrc8').innerHTML=Hex8(Crc8Str(str)); 422 | // document.getElementById('idCrcArc').innerHTML=Hex16(CrcArcStr(str)); 423 | // document.getElementById('idCrc16').innerHTML=Hex16(Crc16Str(str)); 424 | // document.getElementById('idFcs16').innerHTML=Hex16(Fcs16Str(str)); 425 | // document.getElementById('idCrc32').innerHTML=Hex32(Crc32Str(str)); 426 | --------------------------------------------------------------------------------

>>0?1:0)|0;O=i.low=O+H|0;i.high=$+R+(O>>>0>>0?1:0)|0;P=m.low=P+I|0;m.high=aa+S+(P>>>0>> 23 | 0?1:0)|0;Q=h.low=Q+J|0;h.high=ba+U+(Q>>>0>>0?1:0)|0},_doFinalize:function(){var a=this._data,e=a.words,h=8*this._nDataBytes,g=8*a.sigBytes;e[g>>>5]|=128<<24-g%32;e[(g+128>>>10<<5)+31]=h;a.sigBytes=4*e.length;this._process();this._hash=this._hash.toX32()},blockSize:32});g.SHA512=m._createHelper(e);g.HmacSHA512=m._createHmacHelper(e)})(); 24 | -------------------------------------------------------------------------------- /lib/cryptojs/rollups/sha384.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | var CryptoJS=CryptoJS||function(a,b){var c={},g=c.lib={},l=g.Base=function(){function a(){}return{extend:function(d){a.prototype=this;var f=new a;d&&f.mixIn(d);f.$super=this;return f},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var k in a)a.hasOwnProperty(k)&&(this[k]=a[k]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.$super.extend(this)}}}(),t=g.WordArray=l.extend({init:function(a,d){a= 8 | this.words=a||[];this.sigBytes=d!=b?d:4*a.length},toString:function(a){return(a||w).stringify(this)},concat:function(a){var d=this.words,f=a.words,e=this.sigBytes,a=a.sigBytes;this.clamp();if(e%4)for(var i=0;i>>2]|=(f[i>>>2]>>>24-8*(i%4)&255)<<24-8*((e+i)%4);else if(65535>>2]=f[i>>>2];else d.push.apply(d,f);this.sigBytes+=a;return this},clamp:function(){var k=this.words,d=this.sigBytes;k[d>>>2]&=4294967295<<32-8*(d%4);k.length=a.ceil(d/4)},clone:function(){var a= 9 | l.clone.call(this);a.words=this.words.slice(0);return a},random:function(k){for(var d=[],f=0;f>>2]>>>24-8*(e%4)&255;f.push((i>>>4).toString(16));f.push((i&15).toString(16))}return f.join("")},parse:function(a){for(var d=a.length,f=[],e=0;e>>3]|=parseInt(a.substr(e,2),16)<<24-4*(e%8);return t.create(f,d/2)}},m=C.Latin1={stringify:function(a){for(var d= 10 | a.words,a=a.sigBytes,f=[],e=0;e>>2]>>>24-8*(e%4)&255));return f.join("")},parse:function(a){for(var d=a.length,f=[],e=0;e>>2]|=(a.charCodeAt(e)&255)<<24-8*(e%4);return t.create(f,d)}},ea=C.Utf8={stringify:function(a){try{return decodeURIComponent(escape(m.stringify(a)))}catch(d){throw Error("Malformed UTF-8 data");}},parse:function(a){return m.parse(unescape(encodeURIComponent(a)))}},T=g.BufferedBlockAlgorithm=l.extend({reset:function(){this._data= 11 | t.create();this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=ea.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(k){var d=this._data,f=d.words,e=d.sigBytes,i=this.blockSize,b=e/(4*i),b=k?a.ceil(b):a.max((b|0)-this._minBufferSize,0),k=b*i,e=a.min(4*k,e);if(k){for(var m=0;mb;b++)w[b]=a()})();g=g.SHA512=c.extend({_doReset:function(){this._hash=t.create([a(1779033703,4089235720),a(3144134277,2227873595),a(1013904242,4271175723),a(2773480762,1595750129),a(1359893119,2917565137),a(2600822924,725511199),a(528734635,4215389547),a(1541459225,327033209)])},_doProcessBlock:function(a,b){for(var c=this._hash.words,g=c[0],k=c[1],d=c[2],f=c[3],e=c[4],i=c[5],l= 20 | c[6],c=c[7],t=g.high,J=g.low,X=k.high,K=k.low,Y=d.high,L=d.low,Z=f.high,M=f.low,$=e.high,N=e.low,aa=i.high,O=i.low,ba=l.high,P=l.low,ca=c.high,Q=c.low,q=t,n=J,D=X,A=K,E=Y,B=L,U=Z,F=M,r=$,o=N,R=aa,G=O,S=ba,H=P,V=ca,I=Q,s=0;80>s;s++){var x=w[s];if(16>s)var p=x.high=a[b+2*s]|0,h=x.low=a[b+2*s+1]|0;else{var p=w[s-15],h=p.high,u=p.low,p=(u<<31|h>>>1)^(u<<24|h>>>8)^h>>>7,u=(h<<31|u>>>1)^(h<<24|u>>>8)^(h<<25|u>>>7),z=w[s-2],h=z.high,j=z.low,z=(j<<13|h>>>19)^(h<<3|j>>>29)^h>>>6,j=(h<<13|j>>>19)^(j<<3|h>>> 21 | 29)^(h<<26|j>>>6),h=w[s-7],W=h.high,y=w[s-16],v=y.high,y=y.low,h=u+h.low,p=p+W+(h>>>0>>0?1:0),h=h+j,p=p+z+(h>>>0>>0?1:0),h=h+y,p=p+v+(h>>>0>>0?1:0);x.high=p;x.low=h}var W=r&R^~r&S,y=o&G^~o&H,x=q&D^q&E^D&E,ga=n&A^n&B^A&B,u=(n<<4|q>>>28)^(q<<30|n>>>2)^(q<<25|n>>>7),z=(q<<4|n>>>28)^(n<<30|q>>>2)^(n<<25|q>>>7),j=C[s],ha=j.high,da=j.low,j=I+((r<<18|o>>>14)^(r<<14|o>>>18)^(o<<23|r>>>9)),v=V+((o<<18|r>>>14)^(o<<14|r>>>18)^(r<<23|o>>>9))+(j>>>0>>0?1:0),j=j+y,v=v+W+(j>>>0>>0?1:0),j=j+da,v=v+ 22 | ha+(j>>>0>>0?1:0),j=j+h,v=v+p+(j>>>0>>0?1:0),h=z+ga,x=u+x+(h>>>0>>0?1:0),V=S,I=H,S=R,H=G,R=r,G=o,o=F+j|0,r=U+v+(o>>>0>>0?1:0)|0,U=E,F=B,E=D,B=A,D=q,A=n,n=j+h|0,q=v+x+(n>>>0>>0?1:0)|0}J=g.low=J+n|0;g.high=t+q+(J>>>0>>0?1:0)|0;K=k.low=K+A|0;k.high=X+D+(K>>>0>>0?1:0)|0;L=d.low=L+B|0;d.high=Y+E+(L>>>0>>0?1:0)|0;M=f.low=M+F|0;f.high=Z+U+(M>>>0>>0?1:0)|0;N=e.low=N+o|0;e.high=$+r+(N>>>0>>0?1:0)|0;O=i.low=O+G|0;i.high=aa+R+(O>>>0>>0?1:0)|0;P=l.low=P+H|0;l.high=ba+S+(P>>> 23 | 0>>0?1:0)|0;Q=c.low=Q+I|0;c.high=ca+V+(Q>>>0>>0?1:0)|0},_doFinalize:function(){var a=this._data,b=a.words,c=8*this._nDataBytes,g=8*a.sigBytes;b[g>>>5]|=128<<24-g%32;b[(g+128>>>10<<5)+31]=c;a.sigBytes=4*b.length;this._process();this._hash=this._hash.toX32()},blockSize:32});b.SHA512=c._createHelper(g);b.HmacSHA512=c._createHmacHelper(g)})(); 24 | (function(){var a=CryptoJS,b=a.x64,c=b.Word,g=b.WordArray,b=a.algo,l=b.SHA512,b=b.SHA384=l.extend({_doReset:function(){this._hash=g.create([c.create(3418070365,3238371032),c.create(1654270250,914150663),c.create(2438529370,812702999),c.create(355462360,4144912697),c.create(1731405415,4290775857),c.create(2394180231,1750603025),c.create(3675008525,1694076839),c.create(1203062813,3204075428)])},_doFinalize:function(){l._doFinalize.call(this);this._hash.sigBytes-=16}});a.SHA384=l._createHelper(b);a.HmacSHA384= 25 | l._createHmacHelper(b)})(); 26 | -------------------------------------------------------------------------------- /lib/cryptojs/rollups/hmac-sha512.js: -------------------------------------------------------------------------------- 1 | /* 2 | CryptoJS v3.0.2 3 | code.google.com/p/crypto-js 4 | (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | code.google.com/p/crypto-js/wiki/License 6 | */ 7 | var CryptoJS=CryptoJS||function(a,g){var c={},b=c.lib={},k=b.Base=function(){function a(){}return{extend:function(h){a.prototype=this;var e=new a;h&&e.mixIn(h);e.$super=this;return e},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var m in a)a.hasOwnProperty(m)&&(this[m]=a[m]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.$super.extend(this)}}}(),n=b.WordArray=k.extend({init:function(a,h){a= 8 | this.words=a||[];this.sigBytes=h!=g?h:4*a.length},toString:function(a){return(a||r).stringify(this)},concat:function(a){var h=this.words,e=a.words,d=this.sigBytes,a=a.sigBytes;this.clamp();if(d%4)for(var b=0;b>>2]|=(e[b>>>2]>>>24-8*(b%4)&255)<<24-8*((d+b)%4);else if(65535>>2]=e[b>>>2];else h.push.apply(h,e);this.sigBytes+=a;return this},clamp:function(){var m=this.words,h=this.sigBytes;m[h>>>2]&=4294967295<<32-8*(h%4);m.length=a.ceil(h/4)},clone:function(){var a= 9 | k.clone.call(this);a.words=this.words.slice(0);return a},random:function(m){for(var h=[],b=0;b>>2]>>>24-8*(d%4)&255;e.push((l>>>4).toString(16));e.push((l&15).toString(16))}return e.join("")},parse:function(a){for(var b=a.length,e=[],d=0;d>>3]|=parseInt(a.substr(d,2),16)<<24-4*(d%8);return n.create(e,b/2)}},j=x.Latin1={stringify:function(a){for(var b= 10 | a.words,a=a.sigBytes,e=[],d=0;d>>2]>>>24-8*(d%4)&255));return e.join("")},parse:function(a){for(var b=a.length,e=[],d=0;d>>2]|=(a.charCodeAt(d)&255)<<24-8*(d%4);return n.create(e,b)}},J=x.Utf8={stringify:function(a){try{return decodeURIComponent(escape(j.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return j.parse(unescape(encodeURIComponent(a)))}},l=b.BufferedBlockAlgorithm=k.extend({reset:function(){this._data=n.create(); 11 | this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=J.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(b){var h=this._data,e=h.words,d=h.sigBytes,l=this.blockSize,c=d/(4*l),c=b?a.ceil(c):a.max((c|0)-this._minBufferSize,0),b=c*l,d=a.min(4*b,d);if(b){for(var j=0;jb;b++)r[b]=a()})();b=b.SHA512=c.extend({_doReset:function(){this._hash=n.create([a(1779033703,4089235720),a(3144134277,2227873595),a(1013904242,4271175723),a(2773480762,1595750129),a(1359893119,2917565137),a(2600822924,725511199),a(528734635,4215389547),a(1541459225,327033209)])},_doProcessBlock:function(a,b){for(var c=this._hash.words,g=c[0],m=c[1],h=c[2],e=c[3],d=c[4],k=c[5],n= 19 | c[6],c=c[7],X=g.high,K=g.low,Y=m.high,L=m.low,Z=h.high,M=h.low,$=e.high,N=e.low,aa=d.high,O=d.low,ba=k.high,P=k.low,ca=n.high,Q=n.low,da=c.high,R=c.low,s=X,o=K,D=Y,B=L,E=Z,C=M,U=$,F=N,t=aa,p=O,S=ba,G=P,T=ca,H=Q,V=da,I=R,u=0;80>u;u++){var y=r[u];if(16>u)var q=y.high=a[b+2*u]|0,f=y.low=a[b+2*u+1]|0;else{var q=r[u-15],f=q.high,v=q.low,q=(v<<31|f>>>1)^(v<<24|f>>>8)^f>>>7,v=(f<<31|v>>>1)^(f<<24|v>>>8)^(f<<25|v>>>7),A=r[u-2],f=A.high,i=A.low,A=(i<<13|f>>>19)^(f<<3|i>>>29)^f>>>6,i=(f<<13|i>>>19)^(i<<3|f>>> 20 | 29)^(f<<26|i>>>6),f=r[u-7],W=f.high,z=r[u-16],w=z.high,z=z.low,f=v+f.low,q=q+W+(f>>>0>>0?1:0),f=f+i,q=q+A+(f>>>0>>0?1:0),f=f+z,q=q+w+(f>>>0>>0?1:0);y.high=q;y.low=f}var W=t&S^~t&T,z=p&G^~p&H,y=s&D^s&E^D&E,ga=o&B^o&C^B&C,v=(o<<4|s>>>28)^(s<<30|o>>>2)^(s<<25|o>>>7),A=(s<<4|o>>>28)^(o<<30|s>>>2)^(o<<25|s>>>7),i=x[u],ha=i.high,ea=i.low,i=I+((t<<18|p>>>14)^(t<<14|p>>>18)^(p<<23|t>>>9)),w=V+((p<<18|t>>>14)^(p<<14|t>>>18)^(t<<23|p>>>9))+(i>>>0>>0?1:0),i=i+z,w=w+W+(i>>>0>>0?1:0),i=i+ea,w=w+ 21 | ha+(i>>>0>>0?1:0),i=i+f,w=w+q+(i>>>0>>0?1:0),f=A+ga,y=v+y+(f>>>0>>0?1:0),V=T,I=H,T=S,H=G,S=t,G=p,p=F+i|0,t=U+w+(p>>>0>>0?1:0)|0,U=E,F=C,E=D,C=B,D=s,B=o,o=i+f|0,s=w+y+(o>>>0>>0?1:0)|0}K=g.low=K+o|0;g.high=X+s+(K>>>0>>0?1:0)|0;L=m.low=L+B|0;m.high=Y+D+(L>>>0>>0?1:0)|0;M=h.low=M+C|0;h.high=Z+E+(M>>>0>>0?1:0)|0;N=e.low=N+F|0;e.high=$+U+(N>>>0>>0?1:0)|0;O=d.low=O+p|0;d.high=aa+t+(O>>>0