itwillsync 1.8.0 → 1.9.0
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/README.md +1 -2
- package/dist/hub/daemon.js +2259 -9
- package/dist/hub/daemon.js.map +1 -1
- package/dist/index.js +2256 -5
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
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 =
|
|
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 =
|
|
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",
|