itwillsync 1.8.0 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -2235,7 +2235,7 @@ var require_websocket = __commonJS({
2235
2235
  var http = __require("http");
2236
2236
  var net = __require("net");
2237
2237
  var tls = __require("tls");
2238
- var { randomBytes: randomBytes2, createHash } = __require("crypto");
2238
+ var { randomBytes: randomBytes2, createHash: createHash2 } = __require("crypto");
2239
2239
  var { Duplex, Readable } = __require("stream");
2240
2240
  var { URL: URL2 } = __require("url");
2241
2241
  var PerMessageDeflate = require_permessage_deflate();
@@ -2895,7 +2895,7 @@ var require_websocket = __commonJS({
2895
2895
  abortHandshake(websocket, socket, "Invalid Upgrade header");
2896
2896
  return;
2897
2897
  }
2898
- const digest = createHash("sha1").update(key + GUID).digest("base64");
2898
+ const digest = createHash2("sha1").update(key + GUID).digest("base64");
2899
2899
  if (res.headers["sec-websocket-accept"] !== digest) {
2900
2900
  abortHandshake(websocket, socket, "Invalid Sec-WebSocket-Accept header");
2901
2901
  return;
@@ -3262,7 +3262,7 @@ var require_websocket_server = __commonJS({
3262
3262
  var EventEmitter = __require("events");
3263
3263
  var http = __require("http");
3264
3264
  var { Duplex } = __require("stream");
3265
- var { createHash } = __require("crypto");
3265
+ var { createHash: createHash2 } = __require("crypto");
3266
3266
  var extension = require_extension();
3267
3267
  var PerMessageDeflate = require_permessage_deflate();
3268
3268
  var subprotocol = require_subprotocol();
@@ -3563,7 +3563,7 @@ var require_websocket_server = __commonJS({
3563
3563
  );
3564
3564
  }
3565
3565
  if (this._state > RUNNING) return abortHandshake(socket, 503);
3566
- const digest = createHash("sha1").update(key + GUID).digest("base64");
3566
+ const digest = createHash2("sha1").update(key + GUID).digest("base64");
3567
3567
  const headers = [
3568
3568
  "HTTP/1.1 101 Switching Protocols",
3569
3569
  "Upgrade: websocket",
@@ -3648,6 +3648,2231 @@ var require_websocket_server = __commonJS({
3648
3648
  }
3649
3649
  });
3650
3650
 
3651
+ // ../../node_modules/.pnpm/tweetnacl@1.0.3/node_modules/tweetnacl/nacl-fast.js
3652
+ var require_nacl_fast = __commonJS({
3653
+ "../../node_modules/.pnpm/tweetnacl@1.0.3/node_modules/tweetnacl/nacl-fast.js"(exports, module) {
3654
+ "use strict";
3655
+ (function(nacl2) {
3656
+ "use strict";
3657
+ var gf = function(init) {
3658
+ var i, r = new Float64Array(16);
3659
+ if (init) for (i = 0; i < init.length; i++) r[i] = init[i];
3660
+ return r;
3661
+ };
3662
+ var randombytes = function() {
3663
+ throw new Error("no PRNG");
3664
+ };
3665
+ var _0 = new Uint8Array(16);
3666
+ var _9 = new Uint8Array(32);
3667
+ _9[0] = 9;
3668
+ var gf0 = gf(), gf1 = gf([1]), _121665 = gf([56129, 1]), D = gf([30883, 4953, 19914, 30187, 55467, 16705, 2637, 112, 59544, 30585, 16505, 36039, 65139, 11119, 27886, 20995]), D2 = gf([61785, 9906, 39828, 60374, 45398, 33411, 5274, 224, 53552, 61171, 33010, 6542, 64743, 22239, 55772, 9222]), X = gf([54554, 36645, 11616, 51542, 42930, 38181, 51040, 26924, 56412, 64982, 57905, 49316, 21502, 52590, 14035, 8553]), Y = gf([26200, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214]), I = gf([41136, 18958, 6951, 50414, 58488, 44335, 6150, 12099, 55207, 15867, 153, 11085, 57099, 20417, 9344, 11139]);
3669
+ function ts64(x, i, h, l) {
3670
+ x[i] = h >> 24 & 255;
3671
+ x[i + 1] = h >> 16 & 255;
3672
+ x[i + 2] = h >> 8 & 255;
3673
+ x[i + 3] = h & 255;
3674
+ x[i + 4] = l >> 24 & 255;
3675
+ x[i + 5] = l >> 16 & 255;
3676
+ x[i + 6] = l >> 8 & 255;
3677
+ x[i + 7] = l & 255;
3678
+ }
3679
+ function vn(x, xi, y, yi, n) {
3680
+ var i, d = 0;
3681
+ for (i = 0; i < n; i++) d |= x[xi + i] ^ y[yi + i];
3682
+ return (1 & d - 1 >>> 8) - 1;
3683
+ }
3684
+ function crypto_verify_16(x, xi, y, yi) {
3685
+ return vn(x, xi, y, yi, 16);
3686
+ }
3687
+ function crypto_verify_32(x, xi, y, yi) {
3688
+ return vn(x, xi, y, yi, 32);
3689
+ }
3690
+ function core_salsa20(o, p2, k, c) {
3691
+ var j0 = c[0] & 255 | (c[1] & 255) << 8 | (c[2] & 255) << 16 | (c[3] & 255) << 24, j1 = k[0] & 255 | (k[1] & 255) << 8 | (k[2] & 255) << 16 | (k[3] & 255) << 24, j2 = k[4] & 255 | (k[5] & 255) << 8 | (k[6] & 255) << 16 | (k[7] & 255) << 24, j3 = k[8] & 255 | (k[9] & 255) << 8 | (k[10] & 255) << 16 | (k[11] & 255) << 24, j4 = k[12] & 255 | (k[13] & 255) << 8 | (k[14] & 255) << 16 | (k[15] & 255) << 24, j5 = c[4] & 255 | (c[5] & 255) << 8 | (c[6] & 255) << 16 | (c[7] & 255) << 24, j6 = p2[0] & 255 | (p2[1] & 255) << 8 | (p2[2] & 255) << 16 | (p2[3] & 255) << 24, j7 = p2[4] & 255 | (p2[5] & 255) << 8 | (p2[6] & 255) << 16 | (p2[7] & 255) << 24, j8 = p2[8] & 255 | (p2[9] & 255) << 8 | (p2[10] & 255) << 16 | (p2[11] & 255) << 24, j9 = p2[12] & 255 | (p2[13] & 255) << 8 | (p2[14] & 255) << 16 | (p2[15] & 255) << 24, j10 = c[8] & 255 | (c[9] & 255) << 8 | (c[10] & 255) << 16 | (c[11] & 255) << 24, j11 = k[16] & 255 | (k[17] & 255) << 8 | (k[18] & 255) << 16 | (k[19] & 255) << 24, j12 = k[20] & 255 | (k[21] & 255) << 8 | (k[22] & 255) << 16 | (k[23] & 255) << 24, j13 = k[24] & 255 | (k[25] & 255) << 8 | (k[26] & 255) << 16 | (k[27] & 255) << 24, j14 = k[28] & 255 | (k[29] & 255) << 8 | (k[30] & 255) << 16 | (k[31] & 255) << 24, j15 = c[12] & 255 | (c[13] & 255) << 8 | (c[14] & 255) << 16 | (c[15] & 255) << 24;
3692
+ var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, x15 = j15, u;
3693
+ for (var i = 0; i < 20; i += 2) {
3694
+ u = x0 + x12 | 0;
3695
+ x4 ^= u << 7 | u >>> 32 - 7;
3696
+ u = x4 + x0 | 0;
3697
+ x8 ^= u << 9 | u >>> 32 - 9;
3698
+ u = x8 + x4 | 0;
3699
+ x12 ^= u << 13 | u >>> 32 - 13;
3700
+ u = x12 + x8 | 0;
3701
+ x0 ^= u << 18 | u >>> 32 - 18;
3702
+ u = x5 + x1 | 0;
3703
+ x9 ^= u << 7 | u >>> 32 - 7;
3704
+ u = x9 + x5 | 0;
3705
+ x13 ^= u << 9 | u >>> 32 - 9;
3706
+ u = x13 + x9 | 0;
3707
+ x1 ^= u << 13 | u >>> 32 - 13;
3708
+ u = x1 + x13 | 0;
3709
+ x5 ^= u << 18 | u >>> 32 - 18;
3710
+ u = x10 + x6 | 0;
3711
+ x14 ^= u << 7 | u >>> 32 - 7;
3712
+ u = x14 + x10 | 0;
3713
+ x2 ^= u << 9 | u >>> 32 - 9;
3714
+ u = x2 + x14 | 0;
3715
+ x6 ^= u << 13 | u >>> 32 - 13;
3716
+ u = x6 + x2 | 0;
3717
+ x10 ^= u << 18 | u >>> 32 - 18;
3718
+ u = x15 + x11 | 0;
3719
+ x3 ^= u << 7 | u >>> 32 - 7;
3720
+ u = x3 + x15 | 0;
3721
+ x7 ^= u << 9 | u >>> 32 - 9;
3722
+ u = x7 + x3 | 0;
3723
+ x11 ^= u << 13 | u >>> 32 - 13;
3724
+ u = x11 + x7 | 0;
3725
+ x15 ^= u << 18 | u >>> 32 - 18;
3726
+ u = x0 + x3 | 0;
3727
+ x1 ^= u << 7 | u >>> 32 - 7;
3728
+ u = x1 + x0 | 0;
3729
+ x2 ^= u << 9 | u >>> 32 - 9;
3730
+ u = x2 + x1 | 0;
3731
+ x3 ^= u << 13 | u >>> 32 - 13;
3732
+ u = x3 + x2 | 0;
3733
+ x0 ^= u << 18 | u >>> 32 - 18;
3734
+ u = x5 + x4 | 0;
3735
+ x6 ^= u << 7 | u >>> 32 - 7;
3736
+ u = x6 + x5 | 0;
3737
+ x7 ^= u << 9 | u >>> 32 - 9;
3738
+ u = x7 + x6 | 0;
3739
+ x4 ^= u << 13 | u >>> 32 - 13;
3740
+ u = x4 + x7 | 0;
3741
+ x5 ^= u << 18 | u >>> 32 - 18;
3742
+ u = x10 + x9 | 0;
3743
+ x11 ^= u << 7 | u >>> 32 - 7;
3744
+ u = x11 + x10 | 0;
3745
+ x8 ^= u << 9 | u >>> 32 - 9;
3746
+ u = x8 + x11 | 0;
3747
+ x9 ^= u << 13 | u >>> 32 - 13;
3748
+ u = x9 + x8 | 0;
3749
+ x10 ^= u << 18 | u >>> 32 - 18;
3750
+ u = x15 + x14 | 0;
3751
+ x12 ^= u << 7 | u >>> 32 - 7;
3752
+ u = x12 + x15 | 0;
3753
+ x13 ^= u << 9 | u >>> 32 - 9;
3754
+ u = x13 + x12 | 0;
3755
+ x14 ^= u << 13 | u >>> 32 - 13;
3756
+ u = x14 + x13 | 0;
3757
+ x15 ^= u << 18 | u >>> 32 - 18;
3758
+ }
3759
+ x0 = x0 + j0 | 0;
3760
+ x1 = x1 + j1 | 0;
3761
+ x2 = x2 + j2 | 0;
3762
+ x3 = x3 + j3 | 0;
3763
+ x4 = x4 + j4 | 0;
3764
+ x5 = x5 + j5 | 0;
3765
+ x6 = x6 + j6 | 0;
3766
+ x7 = x7 + j7 | 0;
3767
+ x8 = x8 + j8 | 0;
3768
+ x9 = x9 + j9 | 0;
3769
+ x10 = x10 + j10 | 0;
3770
+ x11 = x11 + j11 | 0;
3771
+ x12 = x12 + j12 | 0;
3772
+ x13 = x13 + j13 | 0;
3773
+ x14 = x14 + j14 | 0;
3774
+ x15 = x15 + j15 | 0;
3775
+ o[0] = x0 >>> 0 & 255;
3776
+ o[1] = x0 >>> 8 & 255;
3777
+ o[2] = x0 >>> 16 & 255;
3778
+ o[3] = x0 >>> 24 & 255;
3779
+ o[4] = x1 >>> 0 & 255;
3780
+ o[5] = x1 >>> 8 & 255;
3781
+ o[6] = x1 >>> 16 & 255;
3782
+ o[7] = x1 >>> 24 & 255;
3783
+ o[8] = x2 >>> 0 & 255;
3784
+ o[9] = x2 >>> 8 & 255;
3785
+ o[10] = x2 >>> 16 & 255;
3786
+ o[11] = x2 >>> 24 & 255;
3787
+ o[12] = x3 >>> 0 & 255;
3788
+ o[13] = x3 >>> 8 & 255;
3789
+ o[14] = x3 >>> 16 & 255;
3790
+ o[15] = x3 >>> 24 & 255;
3791
+ o[16] = x4 >>> 0 & 255;
3792
+ o[17] = x4 >>> 8 & 255;
3793
+ o[18] = x4 >>> 16 & 255;
3794
+ o[19] = x4 >>> 24 & 255;
3795
+ o[20] = x5 >>> 0 & 255;
3796
+ o[21] = x5 >>> 8 & 255;
3797
+ o[22] = x5 >>> 16 & 255;
3798
+ o[23] = x5 >>> 24 & 255;
3799
+ o[24] = x6 >>> 0 & 255;
3800
+ o[25] = x6 >>> 8 & 255;
3801
+ o[26] = x6 >>> 16 & 255;
3802
+ o[27] = x6 >>> 24 & 255;
3803
+ o[28] = x7 >>> 0 & 255;
3804
+ o[29] = x7 >>> 8 & 255;
3805
+ o[30] = x7 >>> 16 & 255;
3806
+ o[31] = x7 >>> 24 & 255;
3807
+ o[32] = x8 >>> 0 & 255;
3808
+ o[33] = x8 >>> 8 & 255;
3809
+ o[34] = x8 >>> 16 & 255;
3810
+ o[35] = x8 >>> 24 & 255;
3811
+ o[36] = x9 >>> 0 & 255;
3812
+ o[37] = x9 >>> 8 & 255;
3813
+ o[38] = x9 >>> 16 & 255;
3814
+ o[39] = x9 >>> 24 & 255;
3815
+ o[40] = x10 >>> 0 & 255;
3816
+ o[41] = x10 >>> 8 & 255;
3817
+ o[42] = x10 >>> 16 & 255;
3818
+ o[43] = x10 >>> 24 & 255;
3819
+ o[44] = x11 >>> 0 & 255;
3820
+ o[45] = x11 >>> 8 & 255;
3821
+ o[46] = x11 >>> 16 & 255;
3822
+ o[47] = x11 >>> 24 & 255;
3823
+ o[48] = x12 >>> 0 & 255;
3824
+ o[49] = x12 >>> 8 & 255;
3825
+ o[50] = x12 >>> 16 & 255;
3826
+ o[51] = x12 >>> 24 & 255;
3827
+ o[52] = x13 >>> 0 & 255;
3828
+ o[53] = x13 >>> 8 & 255;
3829
+ o[54] = x13 >>> 16 & 255;
3830
+ o[55] = x13 >>> 24 & 255;
3831
+ o[56] = x14 >>> 0 & 255;
3832
+ o[57] = x14 >>> 8 & 255;
3833
+ o[58] = x14 >>> 16 & 255;
3834
+ o[59] = x14 >>> 24 & 255;
3835
+ o[60] = x15 >>> 0 & 255;
3836
+ o[61] = x15 >>> 8 & 255;
3837
+ o[62] = x15 >>> 16 & 255;
3838
+ o[63] = x15 >>> 24 & 255;
3839
+ }
3840
+ function core_hsalsa20(o, p2, k, c) {
3841
+ var j0 = c[0] & 255 | (c[1] & 255) << 8 | (c[2] & 255) << 16 | (c[3] & 255) << 24, j1 = k[0] & 255 | (k[1] & 255) << 8 | (k[2] & 255) << 16 | (k[3] & 255) << 24, j2 = k[4] & 255 | (k[5] & 255) << 8 | (k[6] & 255) << 16 | (k[7] & 255) << 24, j3 = k[8] & 255 | (k[9] & 255) << 8 | (k[10] & 255) << 16 | (k[11] & 255) << 24, j4 = k[12] & 255 | (k[13] & 255) << 8 | (k[14] & 255) << 16 | (k[15] & 255) << 24, j5 = c[4] & 255 | (c[5] & 255) << 8 | (c[6] & 255) << 16 | (c[7] & 255) << 24, j6 = p2[0] & 255 | (p2[1] & 255) << 8 | (p2[2] & 255) << 16 | (p2[3] & 255) << 24, j7 = p2[4] & 255 | (p2[5] & 255) << 8 | (p2[6] & 255) << 16 | (p2[7] & 255) << 24, j8 = p2[8] & 255 | (p2[9] & 255) << 8 | (p2[10] & 255) << 16 | (p2[11] & 255) << 24, j9 = p2[12] & 255 | (p2[13] & 255) << 8 | (p2[14] & 255) << 16 | (p2[15] & 255) << 24, j10 = c[8] & 255 | (c[9] & 255) << 8 | (c[10] & 255) << 16 | (c[11] & 255) << 24, j11 = k[16] & 255 | (k[17] & 255) << 8 | (k[18] & 255) << 16 | (k[19] & 255) << 24, j12 = k[20] & 255 | (k[21] & 255) << 8 | (k[22] & 255) << 16 | (k[23] & 255) << 24, j13 = k[24] & 255 | (k[25] & 255) << 8 | (k[26] & 255) << 16 | (k[27] & 255) << 24, j14 = k[28] & 255 | (k[29] & 255) << 8 | (k[30] & 255) << 16 | (k[31] & 255) << 24, j15 = c[12] & 255 | (c[13] & 255) << 8 | (c[14] & 255) << 16 | (c[15] & 255) << 24;
3842
+ var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, x15 = j15, u;
3843
+ for (var i = 0; i < 20; i += 2) {
3844
+ u = x0 + x12 | 0;
3845
+ x4 ^= u << 7 | u >>> 32 - 7;
3846
+ u = x4 + x0 | 0;
3847
+ x8 ^= u << 9 | u >>> 32 - 9;
3848
+ u = x8 + x4 | 0;
3849
+ x12 ^= u << 13 | u >>> 32 - 13;
3850
+ u = x12 + x8 | 0;
3851
+ x0 ^= u << 18 | u >>> 32 - 18;
3852
+ u = x5 + x1 | 0;
3853
+ x9 ^= u << 7 | u >>> 32 - 7;
3854
+ u = x9 + x5 | 0;
3855
+ x13 ^= u << 9 | u >>> 32 - 9;
3856
+ u = x13 + x9 | 0;
3857
+ x1 ^= u << 13 | u >>> 32 - 13;
3858
+ u = x1 + x13 | 0;
3859
+ x5 ^= u << 18 | u >>> 32 - 18;
3860
+ u = x10 + x6 | 0;
3861
+ x14 ^= u << 7 | u >>> 32 - 7;
3862
+ u = x14 + x10 | 0;
3863
+ x2 ^= u << 9 | u >>> 32 - 9;
3864
+ u = x2 + x14 | 0;
3865
+ x6 ^= u << 13 | u >>> 32 - 13;
3866
+ u = x6 + x2 | 0;
3867
+ x10 ^= u << 18 | u >>> 32 - 18;
3868
+ u = x15 + x11 | 0;
3869
+ x3 ^= u << 7 | u >>> 32 - 7;
3870
+ u = x3 + x15 | 0;
3871
+ x7 ^= u << 9 | u >>> 32 - 9;
3872
+ u = x7 + x3 | 0;
3873
+ x11 ^= u << 13 | u >>> 32 - 13;
3874
+ u = x11 + x7 | 0;
3875
+ x15 ^= u << 18 | u >>> 32 - 18;
3876
+ u = x0 + x3 | 0;
3877
+ x1 ^= u << 7 | u >>> 32 - 7;
3878
+ u = x1 + x0 | 0;
3879
+ x2 ^= u << 9 | u >>> 32 - 9;
3880
+ u = x2 + x1 | 0;
3881
+ x3 ^= u << 13 | u >>> 32 - 13;
3882
+ u = x3 + x2 | 0;
3883
+ x0 ^= u << 18 | u >>> 32 - 18;
3884
+ u = x5 + x4 | 0;
3885
+ x6 ^= u << 7 | u >>> 32 - 7;
3886
+ u = x6 + x5 | 0;
3887
+ x7 ^= u << 9 | u >>> 32 - 9;
3888
+ u = x7 + x6 | 0;
3889
+ x4 ^= u << 13 | u >>> 32 - 13;
3890
+ u = x4 + x7 | 0;
3891
+ x5 ^= u << 18 | u >>> 32 - 18;
3892
+ u = x10 + x9 | 0;
3893
+ x11 ^= u << 7 | u >>> 32 - 7;
3894
+ u = x11 + x10 | 0;
3895
+ x8 ^= u << 9 | u >>> 32 - 9;
3896
+ u = x8 + x11 | 0;
3897
+ x9 ^= u << 13 | u >>> 32 - 13;
3898
+ u = x9 + x8 | 0;
3899
+ x10 ^= u << 18 | u >>> 32 - 18;
3900
+ u = x15 + x14 | 0;
3901
+ x12 ^= u << 7 | u >>> 32 - 7;
3902
+ u = x12 + x15 | 0;
3903
+ x13 ^= u << 9 | u >>> 32 - 9;
3904
+ u = x13 + x12 | 0;
3905
+ x14 ^= u << 13 | u >>> 32 - 13;
3906
+ u = x14 + x13 | 0;
3907
+ x15 ^= u << 18 | u >>> 32 - 18;
3908
+ }
3909
+ o[0] = x0 >>> 0 & 255;
3910
+ o[1] = x0 >>> 8 & 255;
3911
+ o[2] = x0 >>> 16 & 255;
3912
+ o[3] = x0 >>> 24 & 255;
3913
+ o[4] = x5 >>> 0 & 255;
3914
+ o[5] = x5 >>> 8 & 255;
3915
+ o[6] = x5 >>> 16 & 255;
3916
+ o[7] = x5 >>> 24 & 255;
3917
+ o[8] = x10 >>> 0 & 255;
3918
+ o[9] = x10 >>> 8 & 255;
3919
+ o[10] = x10 >>> 16 & 255;
3920
+ o[11] = x10 >>> 24 & 255;
3921
+ o[12] = x15 >>> 0 & 255;
3922
+ o[13] = x15 >>> 8 & 255;
3923
+ o[14] = x15 >>> 16 & 255;
3924
+ o[15] = x15 >>> 24 & 255;
3925
+ o[16] = x6 >>> 0 & 255;
3926
+ o[17] = x6 >>> 8 & 255;
3927
+ o[18] = x6 >>> 16 & 255;
3928
+ o[19] = x6 >>> 24 & 255;
3929
+ o[20] = x7 >>> 0 & 255;
3930
+ o[21] = x7 >>> 8 & 255;
3931
+ o[22] = x7 >>> 16 & 255;
3932
+ o[23] = x7 >>> 24 & 255;
3933
+ o[24] = x8 >>> 0 & 255;
3934
+ o[25] = x8 >>> 8 & 255;
3935
+ o[26] = x8 >>> 16 & 255;
3936
+ o[27] = x8 >>> 24 & 255;
3937
+ o[28] = x9 >>> 0 & 255;
3938
+ o[29] = x9 >>> 8 & 255;
3939
+ o[30] = x9 >>> 16 & 255;
3940
+ o[31] = x9 >>> 24 & 255;
3941
+ }
3942
+ function crypto_core_salsa20(out, inp, k, c) {
3943
+ core_salsa20(out, inp, k, c);
3944
+ }
3945
+ function crypto_core_hsalsa20(out, inp, k, c) {
3946
+ core_hsalsa20(out, inp, k, c);
3947
+ }
3948
+ var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);
3949
+ function crypto_stream_salsa20_xor(c, cpos, m, mpos, b, n, k) {
3950
+ var z = new Uint8Array(16), x = new Uint8Array(64);
3951
+ var u, i;
3952
+ for (i = 0; i < 16; i++) z[i] = 0;
3953
+ for (i = 0; i < 8; i++) z[i] = n[i];
3954
+ while (b >= 64) {
3955
+ crypto_core_salsa20(x, z, k, sigma);
3956
+ for (i = 0; i < 64; i++) c[cpos + i] = m[mpos + i] ^ x[i];
3957
+ u = 1;
3958
+ for (i = 8; i < 16; i++) {
3959
+ u = u + (z[i] & 255) | 0;
3960
+ z[i] = u & 255;
3961
+ u >>>= 8;
3962
+ }
3963
+ b -= 64;
3964
+ cpos += 64;
3965
+ mpos += 64;
3966
+ }
3967
+ if (b > 0) {
3968
+ crypto_core_salsa20(x, z, k, sigma);
3969
+ for (i = 0; i < b; i++) c[cpos + i] = m[mpos + i] ^ x[i];
3970
+ }
3971
+ return 0;
3972
+ }
3973
+ function crypto_stream_salsa20(c, cpos, b, n, k) {
3974
+ var z = new Uint8Array(16), x = new Uint8Array(64);
3975
+ var u, i;
3976
+ for (i = 0; i < 16; i++) z[i] = 0;
3977
+ for (i = 0; i < 8; i++) z[i] = n[i];
3978
+ while (b >= 64) {
3979
+ crypto_core_salsa20(x, z, k, sigma);
3980
+ for (i = 0; i < 64; i++) c[cpos + i] = x[i];
3981
+ u = 1;
3982
+ for (i = 8; i < 16; i++) {
3983
+ u = u + (z[i] & 255) | 0;
3984
+ z[i] = u & 255;
3985
+ u >>>= 8;
3986
+ }
3987
+ b -= 64;
3988
+ cpos += 64;
3989
+ }
3990
+ if (b > 0) {
3991
+ crypto_core_salsa20(x, z, k, sigma);
3992
+ for (i = 0; i < b; i++) c[cpos + i] = x[i];
3993
+ }
3994
+ return 0;
3995
+ }
3996
+ function crypto_stream(c, cpos, d, n, k) {
3997
+ var s = new Uint8Array(32);
3998
+ crypto_core_hsalsa20(s, n, k, sigma);
3999
+ var sn = new Uint8Array(8);
4000
+ for (var i = 0; i < 8; i++) sn[i] = n[i + 16];
4001
+ return crypto_stream_salsa20(c, cpos, d, sn, s);
4002
+ }
4003
+ function crypto_stream_xor(c, cpos, m, mpos, d, n, k) {
4004
+ var s = new Uint8Array(32);
4005
+ crypto_core_hsalsa20(s, n, k, sigma);
4006
+ var sn = new Uint8Array(8);
4007
+ for (var i = 0; i < 8; i++) sn[i] = n[i + 16];
4008
+ return crypto_stream_salsa20_xor(c, cpos, m, mpos, d, sn, s);
4009
+ }
4010
+ var poly1305 = function(key) {
4011
+ this.buffer = new Uint8Array(16);
4012
+ this.r = new Uint16Array(10);
4013
+ this.h = new Uint16Array(10);
4014
+ this.pad = new Uint16Array(8);
4015
+ this.leftover = 0;
4016
+ this.fin = 0;
4017
+ var t0, t1, t2, t3, t4, t5, t6, t7;
4018
+ t0 = key[0] & 255 | (key[1] & 255) << 8;
4019
+ this.r[0] = t0 & 8191;
4020
+ t1 = key[2] & 255 | (key[3] & 255) << 8;
4021
+ this.r[1] = (t0 >>> 13 | t1 << 3) & 8191;
4022
+ t2 = key[4] & 255 | (key[5] & 255) << 8;
4023
+ this.r[2] = (t1 >>> 10 | t2 << 6) & 7939;
4024
+ t3 = key[6] & 255 | (key[7] & 255) << 8;
4025
+ this.r[3] = (t2 >>> 7 | t3 << 9) & 8191;
4026
+ t4 = key[8] & 255 | (key[9] & 255) << 8;
4027
+ this.r[4] = (t3 >>> 4 | t4 << 12) & 255;
4028
+ this.r[5] = t4 >>> 1 & 8190;
4029
+ t5 = key[10] & 255 | (key[11] & 255) << 8;
4030
+ this.r[6] = (t4 >>> 14 | t5 << 2) & 8191;
4031
+ t6 = key[12] & 255 | (key[13] & 255) << 8;
4032
+ this.r[7] = (t5 >>> 11 | t6 << 5) & 8065;
4033
+ t7 = key[14] & 255 | (key[15] & 255) << 8;
4034
+ this.r[8] = (t6 >>> 8 | t7 << 8) & 8191;
4035
+ this.r[9] = t7 >>> 5 & 127;
4036
+ this.pad[0] = key[16] & 255 | (key[17] & 255) << 8;
4037
+ this.pad[1] = key[18] & 255 | (key[19] & 255) << 8;
4038
+ this.pad[2] = key[20] & 255 | (key[21] & 255) << 8;
4039
+ this.pad[3] = key[22] & 255 | (key[23] & 255) << 8;
4040
+ this.pad[4] = key[24] & 255 | (key[25] & 255) << 8;
4041
+ this.pad[5] = key[26] & 255 | (key[27] & 255) << 8;
4042
+ this.pad[6] = key[28] & 255 | (key[29] & 255) << 8;
4043
+ this.pad[7] = key[30] & 255 | (key[31] & 255) << 8;
4044
+ };
4045
+ poly1305.prototype.blocks = function(m, mpos, bytes) {
4046
+ var hibit = this.fin ? 0 : 1 << 11;
4047
+ var t0, t1, t2, t3, t4, t5, t6, t7, c;
4048
+ var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;
4049
+ var h0 = this.h[0], h1 = this.h[1], h2 = this.h[2], h3 = this.h[3], h4 = this.h[4], h5 = this.h[5], h6 = this.h[6], h7 = this.h[7], h8 = this.h[8], h9 = this.h[9];
4050
+ var r0 = this.r[0], r1 = this.r[1], r2 = this.r[2], r3 = this.r[3], r4 = this.r[4], r5 = this.r[5], r6 = this.r[6], r7 = this.r[7], r8 = this.r[8], r9 = this.r[9];
4051
+ while (bytes >= 16) {
4052
+ t0 = m[mpos + 0] & 255 | (m[mpos + 1] & 255) << 8;
4053
+ h0 += t0 & 8191;
4054
+ t1 = m[mpos + 2] & 255 | (m[mpos + 3] & 255) << 8;
4055
+ h1 += (t0 >>> 13 | t1 << 3) & 8191;
4056
+ t2 = m[mpos + 4] & 255 | (m[mpos + 5] & 255) << 8;
4057
+ h2 += (t1 >>> 10 | t2 << 6) & 8191;
4058
+ t3 = m[mpos + 6] & 255 | (m[mpos + 7] & 255) << 8;
4059
+ h3 += (t2 >>> 7 | t3 << 9) & 8191;
4060
+ t4 = m[mpos + 8] & 255 | (m[mpos + 9] & 255) << 8;
4061
+ h4 += (t3 >>> 4 | t4 << 12) & 8191;
4062
+ h5 += t4 >>> 1 & 8191;
4063
+ t5 = m[mpos + 10] & 255 | (m[mpos + 11] & 255) << 8;
4064
+ h6 += (t4 >>> 14 | t5 << 2) & 8191;
4065
+ t6 = m[mpos + 12] & 255 | (m[mpos + 13] & 255) << 8;
4066
+ h7 += (t5 >>> 11 | t6 << 5) & 8191;
4067
+ t7 = m[mpos + 14] & 255 | (m[mpos + 15] & 255) << 8;
4068
+ h8 += (t6 >>> 8 | t7 << 8) & 8191;
4069
+ h9 += t7 >>> 5 | hibit;
4070
+ c = 0;
4071
+ d0 = c;
4072
+ d0 += h0 * r0;
4073
+ d0 += h1 * (5 * r9);
4074
+ d0 += h2 * (5 * r8);
4075
+ d0 += h3 * (5 * r7);
4076
+ d0 += h4 * (5 * r6);
4077
+ c = d0 >>> 13;
4078
+ d0 &= 8191;
4079
+ d0 += h5 * (5 * r5);
4080
+ d0 += h6 * (5 * r4);
4081
+ d0 += h7 * (5 * r3);
4082
+ d0 += h8 * (5 * r2);
4083
+ d0 += h9 * (5 * r1);
4084
+ c += d0 >>> 13;
4085
+ d0 &= 8191;
4086
+ d1 = c;
4087
+ d1 += h0 * r1;
4088
+ d1 += h1 * r0;
4089
+ d1 += h2 * (5 * r9);
4090
+ d1 += h3 * (5 * r8);
4091
+ d1 += h4 * (5 * r7);
4092
+ c = d1 >>> 13;
4093
+ d1 &= 8191;
4094
+ d1 += h5 * (5 * r6);
4095
+ d1 += h6 * (5 * r5);
4096
+ d1 += h7 * (5 * r4);
4097
+ d1 += h8 * (5 * r3);
4098
+ d1 += h9 * (5 * r2);
4099
+ c += d1 >>> 13;
4100
+ d1 &= 8191;
4101
+ d2 = c;
4102
+ d2 += h0 * r2;
4103
+ d2 += h1 * r1;
4104
+ d2 += h2 * r0;
4105
+ d2 += h3 * (5 * r9);
4106
+ d2 += h4 * (5 * r8);
4107
+ c = d2 >>> 13;
4108
+ d2 &= 8191;
4109
+ d2 += h5 * (5 * r7);
4110
+ d2 += h6 * (5 * r6);
4111
+ d2 += h7 * (5 * r5);
4112
+ d2 += h8 * (5 * r4);
4113
+ d2 += h9 * (5 * r3);
4114
+ c += d2 >>> 13;
4115
+ d2 &= 8191;
4116
+ d3 = c;
4117
+ d3 += h0 * r3;
4118
+ d3 += h1 * r2;
4119
+ d3 += h2 * r1;
4120
+ d3 += h3 * r0;
4121
+ d3 += h4 * (5 * r9);
4122
+ c = d3 >>> 13;
4123
+ d3 &= 8191;
4124
+ d3 += h5 * (5 * r8);
4125
+ d3 += h6 * (5 * r7);
4126
+ d3 += h7 * (5 * r6);
4127
+ d3 += h8 * (5 * r5);
4128
+ d3 += h9 * (5 * r4);
4129
+ c += d3 >>> 13;
4130
+ d3 &= 8191;
4131
+ d4 = c;
4132
+ d4 += h0 * r4;
4133
+ d4 += h1 * r3;
4134
+ d4 += h2 * r2;
4135
+ d4 += h3 * r1;
4136
+ d4 += h4 * r0;
4137
+ c = d4 >>> 13;
4138
+ d4 &= 8191;
4139
+ d4 += h5 * (5 * r9);
4140
+ d4 += h6 * (5 * r8);
4141
+ d4 += h7 * (5 * r7);
4142
+ d4 += h8 * (5 * r6);
4143
+ d4 += h9 * (5 * r5);
4144
+ c += d4 >>> 13;
4145
+ d4 &= 8191;
4146
+ d5 = c;
4147
+ d5 += h0 * r5;
4148
+ d5 += h1 * r4;
4149
+ d5 += h2 * r3;
4150
+ d5 += h3 * r2;
4151
+ d5 += h4 * r1;
4152
+ c = d5 >>> 13;
4153
+ d5 &= 8191;
4154
+ d5 += h5 * r0;
4155
+ d5 += h6 * (5 * r9);
4156
+ d5 += h7 * (5 * r8);
4157
+ d5 += h8 * (5 * r7);
4158
+ d5 += h9 * (5 * r6);
4159
+ c += d5 >>> 13;
4160
+ d5 &= 8191;
4161
+ d6 = c;
4162
+ d6 += h0 * r6;
4163
+ d6 += h1 * r5;
4164
+ d6 += h2 * r4;
4165
+ d6 += h3 * r3;
4166
+ d6 += h4 * r2;
4167
+ c = d6 >>> 13;
4168
+ d6 &= 8191;
4169
+ d6 += h5 * r1;
4170
+ d6 += h6 * r0;
4171
+ d6 += h7 * (5 * r9);
4172
+ d6 += h8 * (5 * r8);
4173
+ d6 += h9 * (5 * r7);
4174
+ c += d6 >>> 13;
4175
+ d6 &= 8191;
4176
+ d7 = c;
4177
+ d7 += h0 * r7;
4178
+ d7 += h1 * r6;
4179
+ d7 += h2 * r5;
4180
+ d7 += h3 * r4;
4181
+ d7 += h4 * r3;
4182
+ c = d7 >>> 13;
4183
+ d7 &= 8191;
4184
+ d7 += h5 * r2;
4185
+ d7 += h6 * r1;
4186
+ d7 += h7 * r0;
4187
+ d7 += h8 * (5 * r9);
4188
+ d7 += h9 * (5 * r8);
4189
+ c += d7 >>> 13;
4190
+ d7 &= 8191;
4191
+ d8 = c;
4192
+ d8 += h0 * r8;
4193
+ d8 += h1 * r7;
4194
+ d8 += h2 * r6;
4195
+ d8 += h3 * r5;
4196
+ d8 += h4 * r4;
4197
+ c = d8 >>> 13;
4198
+ d8 &= 8191;
4199
+ d8 += h5 * r3;
4200
+ d8 += h6 * r2;
4201
+ d8 += h7 * r1;
4202
+ d8 += h8 * r0;
4203
+ d8 += h9 * (5 * r9);
4204
+ c += d8 >>> 13;
4205
+ d8 &= 8191;
4206
+ d9 = c;
4207
+ d9 += h0 * r9;
4208
+ d9 += h1 * r8;
4209
+ d9 += h2 * r7;
4210
+ d9 += h3 * r6;
4211
+ d9 += h4 * r5;
4212
+ c = d9 >>> 13;
4213
+ d9 &= 8191;
4214
+ d9 += h5 * r4;
4215
+ d9 += h6 * r3;
4216
+ d9 += h7 * r2;
4217
+ d9 += h8 * r1;
4218
+ d9 += h9 * r0;
4219
+ c += d9 >>> 13;
4220
+ d9 &= 8191;
4221
+ c = (c << 2) + c | 0;
4222
+ c = c + d0 | 0;
4223
+ d0 = c & 8191;
4224
+ c = c >>> 13;
4225
+ d1 += c;
4226
+ h0 = d0;
4227
+ h1 = d1;
4228
+ h2 = d2;
4229
+ h3 = d3;
4230
+ h4 = d4;
4231
+ h5 = d5;
4232
+ h6 = d6;
4233
+ h7 = d7;
4234
+ h8 = d8;
4235
+ h9 = d9;
4236
+ mpos += 16;
4237
+ bytes -= 16;
4238
+ }
4239
+ this.h[0] = h0;
4240
+ this.h[1] = h1;
4241
+ this.h[2] = h2;
4242
+ this.h[3] = h3;
4243
+ this.h[4] = h4;
4244
+ this.h[5] = h5;
4245
+ this.h[6] = h6;
4246
+ this.h[7] = h7;
4247
+ this.h[8] = h8;
4248
+ this.h[9] = h9;
4249
+ };
4250
+ poly1305.prototype.finish = function(mac, macpos) {
4251
+ var g = new Uint16Array(10);
4252
+ var c, mask, f, i;
4253
+ if (this.leftover) {
4254
+ i = this.leftover;
4255
+ this.buffer[i++] = 1;
4256
+ for (; i < 16; i++) this.buffer[i] = 0;
4257
+ this.fin = 1;
4258
+ this.blocks(this.buffer, 0, 16);
4259
+ }
4260
+ c = this.h[1] >>> 13;
4261
+ this.h[1] &= 8191;
4262
+ for (i = 2; i < 10; i++) {
4263
+ this.h[i] += c;
4264
+ c = this.h[i] >>> 13;
4265
+ this.h[i] &= 8191;
4266
+ }
4267
+ this.h[0] += c * 5;
4268
+ c = this.h[0] >>> 13;
4269
+ this.h[0] &= 8191;
4270
+ this.h[1] += c;
4271
+ c = this.h[1] >>> 13;
4272
+ this.h[1] &= 8191;
4273
+ this.h[2] += c;
4274
+ g[0] = this.h[0] + 5;
4275
+ c = g[0] >>> 13;
4276
+ g[0] &= 8191;
4277
+ for (i = 1; i < 10; i++) {
4278
+ g[i] = this.h[i] + c;
4279
+ c = g[i] >>> 13;
4280
+ g[i] &= 8191;
4281
+ }
4282
+ g[9] -= 1 << 13;
4283
+ mask = (c ^ 1) - 1;
4284
+ for (i = 0; i < 10; i++) g[i] &= mask;
4285
+ mask = ~mask;
4286
+ for (i = 0; i < 10; i++) this.h[i] = this.h[i] & mask | g[i];
4287
+ this.h[0] = (this.h[0] | this.h[1] << 13) & 65535;
4288
+ this.h[1] = (this.h[1] >>> 3 | this.h[2] << 10) & 65535;
4289
+ this.h[2] = (this.h[2] >>> 6 | this.h[3] << 7) & 65535;
4290
+ this.h[3] = (this.h[3] >>> 9 | this.h[4] << 4) & 65535;
4291
+ this.h[4] = (this.h[4] >>> 12 | this.h[5] << 1 | this.h[6] << 14) & 65535;
4292
+ this.h[5] = (this.h[6] >>> 2 | this.h[7] << 11) & 65535;
4293
+ this.h[6] = (this.h[7] >>> 5 | this.h[8] << 8) & 65535;
4294
+ this.h[7] = (this.h[8] >>> 8 | this.h[9] << 5) & 65535;
4295
+ f = this.h[0] + this.pad[0];
4296
+ this.h[0] = f & 65535;
4297
+ for (i = 1; i < 8; i++) {
4298
+ f = (this.h[i] + this.pad[i] | 0) + (f >>> 16) | 0;
4299
+ this.h[i] = f & 65535;
4300
+ }
4301
+ mac[macpos + 0] = this.h[0] >>> 0 & 255;
4302
+ mac[macpos + 1] = this.h[0] >>> 8 & 255;
4303
+ mac[macpos + 2] = this.h[1] >>> 0 & 255;
4304
+ mac[macpos + 3] = this.h[1] >>> 8 & 255;
4305
+ mac[macpos + 4] = this.h[2] >>> 0 & 255;
4306
+ mac[macpos + 5] = this.h[2] >>> 8 & 255;
4307
+ mac[macpos + 6] = this.h[3] >>> 0 & 255;
4308
+ mac[macpos + 7] = this.h[3] >>> 8 & 255;
4309
+ mac[macpos + 8] = this.h[4] >>> 0 & 255;
4310
+ mac[macpos + 9] = this.h[4] >>> 8 & 255;
4311
+ mac[macpos + 10] = this.h[5] >>> 0 & 255;
4312
+ mac[macpos + 11] = this.h[5] >>> 8 & 255;
4313
+ mac[macpos + 12] = this.h[6] >>> 0 & 255;
4314
+ mac[macpos + 13] = this.h[6] >>> 8 & 255;
4315
+ mac[macpos + 14] = this.h[7] >>> 0 & 255;
4316
+ mac[macpos + 15] = this.h[7] >>> 8 & 255;
4317
+ };
4318
+ poly1305.prototype.update = function(m, mpos, bytes) {
4319
+ var i, want;
4320
+ if (this.leftover) {
4321
+ want = 16 - this.leftover;
4322
+ if (want > bytes)
4323
+ want = bytes;
4324
+ for (i = 0; i < want; i++)
4325
+ this.buffer[this.leftover + i] = m[mpos + i];
4326
+ bytes -= want;
4327
+ mpos += want;
4328
+ this.leftover += want;
4329
+ if (this.leftover < 16)
4330
+ return;
4331
+ this.blocks(this.buffer, 0, 16);
4332
+ this.leftover = 0;
4333
+ }
4334
+ if (bytes >= 16) {
4335
+ want = bytes - bytes % 16;
4336
+ this.blocks(m, mpos, want);
4337
+ mpos += want;
4338
+ bytes -= want;
4339
+ }
4340
+ if (bytes) {
4341
+ for (i = 0; i < bytes; i++)
4342
+ this.buffer[this.leftover + i] = m[mpos + i];
4343
+ this.leftover += bytes;
4344
+ }
4345
+ };
4346
+ function crypto_onetimeauth(out, outpos, m, mpos, n, k) {
4347
+ var s = new poly1305(k);
4348
+ s.update(m, mpos, n);
4349
+ s.finish(out, outpos);
4350
+ return 0;
4351
+ }
4352
+ function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {
4353
+ var x = new Uint8Array(16);
4354
+ crypto_onetimeauth(x, 0, m, mpos, n, k);
4355
+ return crypto_verify_16(h, hpos, x, 0);
4356
+ }
4357
+ function crypto_secretbox(c, m, d, n, k) {
4358
+ var i;
4359
+ if (d < 32) return -1;
4360
+ crypto_stream_xor(c, 0, m, 0, d, n, k);
4361
+ crypto_onetimeauth(c, 16, c, 32, d - 32, c);
4362
+ for (i = 0; i < 16; i++) c[i] = 0;
4363
+ return 0;
4364
+ }
4365
+ function crypto_secretbox_open(m, c, d, n, k) {
4366
+ var i;
4367
+ var x = new Uint8Array(32);
4368
+ if (d < 32) return -1;
4369
+ crypto_stream(x, 0, 32, n, k);
4370
+ if (crypto_onetimeauth_verify(c, 16, c, 32, d - 32, x) !== 0) return -1;
4371
+ crypto_stream_xor(m, 0, c, 0, d, n, k);
4372
+ for (i = 0; i < 32; i++) m[i] = 0;
4373
+ return 0;
4374
+ }
4375
+ function set25519(r, a) {
4376
+ var i;
4377
+ for (i = 0; i < 16; i++) r[i] = a[i] | 0;
4378
+ }
4379
+ function car25519(o) {
4380
+ var i, v, c = 1;
4381
+ for (i = 0; i < 16; i++) {
4382
+ v = o[i] + c + 65535;
4383
+ c = Math.floor(v / 65536);
4384
+ o[i] = v - c * 65536;
4385
+ }
4386
+ o[0] += c - 1 + 37 * (c - 1);
4387
+ }
4388
+ function sel25519(p2, q, b) {
4389
+ var t, c = ~(b - 1);
4390
+ for (var i = 0; i < 16; i++) {
4391
+ t = c & (p2[i] ^ q[i]);
4392
+ p2[i] ^= t;
4393
+ q[i] ^= t;
4394
+ }
4395
+ }
4396
+ function pack25519(o, n) {
4397
+ var i, j, b;
4398
+ var m = gf(), t = gf();
4399
+ for (i = 0; i < 16; i++) t[i] = n[i];
4400
+ car25519(t);
4401
+ car25519(t);
4402
+ car25519(t);
4403
+ for (j = 0; j < 2; j++) {
4404
+ m[0] = t[0] - 65517;
4405
+ for (i = 1; i < 15; i++) {
4406
+ m[i] = t[i] - 65535 - (m[i - 1] >> 16 & 1);
4407
+ m[i - 1] &= 65535;
4408
+ }
4409
+ m[15] = t[15] - 32767 - (m[14] >> 16 & 1);
4410
+ b = m[15] >> 16 & 1;
4411
+ m[14] &= 65535;
4412
+ sel25519(t, m, 1 - b);
4413
+ }
4414
+ for (i = 0; i < 16; i++) {
4415
+ o[2 * i] = t[i] & 255;
4416
+ o[2 * i + 1] = t[i] >> 8;
4417
+ }
4418
+ }
4419
+ function neq25519(a, b) {
4420
+ var c = new Uint8Array(32), d = new Uint8Array(32);
4421
+ pack25519(c, a);
4422
+ pack25519(d, b);
4423
+ return crypto_verify_32(c, 0, d, 0);
4424
+ }
4425
+ function par25519(a) {
4426
+ var d = new Uint8Array(32);
4427
+ pack25519(d, a);
4428
+ return d[0] & 1;
4429
+ }
4430
+ function unpack25519(o, n) {
4431
+ var i;
4432
+ for (i = 0; i < 16; i++) o[i] = n[2 * i] + (n[2 * i + 1] << 8);
4433
+ o[15] &= 32767;
4434
+ }
4435
+ function A(o, a, b) {
4436
+ for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];
4437
+ }
4438
+ function Z(o, a, b) {
4439
+ for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];
4440
+ }
4441
+ function M(o, a, b) {
4442
+ var v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];
4443
+ v = a[0];
4444
+ t0 += v * b0;
4445
+ t1 += v * b1;
4446
+ t2 += v * b2;
4447
+ t3 += v * b3;
4448
+ t4 += v * b4;
4449
+ t5 += v * b5;
4450
+ t6 += v * b6;
4451
+ t7 += v * b7;
4452
+ t8 += v * b8;
4453
+ t9 += v * b9;
4454
+ t10 += v * b10;
4455
+ t11 += v * b11;
4456
+ t12 += v * b12;
4457
+ t13 += v * b13;
4458
+ t14 += v * b14;
4459
+ t15 += v * b15;
4460
+ v = a[1];
4461
+ t1 += v * b0;
4462
+ t2 += v * b1;
4463
+ t3 += v * b2;
4464
+ t4 += v * b3;
4465
+ t5 += v * b4;
4466
+ t6 += v * b5;
4467
+ t7 += v * b6;
4468
+ t8 += v * b7;
4469
+ t9 += v * b8;
4470
+ t10 += v * b9;
4471
+ t11 += v * b10;
4472
+ t12 += v * b11;
4473
+ t13 += v * b12;
4474
+ t14 += v * b13;
4475
+ t15 += v * b14;
4476
+ t16 += v * b15;
4477
+ v = a[2];
4478
+ t2 += v * b0;
4479
+ t3 += v * b1;
4480
+ t4 += v * b2;
4481
+ t5 += v * b3;
4482
+ t6 += v * b4;
4483
+ t7 += v * b5;
4484
+ t8 += v * b6;
4485
+ t9 += v * b7;
4486
+ t10 += v * b8;
4487
+ t11 += v * b9;
4488
+ t12 += v * b10;
4489
+ t13 += v * b11;
4490
+ t14 += v * b12;
4491
+ t15 += v * b13;
4492
+ t16 += v * b14;
4493
+ t17 += v * b15;
4494
+ v = a[3];
4495
+ t3 += v * b0;
4496
+ t4 += v * b1;
4497
+ t5 += v * b2;
4498
+ t6 += v * b3;
4499
+ t7 += v * b4;
4500
+ t8 += v * b5;
4501
+ t9 += v * b6;
4502
+ t10 += v * b7;
4503
+ t11 += v * b8;
4504
+ t12 += v * b9;
4505
+ t13 += v * b10;
4506
+ t14 += v * b11;
4507
+ t15 += v * b12;
4508
+ t16 += v * b13;
4509
+ t17 += v * b14;
4510
+ t18 += v * b15;
4511
+ v = a[4];
4512
+ t4 += v * b0;
4513
+ t5 += v * b1;
4514
+ t6 += v * b2;
4515
+ t7 += v * b3;
4516
+ t8 += v * b4;
4517
+ t9 += v * b5;
4518
+ t10 += v * b6;
4519
+ t11 += v * b7;
4520
+ t12 += v * b8;
4521
+ t13 += v * b9;
4522
+ t14 += v * b10;
4523
+ t15 += v * b11;
4524
+ t16 += v * b12;
4525
+ t17 += v * b13;
4526
+ t18 += v * b14;
4527
+ t19 += v * b15;
4528
+ v = a[5];
4529
+ t5 += v * b0;
4530
+ t6 += v * b1;
4531
+ t7 += v * b2;
4532
+ t8 += v * b3;
4533
+ t9 += v * b4;
4534
+ t10 += v * b5;
4535
+ t11 += v * b6;
4536
+ t12 += v * b7;
4537
+ t13 += v * b8;
4538
+ t14 += v * b9;
4539
+ t15 += v * b10;
4540
+ t16 += v * b11;
4541
+ t17 += v * b12;
4542
+ t18 += v * b13;
4543
+ t19 += v * b14;
4544
+ t20 += v * b15;
4545
+ v = a[6];
4546
+ t6 += v * b0;
4547
+ t7 += v * b1;
4548
+ t8 += v * b2;
4549
+ t9 += v * b3;
4550
+ t10 += v * b4;
4551
+ t11 += v * b5;
4552
+ t12 += v * b6;
4553
+ t13 += v * b7;
4554
+ t14 += v * b8;
4555
+ t15 += v * b9;
4556
+ t16 += v * b10;
4557
+ t17 += v * b11;
4558
+ t18 += v * b12;
4559
+ t19 += v * b13;
4560
+ t20 += v * b14;
4561
+ t21 += v * b15;
4562
+ v = a[7];
4563
+ t7 += v * b0;
4564
+ t8 += v * b1;
4565
+ t9 += v * b2;
4566
+ t10 += v * b3;
4567
+ t11 += v * b4;
4568
+ t12 += v * b5;
4569
+ t13 += v * b6;
4570
+ t14 += v * b7;
4571
+ t15 += v * b8;
4572
+ t16 += v * b9;
4573
+ t17 += v * b10;
4574
+ t18 += v * b11;
4575
+ t19 += v * b12;
4576
+ t20 += v * b13;
4577
+ t21 += v * b14;
4578
+ t22 += v * b15;
4579
+ v = a[8];
4580
+ t8 += v * b0;
4581
+ t9 += v * b1;
4582
+ t10 += v * b2;
4583
+ t11 += v * b3;
4584
+ t12 += v * b4;
4585
+ t13 += v * b5;
4586
+ t14 += v * b6;
4587
+ t15 += v * b7;
4588
+ t16 += v * b8;
4589
+ t17 += v * b9;
4590
+ t18 += v * b10;
4591
+ t19 += v * b11;
4592
+ t20 += v * b12;
4593
+ t21 += v * b13;
4594
+ t22 += v * b14;
4595
+ t23 += v * b15;
4596
+ v = a[9];
4597
+ t9 += v * b0;
4598
+ t10 += v * b1;
4599
+ t11 += v * b2;
4600
+ t12 += v * b3;
4601
+ t13 += v * b4;
4602
+ t14 += v * b5;
4603
+ t15 += v * b6;
4604
+ t16 += v * b7;
4605
+ t17 += v * b8;
4606
+ t18 += v * b9;
4607
+ t19 += v * b10;
4608
+ t20 += v * b11;
4609
+ t21 += v * b12;
4610
+ t22 += v * b13;
4611
+ t23 += v * b14;
4612
+ t24 += v * b15;
4613
+ v = a[10];
4614
+ t10 += v * b0;
4615
+ t11 += v * b1;
4616
+ t12 += v * b2;
4617
+ t13 += v * b3;
4618
+ t14 += v * b4;
4619
+ t15 += v * b5;
4620
+ t16 += v * b6;
4621
+ t17 += v * b7;
4622
+ t18 += v * b8;
4623
+ t19 += v * b9;
4624
+ t20 += v * b10;
4625
+ t21 += v * b11;
4626
+ t22 += v * b12;
4627
+ t23 += v * b13;
4628
+ t24 += v * b14;
4629
+ t25 += v * b15;
4630
+ v = a[11];
4631
+ t11 += v * b0;
4632
+ t12 += v * b1;
4633
+ t13 += v * b2;
4634
+ t14 += v * b3;
4635
+ t15 += v * b4;
4636
+ t16 += v * b5;
4637
+ t17 += v * b6;
4638
+ t18 += v * b7;
4639
+ t19 += v * b8;
4640
+ t20 += v * b9;
4641
+ t21 += v * b10;
4642
+ t22 += v * b11;
4643
+ t23 += v * b12;
4644
+ t24 += v * b13;
4645
+ t25 += v * b14;
4646
+ t26 += v * b15;
4647
+ v = a[12];
4648
+ t12 += v * b0;
4649
+ t13 += v * b1;
4650
+ t14 += v * b2;
4651
+ t15 += v * b3;
4652
+ t16 += v * b4;
4653
+ t17 += v * b5;
4654
+ t18 += v * b6;
4655
+ t19 += v * b7;
4656
+ t20 += v * b8;
4657
+ t21 += v * b9;
4658
+ t22 += v * b10;
4659
+ t23 += v * b11;
4660
+ t24 += v * b12;
4661
+ t25 += v * b13;
4662
+ t26 += v * b14;
4663
+ t27 += v * b15;
4664
+ v = a[13];
4665
+ t13 += v * b0;
4666
+ t14 += v * b1;
4667
+ t15 += v * b2;
4668
+ t16 += v * b3;
4669
+ t17 += v * b4;
4670
+ t18 += v * b5;
4671
+ t19 += v * b6;
4672
+ t20 += v * b7;
4673
+ t21 += v * b8;
4674
+ t22 += v * b9;
4675
+ t23 += v * b10;
4676
+ t24 += v * b11;
4677
+ t25 += v * b12;
4678
+ t26 += v * b13;
4679
+ t27 += v * b14;
4680
+ t28 += v * b15;
4681
+ v = a[14];
4682
+ t14 += v * b0;
4683
+ t15 += v * b1;
4684
+ t16 += v * b2;
4685
+ t17 += v * b3;
4686
+ t18 += v * b4;
4687
+ t19 += v * b5;
4688
+ t20 += v * b6;
4689
+ t21 += v * b7;
4690
+ t22 += v * b8;
4691
+ t23 += v * b9;
4692
+ t24 += v * b10;
4693
+ t25 += v * b11;
4694
+ t26 += v * b12;
4695
+ t27 += v * b13;
4696
+ t28 += v * b14;
4697
+ t29 += v * b15;
4698
+ v = a[15];
4699
+ t15 += v * b0;
4700
+ t16 += v * b1;
4701
+ t17 += v * b2;
4702
+ t18 += v * b3;
4703
+ t19 += v * b4;
4704
+ t20 += v * b5;
4705
+ t21 += v * b6;
4706
+ t22 += v * b7;
4707
+ t23 += v * b8;
4708
+ t24 += v * b9;
4709
+ t25 += v * b10;
4710
+ t26 += v * b11;
4711
+ t27 += v * b12;
4712
+ t28 += v * b13;
4713
+ t29 += v * b14;
4714
+ t30 += v * b15;
4715
+ t0 += 38 * t16;
4716
+ t1 += 38 * t17;
4717
+ t2 += 38 * t18;
4718
+ t3 += 38 * t19;
4719
+ t4 += 38 * t20;
4720
+ t5 += 38 * t21;
4721
+ t6 += 38 * t22;
4722
+ t7 += 38 * t23;
4723
+ t8 += 38 * t24;
4724
+ t9 += 38 * t25;
4725
+ t10 += 38 * t26;
4726
+ t11 += 38 * t27;
4727
+ t12 += 38 * t28;
4728
+ t13 += 38 * t29;
4729
+ t14 += 38 * t30;
4730
+ c = 1;
4731
+ v = t0 + c + 65535;
4732
+ c = Math.floor(v / 65536);
4733
+ t0 = v - c * 65536;
4734
+ v = t1 + c + 65535;
4735
+ c = Math.floor(v / 65536);
4736
+ t1 = v - c * 65536;
4737
+ v = t2 + c + 65535;
4738
+ c = Math.floor(v / 65536);
4739
+ t2 = v - c * 65536;
4740
+ v = t3 + c + 65535;
4741
+ c = Math.floor(v / 65536);
4742
+ t3 = v - c * 65536;
4743
+ v = t4 + c + 65535;
4744
+ c = Math.floor(v / 65536);
4745
+ t4 = v - c * 65536;
4746
+ v = t5 + c + 65535;
4747
+ c = Math.floor(v / 65536);
4748
+ t5 = v - c * 65536;
4749
+ v = t6 + c + 65535;
4750
+ c = Math.floor(v / 65536);
4751
+ t6 = v - c * 65536;
4752
+ v = t7 + c + 65535;
4753
+ c = Math.floor(v / 65536);
4754
+ t7 = v - c * 65536;
4755
+ v = t8 + c + 65535;
4756
+ c = Math.floor(v / 65536);
4757
+ t8 = v - c * 65536;
4758
+ v = t9 + c + 65535;
4759
+ c = Math.floor(v / 65536);
4760
+ t9 = v - c * 65536;
4761
+ v = t10 + c + 65535;
4762
+ c = Math.floor(v / 65536);
4763
+ t10 = v - c * 65536;
4764
+ v = t11 + c + 65535;
4765
+ c = Math.floor(v / 65536);
4766
+ t11 = v - c * 65536;
4767
+ v = t12 + c + 65535;
4768
+ c = Math.floor(v / 65536);
4769
+ t12 = v - c * 65536;
4770
+ v = t13 + c + 65535;
4771
+ c = Math.floor(v / 65536);
4772
+ t13 = v - c * 65536;
4773
+ v = t14 + c + 65535;
4774
+ c = Math.floor(v / 65536);
4775
+ t14 = v - c * 65536;
4776
+ v = t15 + c + 65535;
4777
+ c = Math.floor(v / 65536);
4778
+ t15 = v - c * 65536;
4779
+ t0 += c - 1 + 37 * (c - 1);
4780
+ c = 1;
4781
+ v = t0 + c + 65535;
4782
+ c = Math.floor(v / 65536);
4783
+ t0 = v - c * 65536;
4784
+ v = t1 + c + 65535;
4785
+ c = Math.floor(v / 65536);
4786
+ t1 = v - c * 65536;
4787
+ v = t2 + c + 65535;
4788
+ c = Math.floor(v / 65536);
4789
+ t2 = v - c * 65536;
4790
+ v = t3 + c + 65535;
4791
+ c = Math.floor(v / 65536);
4792
+ t3 = v - c * 65536;
4793
+ v = t4 + c + 65535;
4794
+ c = Math.floor(v / 65536);
4795
+ t4 = v - c * 65536;
4796
+ v = t5 + c + 65535;
4797
+ c = Math.floor(v / 65536);
4798
+ t5 = v - c * 65536;
4799
+ v = t6 + c + 65535;
4800
+ c = Math.floor(v / 65536);
4801
+ t6 = v - c * 65536;
4802
+ v = t7 + c + 65535;
4803
+ c = Math.floor(v / 65536);
4804
+ t7 = v - c * 65536;
4805
+ v = t8 + c + 65535;
4806
+ c = Math.floor(v / 65536);
4807
+ t8 = v - c * 65536;
4808
+ v = t9 + c + 65535;
4809
+ c = Math.floor(v / 65536);
4810
+ t9 = v - c * 65536;
4811
+ v = t10 + c + 65535;
4812
+ c = Math.floor(v / 65536);
4813
+ t10 = v - c * 65536;
4814
+ v = t11 + c + 65535;
4815
+ c = Math.floor(v / 65536);
4816
+ t11 = v - c * 65536;
4817
+ v = t12 + c + 65535;
4818
+ c = Math.floor(v / 65536);
4819
+ t12 = v - c * 65536;
4820
+ v = t13 + c + 65535;
4821
+ c = Math.floor(v / 65536);
4822
+ t13 = v - c * 65536;
4823
+ v = t14 + c + 65535;
4824
+ c = Math.floor(v / 65536);
4825
+ t14 = v - c * 65536;
4826
+ v = t15 + c + 65535;
4827
+ c = Math.floor(v / 65536);
4828
+ t15 = v - c * 65536;
4829
+ t0 += c - 1 + 37 * (c - 1);
4830
+ o[0] = t0;
4831
+ o[1] = t1;
4832
+ o[2] = t2;
4833
+ o[3] = t3;
4834
+ o[4] = t4;
4835
+ o[5] = t5;
4836
+ o[6] = t6;
4837
+ o[7] = t7;
4838
+ o[8] = t8;
4839
+ o[9] = t9;
4840
+ o[10] = t10;
4841
+ o[11] = t11;
4842
+ o[12] = t12;
4843
+ o[13] = t13;
4844
+ o[14] = t14;
4845
+ o[15] = t15;
4846
+ }
4847
+ function S(o, a) {
4848
+ M(o, a, a);
4849
+ }
4850
+ function inv25519(o, i) {
4851
+ var c = gf();
4852
+ var a;
4853
+ for (a = 0; a < 16; a++) c[a] = i[a];
4854
+ for (a = 253; a >= 0; a--) {
4855
+ S(c, c);
4856
+ if (a !== 2 && a !== 4) M(c, c, i);
4857
+ }
4858
+ for (a = 0; a < 16; a++) o[a] = c[a];
4859
+ }
4860
+ function pow2523(o, i) {
4861
+ var c = gf();
4862
+ var a;
4863
+ for (a = 0; a < 16; a++) c[a] = i[a];
4864
+ for (a = 250; a >= 0; a--) {
4865
+ S(c, c);
4866
+ if (a !== 1) M(c, c, i);
4867
+ }
4868
+ for (a = 0; a < 16; a++) o[a] = c[a];
4869
+ }
4870
+ function crypto_scalarmult(q, n, p2) {
4871
+ var z = new Uint8Array(32);
4872
+ var x = new Float64Array(80), r, i;
4873
+ var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();
4874
+ for (i = 0; i < 31; i++) z[i] = n[i];
4875
+ z[31] = n[31] & 127 | 64;
4876
+ z[0] &= 248;
4877
+ unpack25519(x, p2);
4878
+ for (i = 0; i < 16; i++) {
4879
+ b[i] = x[i];
4880
+ d[i] = a[i] = c[i] = 0;
4881
+ }
4882
+ a[0] = d[0] = 1;
4883
+ for (i = 254; i >= 0; --i) {
4884
+ r = z[i >>> 3] >>> (i & 7) & 1;
4885
+ sel25519(a, b, r);
4886
+ sel25519(c, d, r);
4887
+ A(e, a, c);
4888
+ Z(a, a, c);
4889
+ A(c, b, d);
4890
+ Z(b, b, d);
4891
+ S(d, e);
4892
+ S(f, a);
4893
+ M(a, c, a);
4894
+ M(c, b, e);
4895
+ A(e, a, c);
4896
+ Z(a, a, c);
4897
+ S(b, a);
4898
+ Z(c, d, f);
4899
+ M(a, c, _121665);
4900
+ A(a, a, d);
4901
+ M(c, c, a);
4902
+ M(a, d, f);
4903
+ M(d, b, x);
4904
+ S(b, e);
4905
+ sel25519(a, b, r);
4906
+ sel25519(c, d, r);
4907
+ }
4908
+ for (i = 0; i < 16; i++) {
4909
+ x[i + 16] = a[i];
4910
+ x[i + 32] = c[i];
4911
+ x[i + 48] = b[i];
4912
+ x[i + 64] = d[i];
4913
+ }
4914
+ var x32 = x.subarray(32);
4915
+ var x16 = x.subarray(16);
4916
+ inv25519(x32, x32);
4917
+ M(x16, x16, x32);
4918
+ pack25519(q, x16);
4919
+ return 0;
4920
+ }
4921
+ function crypto_scalarmult_base(q, n) {
4922
+ return crypto_scalarmult(q, n, _9);
4923
+ }
4924
+ function crypto_box_keypair(y, x) {
4925
+ randombytes(x, 32);
4926
+ return crypto_scalarmult_base(y, x);
4927
+ }
4928
+ function crypto_box_beforenm(k, y, x) {
4929
+ var s = new Uint8Array(32);
4930
+ crypto_scalarmult(s, x, y);
4931
+ return crypto_core_hsalsa20(k, _0, s, sigma);
4932
+ }
4933
+ var crypto_box_afternm = crypto_secretbox;
4934
+ var crypto_box_open_afternm = crypto_secretbox_open;
4935
+ function crypto_box(c, m, d, n, y, x) {
4936
+ var k = new Uint8Array(32);
4937
+ crypto_box_beforenm(k, y, x);
4938
+ return crypto_box_afternm(c, m, d, n, k);
4939
+ }
4940
+ function crypto_box_open(m, c, d, n, y, x) {
4941
+ var k = new Uint8Array(32);
4942
+ crypto_box_beforenm(k, y, x);
4943
+ return crypto_box_open_afternm(m, c, d, n, k);
4944
+ }
4945
+ var K = [
4946
+ 1116352408,
4947
+ 3609767458,
4948
+ 1899447441,
4949
+ 602891725,
4950
+ 3049323471,
4951
+ 3964484399,
4952
+ 3921009573,
4953
+ 2173295548,
4954
+ 961987163,
4955
+ 4081628472,
4956
+ 1508970993,
4957
+ 3053834265,
4958
+ 2453635748,
4959
+ 2937671579,
4960
+ 2870763221,
4961
+ 3664609560,
4962
+ 3624381080,
4963
+ 2734883394,
4964
+ 310598401,
4965
+ 1164996542,
4966
+ 607225278,
4967
+ 1323610764,
4968
+ 1426881987,
4969
+ 3590304994,
4970
+ 1925078388,
4971
+ 4068182383,
4972
+ 2162078206,
4973
+ 991336113,
4974
+ 2614888103,
4975
+ 633803317,
4976
+ 3248222580,
4977
+ 3479774868,
4978
+ 3835390401,
4979
+ 2666613458,
4980
+ 4022224774,
4981
+ 944711139,
4982
+ 264347078,
4983
+ 2341262773,
4984
+ 604807628,
4985
+ 2007800933,
4986
+ 770255983,
4987
+ 1495990901,
4988
+ 1249150122,
4989
+ 1856431235,
4990
+ 1555081692,
4991
+ 3175218132,
4992
+ 1996064986,
4993
+ 2198950837,
4994
+ 2554220882,
4995
+ 3999719339,
4996
+ 2821834349,
4997
+ 766784016,
4998
+ 2952996808,
4999
+ 2566594879,
5000
+ 3210313671,
5001
+ 3203337956,
5002
+ 3336571891,
5003
+ 1034457026,
5004
+ 3584528711,
5005
+ 2466948901,
5006
+ 113926993,
5007
+ 3758326383,
5008
+ 338241895,
5009
+ 168717936,
5010
+ 666307205,
5011
+ 1188179964,
5012
+ 773529912,
5013
+ 1546045734,
5014
+ 1294757372,
5015
+ 1522805485,
5016
+ 1396182291,
5017
+ 2643833823,
5018
+ 1695183700,
5019
+ 2343527390,
5020
+ 1986661051,
5021
+ 1014477480,
5022
+ 2177026350,
5023
+ 1206759142,
5024
+ 2456956037,
5025
+ 344077627,
5026
+ 2730485921,
5027
+ 1290863460,
5028
+ 2820302411,
5029
+ 3158454273,
5030
+ 3259730800,
5031
+ 3505952657,
5032
+ 3345764771,
5033
+ 106217008,
5034
+ 3516065817,
5035
+ 3606008344,
5036
+ 3600352804,
5037
+ 1432725776,
5038
+ 4094571909,
5039
+ 1467031594,
5040
+ 275423344,
5041
+ 851169720,
5042
+ 430227734,
5043
+ 3100823752,
5044
+ 506948616,
5045
+ 1363258195,
5046
+ 659060556,
5047
+ 3750685593,
5048
+ 883997877,
5049
+ 3785050280,
5050
+ 958139571,
5051
+ 3318307427,
5052
+ 1322822218,
5053
+ 3812723403,
5054
+ 1537002063,
5055
+ 2003034995,
5056
+ 1747873779,
5057
+ 3602036899,
5058
+ 1955562222,
5059
+ 1575990012,
5060
+ 2024104815,
5061
+ 1125592928,
5062
+ 2227730452,
5063
+ 2716904306,
5064
+ 2361852424,
5065
+ 442776044,
5066
+ 2428436474,
5067
+ 593698344,
5068
+ 2756734187,
5069
+ 3733110249,
5070
+ 3204031479,
5071
+ 2999351573,
5072
+ 3329325298,
5073
+ 3815920427,
5074
+ 3391569614,
5075
+ 3928383900,
5076
+ 3515267271,
5077
+ 566280711,
5078
+ 3940187606,
5079
+ 3454069534,
5080
+ 4118630271,
5081
+ 4000239992,
5082
+ 116418474,
5083
+ 1914138554,
5084
+ 174292421,
5085
+ 2731055270,
5086
+ 289380356,
5087
+ 3203993006,
5088
+ 460393269,
5089
+ 320620315,
5090
+ 685471733,
5091
+ 587496836,
5092
+ 852142971,
5093
+ 1086792851,
5094
+ 1017036298,
5095
+ 365543100,
5096
+ 1126000580,
5097
+ 2618297676,
5098
+ 1288033470,
5099
+ 3409855158,
5100
+ 1501505948,
5101
+ 4234509866,
5102
+ 1607167915,
5103
+ 987167468,
5104
+ 1816402316,
5105
+ 1246189591
5106
+ ];
5107
+ function crypto_hashblocks_hl(hh, hl, m, n) {
5108
+ var wh = new Int32Array(16), wl = new Int32Array(16), bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, th, tl, i, j, h, l, a, b, c, d;
5109
+ var ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7];
5110
+ var pos = 0;
5111
+ while (n >= 128) {
5112
+ for (i = 0; i < 16; i++) {
5113
+ j = 8 * i + pos;
5114
+ wh[i] = m[j + 0] << 24 | m[j + 1] << 16 | m[j + 2] << 8 | m[j + 3];
5115
+ wl[i] = m[j + 4] << 24 | m[j + 5] << 16 | m[j + 6] << 8 | m[j + 7];
5116
+ }
5117
+ for (i = 0; i < 80; i++) {
5118
+ bh0 = ah0;
5119
+ bh1 = ah1;
5120
+ bh2 = ah2;
5121
+ bh3 = ah3;
5122
+ bh4 = ah4;
5123
+ bh5 = ah5;
5124
+ bh6 = ah6;
5125
+ bh7 = ah7;
5126
+ bl0 = al0;
5127
+ bl1 = al1;
5128
+ bl2 = al2;
5129
+ bl3 = al3;
5130
+ bl4 = al4;
5131
+ bl5 = al5;
5132
+ bl6 = al6;
5133
+ bl7 = al7;
5134
+ h = ah7;
5135
+ l = al7;
5136
+ a = l & 65535;
5137
+ b = l >>> 16;
5138
+ c = h & 65535;
5139
+ d = h >>> 16;
5140
+ h = (ah4 >>> 14 | al4 << 32 - 14) ^ (ah4 >>> 18 | al4 << 32 - 18) ^ (al4 >>> 41 - 32 | ah4 << 32 - (41 - 32));
5141
+ l = (al4 >>> 14 | ah4 << 32 - 14) ^ (al4 >>> 18 | ah4 << 32 - 18) ^ (ah4 >>> 41 - 32 | al4 << 32 - (41 - 32));
5142
+ a += l & 65535;
5143
+ b += l >>> 16;
5144
+ c += h & 65535;
5145
+ d += h >>> 16;
5146
+ h = ah4 & ah5 ^ ~ah4 & ah6;
5147
+ l = al4 & al5 ^ ~al4 & al6;
5148
+ a += l & 65535;
5149
+ b += l >>> 16;
5150
+ c += h & 65535;
5151
+ d += h >>> 16;
5152
+ h = K[i * 2];
5153
+ l = K[i * 2 + 1];
5154
+ a += l & 65535;
5155
+ b += l >>> 16;
5156
+ c += h & 65535;
5157
+ d += h >>> 16;
5158
+ h = wh[i % 16];
5159
+ l = wl[i % 16];
5160
+ a += l & 65535;
5161
+ b += l >>> 16;
5162
+ c += h & 65535;
5163
+ d += h >>> 16;
5164
+ b += a >>> 16;
5165
+ c += b >>> 16;
5166
+ d += c >>> 16;
5167
+ th = c & 65535 | d << 16;
5168
+ tl = a & 65535 | b << 16;
5169
+ h = th;
5170
+ l = tl;
5171
+ a = l & 65535;
5172
+ b = l >>> 16;
5173
+ c = h & 65535;
5174
+ d = h >>> 16;
5175
+ h = (ah0 >>> 28 | al0 << 32 - 28) ^ (al0 >>> 34 - 32 | ah0 << 32 - (34 - 32)) ^ (al0 >>> 39 - 32 | ah0 << 32 - (39 - 32));
5176
+ l = (al0 >>> 28 | ah0 << 32 - 28) ^ (ah0 >>> 34 - 32 | al0 << 32 - (34 - 32)) ^ (ah0 >>> 39 - 32 | al0 << 32 - (39 - 32));
5177
+ a += l & 65535;
5178
+ b += l >>> 16;
5179
+ c += h & 65535;
5180
+ d += h >>> 16;
5181
+ h = ah0 & ah1 ^ ah0 & ah2 ^ ah1 & ah2;
5182
+ l = al0 & al1 ^ al0 & al2 ^ al1 & al2;
5183
+ a += l & 65535;
5184
+ b += l >>> 16;
5185
+ c += h & 65535;
5186
+ d += h >>> 16;
5187
+ b += a >>> 16;
5188
+ c += b >>> 16;
5189
+ d += c >>> 16;
5190
+ bh7 = c & 65535 | d << 16;
5191
+ bl7 = a & 65535 | b << 16;
5192
+ h = bh3;
5193
+ l = bl3;
5194
+ a = l & 65535;
5195
+ b = l >>> 16;
5196
+ c = h & 65535;
5197
+ d = h >>> 16;
5198
+ h = th;
5199
+ l = tl;
5200
+ a += l & 65535;
5201
+ b += l >>> 16;
5202
+ c += h & 65535;
5203
+ d += h >>> 16;
5204
+ b += a >>> 16;
5205
+ c += b >>> 16;
5206
+ d += c >>> 16;
5207
+ bh3 = c & 65535 | d << 16;
5208
+ bl3 = a & 65535 | b << 16;
5209
+ ah1 = bh0;
5210
+ ah2 = bh1;
5211
+ ah3 = bh2;
5212
+ ah4 = bh3;
5213
+ ah5 = bh4;
5214
+ ah6 = bh5;
5215
+ ah7 = bh6;
5216
+ ah0 = bh7;
5217
+ al1 = bl0;
5218
+ al2 = bl1;
5219
+ al3 = bl2;
5220
+ al4 = bl3;
5221
+ al5 = bl4;
5222
+ al6 = bl5;
5223
+ al7 = bl6;
5224
+ al0 = bl7;
5225
+ if (i % 16 === 15) {
5226
+ for (j = 0; j < 16; j++) {
5227
+ h = wh[j];
5228
+ l = wl[j];
5229
+ a = l & 65535;
5230
+ b = l >>> 16;
5231
+ c = h & 65535;
5232
+ d = h >>> 16;
5233
+ h = wh[(j + 9) % 16];
5234
+ l = wl[(j + 9) % 16];
5235
+ a += l & 65535;
5236
+ b += l >>> 16;
5237
+ c += h & 65535;
5238
+ d += h >>> 16;
5239
+ th = wh[(j + 1) % 16];
5240
+ tl = wl[(j + 1) % 16];
5241
+ h = (th >>> 1 | tl << 32 - 1) ^ (th >>> 8 | tl << 32 - 8) ^ th >>> 7;
5242
+ l = (tl >>> 1 | th << 32 - 1) ^ (tl >>> 8 | th << 32 - 8) ^ (tl >>> 7 | th << 32 - 7);
5243
+ a += l & 65535;
5244
+ b += l >>> 16;
5245
+ c += h & 65535;
5246
+ d += h >>> 16;
5247
+ th = wh[(j + 14) % 16];
5248
+ tl = wl[(j + 14) % 16];
5249
+ h = (th >>> 19 | tl << 32 - 19) ^ (tl >>> 61 - 32 | th << 32 - (61 - 32)) ^ th >>> 6;
5250
+ l = (tl >>> 19 | th << 32 - 19) ^ (th >>> 61 - 32 | tl << 32 - (61 - 32)) ^ (tl >>> 6 | th << 32 - 6);
5251
+ a += l & 65535;
5252
+ b += l >>> 16;
5253
+ c += h & 65535;
5254
+ d += h >>> 16;
5255
+ b += a >>> 16;
5256
+ c += b >>> 16;
5257
+ d += c >>> 16;
5258
+ wh[j] = c & 65535 | d << 16;
5259
+ wl[j] = a & 65535 | b << 16;
5260
+ }
5261
+ }
5262
+ }
5263
+ h = ah0;
5264
+ l = al0;
5265
+ a = l & 65535;
5266
+ b = l >>> 16;
5267
+ c = h & 65535;
5268
+ d = h >>> 16;
5269
+ h = hh[0];
5270
+ l = hl[0];
5271
+ a += l & 65535;
5272
+ b += l >>> 16;
5273
+ c += h & 65535;
5274
+ d += h >>> 16;
5275
+ b += a >>> 16;
5276
+ c += b >>> 16;
5277
+ d += c >>> 16;
5278
+ hh[0] = ah0 = c & 65535 | d << 16;
5279
+ hl[0] = al0 = a & 65535 | b << 16;
5280
+ h = ah1;
5281
+ l = al1;
5282
+ a = l & 65535;
5283
+ b = l >>> 16;
5284
+ c = h & 65535;
5285
+ d = h >>> 16;
5286
+ h = hh[1];
5287
+ l = hl[1];
5288
+ a += l & 65535;
5289
+ b += l >>> 16;
5290
+ c += h & 65535;
5291
+ d += h >>> 16;
5292
+ b += a >>> 16;
5293
+ c += b >>> 16;
5294
+ d += c >>> 16;
5295
+ hh[1] = ah1 = c & 65535 | d << 16;
5296
+ hl[1] = al1 = a & 65535 | b << 16;
5297
+ h = ah2;
5298
+ l = al2;
5299
+ a = l & 65535;
5300
+ b = l >>> 16;
5301
+ c = h & 65535;
5302
+ d = h >>> 16;
5303
+ h = hh[2];
5304
+ l = hl[2];
5305
+ a += l & 65535;
5306
+ b += l >>> 16;
5307
+ c += h & 65535;
5308
+ d += h >>> 16;
5309
+ b += a >>> 16;
5310
+ c += b >>> 16;
5311
+ d += c >>> 16;
5312
+ hh[2] = ah2 = c & 65535 | d << 16;
5313
+ hl[2] = al2 = a & 65535 | b << 16;
5314
+ h = ah3;
5315
+ l = al3;
5316
+ a = l & 65535;
5317
+ b = l >>> 16;
5318
+ c = h & 65535;
5319
+ d = h >>> 16;
5320
+ h = hh[3];
5321
+ l = hl[3];
5322
+ a += l & 65535;
5323
+ b += l >>> 16;
5324
+ c += h & 65535;
5325
+ d += h >>> 16;
5326
+ b += a >>> 16;
5327
+ c += b >>> 16;
5328
+ d += c >>> 16;
5329
+ hh[3] = ah3 = c & 65535 | d << 16;
5330
+ hl[3] = al3 = a & 65535 | b << 16;
5331
+ h = ah4;
5332
+ l = al4;
5333
+ a = l & 65535;
5334
+ b = l >>> 16;
5335
+ c = h & 65535;
5336
+ d = h >>> 16;
5337
+ h = hh[4];
5338
+ l = hl[4];
5339
+ a += l & 65535;
5340
+ b += l >>> 16;
5341
+ c += h & 65535;
5342
+ d += h >>> 16;
5343
+ b += a >>> 16;
5344
+ c += b >>> 16;
5345
+ d += c >>> 16;
5346
+ hh[4] = ah4 = c & 65535 | d << 16;
5347
+ hl[4] = al4 = a & 65535 | b << 16;
5348
+ h = ah5;
5349
+ l = al5;
5350
+ a = l & 65535;
5351
+ b = l >>> 16;
5352
+ c = h & 65535;
5353
+ d = h >>> 16;
5354
+ h = hh[5];
5355
+ l = hl[5];
5356
+ a += l & 65535;
5357
+ b += l >>> 16;
5358
+ c += h & 65535;
5359
+ d += h >>> 16;
5360
+ b += a >>> 16;
5361
+ c += b >>> 16;
5362
+ d += c >>> 16;
5363
+ hh[5] = ah5 = c & 65535 | d << 16;
5364
+ hl[5] = al5 = a & 65535 | b << 16;
5365
+ h = ah6;
5366
+ l = al6;
5367
+ a = l & 65535;
5368
+ b = l >>> 16;
5369
+ c = h & 65535;
5370
+ d = h >>> 16;
5371
+ h = hh[6];
5372
+ l = hl[6];
5373
+ a += l & 65535;
5374
+ b += l >>> 16;
5375
+ c += h & 65535;
5376
+ d += h >>> 16;
5377
+ b += a >>> 16;
5378
+ c += b >>> 16;
5379
+ d += c >>> 16;
5380
+ hh[6] = ah6 = c & 65535 | d << 16;
5381
+ hl[6] = al6 = a & 65535 | b << 16;
5382
+ h = ah7;
5383
+ l = al7;
5384
+ a = l & 65535;
5385
+ b = l >>> 16;
5386
+ c = h & 65535;
5387
+ d = h >>> 16;
5388
+ h = hh[7];
5389
+ l = hl[7];
5390
+ a += l & 65535;
5391
+ b += l >>> 16;
5392
+ c += h & 65535;
5393
+ d += h >>> 16;
5394
+ b += a >>> 16;
5395
+ c += b >>> 16;
5396
+ d += c >>> 16;
5397
+ hh[7] = ah7 = c & 65535 | d << 16;
5398
+ hl[7] = al7 = a & 65535 | b << 16;
5399
+ pos += 128;
5400
+ n -= 128;
5401
+ }
5402
+ return n;
5403
+ }
5404
+ function crypto_hash(out, m, n) {
5405
+ var hh = new Int32Array(8), hl = new Int32Array(8), x = new Uint8Array(256), i, b = n;
5406
+ hh[0] = 1779033703;
5407
+ hh[1] = 3144134277;
5408
+ hh[2] = 1013904242;
5409
+ hh[3] = 2773480762;
5410
+ hh[4] = 1359893119;
5411
+ hh[5] = 2600822924;
5412
+ hh[6] = 528734635;
5413
+ hh[7] = 1541459225;
5414
+ hl[0] = 4089235720;
5415
+ hl[1] = 2227873595;
5416
+ hl[2] = 4271175723;
5417
+ hl[3] = 1595750129;
5418
+ hl[4] = 2917565137;
5419
+ hl[5] = 725511199;
5420
+ hl[6] = 4215389547;
5421
+ hl[7] = 327033209;
5422
+ crypto_hashblocks_hl(hh, hl, m, n);
5423
+ n %= 128;
5424
+ for (i = 0; i < n; i++) x[i] = m[b - n + i];
5425
+ x[n] = 128;
5426
+ n = 256 - 128 * (n < 112 ? 1 : 0);
5427
+ x[n - 9] = 0;
5428
+ ts64(x, n - 8, b / 536870912 | 0, b << 3);
5429
+ crypto_hashblocks_hl(hh, hl, x, n);
5430
+ for (i = 0; i < 8; i++) ts64(out, 8 * i, hh[i], hl[i]);
5431
+ return 0;
5432
+ }
5433
+ function add(p2, q) {
5434
+ var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf();
5435
+ Z(a, p2[1], p2[0]);
5436
+ Z(t, q[1], q[0]);
5437
+ M(a, a, t);
5438
+ A(b, p2[0], p2[1]);
5439
+ A(t, q[0], q[1]);
5440
+ M(b, b, t);
5441
+ M(c, p2[3], q[3]);
5442
+ M(c, c, D2);
5443
+ M(d, p2[2], q[2]);
5444
+ A(d, d, d);
5445
+ Z(e, b, a);
5446
+ Z(f, d, c);
5447
+ A(g, d, c);
5448
+ A(h, b, a);
5449
+ M(p2[0], e, f);
5450
+ M(p2[1], h, g);
5451
+ M(p2[2], g, f);
5452
+ M(p2[3], e, h);
5453
+ }
5454
+ function cswap(p2, q, b) {
5455
+ var i;
5456
+ for (i = 0; i < 4; i++) {
5457
+ sel25519(p2[i], q[i], b);
5458
+ }
5459
+ }
5460
+ function pack(r, p2) {
5461
+ var tx = gf(), ty = gf(), zi = gf();
5462
+ inv25519(zi, p2[2]);
5463
+ M(tx, p2[0], zi);
5464
+ M(ty, p2[1], zi);
5465
+ pack25519(r, ty);
5466
+ r[31] ^= par25519(tx) << 7;
5467
+ }
5468
+ function scalarmult(p2, q, s) {
5469
+ var b, i;
5470
+ set25519(p2[0], gf0);
5471
+ set25519(p2[1], gf1);
5472
+ set25519(p2[2], gf1);
5473
+ set25519(p2[3], gf0);
5474
+ for (i = 255; i >= 0; --i) {
5475
+ b = s[i / 8 | 0] >> (i & 7) & 1;
5476
+ cswap(p2, q, b);
5477
+ add(q, p2);
5478
+ add(p2, p2);
5479
+ cswap(p2, q, b);
5480
+ }
5481
+ }
5482
+ function scalarbase(p2, s) {
5483
+ var q = [gf(), gf(), gf(), gf()];
5484
+ set25519(q[0], X);
5485
+ set25519(q[1], Y);
5486
+ set25519(q[2], gf1);
5487
+ M(q[3], X, Y);
5488
+ scalarmult(p2, q, s);
5489
+ }
5490
+ function crypto_sign_keypair(pk, sk, seeded) {
5491
+ var d = new Uint8Array(64);
5492
+ var p2 = [gf(), gf(), gf(), gf()];
5493
+ var i;
5494
+ if (!seeded) randombytes(sk, 32);
5495
+ crypto_hash(d, sk, 32);
5496
+ d[0] &= 248;
5497
+ d[31] &= 127;
5498
+ d[31] |= 64;
5499
+ scalarbase(p2, d);
5500
+ pack(pk, p2);
5501
+ for (i = 0; i < 32; i++) sk[i + 32] = pk[i];
5502
+ return 0;
5503
+ }
5504
+ var L = 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]);
5505
+ function modL(r, x) {
5506
+ var carry, i, j, k;
5507
+ for (i = 63; i >= 32; --i) {
5508
+ carry = 0;
5509
+ for (j = i - 32, k = i - 12; j < k; ++j) {
5510
+ x[j] += carry - 16 * x[i] * L[j - (i - 32)];
5511
+ carry = Math.floor((x[j] + 128) / 256);
5512
+ x[j] -= carry * 256;
5513
+ }
5514
+ x[j] += carry;
5515
+ x[i] = 0;
5516
+ }
5517
+ carry = 0;
5518
+ for (j = 0; j < 32; j++) {
5519
+ x[j] += carry - (x[31] >> 4) * L[j];
5520
+ carry = x[j] >> 8;
5521
+ x[j] &= 255;
5522
+ }
5523
+ for (j = 0; j < 32; j++) x[j] -= carry * L[j];
5524
+ for (i = 0; i < 32; i++) {
5525
+ x[i + 1] += x[i] >> 8;
5526
+ r[i] = x[i] & 255;
5527
+ }
5528
+ }
5529
+ function reduce(r) {
5530
+ var x = new Float64Array(64), i;
5531
+ for (i = 0; i < 64; i++) x[i] = r[i];
5532
+ for (i = 0; i < 64; i++) r[i] = 0;
5533
+ modL(r, x);
5534
+ }
5535
+ function crypto_sign(sm, m, n, sk) {
5536
+ var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);
5537
+ var i, j, x = new Float64Array(64);
5538
+ var p2 = [gf(), gf(), gf(), gf()];
5539
+ crypto_hash(d, sk, 32);
5540
+ d[0] &= 248;
5541
+ d[31] &= 127;
5542
+ d[31] |= 64;
5543
+ var smlen = n + 64;
5544
+ for (i = 0; i < n; i++) sm[64 + i] = m[i];
5545
+ for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];
5546
+ crypto_hash(r, sm.subarray(32), n + 32);
5547
+ reduce(r);
5548
+ scalarbase(p2, r);
5549
+ pack(sm, p2);
5550
+ for (i = 32; i < 64; i++) sm[i] = sk[i];
5551
+ crypto_hash(h, sm, n + 64);
5552
+ reduce(h);
5553
+ for (i = 0; i < 64; i++) x[i] = 0;
5554
+ for (i = 0; i < 32; i++) x[i] = r[i];
5555
+ for (i = 0; i < 32; i++) {
5556
+ for (j = 0; j < 32; j++) {
5557
+ x[i + j] += h[i] * d[j];
5558
+ }
5559
+ }
5560
+ modL(sm.subarray(32), x);
5561
+ return smlen;
5562
+ }
5563
+ function unpackneg(r, p2) {
5564
+ var t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();
5565
+ set25519(r[2], gf1);
5566
+ unpack25519(r[1], p2);
5567
+ S(num, r[1]);
5568
+ M(den, num, D);
5569
+ Z(num, num, r[2]);
5570
+ A(den, r[2], den);
5571
+ S(den2, den);
5572
+ S(den4, den2);
5573
+ M(den6, den4, den2);
5574
+ M(t, den6, num);
5575
+ M(t, t, den);
5576
+ pow2523(t, t);
5577
+ M(t, t, num);
5578
+ M(t, t, den);
5579
+ M(t, t, den);
5580
+ M(r[0], t, den);
5581
+ S(chk, r[0]);
5582
+ M(chk, chk, den);
5583
+ if (neq25519(chk, num)) M(r[0], r[0], I);
5584
+ S(chk, r[0]);
5585
+ M(chk, chk, den);
5586
+ if (neq25519(chk, num)) return -1;
5587
+ if (par25519(r[0]) === p2[31] >> 7) Z(r[0], gf0, r[0]);
5588
+ M(r[3], r[0], r[1]);
5589
+ return 0;
5590
+ }
5591
+ function crypto_sign_open(m, sm, n, pk) {
5592
+ var i;
5593
+ var t = new Uint8Array(32), h = new Uint8Array(64);
5594
+ var p2 = [gf(), gf(), gf(), gf()], q = [gf(), gf(), gf(), gf()];
5595
+ if (n < 64) return -1;
5596
+ if (unpackneg(q, pk)) return -1;
5597
+ for (i = 0; i < n; i++) m[i] = sm[i];
5598
+ for (i = 0; i < 32; i++) m[i + 32] = pk[i];
5599
+ crypto_hash(h, m, n);
5600
+ reduce(h);
5601
+ scalarmult(p2, q, h);
5602
+ scalarbase(q, sm.subarray(32));
5603
+ add(p2, q);
5604
+ pack(t, p2);
5605
+ n -= 64;
5606
+ if (crypto_verify_32(sm, 0, t, 0)) {
5607
+ for (i = 0; i < n; i++) m[i] = 0;
5608
+ return -1;
5609
+ }
5610
+ for (i = 0; i < n; i++) m[i] = sm[i + 64];
5611
+ return n;
5612
+ }
5613
+ var crypto_secretbox_KEYBYTES = 32, crypto_secretbox_NONCEBYTES = 24, crypto_secretbox_ZEROBYTES = 32, crypto_secretbox_BOXZEROBYTES = 16, crypto_scalarmult_BYTES = 32, crypto_scalarmult_SCALARBYTES = 32, crypto_box_PUBLICKEYBYTES = 32, crypto_box_SECRETKEYBYTES = 32, crypto_box_BEFORENMBYTES = 32, crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, crypto_sign_BYTES = 64, crypto_sign_PUBLICKEYBYTES = 32, crypto_sign_SECRETKEYBYTES = 64, crypto_sign_SEEDBYTES = 32, crypto_hash_BYTES = 64;
5614
+ nacl2.lowlevel = {
5615
+ crypto_core_hsalsa20,
5616
+ crypto_stream_xor,
5617
+ crypto_stream,
5618
+ crypto_stream_salsa20_xor,
5619
+ crypto_stream_salsa20,
5620
+ crypto_onetimeauth,
5621
+ crypto_onetimeauth_verify,
5622
+ crypto_verify_16,
5623
+ crypto_verify_32,
5624
+ crypto_secretbox,
5625
+ crypto_secretbox_open,
5626
+ crypto_scalarmult,
5627
+ crypto_scalarmult_base,
5628
+ crypto_box_beforenm,
5629
+ crypto_box_afternm,
5630
+ crypto_box,
5631
+ crypto_box_open,
5632
+ crypto_box_keypair,
5633
+ crypto_hash,
5634
+ crypto_sign,
5635
+ crypto_sign_keypair,
5636
+ crypto_sign_open,
5637
+ crypto_secretbox_KEYBYTES,
5638
+ crypto_secretbox_NONCEBYTES,
5639
+ crypto_secretbox_ZEROBYTES,
5640
+ crypto_secretbox_BOXZEROBYTES,
5641
+ crypto_scalarmult_BYTES,
5642
+ crypto_scalarmult_SCALARBYTES,
5643
+ crypto_box_PUBLICKEYBYTES,
5644
+ crypto_box_SECRETKEYBYTES,
5645
+ crypto_box_BEFORENMBYTES,
5646
+ crypto_box_NONCEBYTES,
5647
+ crypto_box_ZEROBYTES,
5648
+ crypto_box_BOXZEROBYTES,
5649
+ crypto_sign_BYTES,
5650
+ crypto_sign_PUBLICKEYBYTES,
5651
+ crypto_sign_SECRETKEYBYTES,
5652
+ crypto_sign_SEEDBYTES,
5653
+ crypto_hash_BYTES,
5654
+ gf,
5655
+ D,
5656
+ L,
5657
+ pack25519,
5658
+ unpack25519,
5659
+ M,
5660
+ A,
5661
+ S,
5662
+ Z,
5663
+ pow2523,
5664
+ add,
5665
+ set25519,
5666
+ modL,
5667
+ scalarmult,
5668
+ scalarbase
5669
+ };
5670
+ function checkLengths(k, n) {
5671
+ if (k.length !== crypto_secretbox_KEYBYTES) throw new Error("bad key size");
5672
+ if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error("bad nonce size");
5673
+ }
5674
+ function checkBoxLengths(pk, sk) {
5675
+ if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error("bad public key size");
5676
+ if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error("bad secret key size");
5677
+ }
5678
+ function checkArrayTypes() {
5679
+ for (var i = 0; i < arguments.length; i++) {
5680
+ if (!(arguments[i] instanceof Uint8Array))
5681
+ throw new TypeError("unexpected type, use Uint8Array");
5682
+ }
5683
+ }
5684
+ function cleanup(arr) {
5685
+ for (var i = 0; i < arr.length; i++) arr[i] = 0;
5686
+ }
5687
+ nacl2.randomBytes = function(n) {
5688
+ var b = new Uint8Array(n);
5689
+ randombytes(b, n);
5690
+ return b;
5691
+ };
5692
+ nacl2.secretbox = function(msg, nonce, key) {
5693
+ checkArrayTypes(msg, nonce, key);
5694
+ checkLengths(key, nonce);
5695
+ var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);
5696
+ var c = new Uint8Array(m.length);
5697
+ for (var i = 0; i < msg.length; i++) m[i + crypto_secretbox_ZEROBYTES] = msg[i];
5698
+ crypto_secretbox(c, m, m.length, nonce, key);
5699
+ return c.subarray(crypto_secretbox_BOXZEROBYTES);
5700
+ };
5701
+ nacl2.secretbox.open = function(box, nonce, key) {
5702
+ checkArrayTypes(box, nonce, key);
5703
+ checkLengths(key, nonce);
5704
+ var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);
5705
+ var m = new Uint8Array(c.length);
5706
+ for (var i = 0; i < box.length; i++) c[i + crypto_secretbox_BOXZEROBYTES] = box[i];
5707
+ if (c.length < 32) return null;
5708
+ if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;
5709
+ return m.subarray(crypto_secretbox_ZEROBYTES);
5710
+ };
5711
+ nacl2.secretbox.keyLength = crypto_secretbox_KEYBYTES;
5712
+ nacl2.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;
5713
+ nacl2.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;
5714
+ nacl2.scalarMult = function(n, p2) {
5715
+ checkArrayTypes(n, p2);
5716
+ if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error("bad n size");
5717
+ if (p2.length !== crypto_scalarmult_BYTES) throw new Error("bad p size");
5718
+ var q = new Uint8Array(crypto_scalarmult_BYTES);
5719
+ crypto_scalarmult(q, n, p2);
5720
+ return q;
5721
+ };
5722
+ nacl2.scalarMult.base = function(n) {
5723
+ checkArrayTypes(n);
5724
+ if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error("bad n size");
5725
+ var q = new Uint8Array(crypto_scalarmult_BYTES);
5726
+ crypto_scalarmult_base(q, n);
5727
+ return q;
5728
+ };
5729
+ nacl2.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;
5730
+ nacl2.scalarMult.groupElementLength = crypto_scalarmult_BYTES;
5731
+ nacl2.box = function(msg, nonce, publicKey, secretKey) {
5732
+ var k = nacl2.box.before(publicKey, secretKey);
5733
+ return nacl2.secretbox(msg, nonce, k);
5734
+ };
5735
+ nacl2.box.before = function(publicKey, secretKey) {
5736
+ checkArrayTypes(publicKey, secretKey);
5737
+ checkBoxLengths(publicKey, secretKey);
5738
+ var k = new Uint8Array(crypto_box_BEFORENMBYTES);
5739
+ crypto_box_beforenm(k, publicKey, secretKey);
5740
+ return k;
5741
+ };
5742
+ nacl2.box.after = nacl2.secretbox;
5743
+ nacl2.box.open = function(msg, nonce, publicKey, secretKey) {
5744
+ var k = nacl2.box.before(publicKey, secretKey);
5745
+ return nacl2.secretbox.open(msg, nonce, k);
5746
+ };
5747
+ nacl2.box.open.after = nacl2.secretbox.open;
5748
+ nacl2.box.keyPair = function() {
5749
+ var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);
5750
+ var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);
5751
+ crypto_box_keypair(pk, sk);
5752
+ return { publicKey: pk, secretKey: sk };
5753
+ };
5754
+ nacl2.box.keyPair.fromSecretKey = function(secretKey) {
5755
+ checkArrayTypes(secretKey);
5756
+ if (secretKey.length !== crypto_box_SECRETKEYBYTES)
5757
+ throw new Error("bad secret key size");
5758
+ var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);
5759
+ crypto_scalarmult_base(pk, secretKey);
5760
+ return { publicKey: pk, secretKey: new Uint8Array(secretKey) };
5761
+ };
5762
+ nacl2.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;
5763
+ nacl2.box.secretKeyLength = crypto_box_SECRETKEYBYTES;
5764
+ nacl2.box.sharedKeyLength = crypto_box_BEFORENMBYTES;
5765
+ nacl2.box.nonceLength = crypto_box_NONCEBYTES;
5766
+ nacl2.box.overheadLength = nacl2.secretbox.overheadLength;
5767
+ nacl2.sign = function(msg, secretKey) {
5768
+ checkArrayTypes(msg, secretKey);
5769
+ if (secretKey.length !== crypto_sign_SECRETKEYBYTES)
5770
+ throw new Error("bad secret key size");
5771
+ var signedMsg = new Uint8Array(crypto_sign_BYTES + msg.length);
5772
+ crypto_sign(signedMsg, msg, msg.length, secretKey);
5773
+ return signedMsg;
5774
+ };
5775
+ nacl2.sign.open = function(signedMsg, publicKey) {
5776
+ checkArrayTypes(signedMsg, publicKey);
5777
+ if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)
5778
+ throw new Error("bad public key size");
5779
+ var tmp = new Uint8Array(signedMsg.length);
5780
+ var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);
5781
+ if (mlen < 0) return null;
5782
+ var m = new Uint8Array(mlen);
5783
+ for (var i = 0; i < m.length; i++) m[i] = tmp[i];
5784
+ return m;
5785
+ };
5786
+ nacl2.sign.detached = function(msg, secretKey) {
5787
+ var signedMsg = nacl2.sign(msg, secretKey);
5788
+ var sig = new Uint8Array(crypto_sign_BYTES);
5789
+ for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];
5790
+ return sig;
5791
+ };
5792
+ nacl2.sign.detached.verify = function(msg, sig, publicKey) {
5793
+ checkArrayTypes(msg, sig, publicKey);
5794
+ if (sig.length !== crypto_sign_BYTES)
5795
+ throw new Error("bad signature size");
5796
+ if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)
5797
+ throw new Error("bad public key size");
5798
+ var sm = new Uint8Array(crypto_sign_BYTES + msg.length);
5799
+ var m = new Uint8Array(crypto_sign_BYTES + msg.length);
5800
+ var i;
5801
+ for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];
5802
+ for (i = 0; i < msg.length; i++) sm[i + crypto_sign_BYTES] = msg[i];
5803
+ return crypto_sign_open(m, sm, sm.length, publicKey) >= 0;
5804
+ };
5805
+ nacl2.sign.keyPair = function() {
5806
+ var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);
5807
+ var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);
5808
+ crypto_sign_keypair(pk, sk);
5809
+ return { publicKey: pk, secretKey: sk };
5810
+ };
5811
+ nacl2.sign.keyPair.fromSecretKey = function(secretKey) {
5812
+ checkArrayTypes(secretKey);
5813
+ if (secretKey.length !== crypto_sign_SECRETKEYBYTES)
5814
+ throw new Error("bad secret key size");
5815
+ var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);
5816
+ for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32 + i];
5817
+ return { publicKey: pk, secretKey: new Uint8Array(secretKey) };
5818
+ };
5819
+ nacl2.sign.keyPair.fromSeed = function(seed) {
5820
+ checkArrayTypes(seed);
5821
+ if (seed.length !== crypto_sign_SEEDBYTES)
5822
+ throw new Error("bad seed size");
5823
+ var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);
5824
+ var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);
5825
+ for (var i = 0; i < 32; i++) sk[i] = seed[i];
5826
+ crypto_sign_keypair(pk, sk, true);
5827
+ return { publicKey: pk, secretKey: sk };
5828
+ };
5829
+ nacl2.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;
5830
+ nacl2.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;
5831
+ nacl2.sign.seedLength = crypto_sign_SEEDBYTES;
5832
+ nacl2.sign.signatureLength = crypto_sign_BYTES;
5833
+ nacl2.hash = function(msg) {
5834
+ checkArrayTypes(msg);
5835
+ var h = new Uint8Array(crypto_hash_BYTES);
5836
+ crypto_hash(h, msg, msg.length);
5837
+ return h;
5838
+ };
5839
+ nacl2.hash.hashLength = crypto_hash_BYTES;
5840
+ nacl2.verify = function(x, y) {
5841
+ checkArrayTypes(x, y);
5842
+ if (x.length === 0 || y.length === 0) return false;
5843
+ if (x.length !== y.length) return false;
5844
+ return vn(x, 0, y, 0, x.length) === 0 ? true : false;
5845
+ };
5846
+ nacl2.setPRNG = function(fn) {
5847
+ randombytes = fn;
5848
+ };
5849
+ (function() {
5850
+ var crypto = typeof self !== "undefined" ? self.crypto || self.msCrypto : null;
5851
+ if (crypto && crypto.getRandomValues) {
5852
+ var QUOTA = 65536;
5853
+ nacl2.setPRNG(function(x, n) {
5854
+ var i, v = new Uint8Array(n);
5855
+ for (i = 0; i < n; i += QUOTA) {
5856
+ crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));
5857
+ }
5858
+ for (i = 0; i < n; i++) x[i] = v[i];
5859
+ cleanup(v);
5860
+ });
5861
+ } else if (typeof __require !== "undefined") {
5862
+ crypto = __require("crypto");
5863
+ if (crypto && crypto.randomBytes) {
5864
+ nacl2.setPRNG(function(x, n) {
5865
+ var i, v = crypto.randomBytes(n);
5866
+ for (i = 0; i < n; i++) x[i] = v[i];
5867
+ cleanup(v);
5868
+ });
5869
+ }
5870
+ }
5871
+ })();
5872
+ })(typeof module !== "undefined" && module.exports ? module.exports : self.nacl = self.nacl || {});
5873
+ }
5874
+ });
5875
+
3651
5876
  // src/pty-manager.ts
