diff --git a/api/network/modify.ts b/api/network/modify.ts index a768cc8..8d31f4b 100644 --- a/api/network/modify.ts +++ b/api/network/modify.ts @@ -1,5 +1,4 @@ import * as path from 'path' -import RNCryptor from '../utils/rncryptor' import * as fetch from 'node-fetch' import {parseLDAT} from '../utils/ldat' import * as rsa from '../crypto/rsa' @@ -7,6 +6,7 @@ import * as crypto from 'crypto' import * as meme from '../utils/meme' import * as FormData from 'form-data' // import { models } from '../models' +import * as RNCryptor from 'jscryptor' const constants = require(path.join(__dirname,'../../config/constants.json')) const msgtypes = constants.message_types @@ -30,13 +30,13 @@ export async function modifyPayloadAndSaveMediaKey(payload, chat, sender) { const decMediaKey = rsa.decrypt(chat.groupPrivateKey, key) - const imgBase64 = RNCryptor.Decrypt(decMediaKey, buf.toString('base64')) + const imgBuf = RNCryptor.Decrypt(buf.toString('base64'), decMediaKey) const newKey = crypto.randomBytes(20).toString('hex') - const encImg = RNCryptor.Encrypt(newKey, imgBase64) + const encImgBase64 = RNCryptor.Encrypt(imgBuf, newKey) - var encImgBuffer = Buffer.from(encImg,'base64'); + var encImgBuffer = Buffer.from(encImgBase64,'base64'); const form = new FormData() form.append('file', encImgBuffer, { @@ -89,7 +89,6 @@ export async function modifyPayloadAndSaveMediaKey(payload, chat, sender) { // sender: sender.id, // the og sender // createdAt: date, // }) - return fillmsg(payload, {mediaTerms,mediaKey:encKey}) // key is re-encrypted later } catch(e) { console.log("[modify] error", e) diff --git a/api/utils/rncryptor/index.js b/api/utils/rncryptor/index.js deleted file mode 100644 index 8c01884..0000000 --- a/api/utils/rncryptor/index.js +++ /dev/null @@ -1,5 +0,0 @@ - - -import * as RNCryptor from './rncryptor' - -export default RNCryptor \ No newline at end of file diff --git a/api/utils/rncryptor/rncryptor.js b/api/utils/rncryptor/rncryptor.js deleted file mode 100644 index 5d36222..0000000 --- a/api/utils/rncryptor/rncryptor.js +++ /dev/null @@ -1,104 +0,0 @@ -var sjcl = require('./sjcl') - -var RNCryptor = {}; - -/* - Takes password string and salt WordArray - Returns key bitArray -*/ - -RNCryptor.KeyForPassword = function(password, salt) { - var hmacSHA1 = function (key) { - var hasher = new sjcl.misc.hmac(key, sjcl.hash.sha1); - this.encrypt = function () { - return hasher.encrypt.apply(hasher, arguments); - }; - }; - return sjcl.misc.pbkdf2(password, salt, 10000, 32 * 8, hmacSHA1); -} - -/* - Takes password string and plaintext base64 - options: - iv - encryption_salt - html_salt - Returns ciphertext base64 -*/ -RNCryptor.Encrypt = function(password, plaintextBase64, options) { - var plaintext = sjcl.codec.base64.toBits(plaintextBase64); - - options = options || {} - var encryption_salt = options["encryption_salt"] || sjcl.random.randomWords(8 / 4); // FIXME: Need to seed PRNG - var encryption_key = RNCryptor.KeyForPassword(password, encryption_salt); - - var hmac_salt = options["hmac_salt"] || sjcl.random.randomWords(8 / 4); - var hmac_key = RNCryptor.KeyForPassword(password, hmac_salt); - - var iv = options["iv"] || sjcl.random.randomWords(16 / 4); - - var version = sjcl.codec.hex.toBits("03"); - var options = sjcl.codec.hex.toBits("01"); - - var message = sjcl.bitArray.concat(version, options); - message = sjcl.bitArray.concat(message, encryption_salt); - message = sjcl.bitArray.concat(message, hmac_salt); - message = sjcl.bitArray.concat(message, iv); - - var aes = new sjcl.cipher.aes(encryption_key); - sjcl.beware["CBC mode is dangerous because it doesn't protect message integrity."](); - var encrypted = sjcl.mode.cbc.encrypt(aes, plaintext, iv); - - message = sjcl.bitArray.concat(message, encrypted); - - var hmac = new sjcl.misc.hmac(hmac_key).encrypt(message); - message = sjcl.bitArray.concat(message, hmac); - - return sjcl.codec.base64.fromBits(message); -} - -/* - Takes password string and message (ciphertext) base64 - options: - iv - encryption_salt - html_salt - Returns plaintext base64 -*/ -RNCryptor.Decrypt = function(password, messageBase64, options) { - var message = sjcl.codec.base64.toBits(messageBase64); - - options = options || {} - - var version = sjcl.bitArray.extract(message, 0 * 8, 8); - var options = sjcl.bitArray.extract(message, 1 * 8, 8); - - var encryption_salt = sjcl.bitArray.bitSlice(message, 2 * 8, 10 * 8); - var encryption_key = RNCryptor.KeyForPassword(password, encryption_salt); - - var hmac_salt = sjcl.bitArray.bitSlice(message, 10 * 8, 18 * 8); - var hmac_key = RNCryptor.KeyForPassword(password, hmac_salt); - - var iv = sjcl.bitArray.bitSlice(message, 18 * 8, 34 * 8); - - var ciphertext_end = sjcl.bitArray.bitLength(message) - (32 * 8); - - var ciphertext = sjcl.bitArray.bitSlice(message, 34 * 8, ciphertext_end); - - var hmac = sjcl.bitArray.bitSlice(message, ciphertext_end); - - var expected_hmac = new sjcl.misc.hmac(hmac_key).encrypt(sjcl.bitArray.bitSlice(message, 0, ciphertext_end)); - - // .equal is of consistent time - if (! sjcl.bitArray.equal(hmac, expected_hmac)) { - throw new sjcl.exception.corrupt("HMAC mismatch or bad password."); - } - - var aes = new sjcl.cipher.aes(encryption_key); - sjcl.beware["CBC mode is dangerous because it doesn't protect message integrity."](); - var decrypted = sjcl.mode.cbc.decrypt(aes, ciphertext, iv); - - return sjcl.codec.base64.fromBits(decrypted); -} - -module.exports = RNCryptor \ No newline at end of file diff --git a/api/utils/rncryptor/sjcl.js b/api/utils/rncryptor/sjcl.js deleted file mode 100644 index 37f2091..0000000 --- a/api/utils/rncryptor/sjcl.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict";var sjcl={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(a){this.toString=function(){return"CORRUPT: "+this.message};this.message=a},invalid:function(a){this.toString=function(){return"INVALID: "+this.message};this.message=a},bug:function(a){this.toString=function(){return"BUG: "+this.message};this.message=a},notReady:function(a){this.toString=function(){return"NOT READY: "+this.message};this.message=a}}}; -sjcl.cipher.aes=function(a){this.u[0][0][0]||this.N();var b,c,d,e,f=this.u[0][4],g=this.u[1];b=a.length;var h=1;if(4!==b&&6!==b&&8!==b)throw new sjcl.exception.invalid("invalid aes key size");this.b=[d=a.slice(0),e=[]];for(a=b;a<4*b+28;a++){c=d[a-1];if(0===a%b||8===b&&4===a%b)c=f[c>>>24]<<24^f[c>>16&255]<<16^f[c>>8&255]<<8^f[c&255],0===a%b&&(c=c<<8^c>>>24^h<<24,h=h<<1^283*(h>>7));d[a]=d[a-b]^c}for(b=0;a;b++,a--)c=d[b&3?a:a-4],e[b]=4>=a||4>b?c:g[0][f[c>>>24]]^g[1][f[c>>16&255]]^g[2][f[c>>8&255]]^g[3][f[c& -255]]}; -sjcl.cipher.aes.prototype={encrypt:function(a){return r(this,a,0)},decrypt:function(a){return r(this,a,1)},u:[[[],[],[],[],[]],[[],[],[],[],[]]],N:function(){var a=this.u[0],b=this.u[1],c=a[4],d=b[4],e,f,g,h=[],k=[],n,l,m,p;for(e=0;0x100>e;e++)k[(h[e]=e<<1^283*(e>>7))^e]=e;for(f=g=0;!c[f];f^=n||1,g=k[g]||1)for(m=g^g<<1^g<<2^g<<3^g<<4,m=m>>8^m&255^99,c[f]=m,d[m]=f,l=h[e=h[n=h[f]]],p=0x1010101*l^0x10001*e^0x101*n^0x1010100*f,l=0x101*h[m]^0x1010100*m,e=0;4>e;e++)a[e][f]=l=l<<24^l>>>8,b[e][m]=p=p<<24^p>>>8;for(e= -0;5>e;e++)a[e]=a[e].slice(0),b[e]=b[e].slice(0)}}; -function r(a,b,c){if(4!==b.length)throw new sjcl.exception.invalid("invalid aes block size");var d=a.b[c],e=b[0]^d[0],f=b[c?3:1]^d[1],g=b[2]^d[2];b=b[c?1:3]^d[3];var h,k,n,l=d.length/4-2,m,p=4,q=[0,0,0,0];h=a.u[c];a=h[0];var u=h[1],v=h[2],w=h[3],x=h[4];for(m=0;m>>24]^u[f>>16&255]^v[g>>8&255]^w[b&255]^d[p],k=a[f>>>24]^u[g>>16&255]^v[b>>8&255]^w[e&255]^d[p+1],n=a[g>>>24]^u[b>>16&255]^v[e>>8&255]^w[f&255]^d[p+2],b=a[b>>>24]^u[e>>16&255]^v[f>>8&255]^w[g&255]^d[p+3],p+=4,e=h,f=k,g=n;for(m= -0;4>m;m++)q[c?3&-m:m]=x[e>>>24]<<24^x[f>>16&255]<<16^x[g>>8&255]<<8^x[b&255]^d[p++],h=e,e=f,f=g,g=b,b=h;return q} -sjcl.bitArray={bitSlice:function(a,b,c){a=sjcl.bitArray.Y(a.slice(b/32),32-(b&31)).slice(1);return void 0===c?a:sjcl.bitArray.clamp(a,c-b)},extract:function(a,b,c){var d=Math.floor(-b-c&31);return((b+c-1^b)&-32?a[b/32|0]<<32-d^a[b/32+1|0]>>>d:a[b/32|0]>>>d)&(1<>b-1,1));return a},partial:function(a,b,c){return 32===a?b:(c?b|0:b<<32-a)+0x10000000000*a},getPartial:function(a){return Math.round(a/0x10000000000)||32},equal:function(a,b){if(sjcl.bitArray.bitLength(a)!==sjcl.bitArray.bitLength(b))return!1;var c=0,d;for(d=0;d>>b),c=a[e]<<32-b;e=a.length?a[a.length-1]:0;a=sjcl.bitArray.getPartial(e);d.push(sjcl.bitArray.partial(b+a&31,32>>24|c>>>8&0xff00|(c&0xff00)<<8|c<<24;return a}}; -sjcl.codec.utf8String={fromBits:function(a){var b="",c=sjcl.bitArray.bitLength(a),d,e;for(d=0;d>>8>>>8>>>8),e<<=8;return decodeURIComponent(escape(b))},toBits:function(a){a=unescape(encodeURIComponent(a));var b=[],c,d=0;for(c=0;c>>e)>>>26),6>e?(g=a[c]<<6-e,e+=26,c++):(g<<=6,e-=6);for(;d.length&3&&!b;)d+="=";return d},toBits:function(a,b){a=a.replace(/\s|=/g,"");var c=[],d,e=0,f=sjcl.codec.base64.S,g=0,h;b&&(f=f.substr(0,62)+"-_");for(d=0;dh)throw new sjcl.exception.invalid("this isn't base64!");26>>e),g=h<<32-e):(e+=6,g^=h<<32-e)}e&56&&c.push(sjcl.bitArray.partial(e&56,g,1));return c}};sjcl.codec.base64url={fromBits:function(a){return sjcl.codec.base64.fromBits(a,1,1)},toBits:function(a){return sjcl.codec.base64.toBits(a,1)}};sjcl.hash.sha256=function(a){this.b[0]||this.N();a?(this.g=a.g.slice(0),this.f=a.f.slice(0),this.c=a.c):this.reset()};sjcl.hash.sha256.hash=function(a){return(new sjcl.hash.sha256).update(a).finalize()}; -sjcl.hash.sha256.prototype={blockSize:512,reset:function(){this.g=this.D.slice(0);this.f=[];this.c=0;return this},update:function(a){"string"===typeof a&&(a=sjcl.codec.utf8String.toBits(a));var b,c=this.f=sjcl.bitArray.concat(this.f,a);b=this.c;a=this.c=b+sjcl.bitArray.bitLength(a);if(0x1fffffffffffffb;c++){e=!0;for(d=2;d*d<=c;d++)if(0===c%d){e= -!1;break}e&&(8>b&&(this.D[b]=a(Math.pow(c,.5))),this.b[b]=a(Math.pow(c,1/3)),b++)}},l:function(a){var b,c,d,e=this.g,f=this.b,g=e[0],h=e[1],k=e[2],n=e[3],l=e[4],m=e[5],p=e[6],q=e[7];for(b=0;64>b;b++)16>b?c=a[b]:(c=a[b+1&15],d=a[b+14&15],c=a[b&15]=(c>>>7^c>>>18^c>>>3^c<<25^c<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+a[b&15]+a[b+9&15]|0),c=c+q+(l>>>6^l>>>11^l>>>25^l<<26^l<<21^l<<7)+(p^l&(m^p))+f[b],q=p,p=m,m=l,l=n+c|0,n=k,k=h,h=g,g=c+(h&k^n&(h^k))+(h>>>2^h>>>13^h>>>22^h<<30^h<<19^h<<10)|0;e[0]=e[0]+g| -0;e[1]=e[1]+h|0;e[2]=e[2]+k|0;e[3]=e[3]+n|0;e[4]=e[4]+l|0;e[5]=e[5]+m|0;e[6]=e[6]+p|0;e[7]=e[7]+q|0}};sjcl.hash.sha1=function(a){a?(this.g=a.g.slice(0),this.f=a.f.slice(0),this.c=a.c):this.reset()};sjcl.hash.sha1.hash=function(a){return(new sjcl.hash.sha1).update(a).finalize()}; -sjcl.hash.sha1.prototype={blockSize:512,reset:function(){this.g=this.D.slice(0);this.f=[];this.c=0;return this},update:function(a){"string"===typeof a&&(a=sjcl.codec.utf8String.toBits(a));var b,c=this.f=sjcl.bitArray.concat(this.f,a);b=this.c;a=this.c=b+sjcl.bitArray.bitLength(a);if(0x1fffffffffffffc;c++)k[c]=a[c];else k=a;c=h[0];d=h[1];e=h[2];f=h[3];g=h[4];for(a=0;79>=a;a++)16<=a&&(b=k[a-3]^k[a-8]^k[a-14]^k[a-16],k[a]=b<<1|b>>>31),b=19>=a?d&e|~d&f:39>=a?d^e^f:59>=a?d&e|d&f|e&f:79>=a?d^e^f:void 0,b=(c<<5|c>>>27)+b+g+k[a]+this.b[Math.floor(a/20)]|0,g=f,f=e,e=d<<30|d>>>2,d=c,c=b;h[0]=h[0]+c|0;h[1]=h[1]+d|0;h[2]=h[2]+e|0;h[3]=h[3]+f|0;h[4]=h[4]+g|0}}; -sjcl.mode.ccm={name:"ccm",F:[],listenProgress:function(a){sjcl.mode.ccm.F.push(a)},unListenProgress:function(a){a=sjcl.mode.ccm.F.indexOf(a);-1k)throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");for(f=2;4>f&&n>>>8*f;f++);f<15-k&&(f=15-k);c=h.clamp(c, -8*(15-f));b=sjcl.mode.ccm.U(a,b,c,d,e,f);g=sjcl.mode.ccm.V(a,g,c,b,e,f);return h.concat(g.data,g.tag)},decrypt:function(a,b,c,d,e){e=e||64;d=d||[];var f=sjcl.bitArray,g=f.bitLength(c)/8,h=f.bitLength(b),k=f.clamp(b,h-e),n=f.bitSlice(b,h-e),h=(h-e)/8;if(7>g)throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes");for(b=2;4>b&&h>>>8*b;b++);b<15-g&&(b=15-g);c=f.clamp(c,8*(15-b));k=sjcl.mode.ccm.V(a,k,c,n,e,b);a=sjcl.mode.ccm.U(a,k.data,c,d,e,b);if(!f.equal(k.tag,a))throw new sjcl.exception.corrupt("ccm: tag doesn't match"); -return k.data},ka:function(a,b,c,d,e,f){var g=[],h=sjcl.bitArray,k=h.B;d=[h.partial(8,(b.length?64:0)|d-2<<2|f-1)];d=h.concat(d,c);d[3]|=e;d=a.encrypt(d);if(b.length)for(c=h.bitLength(b)/8,65279>=c?g=[h.partial(16,c)]:0xffffffff>=c&&(g=h.concat([h.partial(16,65534)],[c])),g=h.concat(g,b),b=0;be||16l&&(sjcl.mode.ccm.da(g/ -k),l+=m),c[3]++,e=a.encrypt(c),b[g]^=e[0],b[g+1]^=e[1],b[g+2]^=e[2],b[g+3]^=e[3];return{tag:d,data:h.clamp(b,n)}}};void 0===sjcl.beware&&(sjcl.beware={}); -sjcl.beware["CBC mode is dangerous because it doesn't protect message integrity."]=function(){sjcl.mode.cbc={name:"cbc",encrypt:function(a,b,c,d){if(d&&d.length)throw new sjcl.exception.invalid("cbc can't authenticate data");if(128!==sjcl.bitArray.bitLength(c))throw new sjcl.exception.invalid("cbc iv must be 128 bits");var e=sjcl.bitArray,f=e.B,g=e.bitLength(b),h=0,k=[];if(g&7)throw new sjcl.exception.invalid("pkcs#5 padding only works for multiples of a byte");for(d=0;h+128<=g;d+=4,h+=128)c=a.encrypt(f(c, -b.slice(d,d+4))),k.splice(d,0,c[0],c[1],c[2],c[3]);g=0x1010101*(16-(g>>3&15));c=a.encrypt(f(c,e.concat(b,[g,g,g,g]).slice(d,d+4)));k.splice(d,0,c[0],c[1],c[2],c[3]);return k},decrypt:function(a,b,c,d){if(d&&d.length)throw new sjcl.exception.invalid("cbc can't authenticate data");if(128!==sjcl.bitArray.bitLength(c))throw new sjcl.exception.invalid("cbc iv must be 128 bits");if(sjcl.bitArray.bitLength(b)&127||!b.length)throw new sjcl.exception.corrupt("cbc ciphertext must be a positive multiple of the block size"); -var e=sjcl.bitArray,f=e.B,g,h=[];for(d=0;de&&(a=b.hash(a));for(d=0;dd||0>c)throw new sjcl.exception.invalid("invalid params to pbkdf2");"string"===typeof a&&(a=sjcl.codec.utf8String.toBits(a));"string"===typeof b&&(b=sjcl.codec.utf8String.toBits(b));e=e||sjcl.misc.hmac;a=new e(a);var f,g,h,k,n=[],l=sjcl.bitArray;for(k=1;32*n.length<(d||1);k++){e=f=a.encrypt(l.concat(b,[k]));for(g=1;gg;g++)e.push(0x100000000*Math.random()|0);for(g=0;g=1<this.s&&(this.s= -f);this.O++;this.b=sjcl.hash.sha256.hash(this.b.concat(e));this.K=new sjcl.cipher.aes(this.b);for(d=0;4>d&&(this.m[d]=this.m[d]+1|0,!this.m[d]);d++);}for(d=0;d>>1;this.h[g].update([d,this.M++,2,b,f,a.length].concat(a))}break;case "string":void 0===b&&(b=a.length);this.h[g].update([d,this.M++,3,b,f,a.length]);this.h[g].update(a);break;default:k=1}if(k)throw new sjcl.exception.bug("random: addEntropy only supports number, array of numbers or string");this.o[g]+=b;this.i+=b;h===this.w&&(this.isReady()!==this.w&&z("seeded",Math.max(this.s,this.i)),z("progress",this.getProgress()))}, -isReady:function(a){a=this.R[void 0!==a?a:this.L];return this.s&&this.s>=a?this.o[0]>this.$&&(new Date).valueOf()>this.X?this.I|this.H:this.H:this.i>=a?this.I|this.w:this.w},getProgress:function(a){a=this.R[a?a:this.L];return this.s>=a?1:this.i>a?1:this.i/a},startCollectors:function(){if(!this.C){this.a={loadTimeCollector:A(this,this.ja),mouseCollector:A(this,this.la),keyboardCollector:A(this,this.ia),accelerometerCollector:A(this,this.ca),touchCollector:A(this,this.na)};if(window.addEventListener)window.addEventListener("load", -this.a.loadTimeCollector,!1),window.addEventListener("mousemove",this.a.mouseCollector,!1),window.addEventListener("keypress",this.a.keyboardCollector,!1),window.addEventListener("devicemotion",this.a.accelerometerCollector,!1),window.addEventListener("touchmove",this.a.touchCollector,!1);else if(document.attachEvent)document.attachEvent("onload",this.a.loadTimeCollector),document.attachEvent("onmousemove",this.a.mouseCollector),document.attachEvent("keypress",this.a.keyboardCollector);else throw new sjcl.exception.bug("can't attach event"); -this.C=!0}},stopCollectors:function(){this.C&&(window.removeEventListener?(window.removeEventListener("load",this.a.loadTimeCollector,!1),window.removeEventListener("mousemove",this.a.mouseCollector,!1),window.removeEventListener("keypress",this.a.keyboardCollector,!1),window.removeEventListener("devicemotion",this.a.accelerometerCollector,!1),window.removeEventListener("touchmove",this.a.touchCollector,!1)):document.detachEvent&&(document.detachEvent("onload",this.a.loadTimeCollector),document.detachEvent("onmousemove", -this.a.mouseCollector),document.detachEvent("keypress",this.a.keyboardCollector)),this.C=!1)},addEventListener:function(a,b){this.J[a][this.ea++]=b},removeEventListener:function(a,b){var c,d,e=this.J[a],f=[];for(d in e)e.hasOwnProperty(d)&&e[d]===b&&f.push(d);for(c=0;cb&&(a.m[b]=a.m[b]+1|0,!a.m[b]);b++);return a.K.encrypt(a.m)} -function A(a,b){return function(){b.apply(a,arguments)}}sjcl.random=new sjcl.prng(6); -a:try{var C,D,E,F;if(F="undefined"!==typeof module&&module.exports){var G;try{G=require("crypto")}catch(a){G=null}F=D=G}if(F&&D.randomBytes)C=D.randomBytes(128),C=new Uint32Array((new Uint8Array(C)).buffer),sjcl.random.addEntropy(C,1024,"crypto['randomBytes']");else if("undefined"!==typeof window&&"undefined"!==typeof Uint32Array){E=new Uint32Array(32);if(window.crypto&&window.crypto.getRandomValues)window.crypto.getRandomValues(E);else if(window.msCrypto&&window.msCrypto.getRandomValues)window.msCrypto.getRandomValues(E); -else break a;sjcl.random.addEntropy(E,1024,"crypto['getRandomValues']")}}catch(a){"undefined"!==typeof window&&window.console&&(console.log("There was an error collecting entropy from the browser:"),console.log(a))} -sjcl.json={defaults:{v:1,iter:1E4,ks:128,ts:64,mode:"ccm",adata:"",cipher:"aes"},ha:function(a,b,c,d){c=c||{};d=d||{};var e=sjcl.json,f=e.j({iv:sjcl.random.randomWords(4,0)},e.defaults),g;e.j(f,c);c=f.adata;"string"===typeof f.salt&&(f.salt=sjcl.codec.base64.toBits(f.salt));"string"===typeof f.iv&&(f.iv=sjcl.codec.base64.toBits(f.iv));if(!sjcl.mode[f.mode]||!sjcl.cipher[f.cipher]||"string"===typeof a&&100>=f.iter||64!==f.ts&&96!==f.ts&&128!==f.ts||128!==f.ks&&192!==f.ks&&0x100!==f.ks||2>f.iv.length|| -4=b.iter||64!==b.ts&&96!==b.ts&&128!==b.ts||128!==b.ks&&192!==b.ks&&0x100!==b.ks||!b.iv||2>b.iv.length||4>> 24] << 24 ^ f[c >> 16 & 255] << 16 ^ f[c >> 8 & 255] << 8 ^ f[c & 255], 0 === a % b && (c = c << 8 ^ c >>> 24 ^ h << 24, h = h << 1 ^ 283 * (h >> 7)); - d[a] = d[a - b] ^ c; - } - for (b = 0; a; b++, a--) - c = d[b & 3 ? a : a - 4], e[b] = 4 >= a || 4 > b ? c : g[0][f[c >>> 24]] ^ g[1][f[c >> 16 & 255]] ^ g[2][f[c >> 8 & 255]] ^ g[3][f[c & - 255]]; -}; -sjcl.cipher.aes.prototype = { encrypt: function (a) { return r(this, a, 0); }, decrypt: function (a) { return r(this, a, 1); }, u: [[[], [], [], [], []], [[], [], [], [], []]], N: function () { - var a = this.u[0], b = this.u[1], c = a[4], d = b[4], e, f, g, h = [], k = [], n, l, m, p; - for (e = 0; 0x100 > e; e++) - k[(h[e] = e << 1 ^ 283 * (e >> 7)) ^ e] = e; - for (f = g = 0; !c[f]; f ^= n || 1, g = k[g] || 1) - for (m = g ^ g << 1 ^ g << 2 ^ g << 3 ^ g << 4, m = m >> 8 ^ m & 255 ^ 99, c[f] = m, d[m] = f, l = h[e = h[n = h[f]]], p = 0x1010101 * l ^ 0x10001 * e ^ 0x101 * n ^ 0x1010100 * f, l = 0x101 * h[m] ^ 0x1010100 * m, e = 0; 4 > e; e++) - a[e][f] = l = l << 24 ^ l >>> 8, b[e][m] = p = p << 24 ^ p >>> 8; - for (e = - 0; 5 > e; e++) - a[e] = a[e].slice(0), b[e] = b[e].slice(0); - } }; -function r(a, b, c) { - if (4 !== b.length) - throw new sjcl.exception.invalid("invalid aes block size"); - var d = a.b[c], e = b[0] ^ d[0], f = b[c ? 3 : 1] ^ d[1], g = b[2] ^ d[2]; - b = b[c ? 1 : 3] ^ d[3]; - var h, k, n, l = d.length / 4 - 2, m, p = 4, q = [0, 0, 0, 0]; - h = a.u[c]; - a = h[0]; - var u = h[1], v = h[2], w = h[3], x = h[4]; - for (m = 0; m < l; m++) - h = a[e >>> 24] ^ u[f >> 16 & 255] ^ v[g >> 8 & 255] ^ w[b & 255] ^ d[p], k = a[f >>> 24] ^ u[g >> 16 & 255] ^ v[b >> 8 & 255] ^ w[e & 255] ^ d[p + 1], n = a[g >>> 24] ^ u[b >> 16 & 255] ^ v[e >> 8 & 255] ^ w[f & 255] ^ d[p + 2], b = a[b >>> 24] ^ u[e >> 16 & 255] ^ v[f >> 8 & 255] ^ w[g & 255] ^ d[p + 3], p += 4, e = h, f = k, g = n; - for (m = - 0; 4 > m; m++) - q[c ? 3 & -m : m] = x[e >>> 24] << 24 ^ x[f >> 16 & 255] << 16 ^ x[g >> 8 & 255] << 8 ^ x[b & 255] ^ d[p++], h = e, e = f, f = g, g = b, b = h; - return q; -} -sjcl.bitArray = { bitSlice: function (a, b, c) { a = sjcl.bitArray.Y(a.slice(b / 32), 32 - (b & 31)).slice(1); return void 0 === c ? a : sjcl.bitArray.clamp(a, c - b); }, extract: function (a, b, c) { var d = Math.floor(-b - c & 31); return ((b + c - 1 ^ b) & -32 ? a[b / 32 | 0] << 32 - d ^ a[b / 32 + 1 | 0] >>> d : a[b / 32 | 0] >>> d) & (1 << c) - 1; }, concat: function (a, b) { if (0 === a.length || 0 === b.length) - return a.concat(b); var c = a[a.length - 1], d = sjcl.bitArray.getPartial(c); return 32 === d ? a.concat(b) : sjcl.bitArray.Y(b, d, c | 0, a.slice(0, a.length - 1)); }, bitLength: function (a) { - var b = a.length; - return 0 === - b ? 0 : 32 * (b - 1) + sjcl.bitArray.getPartial(a[b - 1]); - }, clamp: function (a, b) { if (32 * a.length < b) - return a; a = a.slice(0, Math.ceil(b / 32)); var c = a.length; b = b & 31; 0 < c && b && (a[c - 1] = sjcl.bitArray.partial(b, a[c - 1] & 2147483648 >> b - 1, 1)); return a; }, partial: function (a, b, c) { return 32 === a ? b : (c ? b | 0 : b << 32 - a) + 0x10000000000 * a; }, getPartial: function (a) { return Math.round(a / 0x10000000000) || 32; }, equal: function (a, b) { - if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) - return !1; - var c = 0, d; - for (d = 0; d < a.length; d++) - c |= a[d] ^ b[d]; - return 0 === - c; - }, Y: function (a, b, c, d) { var e; e = 0; for (void 0 === d && (d = []); 32 <= b; b -= 32) - d.push(c), c = 0; if (0 === b) - return d.concat(a); for (e = 0; e < a.length; e++) - d.push(c | a[e] >>> b), c = a[e] << 32 - b; e = a.length ? a[a.length - 1] : 0; a = sjcl.bitArray.getPartial(e); d.push(sjcl.bitArray.partial(b + a & 31, 32 < b + a ? c : d.pop(), 1)); return d; }, B: function (a, b) { return [a[0] ^ b[0], a[1] ^ b[1], a[2] ^ b[2], a[3] ^ b[3]]; }, byteswapM: function (a) { var b, c; for (b = 0; b < a.length; ++b) - c = a[b], a[b] = c >>> 24 | c >>> 8 & 0xff00 | (c & 0xff00) << 8 | c << 24; return a; } }; -sjcl.codec.utf8String = { fromBits: function (a) { var b = "", c = sjcl.bitArray.bitLength(a), d, e; for (d = 0; d < c / 8; d++) - 0 === (d & 3) && (e = a[d / 4]), b += String.fromCharCode(e >>> 8 >>> 8 >>> 8), e <<= 8; return decodeURIComponent(escape(b)); }, toBits: function (a) { a = unescape(encodeURIComponent(a)); var b = [], c, d = 0; for (c = 0; c < a.length; c++) - d = d << 8 | a.charCodeAt(c), 3 === (c & 3) && (b.push(d), d = 0); c & 3 && b.push(sjcl.bitArray.partial(8 * (c & 3), d)); return b; } }; -sjcl.codec.hex = { fromBits: function (a) { var b = "", c; for (c = 0; c < a.length; c++) - b += ((a[c] | 0) + 0xf00000000000).toString(16).substr(4); return b.substr(0, sjcl.bitArray.bitLength(a) / 4); }, toBits: function (a) { var b, c = [], d; a = a.replace(/\s|0x/g, ""); d = a.length; a = a + "00000000"; for (b = 0; b < a.length; b += 8) - c.push(parseInt(a.substr(b, 8), 16) ^ 0); return sjcl.bitArray.clamp(c, 4 * d); } }; -sjcl.codec.base64 = { S: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", fromBits: function (a, b, c) { var d = "", e = 0, f = sjcl.codec.base64.S, g = 0, h = sjcl.bitArray.bitLength(a); c && (f = f.substr(0, 62) + "-_"); for (c = 0; 6 * d.length < h;) - d += f.charAt((g ^ a[c] >>> e) >>> 26), 6 > e ? (g = a[c] << 6 - e, e += 26, c++) : (g <<= 6, e -= 6); for (; d.length & 3 && !b;) - d += "="; return d; }, toBits: function (a, b) { - a = a.replace(/\s|=/g, ""); - var c = [], d, e = 0, f = sjcl.codec.base64.S, g = 0, h; - b && (f = f.substr(0, 62) + "-_"); - for (d = 0; d < a.length; d++) { - h = f.indexOf(a.charAt(d)); - if (0 > h) - throw new sjcl.exception.invalid("this isn't base64!"); - 26 < e ? (e -= 26, c.push(g ^ h >>> e), g = h << 32 - e) : (e += 6, g ^= h << 32 - e); - } - e & 56 && c.push(sjcl.bitArray.partial(e & 56, g, 1)); - return c; - } }; -sjcl.codec.base64url = { fromBits: function (a) { return sjcl.codec.base64.fromBits(a, 1, 1); }, toBits: function (a) { return sjcl.codec.base64.toBits(a, 1); } }; -sjcl.hash.sha256 = function (a) { this.b[0] || this.N(); a ? (this.g = a.g.slice(0), this.f = a.f.slice(0), this.c = a.c) : this.reset(); }; -sjcl.hash.sha256.hash = function (a) { return (new sjcl.hash.sha256).update(a).finalize(); }; -sjcl.hash.sha256.prototype = { blockSize: 512, reset: function () { this.g = this.D.slice(0); this.f = []; this.c = 0; return this; }, update: function (a) { - "string" === typeof a && (a = sjcl.codec.utf8String.toBits(a)); - var b, c = this.f = sjcl.bitArray.concat(this.f, a); - b = this.c; - a = this.c = b + sjcl.bitArray.bitLength(a); - if (0x1fffffffffffff < a) - throw new sjcl.exception.invalid("Cannot hash more than 2^53 - 1 bits"); - if ("undefined" !== typeof Uint32Array) { - var d = new Uint32Array(c), e = 0; - for (b = 512 + b - (512 + b & 0x1ff); b <= a; b += 512) - this.l(d.subarray(16 * e, 16 * (e + 1))), e += 1; - c.splice(0, 16 * e); - } - else - for (b = 512 + b - (512 + b & 0x1ff); b <= a; b += 512) - this.l(c.splice(0, 16)); - return this; - }, finalize: function () { var a, b = this.f, c = this.g, b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1, 1)]); for (a = b.length + 2; a & 15; a++) - b.push(0); b.push(Math.floor(this.c / 0x100000000)); for (b.push(this.c | 0); b.length;) - this.l(b.splice(0, 16)); this.reset(); return c; }, D: [], b: [], N: function () { - function a(a) { return 0x100000000 * (a - Math.floor(a)) | 0; } - for (var b = 0, c = 2, d, e; 64 > b; c++) { - e = !0; - for (d = 2; d * d <= c; d++) - if (0 === c % d) { - e = - !1; - break; - } - e && (8 > b && (this.D[b] = a(Math.pow(c, .5))), this.b[b] = a(Math.pow(c, 1 / 3)), b++); - } - }, l: function (a) { - var b, c, d, e = this.g, f = this.b, g = e[0], h = e[1], k = e[2], n = e[3], l = e[4], m = e[5], p = e[6], q = e[7]; - for (b = 0; 64 > b; b++) - 16 > b ? c = a[b] : (c = a[b + 1 & 15], d = a[b + 14 & 15], c = a[b & 15] = (c >>> 7 ^ c >>> 18 ^ c >>> 3 ^ c << 25 ^ c << 14) + (d >>> 17 ^ d >>> 19 ^ d >>> 10 ^ d << 15 ^ d << 13) + a[b & 15] + a[b + 9 & 15] | 0), c = c + q + (l >>> 6 ^ l >>> 11 ^ l >>> 25 ^ l << 26 ^ l << 21 ^ l << 7) + (p ^ l & (m ^ p)) + f[b], q = p, p = m, m = l, l = n + c | 0, n = k, k = h, h = g, g = c + (h & k ^ n & (h ^ k)) + (h >>> 2 ^ h >>> 13 ^ h >>> 22 ^ h << 30 ^ h << 19 ^ h << 10) | 0; - e[0] = e[0] + g | - 0; - e[1] = e[1] + h | 0; - e[2] = e[2] + k | 0; - e[3] = e[3] + n | 0; - e[4] = e[4] + l | 0; - e[5] = e[5] + m | 0; - e[6] = e[6] + p | 0; - e[7] = e[7] + q | 0; - } }; -sjcl.hash.sha1 = function (a) { a ? (this.g = a.g.slice(0), this.f = a.f.slice(0), this.c = a.c) : this.reset(); }; -sjcl.hash.sha1.hash = function (a) { return (new sjcl.hash.sha1).update(a).finalize(); }; -sjcl.hash.sha1.prototype = { blockSize: 512, reset: function () { this.g = this.D.slice(0); this.f = []; this.c = 0; return this; }, update: function (a) { - "string" === typeof a && (a = sjcl.codec.utf8String.toBits(a)); - var b, c = this.f = sjcl.bitArray.concat(this.f, a); - b = this.c; - a = this.c = b + sjcl.bitArray.bitLength(a); - if (0x1fffffffffffff < a) - throw new sjcl.exception.invalid("Cannot hash more than 2^53 - 1 bits"); - if ("undefined" !== typeof Uint32Array) { - var d = new Uint32Array(c), e = 0; - for (b = this.blockSize + b - (this.blockSize + b & this.blockSize - 1); b <= - a; b += this.blockSize) - this.l(d.subarray(16 * e, 16 * (e + 1))), e += 1; - c.splice(0, 16 * e); - } - else - for (b = this.blockSize + b - (this.blockSize + b & this.blockSize - 1); b <= a; b += this.blockSize) - this.l(c.splice(0, 16)); - return this; - }, finalize: function () { var a, b = this.f, c = this.g, b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1, 1)]); for (a = b.length + 2; a & 15; a++) - b.push(0); b.push(Math.floor(this.c / 0x100000000)); for (b.push(this.c | 0); b.length;) - this.l(b.splice(0, 16)); this.reset(); return c; }, D: [1732584193, 4023233417, 2562383102, 271733878, 3285377520], - b: [1518500249, 1859775393, 2400959708, 3395469782], l: function (a) { var b, c, d, e, f, g, h = this.g, k; if ("undefined" !== typeof Uint32Array) - for (k = Array(80), c = 0; 16 > c; c++) - k[c] = a[c]; - else - k = a; c = h[0]; d = h[1]; e = h[2]; f = h[3]; g = h[4]; for (a = 0; 79 >= a; a++) - 16 <= a && (b = k[a - 3] ^ k[a - 8] ^ k[a - 14] ^ k[a - 16], k[a] = b << 1 | b >>> 31), b = 19 >= a ? d & e | ~d & f : 39 >= a ? d ^ e ^ f : 59 >= a ? d & e | d & f | e & f : 79 >= a ? d ^ e ^ f : void 0, b = (c << 5 | c >>> 27) + b + g + k[a] + this.b[Math.floor(a / 20)] | 0, g = f, f = e, e = d << 30 | d >>> 2, d = c, c = b; h[0] = h[0] + c | 0; h[1] = h[1] + d | 0; h[2] = h[2] + e | 0; h[3] = h[3] + f | 0; h[4] = h[4] + g | 0; } }; -sjcl.mode.ccm = { name: "ccm", F: [], listenProgress: function (a) { sjcl.mode.ccm.F.push(a); }, unListenProgress: function (a) { a = sjcl.mode.ccm.F.indexOf(a); -1 < a && sjcl.mode.ccm.F.splice(a, 1); }, da: function (a) { var b = sjcl.mode.ccm.F.slice(), c; for (c = 0; c < b.length; c += 1) - b[c](a); }, encrypt: function (a, b, c, d, e) { - var f, g = b.slice(0), h = sjcl.bitArray, k = h.bitLength(c) / 8, n = h.bitLength(g) / 8; - e = e || 64; - d = d || []; - if (7 > k) - throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes"); - for (f = 2; 4 > f && n >>> 8 * f; f++) - ; - f < 15 - k && (f = 15 - k); - c = h.clamp(c, 8 * (15 - f)); - b = sjcl.mode.ccm.U(a, b, c, d, e, f); - g = sjcl.mode.ccm.V(a, g, c, b, e, f); - return h.concat(g.data, g.tag); - }, decrypt: function (a, b, c, d, e) { - e = e || 64; - d = d || []; - var f = sjcl.bitArray, g = f.bitLength(c) / 8, h = f.bitLength(b), k = f.clamp(b, h - e), n = f.bitSlice(b, h - e), h = (h - e) / 8; - if (7 > g) - throw new sjcl.exception.invalid("ccm: iv must be at least 7 bytes"); - for (b = 2; 4 > b && h >>> 8 * b; b++) - ; - b < 15 - g && (b = 15 - g); - c = f.clamp(c, 8 * (15 - b)); - k = sjcl.mode.ccm.V(a, k, c, n, e, b); - a = sjcl.mode.ccm.U(a, k.data, c, d, e, b); - if (!f.equal(k.tag, a)) - throw new sjcl.exception.corrupt("ccm: tag doesn't match"); - return k.data; - }, ka: function (a, b, c, d, e, f) { var g = [], h = sjcl.bitArray, k = h.B; d = [h.partial(8, (b.length ? 64 : 0) | d - 2 << 2 | f - 1)]; d = h.concat(d, c); d[3] |= e; d = a.encrypt(d); if (b.length) - for (c = h.bitLength(b) / 8, 65279 >= c ? g = [h.partial(16, c)] : 0xffffffff >= c && (g = h.concat([h.partial(16, 65534)], [c])), g = h.concat(g, b), b = 0; b < g.length; b += 4) - d = a.encrypt(k(d, g.slice(b, b + 4).concat([0, 0, 0]))); return d; }, U: function (a, b, c, d, e, f) { - var g = sjcl.bitArray, h = g.B; - e /= 8; - if (e % 2 || 4 > e || 16 < e) - throw new sjcl.exception.invalid("ccm: invalid tag length"); - if (0xffffffff < d.length || 0xffffffff < b.length) - throw new sjcl.exception.bug("ccm: can't deal with 4GiB or more data"); - c = sjcl.mode.ccm.ka(a, d, c, e, g.bitLength(b) / 8, f); - for (d = 0; d < b.length; d += 4) - c = a.encrypt(h(c, b.slice(d, d + 4).concat([0, 0, 0]))); - return g.clamp(c, 8 * e); - }, V: function (a, b, c, d, e, f) { - var g, h = sjcl.bitArray; - g = h.B; - var k = b.length, n = h.bitLength(b), l = k / 50, m = l; - c = h.concat([h.partial(8, f - 1)], c).concat([0, 0, 0]).slice(0, 4); - d = h.bitSlice(g(d, a.encrypt(c)), 0, e); - if (!k) - return { tag: d, data: [] }; - for (g = 0; g < k; g += 4) - g > l && (sjcl.mode.ccm.da(g / - k), l += m), c[3]++, e = a.encrypt(c), b[g] ^= e[0], b[g + 1] ^= e[1], b[g + 2] ^= e[2], b[g + 3] ^= e[3]; - return { tag: d, data: h.clamp(b, n) }; - } }; -void 0 === sjcl.beware && (sjcl.beware = {}); -sjcl.beware["CBC mode is dangerous because it doesn't protect message integrity."] = function () { - sjcl.mode.cbc = { name: "cbc", encrypt: function (a, b, c, d) { - if (d && d.length) - throw new sjcl.exception.invalid("cbc can't authenticate data"); - if (128 !== sjcl.bitArray.bitLength(c)) - throw new sjcl.exception.invalid("cbc iv must be 128 bits"); - var e = sjcl.bitArray, f = e.B, g = e.bitLength(b), h = 0, k = []; - if (g & 7) - throw new sjcl.exception.invalid("pkcs#5 padding only works for multiples of a byte"); - for (d = 0; h + 128 <= g; d += 4, h += 128) - c = a.encrypt(f(c, b.slice(d, d + 4))), k.splice(d, 0, c[0], c[1], c[2], c[3]); - g = 0x1010101 * (16 - (g >> 3 & 15)); - c = a.encrypt(f(c, e.concat(b, [g, g, g, g]).slice(d, d + 4))); - k.splice(d, 0, c[0], c[1], c[2], c[3]); - return k; - }, decrypt: function (a, b, c, d) { - if (d && d.length) - throw new sjcl.exception.invalid("cbc can't authenticate data"); - if (128 !== sjcl.bitArray.bitLength(c)) - throw new sjcl.exception.invalid("cbc iv must be 128 bits"); - if (sjcl.bitArray.bitLength(b) & 127 || !b.length) - throw new sjcl.exception.corrupt("cbc ciphertext must be a positive multiple of the block size"); - var e = sjcl.bitArray, f = e.B, g, h = []; - for (d = 0; d < b.length; d += 4) - g = b.slice(d, d + 4), c = f(c, a.decrypt(g)), h.splice(d, 0, c[0], c[1], c[2], c[3]), c = g; - g = h[d - 1] & 255; - if (0 === g || 16 < g) - throw new sjcl.exception.corrupt("pkcs#5 padding corrupt"); - c = 0x1010101 * g; - if (!e.equal(e.bitSlice([c, c, c, c], 0, 8 * g), e.bitSlice(h, 32 * h.length - 8 * g, 32 * h.length))) - throw new sjcl.exception.corrupt("pkcs#5 padding corrupt"); - return e.bitSlice(h, 0, 32 * h.length - 8 * g); - } }; -}; -sjcl.misc.hmac = function (a, b) { this.W = b = b || sjcl.hash.sha256; var c = [[], []], d, e = b.prototype.blockSize / 32; this.A = [new b, new b]; a.length > e && (a = b.hash(a)); for (d = 0; d < e; d++) - c[0][d] = a[d] ^ 909522486, c[1][d] = a[d] ^ 1549556828; this.A[0].update(c[0]); this.A[1].update(c[1]); this.P = new b(this.A[0]); }; -sjcl.misc.hmac.prototype.encrypt = sjcl.misc.hmac.prototype.mac = function (a) { if (this.Z) - throw new sjcl.exception.invalid("encrypt on already updated hmac called!"); this.update(a); return this.digest(a); }; -sjcl.misc.hmac.prototype.reset = function () { this.P = new this.W(this.A[0]); this.Z = !1; }; -sjcl.misc.hmac.prototype.update = function (a) { this.Z = !0; this.P.update(a); }; -sjcl.misc.hmac.prototype.digest = function () { var a = this.P.finalize(), a = (new this.W(this.A[1])).update(a).finalize(); this.reset(); return a; }; -sjcl.misc.pbkdf2 = function (a, b, c, d, e) { c = c || 1E4; if (0 > d || 0 > c) - throw new sjcl.exception.invalid("invalid params to pbkdf2"); "string" === typeof a && (a = sjcl.codec.utf8String.toBits(a)); "string" === typeof b && (b = sjcl.codec.utf8String.toBits(b)); e = e || sjcl.misc.hmac; a = new e(a); var f, g, h, k, n = [], l = sjcl.bitArray; for (k = 1; 32 * n.length < (d || 1); k++) { - e = f = a.encrypt(l.concat(b, [k])); - for (g = 1; g < c; g++) - for (f = a.encrypt(f), h = 0; h < f.length; h++) - e[h] ^= f[h]; - n = n.concat(e); -} d && (n = l.clamp(n, d)); return n; }; -sjcl.prng = function (a) { this.h = [new sjcl.hash.sha256]; this.o = [0]; this.O = 0; this.G = {}; this.M = 0; this.T = {}; this.X = this.i = this.s = this.fa = 0; this.b = [0, 0, 0, 0, 0, 0, 0, 0]; this.m = [0, 0, 0, 0]; this.K = void 0; this.L = a; this.C = !1; this.J = { progress: {}, seeded: {} }; this.w = this.ea = 0; this.H = 1; this.I = 2; this.aa = 0x10000; this.R = [0, 48, 64, 96, 128, 192, 0x100, 384, 512, 768, 1024]; this.ba = 3E4; this.$ = 80; }; -sjcl.prng.prototype = { randomWords: function (a, b) { - var c = [], d; - d = this.isReady(b); - var e; - if (d === this.w) - throw new sjcl.exception.notReady("generator isn't seeded"); - if (d & this.I) { - d = !(d & this.H); - e = []; - var f = 0, g; - this.X = e[0] = (new Date).valueOf() + this.ba; - for (g = 0; 16 > g; g++) - e.push(0x100000000 * Math.random() | 0); - for (g = 0; g < this.h.length && (e = e.concat(this.h[g].finalize()), f += this.o[g], this.o[g] = 0, d || !(this.O & 1 << g)); g++) - ; - this.O >= 1 << this.h.length && (this.h.push(new sjcl.hash.sha256), this.o.push(0)); - this.i -= f; - f > this.s && (this.s = - f); - this.O++; - this.b = sjcl.hash.sha256.hash(this.b.concat(e)); - this.K = new sjcl.cipher.aes(this.b); - for (d = 0; 4 > d && (this.m[d] = this.m[d] + 1 | 0, !this.m[d]); d++) - ; - } - for (d = 0; d < a; d += 4) - 0 === (d + 1) % this.aa && t(this), e = y(this), c.push(e[0], e[1], e[2], e[3]); - t(this); - return c.slice(0, a); - }, setDefaultParanoia: function (a, b) { if (0 === a && "Setting paranoia=0 will ruin your security; use it only for testing" !== b) - throw new sjcl.exception.invalid("Setting paranoia=0 will ruin your security; use it only for testing"); this.L = a; }, addEntropy: function (a, b, c) { - c = c || "user"; - var d, e, f = (new Date).valueOf(), g = this.G[c], h = this.isReady(), k = 0; - d = this.T[c]; - void 0 === d && (d = this.T[c] = this.fa++); - void 0 === g && (g = this.G[c] = 0); - this.G[c] = (this.G[c] + 1) % this.h.length; - switch (typeof a) { - case "number": - void 0 === b && (b = 1); - this.h[g].update([d, this.M++, 1, b, f, 1, a | 0]); - break; - case "object": - c = Object.prototype.toString.call(a); - if ("[object Uint32Array]" === c) { - e = []; - for (c = 0; c < a.length; c++) - e.push(a[c]); - a = e; - } - else - for ("[object Array]" !== c && (k = 1), c = 0; c < a.length && !k; c++) - "number" !== typeof a[c] && - (k = 1); - if (!k) { - if (void 0 === b) - for (c = b = 0; c < a.length; c++) - for (e = a[c]; 0 < e;) - b++, e = e >>> 1; - this.h[g].update([d, this.M++, 2, b, f, a.length].concat(a)); - } - break; - case "string": - void 0 === b && (b = a.length); - this.h[g].update([d, this.M++, 3, b, f, a.length]); - this.h[g].update(a); - break; - default: k = 1; - } - if (k) - throw new sjcl.exception.bug("random: addEntropy only supports number, array of numbers or string"); - this.o[g] += b; - this.i += b; - h === this.w && (this.isReady() !== this.w && z("seeded", Math.max(this.s, this.i)), z("progress", this.getProgress())); - }, - isReady: function (a) { a = this.R[void 0 !== a ? a : this.L]; return this.s && this.s >= a ? this.o[0] > this.$ && (new Date).valueOf() > this.X ? this.I | this.H : this.H : this.i >= a ? this.I | this.w : this.w; }, getProgress: function (a) { a = this.R[a ? a : this.L]; return this.s >= a ? 1 : this.i > a ? 1 : this.i / a; }, startCollectors: function () { - if (!this.C) { - this.a = { loadTimeCollector: A(this, this.ja), mouseCollector: A(this, this.la), keyboardCollector: A(this, this.ia), accelerometerCollector: A(this, this.ca), touchCollector: A(this, this.na) }; - if (window.addEventListener) - window.addEventListener("load", this.a.loadTimeCollector, !1), window.addEventListener("mousemove", this.a.mouseCollector, !1), window.addEventListener("keypress", this.a.keyboardCollector, !1), window.addEventListener("devicemotion", this.a.accelerometerCollector, !1), window.addEventListener("touchmove", this.a.touchCollector, !1); - else if (document.attachEvent) - document.attachEvent("onload", this.a.loadTimeCollector), document.attachEvent("onmousemove", this.a.mouseCollector), document.attachEvent("keypress", this.a.keyboardCollector); - else - throw new sjcl.exception.bug("can't attach event"); - this.C = !0; - } - }, stopCollectors: function () { - this.C && (window.removeEventListener ? (window.removeEventListener("load", this.a.loadTimeCollector, !1), window.removeEventListener("mousemove", this.a.mouseCollector, !1), window.removeEventListener("keypress", this.a.keyboardCollector, !1), window.removeEventListener("devicemotion", this.a.accelerometerCollector, !1), window.removeEventListener("touchmove", this.a.touchCollector, !1)) : document.detachEvent && (document.detachEvent("onload", this.a.loadTimeCollector), document.detachEvent("onmousemove", this.a.mouseCollector), document.detachEvent("keypress", this.a.keyboardCollector)), this.C = !1); - }, addEventListener: function (a, b) { this.J[a][this.ea++] = b; }, removeEventListener: function (a, b) { var c, d, e = this.J[a], f = []; for (d in e) - e.hasOwnProperty(d) && e[d] === b && f.push(d); for (c = 0; c < f.length; c++) - d = f[c], delete e[d]; }, ia: function () { B(this, 1); }, la: function (a) { var b, c; try { - b = a.x || a.clientX || a.offsetX || 0, c = a.y || a.clientY || a.offsetY || 0; - } - catch (d) { - c = b = 0; - } 0 != b && 0 != c && this.addEntropy([b, c], 2, "mouse"); B(this, 0); }, na: function (a) { - a = - a.touches[0] || a.changedTouches[0]; - this.addEntropy([a.pageX || a.clientX, a.pageY || a.clientY], 1, "touch"); - B(this, 0); - }, ja: function () { B(this, 2); }, ca: function (a) { a = a.accelerationIncludingGravity.x || a.accelerationIncludingGravity.y || a.accelerationIncludingGravity.z; if (window.orientation) { - var b = window.orientation; - "number" === typeof b && this.addEntropy(b, 1, "accelerometer"); - } a && this.addEntropy(a, 2, "accelerometer"); B(this, 0); } }; -function z(a, b) { var c, d = sjcl.random.J[a], e = []; for (c in d) - d.hasOwnProperty(c) && e.push(d[c]); for (c = 0; c < e.length; c++) - e[c](b); } -function B(a, b) { "undefined" !== typeof window && window.performance && "function" === typeof window.performance.now ? a.addEntropy(window.performance.now(), b, "loadtime") : a.addEntropy((new Date).valueOf(), b, "loadtime"); } -function t(a) { a.b = y(a).concat(y(a)); a.K = new sjcl.cipher.aes(a.b); } -function y(a) { for (var b = 0; 4 > b && (a.m[b] = a.m[b] + 1 | 0, !a.m[b]); b++) - ; return a.K.encrypt(a.m); } -function A(a, b) { return function () { b.apply(a, arguments); }; } -sjcl.random = new sjcl.prng(6); -a: try { - var C, D, E, F; - if (F = "undefined" !== typeof module && module.exports) { - var G; - try { - G = require("crypto"); - } - catch (a) { - G = null; - } - F = D = G; - } - if (F && D.randomBytes) - C = D.randomBytes(128), C = new Uint32Array((new Uint8Array(C)).buffer), sjcl.random.addEntropy(C, 1024, "crypto['randomBytes']"); - else if ("undefined" !== typeof window && "undefined" !== typeof Uint32Array) { - E = new Uint32Array(32); - if (window.crypto && window.crypto.getRandomValues) - window.crypto.getRandomValues(E); - else if (window.msCrypto && window.msCrypto.getRandomValues) - window.msCrypto.getRandomValues(E); - else - break a; - sjcl.random.addEntropy(E, 1024, "crypto['getRandomValues']"); - } -} -catch (a) { - "undefined" !== typeof window && window.console && (console.log("There was an error collecting entropy from the browser:"), console.log(a)); -} -sjcl.json = { defaults: { v: 1, iter: 1E4, ks: 128, ts: 64, mode: "ccm", adata: "", cipher: "aes" }, ha: function (a, b, c, d) { - c = c || {}; - d = d || {}; - var e = sjcl.json, f = e.j({ iv: sjcl.random.randomWords(4, 0) }, e.defaults), g; - e.j(f, c); - c = f.adata; - "string" === typeof f.salt && (f.salt = sjcl.codec.base64.toBits(f.salt)); - "string" === typeof f.iv && (f.iv = sjcl.codec.base64.toBits(f.iv)); - if (!sjcl.mode[f.mode] || !sjcl.cipher[f.cipher] || "string" === typeof a && 100 >= f.iter || 64 !== f.ts && 96 !== f.ts && 128 !== f.ts || 128 !== f.ks && 192 !== f.ks && 0x100 !== f.ks || 2 > f.iv.length || - 4 < f.iv.length) - throw new sjcl.exception.invalid("json encrypt: invalid parameters"); - "string" === typeof a ? (g = sjcl.misc.cachedPbkdf2(a, f), a = g.key.slice(0, f.ks / 32), f.salt = g.salt) : sjcl.ecc && a instanceof sjcl.ecc.elGamal.publicKey && (g = a.kem(), f.kemtag = g.tag, a = g.key.slice(0, f.ks / 32)); - "string" === typeof b && (b = sjcl.codec.utf8String.toBits(b)); - "string" === typeof c && (f.adata = c = sjcl.codec.utf8String.toBits(c)); - g = new sjcl.cipher[f.cipher](a); - e.j(d, f); - d.key = a; - f.ct = "ccm" === f.mode && sjcl.arrayBuffer && sjcl.arrayBuffer.ccm && - b instanceof ArrayBuffer ? sjcl.arrayBuffer.ccm.encrypt(g, b, f.iv, c, f.ts) : sjcl.mode[f.mode].encrypt(g, b, f.iv, c, f.ts); - return f; - }, encrypt: function (a, b, c, d) { var e = sjcl.json, f = e.ha.apply(e, arguments); return e.encode(f); }, ga: function (a, b, c, d) { - c = c || {}; - d = d || {}; - var e = sjcl.json; - b = e.j(e.j(e.j({}, e.defaults), b), c, !0); - var f, g; - f = b.adata; - "string" === typeof b.salt && (b.salt = sjcl.codec.base64.toBits(b.salt)); - "string" === typeof b.iv && (b.iv = sjcl.codec.base64.toBits(b.iv)); - if (!sjcl.mode[b.mode] || !sjcl.cipher[b.cipher] || "string" === - typeof a && 100 >= b.iter || 64 !== b.ts && 96 !== b.ts && 128 !== b.ts || 128 !== b.ks && 192 !== b.ks && 0x100 !== b.ks || !b.iv || 2 > b.iv.length || 4 < b.iv.length) - throw new sjcl.exception.invalid("json decrypt: invalid parameters"); - "string" === typeof a ? (g = sjcl.misc.cachedPbkdf2(a, b), a = g.key.slice(0, b.ks / 32), b.salt = g.salt) : sjcl.ecc && a instanceof sjcl.ecc.elGamal.secretKey && (a = a.unkem(sjcl.codec.base64.toBits(b.kemtag)).slice(0, b.ks / 32)); - "string" === typeof f && (f = sjcl.codec.utf8String.toBits(f)); - g = new sjcl.cipher[b.cipher](a); - f = "ccm" === - b.mode && sjcl.arrayBuffer && sjcl.arrayBuffer.ccm && b.ct instanceof ArrayBuffer ? sjcl.arrayBuffer.ccm.decrypt(g, b.ct, b.iv, b.tag, f, b.ts) : sjcl.mode[b.mode].decrypt(g, b.ct, b.iv, f, b.ts); - e.j(d, b); - d.key = a; - return 1 === c.raw ? f : sjcl.codec.utf8String.fromBits(f); - }, decrypt: function (a, b, c, d) { var e = sjcl.json; return e.ga(a, e.decode(b), c, d); }, encode: function (a) { - var b, c = "{", d = ""; - for (b in a) - if (a.hasOwnProperty(b)) { - if (!b.match(/^[a-z0-9]+$/i)) - throw new sjcl.exception.invalid("json encode: invalid property name"); - c += d + '"' + - b + '":'; - d = ","; - switch (typeof a[b]) { - case "number": - case "boolean": - c += a[b]; - break; - case "string": - c += '"' + escape(a[b]) + '"'; - break; - case "object": - c += '"' + sjcl.codec.base64.fromBits(a[b], 0) + '"'; - break; - default: throw new sjcl.exception.bug("json encode: unsupported type"); - } - } - return c + "}"; - }, decode: function (a) { - a = a.replace(/\s/g, ""); - if (!a.match(/^\{.*\}$/)) - throw new sjcl.exception.invalid("json decode: this isn't json!"); - a = a.replace(/^\{|\}$/g, "").split(/,/); - var b = {}, c, d; - for (c = 0; c < a.length; c++) { - if (!(d = a[c].match(/^\s*(?:(["']?)([a-z][a-z0-9]*)\1)\s*:\s*(?:(-?\d+)|"([a-z0-9+\/%*_.@=\-]*)"|(true|false))$/i))) - throw new sjcl.exception.invalid("json decode: this isn't json!"); - null != d[3] ? b[d[2]] = parseInt(d[3], 10) : null != d[4] ? b[d[2]] = d[2].match(/^(ct|adata|salt|iv)$/) ? sjcl.codec.base64.toBits(d[4]) : unescape(d[4]) : null != d[5] && (b[d[2]] = "true" === d[5]); - } - return b; - }, j: function (a, b, c) { void 0 === a && (a = {}); if (void 0 === b) - return a; for (var d in b) - if (b.hasOwnProperty(d)) { - if (c && void 0 !== a[d] && a[d] !== b[d]) - throw new sjcl.exception.invalid("required parameter overridden"); - a[d] = b[d]; - } return a; }, pa: function (a, b) { var c = {}, d; for (d in a) - a.hasOwnProperty(d) && a[d] !== b[d] && (c[d] = a[d]); return c; }, oa: function (a, b) { var c = {}, d; for (d = 0; d < b.length; d++) - void 0 !== a[b[d]] && (c[b[d]] = a[b[d]]); return c; } }; -sjcl.encrypt = sjcl.json.encrypt; -sjcl.decrypt = sjcl.json.decrypt; -sjcl.misc.ma = {}; -sjcl.misc.cachedPbkdf2 = function (a, b) { var c = sjcl.misc.ma, d; b = b || {}; d = b.iter || 1E3; c = c[a] = c[a] || {}; d = c[d] = c[d] || { firstSalt: b.salt && b.salt.length ? b.salt.slice(0) : sjcl.random.randomWords(2, 0) }; c = void 0 === b.salt ? d.firstSalt : b.salt; d[c] = d[c] || sjcl.misc.pbkdf2(a, c, b.iter); return { key: d[c].slice(0), salt: c.slice(0) }; }; -"undefined" !== typeof module && module.exports && (module.exports = sjcl); -"function" === typeof define && define([], function () { return sjcl; }); -//# sourceMappingURL=sjcl.js.map \ No newline at end of file diff --git a/dist/api/utils/rncryptor/sjcl.js.map b/dist/api/utils/rncryptor/sjcl.js.map deleted file mode 100644 index c55ebf2..0000000 --- a/dist/api/utils/rncryptor/sjcl.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sjcl.js","sourceRoot":"","sources":["../../../../api/utils/rncryptor/sjcl.js"],"names":[],"mappings":"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AC,GAAC,EAAE,GAAC,EAAE,CAAC,EAAC,CAAC,GAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,GAAC,CAAC,CAAC,KAAG,CAAC,GAAC,CAAC,KAAG,EAAE,GAAC,CAAC,KAAG,CAAC,GAAC,CAAC,IAAE,EAAE,GAAC,CAAC,IAAE,EAAE,CAAC,GAAC,CAAC,CAAC,KAAG,EAAE,GAAC,CAAC,KAAG,EAAE,GAAC,CAAC,KAAG,EAAE,GAAC,CAAC,IAAE,EAAE,GAAC,CAAC,IAAE,EAAE,CAAC,GAAC,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC,GAAC,CAAC,CAAC,CAAC,GAAC,CAAC,GAAC,EAAE,CAAC,GAAC,CAAC,CAAC,EAAC,CAAC,GAAC,CAAC,GAAC,CAAC,GAAC,CAAC,CAAC,KAAG,CAAC,GAAC,CAAC,KAAG,EAAE,GAAC,CAAC,KAAG,EAAE,GAAC,CAAC,IAAE,EAAE,GAAC,CAAC,IAAE,EAAE,GAAC,CAAC,IAAE,CAAC,CAAC,GAAC,CAAC,CAAC,GAAC,CAAC,GAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,CAAC,GAAC,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,CAAC,GAAC,CAAC,CAAC,GAAC,CAAC,GAAC,CAAC,GAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,KAAG,CAAC,GAAC,CAAC,KAAG,EAAE,GAAC,CAAC,KAAG,EAAE,GAAC,CAAC,IAAE,EAAE,GAAC,CAAC,IAAE,EAAE,GAAC,CAAC,IAAE,EAAE,CAAC,GAAC,CAAC,CAAC;QAAA,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC;YACrf,CAAC,CAAC;QAAA,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,GAAC,CAAC,CAAC;QAAA,CAAC,CAAC,CAAC,C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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index cddf68b..7c15fa6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1706,8 +1706,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, "requires": { "file-uri-to-path": "1.0.0" } @@ -3950,9 +3948,7 @@ "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, "fill-range": { "version": "4.0.0", @@ -6346,6 +6342,14 @@ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, + "jscryptor": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/jscryptor/-/jscryptor-0.0.12.tgz", + "integrity": "sha1-IBTzRggoj9EoYP2OuGPH4mESVQk=", + "requires": { + "mcrypt": "^0.1" + } + }, "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", @@ -6676,6 +6680,15 @@ "object-visit": "^1.0.0" } }, + "mcrypt": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/mcrypt/-/mcrypt-0.1.17.tgz", + "integrity": "sha512-d0BijG+tuvoP55RMDlXqrqgLRDgAgbrQlCnU5l98VKooi7h8YdeBIOR0YkcA43lFISpk3ObUi/Eznwpuv5+IUA==", + "requires": { + "bindings": "^1.3.0", + "nan": "^2.14.0" + } + }, "md5": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", diff --git a/package.json b/package.json index c64448c..cc3f7fd 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,7 @@ "helmet": "^3.21.1", "jasmine": "^3.5.0", "js-sha256": "^0.9.0", + "jscryptor": "0.0.12", "lodash": "^4.17.15", "md5": "^2.2.1", "mqtt": "^4.0.0",