-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathsjcl.js
25 lines (25 loc) · 9.98 KB
/
sjcl.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
"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.i[0][0][0]||this.j();var b,c,d,e,f=this.i[0][4],h=this.i[1];b=a.length;var g=1;if(4!==b&&6!==b&&8!==b)throw new sjcl.exception.invalid("invalid aes key size");this.c=[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^g<<24,g=g<<1^283*(g>>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:h[0][f[c>>>24]]^h[1][f[c>>16&255]]^h[2][f[c>>8&255]]^h[3][f[c&
255]]};
sjcl.cipher.aes.prototype={encrypt:function(a){return V(this,a,0)},decrypt:function(a){return V(this,a,1)},i:[[[],[],[],[],[]],[[],[],[],[],[]]],j:function(){var a=this.i[0],b=this.i[1],c=a[4],d=b[4],e,f,h,g=[],p=[],t,l,k,m;for(e=0;0x100>e;e++)p[(g[e]=e<<1^283*(e>>7))^e]=e;for(f=h=0;!c[f];f^=t||1,h=p[h]||1)for(k=h^h<<1^h<<2^h<<3^h<<4,k=k>>8^k&255^99,c[f]=k,d[k]=f,l=g[e=g[t=g[f]]],m=0x1010101*l^0x10001*e^0x101*t^0x1010100*f,l=0x101*g[k]^0x1010100*k,e=0;4>e;e++)a[e][f]=l=l<<24^l>>>8,b[e][k]=m=m<<24^m>>>8;for(e=
0;5>e;e++)a[e]=a[e].slice(0),b[e]=b[e].slice(0)}};
function V(a,b,c){if(4!==b.length)throw new sjcl.exception.invalid("invalid aes block size");var d=a.c[c],e=b[0]^d[0],f=b[c?3:1]^d[1],h=b[2]^d[2];b=b[c?1:3]^d[3];var g,p,t,l=d.length/4-2,k,m=4,z=[0,0,0,0];g=a.i[c];a=g[0];var A=g[1],C=g[2],B=g[3],D=g[4];for(k=0;k<l;k++)g=a[e>>>24]^A[f>>16&255]^C[h>>8&255]^B[b&255]^d[m],p=a[f>>>24]^A[h>>16&255]^C[b>>8&255]^B[e&255]^d[m+1],t=a[h>>>24]^A[b>>16&255]^C[e>>8&255]^B[f&255]^d[m+2],b=a[b>>>24]^A[e>>16&255]^C[f>>8&255]^B[h&255]^d[m+3],m+=4,e=g,f=p,h=t;for(k=
0;4>k;k++)z[c?3&-k:k]=D[e>>>24]<<24^D[f>>16&255]<<16^D[h>>8&255]<<8^D[b&255]^d[m++],g=e,e=f,f=h,h=b,b=g;return z}
sjcl.bitArray={bitSlice:function(a,b,c){a=sjcl.bitArray.l(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.l(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},l: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},s: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.bytes={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.push(e>>>24),e<<=8;return b},toBits:function(a){var b=[],c,d=0;for(c=0;c<a.length;c++)d=d<<8|a[c],3===(c&3)&&(b.push(d),d=0);c&3&&b.push(sjcl.bitArray.partial(8*(c&3),d));return b}};sjcl.hash.sha256=function(a){this.c[0]||this.j();a?(this.f=a.f.slice(0),this.b=a.b.slice(0),this.a=a.a):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.f=this.h.slice(0);this.b=[];this.a=0;return this},update:function(a){"string"===typeof a&&(a=sjcl.codec.utf8String.toBits(a));var b,c=this.b=sjcl.bitArray.concat(this.b,a);b=this.a;a=this.a=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.g(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.g(c.splice(0,16));return this},finalize:function(){var a,b=this.b,c=this.f,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.a/0x100000000));for(b.push(this.a|0);b.length;)this.g(b.splice(0,16));this.reset();return c},h:[],c:[],j: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.h[b]=a(Math.pow(c,.5))),this.c[b]=a(Math.pow(c,1/3)),b++)}},g:function(a){var b,c,d,e=this.f,f=this.c,h=e[0],g=e[1],p=e[2],t=e[3],l=e[4],k=e[5],m=e[6],z=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+z+(l>>>6^l>>>11^l>>>25^l<<26^l<<21^l<<7)+(m^l&(k^m))+f[b],z=m,m=k,k=l,l=t+c|0,t=p,p=g,g=h,h=c+(g&p^t&(g^p))+(g>>>2^g>>>13^g>>>22^g<<30^g<<19^g<<10)|0;e[0]=e[0]+h|
0;e[1]=e[1]+g|0;e[2]=e[2]+p|0;e[3]=e[3]+t|0;e[4]=e[4]+l|0;e[5]=e[5]+k|0;e[6]=e[6]+m|0;e[7]=e[7]+z|0}};sjcl.hash.sha512=function(a){this.c[0]||this.j();a?(this.f=a.f.slice(0),this.b=a.b.slice(0),this.a=a.a):this.reset()};sjcl.hash.sha512.hash=function(a){return(new sjcl.hash.sha512).update(a).finalize()};
sjcl.hash.sha512.prototype={blockSize:1024,reset:function(){this.f=this.h.slice(0);this.b=[];this.a=0;return this},update:function(a){"string"===typeof a&&(a=sjcl.codec.utf8String.toBits(a));var b,c=this.b=sjcl.bitArray.concat(this.b,a);b=this.a;a=this.a=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=1024+b-(1024+b&1023);b<=a;b+=1024)this.g(d.subarray(32*
e,32*(e+1))),e+=1;c.splice(0,32*e)}else for(b=1024+b-(1024+b&1023);b<=a;b+=1024)this.g(c.splice(0,32));return this},finalize:function(){var a,b=this.b,c=this.f,b=sjcl.bitArray.concat(b,[sjcl.bitArray.partial(1,1)]);for(a=b.length+4;a&31;a++)b.push(0);b.push(0);b.push(0);b.push(Math.floor(this.a/0x100000000));for(b.push(this.a|0);b.length;)this.g(b.splice(0,32));this.reset();return c},h:[],m:[12372232,13281083,9762859,1914609,15106769,4090911,4308331,8266105],c:[],o:[2666018,15689165,5061423,9034684,
4764984,380953,1658779,7176472,197186,7368638,14987916,16757986,8096111,1480369,13046325,6891156,15813330,5187043,9229749,11312229,2818677,10937475,4324308,1135541,6741931,11809296,16458047,15666916,11046850,698149,229999,945776,13774844,2541862,12856045,9810911,11494366,7844520,15576806,8533307,15795044,4337665,16291729,5553712,15684120,6662416,7413802,12308920,13816008,4303699,9366425,10176680,13195875,4295371,6546291,11712675,15708924,1519456,15772530,6568428,6495784,8568297,13007125,7492395,2515356,
12632583,14740254,7262584,1535930,13146278,16321966,1853211,294276,13051027,13221564,1051980,4080310,6651434,14088940,4675607],j:function(){function a(a){return 0x100000000*(a-Math.floor(a))|0}function b(a){return 0x10000000000*(a-Math.floor(a))&255}for(var c=0,d=2,e,f;80>c;d++){f=!0;for(e=2;e*e<=d;e++)if(0===d%e){f=!1;break}f&&(8>c&&(this.h[2*c]=a(Math.pow(d,.5)),this.h[2*c+1]=b(Math.pow(d,.5))<<24|this.m[c]),this.c[2*c]=a(Math.pow(d,1/3)),this.c[2*c+1]=b(Math.pow(d,1/3))<<24|this.o[c],c++)}},g:function(a){var b,
c,d=this.f,e=this.c,f=d[0],h=d[1],g=d[2],p=d[3],t=d[4],l=d[5],k=d[6],m=d[7],z=d[8],A=d[9],C=d[10],B=d[11],D=d[12],N=d[13],W=d[14],O=d[15],r;if("undefined"!==typeof Uint32Array){r=Array(160);for(var q=0;32>q;q++)r[q]=a[q]}else r=a;var q=f,u=h,G=g,E=p,H=t,F=l,R=k,I=m,w=z,v=A,P=C,J=B,Q=D,K=N,S=W,L=O;for(a=0;80>a;a++){if(16>a)b=r[2*a],c=r[2*a+1];else{c=r[2*(a-15)];var n=r[2*(a-15)+1];b=(n<<31|c>>>1)^(n<<24|c>>>8)^c>>>7;var x=(c<<31|n>>>1)^(c<<24|n>>>8)^(c<<25|n>>>7);c=r[2*(a-2)];var y=r[2*(a-2)+1],n=
(y<<13|c>>>19)^(c<<3|y>>>29)^c>>>6,y=(c<<13|y>>>19)^(y<<3|c>>>29)^(c<<26|y>>>6),T=r[2*(a-7)],U=r[2*(a-16)],M=r[2*(a-16)+1];c=x+r[2*(a-7)+1];b=b+T+(c>>>0<x>>>0?1:0);c+=y;b+=n+(c>>>0<y>>>0?1:0);c+=M;b+=U+(c>>>0<M>>>0?1:0)}r[2*a]=b|=0;r[2*a+1]=c|=0;var T=w&P^~w&Q,X=v&J^~v&K,y=q&G^q&H^G&H,Z=u&E^u&F^E&F,U=(u<<4|q>>>28)^(q<<30|u>>>2)^(q<<25|u>>>7),M=(q<<4|u>>>28)^(u<<30|q>>>2)^(u<<25|q>>>7),aa=e[2*a],Y=e[2*a+1],n=L+((w<<18|v>>>14)^(w<<14|v>>>18)^(v<<23|w>>>9)),x=S+((v<<18|w>>>14)^(v<<14|w>>>18)^(w<<23|
v>>>9))+(n>>>0<L>>>0?1:0),n=n+X,x=x+(T+(n>>>0<X>>>0?1:0)),n=n+Y,x=x+(aa+(n>>>0<Y>>>0?1:0)),n=n+c|0,x=x+(b+(n>>>0<c>>>0?1:0));c=M+Z;b=U+y+(c>>>0<M>>>0?1:0);S=Q;L=K;Q=P;K=J;P=w;J=v;v=I+n|0;w=R+x+(v>>>0<I>>>0?1:0)|0;R=H;I=F;H=G;F=E;G=q;E=u;u=n+c|0;q=x+b+(u>>>0<n>>>0?1:0)|0}h=d[1]=h+u|0;d[0]=f+q+(h>>>0<u>>>0?1:0)|0;p=d[3]=p+E|0;d[2]=g+G+(p>>>0<E>>>0?1:0)|0;l=d[5]=l+F|0;d[4]=t+H+(l>>>0<F>>>0?1:0)|0;m=d[7]=m+I|0;d[6]=k+R+(m>>>0<I>>>0?1:0)|0;A=d[9]=A+v|0;d[8]=z+w+(A>>>0<v>>>0?1:0)|0;B=d[11]=B+J|0;d[10]=
C+P+(B>>>0<J>>>0?1:0)|0;N=d[13]=N+K|0;d[12]=D+Q+(N>>>0<K>>>0?1:0)|0;O=d[15]=O+L|0;d[14]=W+S+(O>>>0<L>>>0?1:0)|0}};"undefined"!==typeof module&&module.exports&&(module.exports=sjcl);"function"===typeof define&&define([],function(){return sjcl});
//joo_global_object.cpdf_sjcl = sjcl;