3652
5877
  import * as pty from "node-pty";
3653
5878
  import { chmodSync } from "fs";
@@ -3925,8 +6150,34 @@ var import_sender = __toESM(require_sender(), 1);
3925
6150
  var import_websocket = __toESM(require_websocket(), 1);
3926
6151
  var import_websocket_server = __toESM(require_websocket_server(), 1);
3927
6152
 
6153
+ // ../shared/src/crypto.ts
6154
+ var import_tweetnacl = __toESM(require_nacl_fast(), 1);
6155
+ import { createHash } from "crypto";
6156
+ var encoder = new TextEncoder();
6157
+ var decoder = new TextDecoder();
6158
+ function deriveEncryptionKey(tokenHex) {
6159
+ const hash = createHash("sha512").update(tokenHex, "utf-8").digest();
6160
+ return new Uint8Array(hash).slice(0, 32);
6161
+ }
6162
+ function encrypt(plaintext, key) {
6163
+ const nonce = import_tweetnacl.default.randomBytes(import_tweetnacl.default.secretbox.nonceLength);
6164
+ const message = encoder.encode(plaintext);
6165
+ const box = import_tweetnacl.default.secretbox(message, nonce, key);
6166
+ const full = new Uint8Array(nonce.length + box.length);
6167
+ full.set(nonce);
6168
+ full.set(box, nonce.length);
6169
+ return Buffer.from(full).toString("base64");
6170
+ }
6171
+ function decrypt(ciphertext, key) {
6172
+ const full = new Uint8Array(Buffer.from(ciphertext, "base64"));
6173
+ const nonce = full.subarray(0, import_tweetnacl.default.secretbox.nonceLength);
6174
+ const box = full.subarray(import_tweetnacl.default.secretbox.nonceLength);
6175
+ const decrypted = import_tweetnacl.default.secretbox.open(box, nonce, key);
6176
+ if (!decrypted) throw new Error("Decryption failed");
6177
+ return decoder.decode(decrypted);
6178
+ }
6179
+
3928
6180
  // src/server.ts
3929
- import { deriveEncryptionKey, encrypt, decrypt } from "@itwillsync/shared/crypto";
3930
6181
  var MIME_TYPES = {
3931
6182
  ".html": "text/html; charset=utf-8",
3932
6183
  ".js": "application/javascript; charset=utf-8",