diff --git a/nacl-fast.js b/nacl-fast.js index f43971fd..d84b315e 100644 --- a/nacl-fast.js +++ b/nacl-fast.js @@ -1651,7 +1651,7 @@ nacl.box.keyPair.fromSecretKey = function(secretKey) { throw new Error('bad secret key size'); var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); crypto_scalarmult_base(pk, secretKey); - return {publicKey: pk, secretKey: secretKey}; + return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; }; nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES; @@ -1716,9 +1716,8 @@ nacl.sign.keyPair.fromSecretKey = function(secretKey) { if (secretKey.length !== crypto_sign_SECRETKEYBYTES) throw new Error('bad secret key size'); var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var i; - for (i = 0; i < 32; i++) pk[i] = secretKey[32+i]; - return {publicKey: pk, secretKey: secretKey}; + for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i]; + return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; }; nacl.sign.keyPair.fromSeed = function(seed) { diff --git a/nacl-fast.min.js b/nacl-fast.min.js index 929d117c..d5e384b4 100644 --- a/nacl-fast.min.js +++ b/nacl-fast.min.js @@ -1 +1 @@ -!function(r){"use strict";function t(r,t){var n=255&r[t+3];return n=n<<8|255&r[t+2],n=n<<8|255&r[t+1],n<<8|255&r[t+0]}function n(r,t,n){var e;for(e=0;4>e;e++)r[t+e]=255&n,n>>>=8}function e(r,t,n,e){r[t]=n>>24&255,r[t+1]=n>>16&255,r[t+2]=n>>8&255,r[t+3]=255&n,r[t+4]=e>>24&255,r[t+5]=e>>16&255,r[t+6]=e>>8&255,r[t+7]=255&e}function o(r,t,n,e,o){var i,f=0;for(i=0;o>i;i++)f|=r[t+i]^n[e+i];return(1&f-1>>>8)-1}function i(r,t,n,e){return o(r,t,n,e,16)}function f(r,t,n,e){return o(r,t,n,e,32)}function a(r,e,o,i){for(var f,a=t(i,0),h=t(o,0),s=t(o,4),u=t(o,8),c=t(o,12),y=t(i,4),l=t(e,0),w=t(e,4),v=t(e,8),p=t(e,12),g=t(i,8),b=t(o,16),A=t(o,20),d=t(o,24),_=t(o,28),U=t(i,12),E=a,x=h,m=s,B=u,S=c,K=y,T=l,Y=w,k=v,L=p,C=g,R=b,z=A,P=d,F=_,N=U,O=0;20>O;O+=2)f=E+z|0,S^=f<<7|f>>>25,f=S+E|0,k^=f<<9|f>>>23,f=k+S|0,z^=f<<13|f>>>19,f=z+k|0,E^=f<<18|f>>>14,f=K+x|0,L^=f<<7|f>>>25,f=L+K|0,P^=f<<9|f>>>23,f=P+L|0,x^=f<<13|f>>>19,f=x+P|0,K^=f<<18|f>>>14,f=C+T|0,F^=f<<7|f>>>25,f=F+C|0,m^=f<<9|f>>>23,f=m+F|0,T^=f<<13|f>>>19,f=T+m|0,C^=f<<18|f>>>14,f=N+R|0,B^=f<<7|f>>>25,f=B+N|0,Y^=f<<9|f>>>23,f=Y+B|0,R^=f<<13|f>>>19,f=R+Y|0,N^=f<<18|f>>>14,f=E+B|0,x^=f<<7|f>>>25,f=x+E|0,m^=f<<9|f>>>23,f=m+x|0,B^=f<<13|f>>>19,f=B+m|0,E^=f<<18|f>>>14,f=K+S|0,T^=f<<7|f>>>25,f=T+K|0,Y^=f<<9|f>>>23,f=Y+T|0,S^=f<<13|f>>>19,f=S+Y|0,K^=f<<18|f>>>14,f=C+L|0,R^=f<<7|f>>>25,f=R+C|0,k^=f<<9|f>>>23,f=k+R|0,L^=f<<13|f>>>19,f=L+k|0,C^=f<<18|f>>>14,f=N+F|0,z^=f<<7|f>>>25,f=z+N|0,P^=f<<9|f>>>23,f=P+z|0,F^=f<<13|f>>>19,f=F+P|0,N^=f<<18|f>>>14;E=E+a|0,x=x+h|0,m=m+s|0,B=B+u|0,S=S+c|0,K=K+y|0,T=T+l|0,Y=Y+w|0,k=k+v|0,L=L+p|0,C=C+g|0,R=R+b|0,z=z+A|0,P=P+d|0,F=F+_|0,N=N+U|0,n(r,0,E),n(r,4,x),n(r,8,m),n(r,12,B),n(r,16,S),n(r,20,K),n(r,24,T),n(r,28,Y),n(r,32,k),n(r,36,L),n(r,40,C),n(r,44,R),n(r,48,z),n(r,52,P),n(r,56,F),n(r,60,N)}function h(r,e,o,i){for(var f,a=t(i,0),h=t(o,0),s=t(o,4),u=t(o,8),c=t(o,12),y=t(i,4),l=t(e,0),w=t(e,4),v=t(e,8),p=t(e,12),g=t(i,8),b=t(o,16),A=t(o,20),d=t(o,24),_=t(o,28),U=t(i,12),E=a,x=h,m=s,B=u,S=c,K=y,T=l,Y=w,k=v,L=p,C=g,R=b,z=A,P=d,F=_,N=U,O=0;20>O;O+=2)f=E+z|0,S^=f<<7|f>>>25,f=S+E|0,k^=f<<9|f>>>23,f=k+S|0,z^=f<<13|f>>>19,f=z+k|0,E^=f<<18|f>>>14,f=K+x|0,L^=f<<7|f>>>25,f=L+K|0,P^=f<<9|f>>>23,f=P+L|0,x^=f<<13|f>>>19,f=x+P|0,K^=f<<18|f>>>14,f=C+T|0,F^=f<<7|f>>>25,f=F+C|0,m^=f<<9|f>>>23,f=m+F|0,T^=f<<13|f>>>19,f=T+m|0,C^=f<<18|f>>>14,f=N+R|0,B^=f<<7|f>>>25,f=B+N|0,Y^=f<<9|f>>>23,f=Y+B|0,R^=f<<13|f>>>19,f=R+Y|0,N^=f<<18|f>>>14,f=E+B|0,x^=f<<7|f>>>25,f=x+E|0,m^=f<<9|f>>>23,f=m+x|0,B^=f<<13|f>>>19,f=B+m|0,E^=f<<18|f>>>14,f=K+S|0,T^=f<<7|f>>>25,f=T+K|0,Y^=f<<9|f>>>23,f=Y+T|0,S^=f<<13|f>>>19,f=S+Y|0,K^=f<<18|f>>>14,f=C+L|0,R^=f<<7|f>>>25,f=R+C|0,k^=f<<9|f>>>23,f=k+R|0,L^=f<<13|f>>>19,f=L+k|0,C^=f<<18|f>>>14,f=N+F|0,z^=f<<7|f>>>25,f=z+N|0,P^=f<<9|f>>>23,f=P+z|0,F^=f<<13|f>>>19,f=F+P|0,N^=f<<18|f>>>14;n(r,0,E),n(r,4,K),n(r,8,C),n(r,12,N),n(r,16,T),n(r,20,Y),n(r,24,k),n(r,28,L)}function s(r,t,n,e){a(r,t,n,e)}function u(r,t,n,e){h(r,t,n,e)}function c(r,t,n,e,o,i,f){var a,h,u=new Uint8Array(16),c=new Uint8Array(64);for(h=0;16>h;h++)u[h]=0;for(h=0;8>h;h++)u[h]=i[h];for(;o>=64;){for(s(c,u,f,wt),h=0;64>h;h++)r[t+h]=n[e+h]^c[h];for(a=1,h=8;16>h;h++)a=a+(255&u[h])|0,u[h]=255&a,a>>>=8;o-=64,t+=64,e+=64}if(o>0)for(s(c,u,f,wt),h=0;o>h;h++)r[t+h]=n[e+h]^c[h];return 0}function y(r,t,n,e,o){var i,f,a=new Uint8Array(16),h=new Uint8Array(64);for(f=0;16>f;f++)a[f]=0;for(f=0;8>f;f++)a[f]=e[f];for(;n>=64;){for(s(h,a,o,wt),f=0;64>f;f++)r[t+f]=h[f];for(i=1,f=8;16>f;f++)i=i+(255&a[f])|0,a[f]=255&i,i>>>=8;n-=64,t+=64}if(n>0)for(s(h,a,o,wt),f=0;n>f;f++)r[t+f]=h[f];return 0}function l(r,t,n,e,o){var i=new Uint8Array(32);u(i,e,o,wt);for(var f=new Uint8Array(8),a=0;8>a;a++)f[a]=e[a+16];return y(r,t,n,f,i)}function w(r,t,n,e,o,i,f){var a=new Uint8Array(32);u(a,i,f,wt);for(var h=new Uint8Array(8),s=0;8>s;s++)h[s]=i[s+16];return c(r,t,n,e,o,h,a)}function v(r,t){return 255&r[t]|(255&r[t+1])<<8}function p(r,t,n){r[t]=n>>>0&255,r[t+1]=n>>>8&255}function g(r,t,n,e,o,i){var f=new vt(i);return f.update(n,e,o),f.finish(r,t),0}function b(r,t,n,e,o,f){var a=new Uint8Array(16);return g(a,0,n,e,o,f),i(r,t,a,0)}function A(r,t,n,e,o){var i;if(32>n)return-1;for(w(r,0,t,0,n,e,o),g(r,16,r,32,n-32,r),i=0;16>i;i++)r[i]=0;return 0}function d(r,t,n,e,o){var i,f=new Uint8Array(32);if(32>n)return-1;if(l(f,0,32,e,o),0!==b(t,16,t,32,n-32,f))return-1;for(w(r,0,t,0,n,e,o),i=0;32>i;i++)r[i]=0;return 0}function _(r,t){var n;for(n=0;16>n;n++)r[n]=0|t[n]}function U(r){var t,n;for(n=0;16>n;n++)r[n]+=65536,t=Math.floor(r[n]/65536),r[(n+1)*(15>n?1:0)]+=t-1+37*(t-1)*(15===n?1:0),r[n]-=65536*t}function E(r,t,n){for(var e,o=~(n-1),i=0;16>i;i++)e=o&(r[i]^t[i]),r[i]^=e,t[i]^=e}function x(r,t){var n,e,o,i=nt(),f=nt();for(n=0;16>n;n++)f[n]=t[n];for(U(f),U(f),U(f),e=0;2>e;e++){for(i[0]=f[0]-65517,n=1;15>n;n++)i[n]=f[n]-65535-(i[n-1]>>16&1),i[n-1]&=65535;i[15]=f[15]-32767-(i[14]>>16&1),o=i[15]>>16&1,i[14]&=65535,E(f,i,1-o)}for(n=0;16>n;n++)r[2*n]=255&f[n],r[2*n+1]=f[n]>>8}function m(r,t){var n=new Uint8Array(32),e=new Uint8Array(32);return x(n,r),x(e,t),f(n,0,e,0)}function B(r){var t=new Uint8Array(32);return x(t,r),1&t[0]}function S(r,t){var n;for(n=0;16>n;n++)r[n]=t[2*n]+(t[2*n+1]<<8);r[15]&=32767}function K(r,t,n){var e;for(e=0;16>e;e++)r[e]=t[e]+n[e]|0}function T(r,t,n){var e;for(e=0;16>e;e++)r[e]=t[e]-n[e]|0}function Y(r,t,n){var e,o,i=new Float64Array(31);for(e=0;31>e;e++)i[e]=0;for(e=0;16>e;e++)for(o=0;16>o;o++)i[e+o]+=t[e]*n[o];for(e=0;15>e;e++)i[e]+=38*i[e+16];for(e=0;16>e;e++)r[e]=i[e];U(r),U(r)}function k(r,t){Y(r,t,t)}function L(r,t){var n,e=nt();for(n=0;16>n;n++)e[n]=t[n];for(n=253;n>=0;n--)k(e,e),2!==n&&4!==n&&Y(e,e,t);for(n=0;16>n;n++)r[n]=e[n]}function C(r,t){var n,e=nt();for(n=0;16>n;n++)e[n]=t[n];for(n=250;n>=0;n--)k(e,e),1!==n&&Y(e,e,t);for(n=0;16>n;n++)r[n]=e[n]}function R(r,t,n){var e,o,i=new Uint8Array(32),f=new Float64Array(80),a=nt(),h=nt(),s=nt(),u=nt(),c=nt(),y=nt();for(o=0;31>o;o++)i[o]=t[o];for(i[31]=127&t[31]|64,i[0]&=248,S(f,n),o=0;16>o;o++)h[o]=f[o],u[o]=a[o]=s[o]=0;for(a[0]=u[0]=1,o=254;o>=0;--o)e=i[o>>>3]>>>(7&o)&1,E(a,h,e),E(s,u,e),K(c,a,s),T(a,a,s),K(s,h,u),T(h,h,u),k(u,c),k(y,a),Y(a,s,a),Y(s,h,c),K(c,a,s),T(a,a,s),k(h,a),T(s,u,y),Y(a,s,ht),K(a,a,u),Y(s,s,a),Y(a,u,y),Y(u,h,f),k(h,c),E(a,h,e),E(s,u,e);for(o=0;16>o;o++)f[o+16]=a[o],f[o+32]=s[o],f[o+48]=h[o],f[o+64]=u[o];var l=f.subarray(32),w=f.subarray(16);return L(l,l),Y(w,w,l),x(r,w),0}function z(r,t){return R(r,t,it)}function P(r,t){return et(t,32),z(r,t)}function F(r,t,n){var e=new Uint8Array(32);return R(e,n,t),u(r,ot,e,wt)}function N(r,t,n,e,o,i){var f=new Uint8Array(32);return F(f,o,i),pt(r,t,n,e,f)}function O(r,t,n,e,o,i){var f=new Uint8Array(32);return F(f,o,i),gt(r,t,n,e,f)}function I(r,t,n,e){for(var o,i,f,a,h,s,u,c,y,l,w,v,p,g,b,A,d,_,U,E,x,m,B,S,K,T,Y=new Int32Array(16),k=new Int32Array(16),L=r[0],C=r[1],R=r[2],z=r[3],P=r[4],F=r[5],N=r[6],O=r[7],I=t[0],M=t[1],G=t[2],Z=t[3],j=t[4],V=t[5],q=t[6],X=t[7],D=0;e>=128;){for(U=0;16>U;U++)E=8*U+D,Y[U]=n[E+0]<<24|n[E+1]<<16|n[E+2]<<8|n[E+3],k[U]=n[E+4]<<24|n[E+5]<<16|n[E+6]<<8|n[E+7];for(U=0;80>U;U++)if(o=L,i=C,f=R,a=z,h=P,s=F,u=N,c=O,y=I,l=M,w=G,v=Z,p=j,g=V,b=q,A=X,x=O,m=X,B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=(P>>>14|j<<18)^(P>>>18|j<<14)^(j>>>9|P<<23),m=(j>>>14|P<<18)^(j>>>18|P<<14)^(P>>>9|j<<23),B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,x=P&F^~P&N,m=j&V^~j&q,B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,x=bt[2*U],m=bt[2*U+1],B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,x=Y[U%16],m=k[U%16],B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,d=65535&K|T<<16,_=65535&B|S<<16,x=d,m=_,B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=(L>>>28|I<<4)^(I>>>2|L<<30)^(I>>>7|L<<25),m=(I>>>28|L<<4)^(L>>>2|I<<30)^(L>>>7|I<<25),B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,x=L&C^L&R^C&R,m=I&M^I&G^M&G,B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,c=65535&K|T<<16,A=65535&B|S<<16,x=a,m=v,B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=d,m=_,B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,a=65535&K|T<<16,v=65535&B|S<<16,C=o,R=i,z=f,P=a,F=h,N=s,O=u,L=c,M=y,G=l,Z=w,j=v,V=p,q=g,X=b,I=A,U%16===15)for(E=0;16>E;E++)x=Y[E],m=k[E],B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=Y[(E+9)%16],m=k[(E+9)%16],B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,d=Y[(E+1)%16],_=k[(E+1)%16],x=(d>>>1|_<<31)^(d>>>8|_<<24)^d>>>7,m=(_>>>1|d<<31)^(_>>>8|d<<24)^(_>>>7|d<<25),B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,d=Y[(E+14)%16],_=k[(E+14)%16],x=(d>>>19|_<<13)^(_>>>29|d<<3)^d>>>6,m=(_>>>19|d<<13)^(d>>>29|_<<3)^(_>>>6|d<<26),B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,Y[E]=65535&K|T<<16,k[E]=65535&B|S<<16;x=L,m=I,B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=r[0],m=t[0],B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,r[0]=L=65535&K|T<<16,t[0]=I=65535&B|S<<16,x=C,m=M,B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=r[1],m=t[1],B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,r[1]=C=65535&K|T<<16,t[1]=M=65535&B|S<<16,x=R,m=G,B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=r[2],m=t[2],B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,r[2]=R=65535&K|T<<16,t[2]=G=65535&B|S<<16,x=z,m=Z,B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=r[3],m=t[3],B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,r[3]=z=65535&K|T<<16,t[3]=Z=65535&B|S<<16,x=P,m=j,B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=r[4],m=t[4],B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,r[4]=P=65535&K|T<<16,t[4]=j=65535&B|S<<16,x=F,m=V,B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=r[5],m=t[5],B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,r[5]=F=65535&K|T<<16,t[5]=V=65535&B|S<<16,x=N,m=q,B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=r[6],m=t[6],B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,r[6]=N=65535&K|T<<16,t[6]=q=65535&B|S<<16,x=O,m=X,B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=r[7],m=t[7],B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,r[7]=O=65535&K|T<<16,t[7]=X=65535&B|S<<16,D+=128,e-=128}return e}function M(r,t,n){var o,i=new Int32Array(8),f=new Int32Array(8),a=new Uint8Array(256),h=n;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,f[0]=4089235720,f[1]=2227873595,f[2]=4271175723,f[3]=1595750129,f[4]=2917565137,f[5]=725511199,f[6]=4215389547,f[7]=327033209,I(i,f,t,n),n%=128,o=0;n>o;o++)a[o]=t[h-n+o];for(a[n]=128,n=256-128*(112>n?1:0),a[n-9]=0,e(a,n-8,h/536870912|0,h<<3),I(i,f,a,n),o=0;8>o;o++)e(r,8*o,i[o],f[o]);return 0}function G(r,t){var n=nt(),e=nt(),o=nt(),i=nt(),f=nt(),a=nt(),h=nt(),s=nt(),u=nt();T(n,r[1],r[0]),T(u,t[1],t[0]),Y(n,n,u),K(e,r[0],r[1]),K(u,t[0],t[1]),Y(e,e,u),Y(o,r[3],t[3]),Y(o,o,ut),Y(i,r[2],t[2]),K(i,i,i),T(f,e,n),T(a,i,o),K(h,i,o),K(s,e,n),Y(r[0],f,a),Y(r[1],s,h),Y(r[2],h,a),Y(r[3],f,s)}function Z(r,t,n){var e;for(e=0;4>e;e++)E(r[e],t[e],n)}function j(r,t){var n=nt(),e=nt(),o=nt();L(o,t[2]),Y(n,t[0],o),Y(e,t[1],o),x(r,e),r[31]^=B(n)<<7}function V(r,t,n){var e,o;for(_(r[0],ft),_(r[1],at),_(r[2],at),_(r[3],ft),o=255;o>=0;--o)e=n[o/8|0]>>(7&o)&1,Z(r,t,e),G(t,r),G(r,r),Z(r,t,e)}function q(r,t){var n=[nt(),nt(),nt(),nt()];_(n[0],ct),_(n[1],yt),_(n[2],at),Y(n[3],ct,yt),V(r,n,t)}function X(r,t,n){var e,o=new Uint8Array(64),i=[nt(),nt(),nt(),nt()];for(n||et(t,32),M(o,t,32),o[0]&=248,o[31]&=127,o[31]|=64,q(i,o),j(r,i),e=0;32>e;e++)t[e+32]=r[e];return 0}function D(r,t){var n,e,o,i;for(e=63;e>=32;--e){for(n=0,o=e-32,i=e-12;i>o;++o)t[o]+=n-16*t[e]*At[o-(e-32)],n=t[o]+128>>8,t[o]-=256*n;t[o]+=n,t[e]=0}for(n=0,o=0;32>o;o++)t[o]+=n-(t[31]>>4)*At[o],n=t[o]>>8,t[o]&=255;for(o=0;32>o;o++)t[o]-=n*At[o];for(e=0;32>e;e++)t[e+1]+=t[e]>>8,r[e]=255&t[e]}function H(r){var t,n=new Float64Array(64);for(t=0;64>t;t++)n[t]=r[t];for(t=0;64>t;t++)r[t]=0;D(r,n)}function J(r,t,n,e){var o,i,f=new Uint8Array(64),a=new Uint8Array(64),h=new Uint8Array(64),s=new Float64Array(64),u=[nt(),nt(),nt(),nt()];M(f,e,32),f[0]&=248,f[31]&=127,f[31]|=64;var c=n+64;for(o=0;n>o;o++)r[64+o]=t[o];for(o=0;32>o;o++)r[32+o]=f[32+o];for(M(h,r.subarray(32),n+32),H(h),q(u,h),j(r,u),o=32;64>o;o++)r[o]=e[o];for(M(a,r,n+64),H(a),o=0;64>o;o++)s[o]=0;for(o=0;32>o;o++)s[o]=h[o];for(o=0;32>o;o++)for(i=0;32>i;i++)s[o+i]+=a[o]*f[i];return D(r.subarray(32),s),c}function Q(r,t){var n=nt(),e=nt(),o=nt(),i=nt(),f=nt(),a=nt(),h=nt();return _(r[2],at),S(r[1],t),k(o,r[1]),Y(i,o,st),T(o,o,r[2]),K(i,r[2],i),k(f,i),k(a,f),Y(h,a,f),Y(n,h,o),Y(n,n,i),C(n,n),Y(n,n,o),Y(n,n,i),Y(n,n,i),Y(r[0],n,i),k(e,r[0]),Y(e,e,i),m(e,o)&&Y(r[0],r[0],lt),k(e,r[0]),Y(e,e,i),m(e,o)?-1:(B(r[0])===t[31]>>7&&T(r[0],ft,r[0]),Y(r[3],r[0],r[1]),0)}function W(r,t,n,e){var o,i,a=new Uint8Array(32),h=new Uint8Array(64),s=[nt(),nt(),nt(),nt()],u=[nt(),nt(),nt(),nt()];if(i=-1,64>n)return-1;if(Q(u,e))return-1;for(o=0;n>o;o++)r[o]=t[o];for(o=0;32>o;o++)r[o+32]=e[o];if(M(h,r,n),H(h),V(s,u,h),q(u,t.subarray(32)),G(s,u),j(a,s),n-=64,f(t,0,a,0)){for(o=0;n>o;o++)r[o]=0;return-1}for(o=0;n>o;o++)r[o]=t[o+64];return i=n}function $(r,t){if(r.length!==dt)throw new Error("bad key size");if(t.length!==_t)throw new Error("bad nonce size")}function rt(r,t){if(r.length!==Bt)throw new Error("bad public key size");if(t.length!==St)throw new Error("bad secret key size")}function tt(){for(var r,t={}.toString,n=0;n>>13|e<<3),o=v(r,4),this.r[2]=7939&(e>>>10|o<<6),i=v(r,6),this.r[3]=8191&(o>>>7|i<<9),f=v(r,8),this.r[4]=255&(i>>>4|f<<12),this.r[5]=f>>>1&8190,a=v(r,10),this.r[6]=8191&(f>>>14|a<<2),h=v(r,12),this.r[7]=8065&(a>>>11|h<<5),s=v(r,14),this.r[8]=8191&(h>>>8|s<<8),this.r[9]=s>>>5&127,t=0;8>t;t++)this.pad[t]=v(r,16+2*t)};vt.prototype.blocks=function(r,t,n){for(var e,o,i,f,a,h,s,u,c,y,l,w=this.fin?0:2048,p=new Uint32Array(10);n>=16;){for(e=v(r,t+0),this.h[0]+=8191&e,o=v(r,t+2),this.h[1]+=8191&(e>>>13|o<<3),i=v(r,t+4),this.h[2]+=8191&(o>>>10|i<<6),f=v(r,t+6),this.h[3]+=8191&(i>>>7|f<<9),a=v(r,t+8),this.h[4]+=8191&(f>>>4|a<<12),this.h[5]+=a>>>1&8191,h=v(r,t+10),this.h[6]+=8191&(a>>>14|h<<2),s=v(r,t+12),this.h[7]+=8191&(h>>>11|s<<5),u=v(r,t+14),this.h[8]+=8191&(s>>>8|u<<8),this.h[9]+=u>>>5|w,y=0,c=0;10>y;y++){for(p[y]=c,l=0;10>l;l++)p[y]+=this.h[l]*(y>=l?this.r[y-l]:5*this.r[y+10-l]),4===l&&(c=p[y]>>>13,p[y]&=8191);c+=p[y]>>>13,p[y]&=8191}for(c=(c<<2)+c|0,c=c+p[0]|0,p[0]=8191&c,c>>>=13,p[1]+=c,y=0;10>y;y++)this.h[y]=p[y];t+=16,n-=16}},vt.prototype.finish=function(r,t){var n,e,o,i,f=new Uint16Array(10);if(this.leftover){for(i=this.leftover,this.buffer[i++]=1;16>i;i++)this.buffer[i]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(n=this.h[1]>>>13,this.h[1]&=8191,i=2;10>i;i++)this.h[i]+=n,n=this.h[i]>>>13,this.h[i]&=8191;for(this.h[0]+=5*n,n=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=n,n=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=n,f[0]=this.h[0]+5,n=f[0]>>>13,f[0]&=8191,i=1;10>i;i++)f[i]=this.h[i]+n,n=f[i]>>>13,f[i]&=8191;for(f[9]-=8192,e=(f[9]>>>15)-1,i=0;10>i;i++)f[i]&=e;for(e=~e,i=0;10>i;i++)this.h[i]=this.h[i]&e|f[i];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),o=this.h[0]+this.pad[0],this.h[0]=65535&o,i=1;8>i;i++)o=(this.h[i]+this.pad[i]|0)+(o>>>16)|0,this.h[i]=65535&o;for(i=0;8>i;i++)p(r,t+2*i,this.h[i])},vt.prototype.update=function(r,t,n){var e,o;if(this.leftover){for(o=16-this.leftover,o>n&&(o=n),e=0;o>e;e++)this.buffer[this.leftover+e]=r[t+e];if(n-=o,t+=o,this.leftover+=o,this.leftover<16)return;this.blocks(buffer,0,16),this.leftover=0}if(n>=16&&(o=n-n%16,this.blocks(r,t,o),t+=o,n-=o),n){for(e=0;n>e;e++)this.buffer[this.leftover+e]=r[t+e];this.leftover+=n}};var pt=A,gt=d,bt=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],At=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]),dt=32,_t=24,Ut=32,Et=16,xt=32,mt=32,Bt=32,St=32,Kt=32,Tt=_t,Yt=Ut,kt=Et,Lt=64,Ct=32,Rt=64,zt=32,Pt=64;r.lowlevel={crypto_core_hsalsa20:u,crypto_stream_xor:w,crypto_stream:l,crypto_stream_salsa20_xor:c,crypto_stream_salsa20:y,crypto_onetimeauth:g,crypto_onetimeauth_verify:b,crypto_verify_16:i,crypto_verify_32:f,crypto_secretbox:A,crypto_secretbox_open:d,crypto_scalarmult:R,crypto_scalarmult_base:z,crypto_box_beforenm:F,crypto_box_afternm:pt,crypto_box:N,crypto_box_open:O,crypto_box_keypair:P,crypto_hash:M,crypto_sign:J,crypto_sign_keypair:X,crypto_sign_open:W,crypto_secretbox_KEYBYTES:dt,crypto_secretbox_NONCEBYTES:_t,crypto_secretbox_ZEROBYTES:Ut,crypto_secretbox_BOXZEROBYTES:Et,crypto_scalarmult_BYTES:xt,crypto_scalarmult_SCALARBYTES:mt,crypto_box_PUBLICKEYBYTES:Bt,crypto_box_SECRETKEYBYTES:St,crypto_box_BEFORENMBYTES:Kt,crypto_box_NONCEBYTES:Tt,crypto_box_ZEROBYTES:Yt,crypto_box_BOXZEROBYTES:kt,crypto_sign_BYTES:Lt,crypto_sign_PUBLICKEYBYTES:Ct,crypto_sign_SECRETKEYBYTES:Rt,crypto_sign_SEEDBYTES:zt,crypto_hash_BYTES:Pt},r.util={},r.util.decodeUTF8=function(r){var t,n=unescape(encodeURIComponent(r)),e=new Uint8Array(n.length);for(t=0;tt;t++)n.push(String.fromCharCode(r[t]));return btoa(n.join(""))},r.util.decodeBase64=function(r){if("undefined"==typeof atob)return new Uint8Array(Array.prototype.slice.call(new Buffer(r,"base64"),0));var t,n=atob(r),e=new Uint8Array(n.length);for(t=0;te)return null;for(var o=new Uint8Array(e),i=0;ie;e++)o[e]=t[e];for(e=0;e=0},r.sign.keyPair=function(){var r=new Uint8Array(Ct),t=new Uint8Array(Rt);return X(r,t),{publicKey:r,secretKey:t}},r.sign.keyPair.fromSecretKey=function(r){if(tt(r),r.length!==Rt)throw new Error("bad secret key size");var t,n=new Uint8Array(Ct);for(t=0;32>t;t++)n[t]=r[32+t];return{publicKey:n,secretKey:r}},r.sign.keyPair.fromSeed=function(r){if(tt(r),r.length!==zt)throw new Error("bad seed size");for(var t=new Uint8Array(Ct),n=new Uint8Array(Rt),e=0;32>e;e++)n[e]=r[e];return X(t,n,!0),{publicKey:t,secretKey:n}},r.sign.publicKeyLength=Ct,r.sign.secretKeyLength=Rt,r.sign.seedLength=zt,r.sign.signatureLength=Lt,r.hash=function(r){tt(r);var t=new Uint8Array(Pt);return M(t,r,r.length),t},r.hash.hashLength=Pt,r.verify=function(r,t){return tt(r,t),0===r.length||0===t.length?!1:r.length!==t.length?!1:0===o(r,0,t,0,r.length)?!0:!1},r.setPRNG=function(r){et=r},function(){var t;"undefined"!=typeof window?(window.crypto&&window.crypto.getRandomValues?t=window.crypto:window.msCrypto&&window.msCrypto.getRandomValues&&(t=window.msCrypto),t&&r.setPRNG(function(r,n){var e,o=new Uint8Array(n);for(t.getRandomValues(o),e=0;n>e;e++)r[e]=o[e]})):"undefined"!=typeof require&&(t=require("crypto"),t&&r.setPRNG(function(r,n){var e,o=t.randomBytes(n);for(e=0;n>e;e++)r[e]=o[e]}))}()}("undefined"!=typeof module&&module.exports?module.exports:window.nacl=window.nacl||{}); \ No newline at end of file +!function(r){"use strict";function t(r,t){var n=255&r[t+3];return n=n<<8|255&r[t+2],n=n<<8|255&r[t+1],n<<8|255&r[t+0]}function n(r,t,n){var e;for(e=0;4>e;e++)r[t+e]=255&n,n>>>=8}function e(r,t,n,e){r[t]=n>>24&255,r[t+1]=n>>16&255,r[t+2]=n>>8&255,r[t+3]=255&n,r[t+4]=e>>24&255,r[t+5]=e>>16&255,r[t+6]=e>>8&255,r[t+7]=255&e}function o(r,t,n,e,o){var i,a=0;for(i=0;o>i;i++)a|=r[t+i]^n[e+i];return(1&a-1>>>8)-1}function i(r,t,n,e){return o(r,t,n,e,16)}function a(r,t,n,e){return o(r,t,n,e,32)}function f(r,e,o,i){for(var a,f=t(i,0),h=t(o,0),s=t(o,4),u=t(o,8),c=t(o,12),y=t(i,4),w=t(e,0),l=t(e,4),v=t(e,8),p=t(e,12),g=t(i,8),b=t(o,16),A=t(o,20),d=t(o,24),_=t(o,28),U=t(i,12),E=f,x=h,m=s,B=u,S=c,K=y,T=w,Y=l,k=v,L=p,C=g,R=b,z=A,P=d,F=_,N=U,O=0;20>O;O+=2)a=E+z|0,S^=a<<7|a>>>25,a=S+E|0,k^=a<<9|a>>>23,a=k+S|0,z^=a<<13|a>>>19,a=z+k|0,E^=a<<18|a>>>14,a=K+x|0,L^=a<<7|a>>>25,a=L+K|0,P^=a<<9|a>>>23,a=P+L|0,x^=a<<13|a>>>19,a=x+P|0,K^=a<<18|a>>>14,a=C+T|0,F^=a<<7|a>>>25,a=F+C|0,m^=a<<9|a>>>23,a=m+F|0,T^=a<<13|a>>>19,a=T+m|0,C^=a<<18|a>>>14,a=N+R|0,B^=a<<7|a>>>25,a=B+N|0,Y^=a<<9|a>>>23,a=Y+B|0,R^=a<<13|a>>>19,a=R+Y|0,N^=a<<18|a>>>14,a=E+B|0,x^=a<<7|a>>>25,a=x+E|0,m^=a<<9|a>>>23,a=m+x|0,B^=a<<13|a>>>19,a=B+m|0,E^=a<<18|a>>>14,a=K+S|0,T^=a<<7|a>>>25,a=T+K|0,Y^=a<<9|a>>>23,a=Y+T|0,S^=a<<13|a>>>19,a=S+Y|0,K^=a<<18|a>>>14,a=C+L|0,R^=a<<7|a>>>25,a=R+C|0,k^=a<<9|a>>>23,a=k+R|0,L^=a<<13|a>>>19,a=L+k|0,C^=a<<18|a>>>14,a=N+F|0,z^=a<<7|a>>>25,a=z+N|0,P^=a<<9|a>>>23,a=P+z|0,F^=a<<13|a>>>19,a=F+P|0,N^=a<<18|a>>>14;E=E+f|0,x=x+h|0,m=m+s|0,B=B+u|0,S=S+c|0,K=K+y|0,T=T+w|0,Y=Y+l|0,k=k+v|0,L=L+p|0,C=C+g|0,R=R+b|0,z=z+A|0,P=P+d|0,F=F+_|0,N=N+U|0,n(r,0,E),n(r,4,x),n(r,8,m),n(r,12,B),n(r,16,S),n(r,20,K),n(r,24,T),n(r,28,Y),n(r,32,k),n(r,36,L),n(r,40,C),n(r,44,R),n(r,48,z),n(r,52,P),n(r,56,F),n(r,60,N)}function h(r,e,o,i){for(var a,f=t(i,0),h=t(o,0),s=t(o,4),u=t(o,8),c=t(o,12),y=t(i,4),w=t(e,0),l=t(e,4),v=t(e,8),p=t(e,12),g=t(i,8),b=t(o,16),A=t(o,20),d=t(o,24),_=t(o,28),U=t(i,12),E=f,x=h,m=s,B=u,S=c,K=y,T=w,Y=l,k=v,L=p,C=g,R=b,z=A,P=d,F=_,N=U,O=0;20>O;O+=2)a=E+z|0,S^=a<<7|a>>>25,a=S+E|0,k^=a<<9|a>>>23,a=k+S|0,z^=a<<13|a>>>19,a=z+k|0,E^=a<<18|a>>>14,a=K+x|0,L^=a<<7|a>>>25,a=L+K|0,P^=a<<9|a>>>23,a=P+L|0,x^=a<<13|a>>>19,a=x+P|0,K^=a<<18|a>>>14,a=C+T|0,F^=a<<7|a>>>25,a=F+C|0,m^=a<<9|a>>>23,a=m+F|0,T^=a<<13|a>>>19,a=T+m|0,C^=a<<18|a>>>14,a=N+R|0,B^=a<<7|a>>>25,a=B+N|0,Y^=a<<9|a>>>23,a=Y+B|0,R^=a<<13|a>>>19,a=R+Y|0,N^=a<<18|a>>>14,a=E+B|0,x^=a<<7|a>>>25,a=x+E|0,m^=a<<9|a>>>23,a=m+x|0,B^=a<<13|a>>>19,a=B+m|0,E^=a<<18|a>>>14,a=K+S|0,T^=a<<7|a>>>25,a=T+K|0,Y^=a<<9|a>>>23,a=Y+T|0,S^=a<<13|a>>>19,a=S+Y|0,K^=a<<18|a>>>14,a=C+L|0,R^=a<<7|a>>>25,a=R+C|0,k^=a<<9|a>>>23,a=k+R|0,L^=a<<13|a>>>19,a=L+k|0,C^=a<<18|a>>>14,a=N+F|0,z^=a<<7|a>>>25,a=z+N|0,P^=a<<9|a>>>23,a=P+z|0,F^=a<<13|a>>>19,a=F+P|0,N^=a<<18|a>>>14;n(r,0,E),n(r,4,K),n(r,8,C),n(r,12,N),n(r,16,T),n(r,20,Y),n(r,24,k),n(r,28,L)}function s(r,t,n,e){f(r,t,n,e)}function u(r,t,n,e){h(r,t,n,e)}function c(r,t,n,e,o,i,a){var f,h,u=new Uint8Array(16),c=new Uint8Array(64);for(h=0;16>h;h++)u[h]=0;for(h=0;8>h;h++)u[h]=i[h];for(;o>=64;){for(s(c,u,a,lt),h=0;64>h;h++)r[t+h]=n[e+h]^c[h];for(f=1,h=8;16>h;h++)f=f+(255&u[h])|0,u[h]=255&f,f>>>=8;o-=64,t+=64,e+=64}if(o>0)for(s(c,u,a,lt),h=0;o>h;h++)r[t+h]=n[e+h]^c[h];return 0}function y(r,t,n,e,o){var i,a,f=new Uint8Array(16),h=new Uint8Array(64);for(a=0;16>a;a++)f[a]=0;for(a=0;8>a;a++)f[a]=e[a];for(;n>=64;){for(s(h,f,o,lt),a=0;64>a;a++)r[t+a]=h[a];for(i=1,a=8;16>a;a++)i=i+(255&f[a])|0,f[a]=255&i,i>>>=8;n-=64,t+=64}if(n>0)for(s(h,f,o,lt),a=0;n>a;a++)r[t+a]=h[a];return 0}function w(r,t,n,e,o){var i=new Uint8Array(32);u(i,e,o,lt);for(var a=new Uint8Array(8),f=0;8>f;f++)a[f]=e[f+16];return y(r,t,n,a,i)}function l(r,t,n,e,o,i,a){var f=new Uint8Array(32);u(f,i,a,lt);for(var h=new Uint8Array(8),s=0;8>s;s++)h[s]=i[s+16];return c(r,t,n,e,o,h,f)}function v(r,t){return 255&r[t]|(255&r[t+1])<<8}function p(r,t,n){r[t]=n>>>0&255,r[t+1]=n>>>8&255}function g(r,t,n,e,o,i){var a=new vt(i);return a.update(n,e,o),a.finish(r,t),0}function b(r,t,n,e,o,a){var f=new Uint8Array(16);return g(f,0,n,e,o,a),i(r,t,f,0)}function A(r,t,n,e,o){var i;if(32>n)return-1;for(l(r,0,t,0,n,e,o),g(r,16,r,32,n-32,r),i=0;16>i;i++)r[i]=0;return 0}function d(r,t,n,e,o){var i,a=new Uint8Array(32);if(32>n)return-1;if(w(a,0,32,e,o),0!==b(t,16,t,32,n-32,a))return-1;for(l(r,0,t,0,n,e,o),i=0;32>i;i++)r[i]=0;return 0}function _(r,t){var n;for(n=0;16>n;n++)r[n]=0|t[n]}function U(r){var t,n;for(n=0;16>n;n++)r[n]+=65536,t=Math.floor(r[n]/65536),r[(n+1)*(15>n?1:0)]+=t-1+37*(t-1)*(15===n?1:0),r[n]-=65536*t}function E(r,t,n){for(var e,o=~(n-1),i=0;16>i;i++)e=o&(r[i]^t[i]),r[i]^=e,t[i]^=e}function x(r,t){var n,e,o,i=nt(),a=nt();for(n=0;16>n;n++)a[n]=t[n];for(U(a),U(a),U(a),e=0;2>e;e++){for(i[0]=a[0]-65517,n=1;15>n;n++)i[n]=a[n]-65535-(i[n-1]>>16&1),i[n-1]&=65535;i[15]=a[15]-32767-(i[14]>>16&1),o=i[15]>>16&1,i[14]&=65535,E(a,i,1-o)}for(n=0;16>n;n++)r[2*n]=255&a[n],r[2*n+1]=a[n]>>8}function m(r,t){var n=new Uint8Array(32),e=new Uint8Array(32);return x(n,r),x(e,t),a(n,0,e,0)}function B(r){var t=new Uint8Array(32);return x(t,r),1&t[0]}function S(r,t){var n;for(n=0;16>n;n++)r[n]=t[2*n]+(t[2*n+1]<<8);r[15]&=32767}function K(r,t,n){var e;for(e=0;16>e;e++)r[e]=t[e]+n[e]|0}function T(r,t,n){var e;for(e=0;16>e;e++)r[e]=t[e]-n[e]|0}function Y(r,t,n){var e,o,i=new Float64Array(31);for(e=0;31>e;e++)i[e]=0;for(e=0;16>e;e++)for(o=0;16>o;o++)i[e+o]+=t[e]*n[o];for(e=0;15>e;e++)i[e]+=38*i[e+16];for(e=0;16>e;e++)r[e]=i[e];U(r),U(r)}function k(r,t){Y(r,t,t)}function L(r,t){var n,e=nt();for(n=0;16>n;n++)e[n]=t[n];for(n=253;n>=0;n--)k(e,e),2!==n&&4!==n&&Y(e,e,t);for(n=0;16>n;n++)r[n]=e[n]}function C(r,t){var n,e=nt();for(n=0;16>n;n++)e[n]=t[n];for(n=250;n>=0;n--)k(e,e),1!==n&&Y(e,e,t);for(n=0;16>n;n++)r[n]=e[n]}function R(r,t,n){var e,o,i=new Uint8Array(32),a=new Float64Array(80),f=nt(),h=nt(),s=nt(),u=nt(),c=nt(),y=nt();for(o=0;31>o;o++)i[o]=t[o];for(i[31]=127&t[31]|64,i[0]&=248,S(a,n),o=0;16>o;o++)h[o]=a[o],u[o]=f[o]=s[o]=0;for(f[0]=u[0]=1,o=254;o>=0;--o)e=i[o>>>3]>>>(7&o)&1,E(f,h,e),E(s,u,e),K(c,f,s),T(f,f,s),K(s,h,u),T(h,h,u),k(u,c),k(y,f),Y(f,s,f),Y(s,h,c),K(c,f,s),T(f,f,s),k(h,f),T(s,u,y),Y(f,s,ht),K(f,f,u),Y(s,s,f),Y(f,u,y),Y(u,h,a),k(h,c),E(f,h,e),E(s,u,e);for(o=0;16>o;o++)a[o+16]=f[o],a[o+32]=s[o],a[o+48]=h[o],a[o+64]=u[o];var w=a.subarray(32),l=a.subarray(16);return L(w,w),Y(l,l,w),x(r,l),0}function z(r,t){return R(r,t,it)}function P(r,t){return et(t,32),z(r,t)}function F(r,t,n){var e=new Uint8Array(32);return R(e,n,t),u(r,ot,e,lt)}function N(r,t,n,e,o,i){var a=new Uint8Array(32);return F(a,o,i),pt(r,t,n,e,a)}function O(r,t,n,e,o,i){var a=new Uint8Array(32);return F(a,o,i),gt(r,t,n,e,a)}function I(r,t,n,e){for(var o,i,a,f,h,s,u,c,y,w,l,v,p,g,b,A,d,_,U,E,x,m,B,S,K,T,Y=new Int32Array(16),k=new Int32Array(16),L=r[0],C=r[1],R=r[2],z=r[3],P=r[4],F=r[5],N=r[6],O=r[7],I=t[0],M=t[1],G=t[2],Z=t[3],j=t[4],V=t[5],q=t[6],X=t[7],D=0;e>=128;){for(U=0;16>U;U++)E=8*U+D,Y[U]=n[E+0]<<24|n[E+1]<<16|n[E+2]<<8|n[E+3],k[U]=n[E+4]<<24|n[E+5]<<16|n[E+6]<<8|n[E+7];for(U=0;80>U;U++)if(o=L,i=C,a=R,f=z,h=P,s=F,u=N,c=O,y=I,w=M,l=G,v=Z,p=j,g=V,b=q,A=X,x=O,m=X,B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=(P>>>14|j<<18)^(P>>>18|j<<14)^(j>>>9|P<<23),m=(j>>>14|P<<18)^(j>>>18|P<<14)^(P>>>9|j<<23),B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,x=P&F^~P&N,m=j&V^~j&q,B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,x=bt[2*U],m=bt[2*U+1],B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,x=Y[U%16],m=k[U%16],B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,d=65535&K|T<<16,_=65535&B|S<<16,x=d,m=_,B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=(L>>>28|I<<4)^(I>>>2|L<<30)^(I>>>7|L<<25),m=(I>>>28|L<<4)^(L>>>2|I<<30)^(L>>>7|I<<25),B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,x=L&C^L&R^C&R,m=I&M^I&G^M&G,B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,c=65535&K|T<<16,A=65535&B|S<<16,x=f,m=v,B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=d,m=_,B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,f=65535&K|T<<16,v=65535&B|S<<16,C=o,R=i,z=a,P=f,F=h,N=s,O=u,L=c,M=y,G=w,Z=l,j=v,V=p,q=g,X=b,I=A,U%16===15)for(E=0;16>E;E++)x=Y[E],m=k[E],B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=Y[(E+9)%16],m=k[(E+9)%16],B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,d=Y[(E+1)%16],_=k[(E+1)%16],x=(d>>>1|_<<31)^(d>>>8|_<<24)^d>>>7,m=(_>>>1|d<<31)^(_>>>8|d<<24)^(_>>>7|d<<25),B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,d=Y[(E+14)%16],_=k[(E+14)%16],x=(d>>>19|_<<13)^(_>>>29|d<<3)^d>>>6,m=(_>>>19|d<<13)^(d>>>29|_<<3)^(_>>>6|d<<26),B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,Y[E]=65535&K|T<<16,k[E]=65535&B|S<<16;x=L,m=I,B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=r[0],m=t[0],B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,r[0]=L=65535&K|T<<16,t[0]=I=65535&B|S<<16,x=C,m=M,B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=r[1],m=t[1],B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,r[1]=C=65535&K|T<<16,t[1]=M=65535&B|S<<16,x=R,m=G,B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=r[2],m=t[2],B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,r[2]=R=65535&K|T<<16,t[2]=G=65535&B|S<<16,x=z,m=Z,B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=r[3],m=t[3],B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,r[3]=z=65535&K|T<<16,t[3]=Z=65535&B|S<<16,x=P,m=j,B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=r[4],m=t[4],B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,r[4]=P=65535&K|T<<16,t[4]=j=65535&B|S<<16,x=F,m=V,B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=r[5],m=t[5],B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,r[5]=F=65535&K|T<<16,t[5]=V=65535&B|S<<16,x=N,m=q,B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=r[6],m=t[6],B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,r[6]=N=65535&K|T<<16,t[6]=q=65535&B|S<<16,x=O,m=X,B=65535&m,S=m>>>16,K=65535&x,T=x>>>16,x=r[7],m=t[7],B+=65535&m,S+=m>>>16,K+=65535&x,T+=x>>>16,S+=B>>>16,K+=S>>>16,T+=K>>>16,r[7]=O=65535&K|T<<16,t[7]=X=65535&B|S<<16,D+=128,e-=128}return e}function M(r,t,n){var o,i=new Int32Array(8),a=new Int32Array(8),f=new Uint8Array(256),h=n;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,a[0]=4089235720,a[1]=2227873595,a[2]=4271175723,a[3]=1595750129,a[4]=2917565137,a[5]=725511199,a[6]=4215389547,a[7]=327033209,I(i,a,t,n),n%=128,o=0;n>o;o++)f[o]=t[h-n+o];for(f[n]=128,n=256-128*(112>n?1:0),f[n-9]=0,e(f,n-8,h/536870912|0,h<<3),I(i,a,f,n),o=0;8>o;o++)e(r,8*o,i[o],a[o]);return 0}function G(r,t){var n=nt(),e=nt(),o=nt(),i=nt(),a=nt(),f=nt(),h=nt(),s=nt(),u=nt();T(n,r[1],r[0]),T(u,t[1],t[0]),Y(n,n,u),K(e,r[0],r[1]),K(u,t[0],t[1]),Y(e,e,u),Y(o,r[3],t[3]),Y(o,o,ut),Y(i,r[2],t[2]),K(i,i,i),T(a,e,n),T(f,i,o),K(h,i,o),K(s,e,n),Y(r[0],a,f),Y(r[1],s,h),Y(r[2],h,f),Y(r[3],a,s)}function Z(r,t,n){var e;for(e=0;4>e;e++)E(r[e],t[e],n)}function j(r,t){var n=nt(),e=nt(),o=nt();L(o,t[2]),Y(n,t[0],o),Y(e,t[1],o),x(r,e),r[31]^=B(n)<<7}function V(r,t,n){var e,o;for(_(r[0],at),_(r[1],ft),_(r[2],ft),_(r[3],at),o=255;o>=0;--o)e=n[o/8|0]>>(7&o)&1,Z(r,t,e),G(t,r),G(r,r),Z(r,t,e)}function q(r,t){var n=[nt(),nt(),nt(),nt()];_(n[0],ct),_(n[1],yt),_(n[2],ft),Y(n[3],ct,yt),V(r,n,t)}function X(r,t,n){var e,o=new Uint8Array(64),i=[nt(),nt(),nt(),nt()];for(n||et(t,32),M(o,t,32),o[0]&=248,o[31]&=127,o[31]|=64,q(i,o),j(r,i),e=0;32>e;e++)t[e+32]=r[e];return 0}function D(r,t){var n,e,o,i;for(e=63;e>=32;--e){for(n=0,o=e-32,i=e-12;i>o;++o)t[o]+=n-16*t[e]*At[o-(e-32)],n=t[o]+128>>8,t[o]-=256*n;t[o]+=n,t[e]=0}for(n=0,o=0;32>o;o++)t[o]+=n-(t[31]>>4)*At[o],n=t[o]>>8,t[o]&=255;for(o=0;32>o;o++)t[o]-=n*At[o];for(e=0;32>e;e++)t[e+1]+=t[e]>>8,r[e]=255&t[e]}function H(r){var t,n=new Float64Array(64);for(t=0;64>t;t++)n[t]=r[t];for(t=0;64>t;t++)r[t]=0;D(r,n)}function J(r,t,n,e){var o,i,a=new Uint8Array(64),f=new Uint8Array(64),h=new Uint8Array(64),s=new Float64Array(64),u=[nt(),nt(),nt(),nt()];M(a,e,32),a[0]&=248,a[31]&=127,a[31]|=64;var c=n+64;for(o=0;n>o;o++)r[64+o]=t[o];for(o=0;32>o;o++)r[32+o]=a[32+o];for(M(h,r.subarray(32),n+32),H(h),q(u,h),j(r,u),o=32;64>o;o++)r[o]=e[o];for(M(f,r,n+64),H(f),o=0;64>o;o++)s[o]=0;for(o=0;32>o;o++)s[o]=h[o];for(o=0;32>o;o++)for(i=0;32>i;i++)s[o+i]+=f[o]*a[i];return D(r.subarray(32),s),c}function Q(r,t){var n=nt(),e=nt(),o=nt(),i=nt(),a=nt(),f=nt(),h=nt();return _(r[2],ft),S(r[1],t),k(o,r[1]),Y(i,o,st),T(o,o,r[2]),K(i,r[2],i),k(a,i),k(f,a),Y(h,f,a),Y(n,h,o),Y(n,n,i),C(n,n),Y(n,n,o),Y(n,n,i),Y(n,n,i),Y(r[0],n,i),k(e,r[0]),Y(e,e,i),m(e,o)&&Y(r[0],r[0],wt),k(e,r[0]),Y(e,e,i),m(e,o)?-1:(B(r[0])===t[31]>>7&&T(r[0],at,r[0]),Y(r[3],r[0],r[1]),0)}function W(r,t,n,e){var o,i,f=new Uint8Array(32),h=new Uint8Array(64),s=[nt(),nt(),nt(),nt()],u=[nt(),nt(),nt(),nt()];if(i=-1,64>n)return-1;if(Q(u,e))return-1;for(o=0;n>o;o++)r[o]=t[o];for(o=0;32>o;o++)r[o+32]=e[o];if(M(h,r,n),H(h),V(s,u,h),q(u,t.subarray(32)),G(s,u),j(f,s),n-=64,a(t,0,f,0)){for(o=0;n>o;o++)r[o]=0;return-1}for(o=0;n>o;o++)r[o]=t[o+64];return i=n}function $(r,t){if(r.length!==dt)throw new Error("bad key size");if(t.length!==_t)throw new Error("bad nonce size")}function rt(r,t){if(r.length!==Bt)throw new Error("bad public key size");if(t.length!==St)throw new Error("bad secret key size")}function tt(){for(var r,t={}.toString,n=0;n>>13|e<<3),o=v(r,4),this.r[2]=7939&(e>>>10|o<<6),i=v(r,6),this.r[3]=8191&(o>>>7|i<<9),a=v(r,8),this.r[4]=255&(i>>>4|a<<12),this.r[5]=a>>>1&8190,f=v(r,10),this.r[6]=8191&(a>>>14|f<<2),h=v(r,12),this.r[7]=8065&(f>>>11|h<<5),s=v(r,14),this.r[8]=8191&(h>>>8|s<<8),this.r[9]=s>>>5&127,t=0;8>t;t++)this.pad[t]=v(r,16+2*t)};vt.prototype.blocks=function(r,t,n){for(var e,o,i,a,f,h,s,u,c,y,w,l=this.fin?0:2048,p=new Uint32Array(10);n>=16;){for(e=v(r,t+0),this.h[0]+=8191&e,o=v(r,t+2),this.h[1]+=8191&(e>>>13|o<<3),i=v(r,t+4),this.h[2]+=8191&(o>>>10|i<<6),a=v(r,t+6),this.h[3]+=8191&(i>>>7|a<<9),f=v(r,t+8),this.h[4]+=8191&(a>>>4|f<<12),this.h[5]+=f>>>1&8191,h=v(r,t+10),this.h[6]+=8191&(f>>>14|h<<2),s=v(r,t+12),this.h[7]+=8191&(h>>>11|s<<5),u=v(r,t+14),this.h[8]+=8191&(s>>>8|u<<8),this.h[9]+=u>>>5|l,y=0,c=0;10>y;y++){for(p[y]=c,w=0;10>w;w++)p[y]+=this.h[w]*(y>=w?this.r[y-w]:5*this.r[y+10-w]),4===w&&(c=p[y]>>>13,p[y]&=8191);c+=p[y]>>>13,p[y]&=8191}for(c=(c<<2)+c|0,c=c+p[0]|0,p[0]=8191&c,c>>>=13,p[1]+=c,y=0;10>y;y++)this.h[y]=p[y];t+=16,n-=16}},vt.prototype.finish=function(r,t){var n,e,o,i,a=new Uint16Array(10);if(this.leftover){for(i=this.leftover,this.buffer[i++]=1;16>i;i++)this.buffer[i]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(n=this.h[1]>>>13,this.h[1]&=8191,i=2;10>i;i++)this.h[i]+=n,n=this.h[i]>>>13,this.h[i]&=8191;for(this.h[0]+=5*n,n=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=n,n=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=n,a[0]=this.h[0]+5,n=a[0]>>>13,a[0]&=8191,i=1;10>i;i++)a[i]=this.h[i]+n,n=a[i]>>>13,a[i]&=8191;for(a[9]-=8192,e=(a[9]>>>15)-1,i=0;10>i;i++)a[i]&=e;for(e=~e,i=0;10>i;i++)this.h[i]=this.h[i]&e|a[i];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),o=this.h[0]+this.pad[0],this.h[0]=65535&o,i=1;8>i;i++)o=(this.h[i]+this.pad[i]|0)+(o>>>16)|0,this.h[i]=65535&o;for(i=0;8>i;i++)p(r,t+2*i,this.h[i])},vt.prototype.update=function(r,t,n){var e,o;if(this.leftover){for(o=16-this.leftover,o>n&&(o=n),e=0;o>e;e++)this.buffer[this.leftover+e]=r[t+e];if(n-=o,t+=o,this.leftover+=o,this.leftover<16)return;this.blocks(buffer,0,16),this.leftover=0}if(n>=16&&(o=n-n%16,this.blocks(r,t,o),t+=o,n-=o),n){for(e=0;n>e;e++)this.buffer[this.leftover+e]=r[t+e];this.leftover+=n}};var pt=A,gt=d,bt=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],At=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]),dt=32,_t=24,Ut=32,Et=16,xt=32,mt=32,Bt=32,St=32,Kt=32,Tt=_t,Yt=Ut,kt=Et,Lt=64,Ct=32,Rt=64,zt=32,Pt=64;r.lowlevel={crypto_core_hsalsa20:u,crypto_stream_xor:l,crypto_stream:w,crypto_stream_salsa20_xor:c,crypto_stream_salsa20:y,crypto_onetimeauth:g,crypto_onetimeauth_verify:b,crypto_verify_16:i,crypto_verify_32:a,crypto_secretbox:A,crypto_secretbox_open:d,crypto_scalarmult:R,crypto_scalarmult_base:z,crypto_box_beforenm:F,crypto_box_afternm:pt,crypto_box:N,crypto_box_open:O,crypto_box_keypair:P,crypto_hash:M,crypto_sign:J,crypto_sign_keypair:X,crypto_sign_open:W,crypto_secretbox_KEYBYTES:dt,crypto_secretbox_NONCEBYTES:_t,crypto_secretbox_ZEROBYTES:Ut,crypto_secretbox_BOXZEROBYTES:Et,crypto_scalarmult_BYTES:xt,crypto_scalarmult_SCALARBYTES:mt,crypto_box_PUBLICKEYBYTES:Bt,crypto_box_SECRETKEYBYTES:St,crypto_box_BEFORENMBYTES:Kt,crypto_box_NONCEBYTES:Tt,crypto_box_ZEROBYTES:Yt,crypto_box_BOXZEROBYTES:kt,crypto_sign_BYTES:Lt,crypto_sign_PUBLICKEYBYTES:Ct,crypto_sign_SECRETKEYBYTES:Rt,crypto_sign_SEEDBYTES:zt,crypto_hash_BYTES:Pt},r.util={},r.util.decodeUTF8=function(r){var t,n=unescape(encodeURIComponent(r)),e=new Uint8Array(n.length);for(t=0;tt;t++)n.push(String.fromCharCode(r[t]));return btoa(n.join(""))},r.util.decodeBase64=function(r){if("undefined"==typeof atob)return new Uint8Array(Array.prototype.slice.call(new Buffer(r,"base64"),0));var t,n=atob(r),e=new Uint8Array(n.length);for(t=0;te)return null;for(var o=new Uint8Array(e),i=0;ie;e++)o[e]=t[e];for(e=0;e=0},r.sign.keyPair=function(){var r=new Uint8Array(Ct),t=new Uint8Array(Rt);return X(r,t),{publicKey:r,secretKey:t}},r.sign.keyPair.fromSecretKey=function(r){if(tt(r),r.length!==Rt)throw new Error("bad secret key size");for(var t=new Uint8Array(Ct),n=0;ne;e++)n[e]=r[e];return X(t,n,!0),{publicKey:t,secretKey:n}},r.sign.publicKeyLength=Ct,r.sign.secretKeyLength=Rt,r.sign.seedLength=zt,r.sign.signatureLength=Lt,r.hash=function(r){tt(r);var t=new Uint8Array(Pt);return M(t,r,r.length),t},r.hash.hashLength=Pt,r.verify=function(r,t){return tt(r,t),0===r.length||0===t.length?!1:r.length!==t.length?!1:0===o(r,0,t,0,r.length)?!0:!1},r.setPRNG=function(r){et=r},function(){var t;"undefined"!=typeof window?(window.crypto&&window.crypto.getRandomValues?t=window.crypto:window.msCrypto&&window.msCrypto.getRandomValues&&(t=window.msCrypto),t&&r.setPRNG(function(r,n){var e,o=new Uint8Array(n);for(t.getRandomValues(o),e=0;n>e;e++)r[e]=o[e]})):"undefined"!=typeof require&&(t=require("crypto"),t&&r.setPRNG(function(r,n){var e,o=t.randomBytes(n);for(e=0;n>e;e++)r[e]=o[e]}))}()}("undefined"!=typeof module&&module.exports?module.exports:window.nacl=window.nacl||{}); \ No newline at end of file diff --git a/nacl.js b/nacl.js index 4c2f339d..7539ae93 100644 --- a/nacl.js +++ b/nacl.js @@ -1062,7 +1062,7 @@ nacl.box.keyPair.fromSecretKey = function(secretKey) { throw new Error('bad secret key size'); var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); crypto_scalarmult_base(pk, secretKey); - return {publicKey: pk, secretKey: secretKey}; + return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; }; nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES; @@ -1127,9 +1127,8 @@ nacl.sign.keyPair.fromSecretKey = function(secretKey) { if (secretKey.length !== crypto_sign_SECRETKEYBYTES) throw new Error('bad secret key size'); var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var i; - for (i = 0; i < 32; i++) pk[i] = secretKey[32+i]; - return {publicKey: pk, secretKey: secretKey}; + for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i]; + return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; }; nacl.sign.keyPair.fromSeed = function(seed) { diff --git a/nacl.min.js b/nacl.min.js index 516de6cf..f6994581 100644 --- a/nacl.min.js +++ b/nacl.min.js @@ -1 +1 @@ -!function(r){"use strict";function n(r,n){return r<>>32-n}function e(r,n){var e=255&r[n+3];return e=e<<8|255&r[n+2],e=e<<8|255&r[n+1],e<<8|255&r[n+0]}function t(r,n){var e=r[n]<<24|r[n+1]<<16|r[n+2]<<8|r[n+3],t=r[n+4]<<24|r[n+5]<<16|r[n+6]<<8|r[n+7];return new ln(e,t)}function o(r,n,e){var t;for(t=0;4>t;t++)r[n+t]=255&e,e>>>=8}function i(r,n,e){r[n]=e.hi>>24&255,r[n+1]=e.hi>>16&255,r[n+2]=e.hi>>8&255,r[n+3]=255&e.hi,r[n+4]=e.lo>>24&255,r[n+5]=e.lo>>16&255,r[n+6]=e.lo>>8&255,r[n+7]=255&e.lo}function a(r,n,e,t,o){var i,a=0;for(i=0;o>i;i++)a|=r[n+i]^e[t+i];return(1&a-1>>>8)-1}function f(r,n,e,t){return a(r,n,e,t,16)}function u(r,n,e,t){return a(r,n,e,t,32)}function c(r,t,i,a,f){var u,c,w,y=new Uint32Array(16),s=new Uint32Array(16),l=new Uint32Array(16),h=new Uint32Array(4);for(u=0;4>u;u++)s[5*u]=e(a,4*u),s[1+u]=e(i,4*u),s[6+u]=e(t,4*u),s[11+u]=e(i,16+4*u);for(u=0;16>u;u++)l[u]=s[u];for(u=0;20>u;u++){for(c=0;4>c;c++){for(w=0;4>w;w++)h[w]=s[(5*c+4*w)%16];for(h[1]^=n(h[0]+h[3]|0,7),h[2]^=n(h[1]+h[0]|0,9),h[3]^=n(h[2]+h[1]|0,13),h[0]^=n(h[3]+h[2]|0,18),w=0;4>w;w++)y[4*c+(c+w)%4]=h[w]}for(w=0;16>w;w++)s[w]=y[w]}if(f){for(u=0;16>u;u++)s[u]=s[u]+l[u]|0;for(u=0;4>u;u++)s[5*u]=s[5*u]-e(a,4*u)|0,s[6+u]=s[6+u]-e(t,4*u)|0;for(u=0;4>u;u++)o(r,4*u,s[5*u]),o(r,16+4*u,s[6+u])}else for(u=0;16>u;u++)o(r,4*u,s[u]+l[u]|0)}function w(r,n,e,t){return c(r,n,e,t,!1),0}function y(r,n,e,t){return c(r,n,e,t,!0),0}function s(r,n,e,t,o,i,a){var f,u,c=new Uint8Array(16),y=new Uint8Array(64);if(!o)return 0;for(u=0;16>u;u++)c[u]=0;for(u=0;8>u;u++)c[u]=i[u];for(;o>=64;){for(w(y,c,a,Bn),u=0;64>u;u++)r[n+u]=(e?e[t+u]:0)^y[u];for(f=1,u=8;16>u;u++)f=f+(255&c[u])|0,c[u]=255&f,f>>>=8;o-=64,n+=64,e&&(t+=64)}if(o>0)for(w(y,c,a,Bn),u=0;o>u;u++)r[n+u]=(e?e[t+u]:0)^y[u];return 0}function l(r,n,e,t,o){return s(r,n,null,0,e,t,o)}function h(r,n,e,t,o){var i=new Uint8Array(32);return y(i,t,o,Bn),l(r,n,e,t.subarray(16),i)}function g(r,n,e,t,o,i,a){var f=new Uint8Array(32);return y(f,i,a,Bn),s(r,n,e,t,o,i.subarray(16),f)}function v(r,n){var e,t=0;for(e=0;17>e;e++)t=t+(r[e]+n[e]|0)|0,r[e]=255&t,t>>>=8}function p(r,n,e,t,o,i){var a,f,u,c,w=new Uint32Array(17),y=new Uint32Array(17),s=new Uint32Array(17),l=new Uint32Array(17),h=new Uint32Array(17);for(u=0;17>u;u++)y[u]=s[u]=0;for(u=0;16>u;u++)y[u]=i[u];for(y[3]&=15,y[4]&=252,y[7]&=15,y[8]&=252,y[11]&=15,y[12]&=252,y[15]&=15;o>0;){for(u=0;17>u;u++)l[u]=0;for(u=0;16>u&&o>u;++u)l[u]=e[t+u];for(l[u]=1,t+=u,o-=u,v(s,l),f=0;17>f;f++)for(w[f]=0,u=0;17>u;u++)w[f]=w[f]+s[u]*(f>=u?y[f-u]:320*y[f+17-u]|0)|0|0;for(f=0;17>f;f++)s[f]=w[f];for(c=0,u=0;16>u;u++)c=c+s[u]|0,s[u]=255&c,c>>>=8;for(c=c+s[16]|0,s[16]=3&c,c=5*(c>>>2)|0,u=0;16>u;u++)c=c+s[u]|0,s[u]=255&c,c>>>=8;c=c+s[16]|0,s[16]=c}for(u=0;17>u;u++)h[u]=s[u];for(v(s,Sn),a=0|-(s[16]>>>7),u=0;17>u;u++)s[u]^=a&(h[u]^s[u]);for(u=0;16>u;u++)l[u]=i[u+16];for(l[16]=0,v(s,l),u=0;16>u;u++)r[n+u]=s[u];return 0}function b(r,n,e,t,o,i){var a=new Uint8Array(16);return p(a,0,e,t,o,i),f(r,n,a,0)}function A(r,n,e,t,o){var i;if(32>e)return-1;for(g(r,0,n,0,e,t,o),p(r,16,r,32,e-32,r),i=0;16>i;i++)r[i]=0;return 0}function _(r,n,e,t,o){var i,a=new Uint8Array(32);if(32>e)return-1;if(h(a,0,32,t,o),0!==b(n,16,n,32,e-32,a))return-1;for(g(r,0,n,0,e,t,o),i=0;32>i;i++)r[i]=0;return 0}function d(r,n){var e;for(e=0;16>e;e++)r[e]=0|n[e]}function U(r){var n,e;for(e=0;16>e;e++)r[e]+=65536,n=Math.floor(r[e]/65536),r[(e+1)*(15>e?1:0)]+=n-1+37*(n-1)*(15===e?1:0),r[e]-=65536*n}function E(r,n,e){for(var t,o=~(e-1),i=0;16>i;i++)t=o&(r[i]^n[i]),r[i]^=t,n[i]^=t}function x(r,n){var e,t,o,i=hn(),a=hn();for(e=0;16>e;e++)a[e]=n[e];for(U(a),U(a),U(a),t=0;2>t;t++){for(i[0]=a[0]-65517,e=1;15>e;e++)i[e]=a[e]-65535-(i[e-1]>>16&1),i[e-1]&=65535;i[15]=a[15]-32767-(i[14]>>16&1),o=i[15]>>16&1,i[14]&=65535,E(a,i,1-o)}for(e=0;16>e;e++)r[2*e]=255&a[e],r[2*e+1]=a[e]>>8}function m(r,n){var e=new Uint8Array(32),t=new Uint8Array(32);return x(e,r),x(t,n),u(e,0,t,0)}function B(r){var n=new Uint8Array(32);return x(n,r),1&n[0]}function S(r,n){var e;for(e=0;16>e;e++)r[e]=n[2*e]+(n[2*e+1]<<8);r[15]&=32767}function K(r,n,e){var t;for(t=0;16>t;t++)r[t]=n[t]+e[t]|0}function T(r,n,e){var t;for(t=0;16>t;t++)r[t]=n[t]-e[t]|0}function Y(r,n,e){var t,o,i=new Float64Array(31);for(t=0;31>t;t++)i[t]=0;for(t=0;16>t;t++)for(o=0;16>o;o++)i[t+o]+=n[t]*e[o];for(t=0;15>t;t++)i[t]+=38*i[t+16];for(t=0;16>t;t++)r[t]=i[t];U(r),U(r)}function L(r,n){Y(r,n,n)}function C(r,n){var e,t=hn();for(e=0;16>e;e++)t[e]=n[e];for(e=253;e>=0;e--)L(t,t),2!==e&&4!==e&&Y(t,t,n);for(e=0;16>e;e++)r[e]=t[e]}function R(r,n){var e,t=hn();for(e=0;16>e;e++)t[e]=n[e];for(e=250;e>=0;e--)L(t,t),1!==e&&Y(t,t,n);for(e=0;16>e;e++)r[e]=t[e]}function k(r,n,e){var t,o,i=new Uint8Array(32),a=new Float64Array(80),f=hn(),u=hn(),c=hn(),w=hn(),y=hn(),s=hn();for(o=0;31>o;o++)i[o]=n[o];for(i[31]=127&n[31]|64,i[0]&=248,S(a,e),o=0;16>o;o++)u[o]=a[o],w[o]=f[o]=c[o]=0;for(f[0]=w[0]=1,o=254;o>=0;--o)t=i[o>>>3]>>>(7&o)&1,E(f,u,t),E(c,w,t),K(y,f,c),T(f,f,c),K(c,u,w),T(u,u,w),L(w,y),L(s,f),Y(f,c,f),Y(c,u,y),K(y,f,c),T(f,f,c),L(u,f),T(c,w,s),Y(f,c,_n),K(f,f,w),Y(c,c,f),Y(f,w,s),Y(w,u,a),L(u,y),E(f,u,t),E(c,w,t);for(o=0;16>o;o++)a[o+16]=f[o],a[o+32]=c[o],a[o+48]=u[o],a[o+64]=w[o];var l=a.subarray(32),h=a.subarray(16);return C(l,l),Y(h,h,l),x(r,h),0}function z(r,n){return k(r,n,pn)}function P(r,n){return gn(n,32),z(r,n)}function F(r,n,e){var t=new Uint8Array(32);return k(t,e,n),y(r,vn,t,Bn)}function N(r,n,e,t,o,i){var a=new Uint8Array(32);return F(a,o,i),Kn(r,n,e,t,a)}function O(r,n,e,t,o,i){var a=new Uint8Array(32);return F(a,o,i),Tn(r,n,e,t,a)}function M(){var r,n,e,t=0,o=0,i=0,a=0,f=65535;for(e=0;e>>16,i+=n&f,a+=n>>>16;return o+=t>>>16,i+=o>>>16,a+=i>>>16,new ln(i&f|a<<16,t&f|o<<16)}function G(r,n){return new ln(r.hi>>>n,r.lo>>>n|r.hi<<32-n)}function I(){var r,n=0,e=0;for(r=0;rn?(e=r.hi>>>n|r.lo<>>n|r.hi<n&&(e=r.lo>>>n|r.hi<>>n|r.lo<a;a++)u[a]=w[a]=t(r,8*a);for(var s=0;e>=128;){for(a=0;16>a;a++)y[a]=t(n,8*a+s);for(a=0;80>a;a++){for(f=0;8>f;f++)c[f]=w[f];for(o=M(w[7],X(w[4]),j(w[4],w[5],w[6]),Yn[a],y[a%16]),c[7]=M(o,q(w[0]),V(w[0],w[1],w[2])),c[3]=M(c[3],o),f=0;8>f;f++)w[(f+1)%8]=c[f];if(a%16===15)for(f=0;16>f;f++)y[f]=M(y[f],y[(f+9)%16],D(y[(f+1)%16]),H(y[(f+14)%16]))}for(a=0;8>a;a++)w[a]=M(w[a],u[a]),u[a]=w[a];s+=128,e-=128}for(a=0;8>a;a++)i(r,8*a,u[a]);return e}function Q(r,n,e){var t,o=new Uint8Array(64),a=new Uint8Array(256),f=e;for(t=0;64>t;t++)o[t]=Ln[t];for(J(o,n,e),e%=128,t=0;256>t;t++)a[t]=0;for(t=0;e>t;t++)a[t]=n[f-e+t];for(a[e]=128,e=256-128*(112>e?1:0),a[e-9]=0,i(a,e-8,new ln(f/536870912|0,f<<3)),J(o,a,e),t=0;64>t;t++)r[t]=o[t];return 0}function W(r,n){var e=hn(),t=hn(),o=hn(),i=hn(),a=hn(),f=hn(),u=hn(),c=hn(),w=hn();T(e,r[1],r[0]),T(w,n[1],n[0]),Y(e,e,w),K(t,r[0],r[1]),K(w,n[0],n[1]),Y(t,t,w),Y(o,r[3],n[3]),Y(o,o,Un),Y(i,r[2],n[2]),K(i,i,i),T(a,t,e),T(f,i,o),K(u,i,o),K(c,t,e),Y(r[0],a,f),Y(r[1],c,u),Y(r[2],u,f),Y(r[3],a,c)}function $(r,n,e){var t;for(t=0;4>t;t++)E(r[t],n[t],e)}function rn(r,n){var e=hn(),t=hn(),o=hn();C(o,n[2]),Y(e,n[0],o),Y(t,n[1],o),x(r,t),r[31]^=B(e)<<7}function nn(r,n,e){var t,o;for(d(r[0],bn),d(r[1],An),d(r[2],An),d(r[3],bn),o=255;o>=0;--o)t=e[o/8|0]>>(7&o)&1,$(r,n,t),W(n,r),W(r,r),$(r,n,t)}function en(r,n){var e=[hn(),hn(),hn(),hn()];d(e[0],En),d(e[1],xn),d(e[2],An),Y(e[3],En,xn),nn(r,e,n)}function tn(r,n,e){var t,o=new Uint8Array(64),i=[hn(),hn(),hn(),hn()];for(e||gn(n,32),Q(o,n,32),o[0]&=248,o[31]&=127,o[31]|=64,en(i,o),rn(r,i),t=0;32>t;t++)n[t+32]=r[t];return 0}function on(r,n){var e,t,o,i;for(t=63;t>=32;--t){for(e=0,o=t-32,i=t-12;i>o;++o)n[o]+=e-16*n[t]*Cn[o-(t-32)],e=n[o]+128>>8,n[o]-=256*e;n[o]+=e,n[t]=0}for(e=0,o=0;32>o;o++)n[o]+=e-(n[31]>>4)*Cn[o],e=n[o]>>8,n[o]&=255;for(o=0;32>o;o++)n[o]-=e*Cn[o];for(t=0;32>t;t++)n[t+1]+=n[t]>>8,r[t]=255&n[t]}function an(r){var n,e=new Float64Array(64);for(n=0;64>n;n++)e[n]=r[n];for(n=0;64>n;n++)r[n]=0;on(r,e)}function fn(r,n,e,t){var o,i,a=new Uint8Array(64),f=new Uint8Array(64),u=new Uint8Array(64),c=new Float64Array(64),w=[hn(),hn(),hn(),hn()];Q(a,t,32),a[0]&=248,a[31]&=127,a[31]|=64;var y=e+64;for(o=0;e>o;o++)r[64+o]=n[o];for(o=0;32>o;o++)r[32+o]=a[32+o];for(Q(u,r.subarray(32),e+32),an(u),en(w,u),rn(r,w),o=32;64>o;o++)r[o]=t[o];for(Q(f,r,e+64),an(f),o=0;64>o;o++)c[o]=0;for(o=0;32>o;o++)c[o]=u[o];for(o=0;32>o;o++)for(i=0;32>i;i++)c[o+i]+=f[o]*a[i];return on(r.subarray(32),c),y}function un(r,n){var e=hn(),t=hn(),o=hn(),i=hn(),a=hn(),f=hn(),u=hn();return d(r[2],An),S(r[1],n),L(o,r[1]),Y(i,o,dn),T(o,o,r[2]),K(i,r[2],i),L(a,i),L(f,a),Y(u,f,a),Y(e,u,o),Y(e,e,i),R(e,e),Y(e,e,o),Y(e,e,i),Y(e,e,i),Y(r[0],e,i),L(t,r[0]),Y(t,t,i),m(t,o)&&Y(r[0],r[0],mn),L(t,r[0]),Y(t,t,i),m(t,o)?-1:(B(r[0])===n[31]>>7&&T(r[0],bn,r[0]),Y(r[3],r[0],r[1]),0)}function cn(r,n,e,t){var o,i,a=new Uint8Array(32),f=new Uint8Array(64),c=[hn(),hn(),hn(),hn()],w=[hn(),hn(),hn(),hn()];if(i=-1,64>e)return-1;if(un(w,t))return-1;for(o=0;e>o;o++)r[o]=n[o];for(o=0;32>o;o++)r[o+32]=t[o];if(Q(f,r,e),an(f),nn(c,w,f),en(w,n.subarray(32)),W(c,w),rn(a,c),e-=64,u(n,0,a,0)){for(o=0;e>o;o++)r[o]=0;return-1}for(o=0;e>o;o++)r[o]=n[o+64];return i=e}function wn(r,n){if(r.length!==Rn)throw new Error("bad key size");if(n.length!==kn)throw new Error("bad nonce size")}function yn(r,n){if(r.length!==On)throw new Error("bad public key size");if(n.length!==Mn)throw new Error("bad secret key size")}function sn(){for(var r,n={}.toString,e=0;en;n++)e.push(String.fromCharCode(r[n]));return btoa(e.join(""))},r.util.decodeBase64=function(r){if("undefined"==typeof atob)return new Uint8Array(Array.prototype.slice.call(new Buffer(r,"base64"),0));var n,e=atob(r),t=new Uint8Array(e.length);for(n=0;nt)return null;for(var o=new Uint8Array(t),i=0;it;t++)o[t]=n[t];for(t=0;t=0},r.sign.keyPair=function(){var r=new Uint8Array(qn),n=new Uint8Array(Xn);return tn(r,n),{publicKey:r,secretKey:n}},r.sign.keyPair.fromSecretKey=function(r){if(sn(r),r.length!==Xn)throw new Error("bad secret key size");var n,e=new Uint8Array(qn);for(n=0;32>n;n++)e[n]=r[32+n];return{publicKey:e,secretKey:r}},r.sign.keyPair.fromSeed=function(r){if(sn(r),r.length!==Dn)throw new Error("bad seed size");for(var n=new Uint8Array(qn),e=new Uint8Array(Xn),t=0;32>t;t++)e[t]=r[t];return tn(n,e,!0),{publicKey:n,secretKey:e}},r.sign.publicKeyLength=qn,r.sign.secretKeyLength=Xn,r.sign.seedLength=Dn,r.sign.signatureLength=Vn,r.hash=function(r){sn(r);var n=new Uint8Array(Hn);return Q(n,r,r.length),n},r.hash.hashLength=Hn,r.verify=function(r,n){return sn(r,n),0===r.length||0===n.length?!1:r.length!==n.length?!1:0===a(r,0,n,0,r.length)?!0:!1},r.setPRNG=function(r){gn=r},function(){var n;"undefined"!=typeof window?(window.crypto&&window.crypto.getRandomValues?n=window.crypto:window.msCrypto&&window.msCrypto.getRandomValues&&(n=window.msCrypto),n&&r.setPRNG(function(r,e){var t,o=new Uint8Array(e);for(n.getRandomValues(o),t=0;e>t;t++)r[t]=o[t]})):"undefined"!=typeof require&&(n=require("crypto"),n&&r.setPRNG(function(r,e){var t,o=n.randomBytes(e);for(t=0;e>t;t++)r[t]=o[t]}))}()}("undefined"!=typeof module&&module.exports?module.exports:window.nacl=window.nacl||{}); \ No newline at end of file +!function(r){"use strict";function n(r,n){return r<>>32-n}function e(r,n){var e=255&r[n+3];return e=e<<8|255&r[n+2],e=e<<8|255&r[n+1],e<<8|255&r[n+0]}function t(r,n){var e=r[n]<<24|r[n+1]<<16|r[n+2]<<8|r[n+3],t=r[n+4]<<24|r[n+5]<<16|r[n+6]<<8|r[n+7];return new ln(e,t)}function o(r,n,e){var t;for(t=0;4>t;t++)r[n+t]=255&e,e>>>=8}function i(r,n,e){r[n]=e.hi>>24&255,r[n+1]=e.hi>>16&255,r[n+2]=e.hi>>8&255,r[n+3]=255&e.hi,r[n+4]=e.lo>>24&255,r[n+5]=e.lo>>16&255,r[n+6]=e.lo>>8&255,r[n+7]=255&e.lo}function a(r,n,e,t,o){var i,a=0;for(i=0;o>i;i++)a|=r[n+i]^e[t+i];return(1&a-1>>>8)-1}function f(r,n,e,t){return a(r,n,e,t,16)}function u(r,n,e,t){return a(r,n,e,t,32)}function c(r,t,i,a,f){var u,c,w,y=new Uint32Array(16),s=new Uint32Array(16),l=new Uint32Array(16),h=new Uint32Array(4);for(u=0;4>u;u++)s[5*u]=e(a,4*u),s[1+u]=e(i,4*u),s[6+u]=e(t,4*u),s[11+u]=e(i,16+4*u);for(u=0;16>u;u++)l[u]=s[u];for(u=0;20>u;u++){for(c=0;4>c;c++){for(w=0;4>w;w++)h[w]=s[(5*c+4*w)%16];for(h[1]^=n(h[0]+h[3]|0,7),h[2]^=n(h[1]+h[0]|0,9),h[3]^=n(h[2]+h[1]|0,13),h[0]^=n(h[3]+h[2]|0,18),w=0;4>w;w++)y[4*c+(c+w)%4]=h[w]}for(w=0;16>w;w++)s[w]=y[w]}if(f){for(u=0;16>u;u++)s[u]=s[u]+l[u]|0;for(u=0;4>u;u++)s[5*u]=s[5*u]-e(a,4*u)|0,s[6+u]=s[6+u]-e(t,4*u)|0;for(u=0;4>u;u++)o(r,4*u,s[5*u]),o(r,16+4*u,s[6+u])}else for(u=0;16>u;u++)o(r,4*u,s[u]+l[u]|0)}function w(r,n,e,t){return c(r,n,e,t,!1),0}function y(r,n,e,t){return c(r,n,e,t,!0),0}function s(r,n,e,t,o,i,a){var f,u,c=new Uint8Array(16),y=new Uint8Array(64);if(!o)return 0;for(u=0;16>u;u++)c[u]=0;for(u=0;8>u;u++)c[u]=i[u];for(;o>=64;){for(w(y,c,a,Bn),u=0;64>u;u++)r[n+u]=(e?e[t+u]:0)^y[u];for(f=1,u=8;16>u;u++)f=f+(255&c[u])|0,c[u]=255&f,f>>>=8;o-=64,n+=64,e&&(t+=64)}if(o>0)for(w(y,c,a,Bn),u=0;o>u;u++)r[n+u]=(e?e[t+u]:0)^y[u];return 0}function l(r,n,e,t,o){return s(r,n,null,0,e,t,o)}function h(r,n,e,t,o){var i=new Uint8Array(32);return y(i,t,o,Bn),l(r,n,e,t.subarray(16),i)}function g(r,n,e,t,o,i,a){var f=new Uint8Array(32);return y(f,i,a,Bn),s(r,n,e,t,o,i.subarray(16),f)}function v(r,n){var e,t=0;for(e=0;17>e;e++)t=t+(r[e]+n[e]|0)|0,r[e]=255&t,t>>>=8}function p(r,n,e,t,o,i){var a,f,u,c,w=new Uint32Array(17),y=new Uint32Array(17),s=new Uint32Array(17),l=new Uint32Array(17),h=new Uint32Array(17);for(u=0;17>u;u++)y[u]=s[u]=0;for(u=0;16>u;u++)y[u]=i[u];for(y[3]&=15,y[4]&=252,y[7]&=15,y[8]&=252,y[11]&=15,y[12]&=252,y[15]&=15;o>0;){for(u=0;17>u;u++)l[u]=0;for(u=0;16>u&&o>u;++u)l[u]=e[t+u];for(l[u]=1,t+=u,o-=u,v(s,l),f=0;17>f;f++)for(w[f]=0,u=0;17>u;u++)w[f]=w[f]+s[u]*(f>=u?y[f-u]:320*y[f+17-u]|0)|0|0;for(f=0;17>f;f++)s[f]=w[f];for(c=0,u=0;16>u;u++)c=c+s[u]|0,s[u]=255&c,c>>>=8;for(c=c+s[16]|0,s[16]=3&c,c=5*(c>>>2)|0,u=0;16>u;u++)c=c+s[u]|0,s[u]=255&c,c>>>=8;c=c+s[16]|0,s[16]=c}for(u=0;17>u;u++)h[u]=s[u];for(v(s,Sn),a=0|-(s[16]>>>7),u=0;17>u;u++)s[u]^=a&(h[u]^s[u]);for(u=0;16>u;u++)l[u]=i[u+16];for(l[16]=0,v(s,l),u=0;16>u;u++)r[n+u]=s[u];return 0}function b(r,n,e,t,o,i){var a=new Uint8Array(16);return p(a,0,e,t,o,i),f(r,n,a,0)}function A(r,n,e,t,o){var i;if(32>e)return-1;for(g(r,0,n,0,e,t,o),p(r,16,r,32,e-32,r),i=0;16>i;i++)r[i]=0;return 0}function U(r,n,e,t,o){var i,a=new Uint8Array(32);if(32>e)return-1;if(h(a,0,32,t,o),0!==b(n,16,n,32,e-32,a))return-1;for(g(r,0,n,0,e,t,o),i=0;32>i;i++)r[i]=0;return 0}function _(r,n){var e;for(e=0;16>e;e++)r[e]=0|n[e]}function d(r){var n,e;for(e=0;16>e;e++)r[e]+=65536,n=Math.floor(r[e]/65536),r[(e+1)*(15>e?1:0)]+=n-1+37*(n-1)*(15===e?1:0),r[e]-=65536*n}function E(r,n,e){for(var t,o=~(e-1),i=0;16>i;i++)t=o&(r[i]^n[i]),r[i]^=t,n[i]^=t}function x(r,n){var e,t,o,i=hn(),a=hn();for(e=0;16>e;e++)a[e]=n[e];for(d(a),d(a),d(a),t=0;2>t;t++){for(i[0]=a[0]-65517,e=1;15>e;e++)i[e]=a[e]-65535-(i[e-1]>>16&1),i[e-1]&=65535;i[15]=a[15]-32767-(i[14]>>16&1),o=i[15]>>16&1,i[14]&=65535,E(a,i,1-o)}for(e=0;16>e;e++)r[2*e]=255&a[e],r[2*e+1]=a[e]>>8}function m(r,n){var e=new Uint8Array(32),t=new Uint8Array(32);return x(e,r),x(t,n),u(e,0,t,0)}function B(r){var n=new Uint8Array(32);return x(n,r),1&n[0]}function S(r,n){var e;for(e=0;16>e;e++)r[e]=n[2*e]+(n[2*e+1]<<8);r[15]&=32767}function K(r,n,e){var t;for(t=0;16>t;t++)r[t]=n[t]+e[t]|0}function T(r,n,e){var t;for(t=0;16>t;t++)r[t]=n[t]-e[t]|0}function Y(r,n,e){var t,o,i=new Float64Array(31);for(t=0;31>t;t++)i[t]=0;for(t=0;16>t;t++)for(o=0;16>o;o++)i[t+o]+=n[t]*e[o];for(t=0;15>t;t++)i[t]+=38*i[t+16];for(t=0;16>t;t++)r[t]=i[t];d(r),d(r)}function L(r,n){Y(r,n,n)}function C(r,n){var e,t=hn();for(e=0;16>e;e++)t[e]=n[e];for(e=253;e>=0;e--)L(t,t),2!==e&&4!==e&&Y(t,t,n);for(e=0;16>e;e++)r[e]=t[e]}function R(r,n){var e,t=hn();for(e=0;16>e;e++)t[e]=n[e];for(e=250;e>=0;e--)L(t,t),1!==e&&Y(t,t,n);for(e=0;16>e;e++)r[e]=t[e]}function k(r,n,e){var t,o,i=new Uint8Array(32),a=new Float64Array(80),f=hn(),u=hn(),c=hn(),w=hn(),y=hn(),s=hn();for(o=0;31>o;o++)i[o]=n[o];for(i[31]=127&n[31]|64,i[0]&=248,S(a,e),o=0;16>o;o++)u[o]=a[o],w[o]=f[o]=c[o]=0;for(f[0]=w[0]=1,o=254;o>=0;--o)t=i[o>>>3]>>>(7&o)&1,E(f,u,t),E(c,w,t),K(y,f,c),T(f,f,c),K(c,u,w),T(u,u,w),L(w,y),L(s,f),Y(f,c,f),Y(c,u,y),K(y,f,c),T(f,f,c),L(u,f),T(c,w,s),Y(f,c,Un),K(f,f,w),Y(c,c,f),Y(f,w,s),Y(w,u,a),L(u,y),E(f,u,t),E(c,w,t);for(o=0;16>o;o++)a[o+16]=f[o],a[o+32]=c[o],a[o+48]=u[o],a[o+64]=w[o];var l=a.subarray(32),h=a.subarray(16);return C(l,l),Y(h,h,l),x(r,h),0}function z(r,n){return k(r,n,pn)}function P(r,n){return gn(n,32),z(r,n)}function F(r,n,e){var t=new Uint8Array(32);return k(t,e,n),y(r,vn,t,Bn)}function N(r,n,e,t,o,i){var a=new Uint8Array(32);return F(a,o,i),Kn(r,n,e,t,a)}function O(r,n,e,t,o,i){var a=new Uint8Array(32);return F(a,o,i),Tn(r,n,e,t,a)}function M(){var r,n,e,t=0,o=0,i=0,a=0,f=65535;for(e=0;e>>16,i+=n&f,a+=n>>>16;return o+=t>>>16,i+=o>>>16,a+=i>>>16,new ln(i&f|a<<16,t&f|o<<16)}function G(r,n){return new ln(r.hi>>>n,r.lo>>>n|r.hi<<32-n)}function I(){var r,n=0,e=0;for(r=0;rn?(e=r.hi>>>n|r.lo<>>n|r.hi<n&&(e=r.lo>>>n|r.hi<>>n|r.lo<a;a++)u[a]=w[a]=t(r,8*a);for(var s=0;e>=128;){for(a=0;16>a;a++)y[a]=t(n,8*a+s);for(a=0;80>a;a++){for(f=0;8>f;f++)c[f]=w[f];for(o=M(w[7],X(w[4]),j(w[4],w[5],w[6]),Yn[a],y[a%16]),c[7]=M(o,q(w[0]),V(w[0],w[1],w[2])),c[3]=M(c[3],o),f=0;8>f;f++)w[(f+1)%8]=c[f];if(a%16===15)for(f=0;16>f;f++)y[f]=M(y[f],y[(f+9)%16],D(y[(f+1)%16]),H(y[(f+14)%16]))}for(a=0;8>a;a++)w[a]=M(w[a],u[a]),u[a]=w[a];s+=128,e-=128}for(a=0;8>a;a++)i(r,8*a,u[a]);return e}function Q(r,n,e){var t,o=new Uint8Array(64),a=new Uint8Array(256),f=e;for(t=0;64>t;t++)o[t]=Ln[t];for(J(o,n,e),e%=128,t=0;256>t;t++)a[t]=0;for(t=0;e>t;t++)a[t]=n[f-e+t];for(a[e]=128,e=256-128*(112>e?1:0),a[e-9]=0,i(a,e-8,new ln(f/536870912|0,f<<3)),J(o,a,e),t=0;64>t;t++)r[t]=o[t];return 0}function W(r,n){var e=hn(),t=hn(),o=hn(),i=hn(),a=hn(),f=hn(),u=hn(),c=hn(),w=hn();T(e,r[1],r[0]),T(w,n[1],n[0]),Y(e,e,w),K(t,r[0],r[1]),K(w,n[0],n[1]),Y(t,t,w),Y(o,r[3],n[3]),Y(o,o,dn),Y(i,r[2],n[2]),K(i,i,i),T(a,t,e),T(f,i,o),K(u,i,o),K(c,t,e),Y(r[0],a,f),Y(r[1],c,u),Y(r[2],u,f),Y(r[3],a,c)}function $(r,n,e){var t;for(t=0;4>t;t++)E(r[t],n[t],e)}function rn(r,n){var e=hn(),t=hn(),o=hn();C(o,n[2]),Y(e,n[0],o),Y(t,n[1],o),x(r,t),r[31]^=B(e)<<7}function nn(r,n,e){var t,o;for(_(r[0],bn),_(r[1],An),_(r[2],An),_(r[3],bn),o=255;o>=0;--o)t=e[o/8|0]>>(7&o)&1,$(r,n,t),W(n,r),W(r,r),$(r,n,t)}function en(r,n){var e=[hn(),hn(),hn(),hn()];_(e[0],En),_(e[1],xn),_(e[2],An),Y(e[3],En,xn),nn(r,e,n)}function tn(r,n,e){var t,o=new Uint8Array(64),i=[hn(),hn(),hn(),hn()];for(e||gn(n,32),Q(o,n,32),o[0]&=248,o[31]&=127,o[31]|=64,en(i,o),rn(r,i),t=0;32>t;t++)n[t+32]=r[t];return 0}function on(r,n){var e,t,o,i;for(t=63;t>=32;--t){for(e=0,o=t-32,i=t-12;i>o;++o)n[o]+=e-16*n[t]*Cn[o-(t-32)],e=n[o]+128>>8,n[o]-=256*e;n[o]+=e,n[t]=0}for(e=0,o=0;32>o;o++)n[o]+=e-(n[31]>>4)*Cn[o],e=n[o]>>8,n[o]&=255;for(o=0;32>o;o++)n[o]-=e*Cn[o];for(t=0;32>t;t++)n[t+1]+=n[t]>>8,r[t]=255&n[t]}function an(r){var n,e=new Float64Array(64);for(n=0;64>n;n++)e[n]=r[n];for(n=0;64>n;n++)r[n]=0;on(r,e)}function fn(r,n,e,t){var o,i,a=new Uint8Array(64),f=new Uint8Array(64),u=new Uint8Array(64),c=new Float64Array(64),w=[hn(),hn(),hn(),hn()];Q(a,t,32),a[0]&=248,a[31]&=127,a[31]|=64;var y=e+64;for(o=0;e>o;o++)r[64+o]=n[o];for(o=0;32>o;o++)r[32+o]=a[32+o];for(Q(u,r.subarray(32),e+32),an(u),en(w,u),rn(r,w),o=32;64>o;o++)r[o]=t[o];for(Q(f,r,e+64),an(f),o=0;64>o;o++)c[o]=0;for(o=0;32>o;o++)c[o]=u[o];for(o=0;32>o;o++)for(i=0;32>i;i++)c[o+i]+=f[o]*a[i];return on(r.subarray(32),c),y}function un(r,n){var e=hn(),t=hn(),o=hn(),i=hn(),a=hn(),f=hn(),u=hn();return _(r[2],An),S(r[1],n),L(o,r[1]),Y(i,o,_n),T(o,o,r[2]),K(i,r[2],i),L(a,i),L(f,a),Y(u,f,a),Y(e,u,o),Y(e,e,i),R(e,e),Y(e,e,o),Y(e,e,i),Y(e,e,i),Y(r[0],e,i),L(t,r[0]),Y(t,t,i),m(t,o)&&Y(r[0],r[0],mn),L(t,r[0]),Y(t,t,i),m(t,o)?-1:(B(r[0])===n[31]>>7&&T(r[0],bn,r[0]),Y(r[3],r[0],r[1]),0)}function cn(r,n,e,t){var o,i,a=new Uint8Array(32),f=new Uint8Array(64),c=[hn(),hn(),hn(),hn()],w=[hn(),hn(),hn(),hn()];if(i=-1,64>e)return-1;if(un(w,t))return-1;for(o=0;e>o;o++)r[o]=n[o];for(o=0;32>o;o++)r[o+32]=t[o];if(Q(f,r,e),an(f),nn(c,w,f),en(w,n.subarray(32)),W(c,w),rn(a,c),e-=64,u(n,0,a,0)){for(o=0;e>o;o++)r[o]=0;return-1}for(o=0;e>o;o++)r[o]=n[o+64];return i=e}function wn(r,n){if(r.length!==Rn)throw new Error("bad key size");if(n.length!==kn)throw new Error("bad nonce size")}function yn(r,n){if(r.length!==On)throw new Error("bad public key size");if(n.length!==Mn)throw new Error("bad secret key size")}function sn(){for(var r,n={}.toString,e=0;en;n++)e.push(String.fromCharCode(r[n]));return btoa(e.join(""))},r.util.decodeBase64=function(r){if("undefined"==typeof atob)return new Uint8Array(Array.prototype.slice.call(new Buffer(r,"base64"),0));var n,e=atob(r),t=new Uint8Array(e.length);for(n=0;nt)return null;for(var o=new Uint8Array(t),i=0;it;t++)o[t]=n[t];for(t=0;t=0},r.sign.keyPair=function(){var r=new Uint8Array(qn),n=new Uint8Array(Xn);return tn(r,n),{publicKey:r,secretKey:n}},r.sign.keyPair.fromSecretKey=function(r){if(sn(r),r.length!==Xn)throw new Error("bad secret key size");for(var n=new Uint8Array(qn),e=0;et;t++)e[t]=r[t];return tn(n,e,!0),{publicKey:n,secretKey:e}},r.sign.publicKeyLength=qn,r.sign.secretKeyLength=Xn,r.sign.seedLength=Dn,r.sign.signatureLength=Vn,r.hash=function(r){sn(r);var n=new Uint8Array(Hn);return Q(n,r,r.length),n},r.hash.hashLength=Hn,r.verify=function(r,n){return sn(r,n),0===r.length||0===n.length?!1:r.length!==n.length?!1:0===a(r,0,n,0,r.length)?!0:!1},r.setPRNG=function(r){gn=r},function(){var n;"undefined"!=typeof window?(window.crypto&&window.crypto.getRandomValues?n=window.crypto:window.msCrypto&&window.msCrypto.getRandomValues&&(n=window.msCrypto),n&&r.setPRNG(function(r,e){var t,o=new Uint8Array(e);for(n.getRandomValues(o),t=0;e>t;t++)r[t]=o[t]})):"undefined"!=typeof require&&(n=require("crypto"),n&&r.setPRNG(function(r,e){var t,o=n.randomBytes(e);for(t=0;e>t;t++)r[t]=o[t]}))}()}("undefined"!=typeof module&&module.exports?module.exports:window.nacl=window.nacl||{}); \ No newline at end of file