diff --git a/sw_scripts/nacl.js b/sw_scripts/nacl.js index 105cce9..bad6ddf 100644 --- a/sw_scripts/nacl.js +++ b/sw_scripts/nacl.js @@ -1,779 +1,779 @@ -function vn(x, xi, y, yi, n) { - var i, d = 0; - for (i = 0; i < n; i++) d |= x[xi + i] ^ y[yi + i]; - return (1 & ((d - 1) >>> 8)) - 1; -} - -function crypto_verify_16(x, xi, y, yi) { - return vn(x, xi, y, yi, 16); -} - -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; - - -function core_salsa20(o, p, k, c) { - var j0 = c[0] & 0xff | (c[1] & 0xff) << 8 | (c[2] & 0xff) << 16 | (c[3] & 0xff) << 24, - j1 = k[0] & 0xff | (k[1] & 0xff) << 8 | (k[2] & 0xff) << 16 | (k[3] & 0xff) << 24, - j2 = k[4] & 0xff | (k[5] & 0xff) << 8 | (k[6] & 0xff) << 16 | (k[7] & 0xff) << 24, - j3 = k[8] & 0xff | (k[9] & 0xff) << 8 | (k[10] & 0xff) << 16 | (k[11] & 0xff) << 24, - j4 = k[12] & 0xff | (k[13] & 0xff) << 8 | (k[14] & 0xff) << 16 | (k[15] & 0xff) << 24, - j5 = c[4] & 0xff | (c[5] & 0xff) << 8 | (c[6] & 0xff) << 16 | (c[7] & 0xff) << 24, - j6 = p[0] & 0xff | (p[1] & 0xff) << 8 | (p[2] & 0xff) << 16 | (p[3] & 0xff) << 24, - j7 = p[4] & 0xff | (p[5] & 0xff) << 8 | (p[6] & 0xff) << 16 | (p[7] & 0xff) << 24, - j8 = p[8] & 0xff | (p[9] & 0xff) << 8 | (p[10] & 0xff) << 16 | (p[11] & 0xff) << 24, - j9 = p[12] & 0xff | (p[13] & 0xff) << 8 | (p[14] & 0xff) << 16 | (p[15] & 0xff) << 24, - j10 = c[8] & 0xff | (c[9] & 0xff) << 8 | (c[10] & 0xff) << 16 | (c[11] & 0xff) << 24, - j11 = k[16] & 0xff | (k[17] & 0xff) << 8 | (k[18] & 0xff) << 16 | (k[19] & 0xff) << 24, - j12 = k[20] & 0xff | (k[21] & 0xff) << 8 | (k[22] & 0xff) << 16 | (k[23] & 0xff) << 24, - j13 = k[24] & 0xff | (k[25] & 0xff) << 8 | (k[26] & 0xff) << 16 | (k[27] & 0xff) << 24, - j14 = k[28] & 0xff | (k[29] & 0xff) << 8 | (k[30] & 0xff) << 16 | (k[31] & 0xff) << 24, - j15 = c[12] & 0xff | (c[13] & 0xff) << 8 | (c[14] & 0xff) << 16 | (c[15] & 0xff) << 24; - - 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; - - for (var i = 0; i < 20; i += 2) { - u = x0 + x12 | 0; - x4 ^= u << 7 | u >>> (32 - 7); - u = x4 + x0 | 0; - x8 ^= u << 9 | u >>> (32 - 9); - u = x8 + x4 | 0; - x12 ^= u << 13 | u >>> (32 - 13); - u = x12 + x8 | 0; - x0 ^= u << 18 | u >>> (32 - 18); - - u = x5 + x1 | 0; - x9 ^= u << 7 | u >>> (32 - 7); - u = x9 + x5 | 0; - x13 ^= u << 9 | u >>> (32 - 9); - u = x13 + x9 | 0; - x1 ^= u << 13 | u >>> (32 - 13); - u = x1 + x13 | 0; - x5 ^= u << 18 | u >>> (32 - 18); - - u = x10 + x6 | 0; - x14 ^= u << 7 | u >>> (32 - 7); - u = x14 + x10 | 0; - x2 ^= u << 9 | u >>> (32 - 9); - u = x2 + x14 | 0; - x6 ^= u << 13 | u >>> (32 - 13); - u = x6 + x2 | 0; - x10 ^= u << 18 | u >>> (32 - 18); - - u = x15 + x11 | 0; - x3 ^= u << 7 | u >>> (32 - 7); - u = x3 + x15 | 0; - x7 ^= u << 9 | u >>> (32 - 9); - u = x7 + x3 | 0; - x11 ^= u << 13 | u >>> (32 - 13); - u = x11 + x7 | 0; - x15 ^= u << 18 | u >>> (32 - 18); - - u = x0 + x3 | 0; - x1 ^= u << 7 | u >>> (32 - 7); - u = x1 + x0 | 0; - x2 ^= u << 9 | u >>> (32 - 9); - u = x2 + x1 | 0; - x3 ^= u << 13 | u >>> (32 - 13); - u = x3 + x2 | 0; - x0 ^= u << 18 | u >>> (32 - 18); - - u = x5 + x4 | 0; - x6 ^= u << 7 | u >>> (32 - 7); - u = x6 + x5 | 0; - x7 ^= u << 9 | u >>> (32 - 9); - u = x7 + x6 | 0; - x4 ^= u << 13 | u >>> (32 - 13); - u = x4 + x7 | 0; - x5 ^= u << 18 | u >>> (32 - 18); - - u = x10 + x9 | 0; - x11 ^= u << 7 | u >>> (32 - 7); - u = x11 + x10 | 0; - x8 ^= u << 9 | u >>> (32 - 9); - u = x8 + x11 | 0; - x9 ^= u << 13 | u >>> (32 - 13); - u = x9 + x8 | 0; - x10 ^= u << 18 | u >>> (32 - 18); - - u = x15 + x14 | 0; - x12 ^= u << 7 | u >>> (32 - 7); - u = x12 + x15 | 0; - x13 ^= u << 9 | u >>> (32 - 9); - u = x13 + x12 | 0; - x14 ^= u << 13 | u >>> (32 - 13); - u = x14 + x13 | 0; - x15 ^= u << 18 | u >>> (32 - 18); - } - x0 = x0 + j0 | 0; - x1 = x1 + j1 | 0; - x2 = x2 + j2 | 0; - x3 = x3 + j3 | 0; - x4 = x4 + j4 | 0; - x5 = x5 + j5 | 0; - x6 = x6 + j6 | 0; - x7 = x7 + j7 | 0; - x8 = x8 + j8 | 0; - x9 = x9 + j9 | 0; - x10 = x10 + j10 | 0; - x11 = x11 + j11 | 0; - x12 = x12 + j12 | 0; - x13 = x13 + j13 | 0; - x14 = x14 + j14 | 0; - x15 = x15 + j15 | 0; - - o[0] = x0 >>> 0 & 0xff; - o[1] = x0 >>> 8 & 0xff; - o[2] = x0 >>> 16 & 0xff; - o[3] = x0 >>> 24 & 0xff; - - o[4] = x1 >>> 0 & 0xff; - o[5] = x1 >>> 8 & 0xff; - o[6] = x1 >>> 16 & 0xff; - o[7] = x1 >>> 24 & 0xff; - - o[8] = x2 >>> 0 & 0xff; - o[9] = x2 >>> 8 & 0xff; - o[10] = x2 >>> 16 & 0xff; - o[11] = x2 >>> 24 & 0xff; - - o[12] = x3 >>> 0 & 0xff; - o[13] = x3 >>> 8 & 0xff; - o[14] = x3 >>> 16 & 0xff; - o[15] = x3 >>> 24 & 0xff; - - o[16] = x4 >>> 0 & 0xff; - o[17] = x4 >>> 8 & 0xff; - o[18] = x4 >>> 16 & 0xff; - o[19] = x4 >>> 24 & 0xff; - - o[20] = x5 >>> 0 & 0xff; - o[21] = x5 >>> 8 & 0xff; - o[22] = x5 >>> 16 & 0xff; - o[23] = x5 >>> 24 & 0xff; - - o[24] = x6 >>> 0 & 0xff; - o[25] = x6 >>> 8 & 0xff; - o[26] = x6 >>> 16 & 0xff; - o[27] = x6 >>> 24 & 0xff; - - o[28] = x7 >>> 0 & 0xff; - o[29] = x7 >>> 8 & 0xff; - o[30] = x7 >>> 16 & 0xff; - o[31] = x7 >>> 24 & 0xff; - - o[32] = x8 >>> 0 & 0xff; - o[33] = x8 >>> 8 & 0xff; - o[34] = x8 >>> 16 & 0xff; - o[35] = x8 >>> 24 & 0xff; - - o[36] = x9 >>> 0 & 0xff; - o[37] = x9 >>> 8 & 0xff; - o[38] = x9 >>> 16 & 0xff; - o[39] = x9 >>> 24 & 0xff; - - o[40] = x10 >>> 0 & 0xff; - o[41] = x10 >>> 8 & 0xff; - o[42] = x10 >>> 16 & 0xff; - o[43] = x10 >>> 24 & 0xff; - - o[44] = x11 >>> 0 & 0xff; - o[45] = x11 >>> 8 & 0xff; - o[46] = x11 >>> 16 & 0xff; - o[47] = x11 >>> 24 & 0xff; - - o[48] = x12 >>> 0 & 0xff; - o[49] = x12 >>> 8 & 0xff; - o[50] = x12 >>> 16 & 0xff; - o[51] = x12 >>> 24 & 0xff; - - o[52] = x13 >>> 0 & 0xff; - o[53] = x13 >>> 8 & 0xff; - o[54] = x13 >>> 16 & 0xff; - o[55] = x13 >>> 24 & 0xff; - - o[56] = x14 >>> 0 & 0xff; - o[57] = x14 >>> 8 & 0xff; - o[58] = x14 >>> 16 & 0xff; - o[59] = x14 >>> 24 & 0xff; - - o[60] = x15 >>> 0 & 0xff; - o[61] = x15 >>> 8 & 0xff; - o[62] = x15 >>> 16 & 0xff; - o[63] = x15 >>> 24 & 0xff; -} - -function core_hsalsa20(o, p, k, c) { - var j0 = c[0] & 0xff | (c[1] & 0xff) << 8 | (c[2] & 0xff) << 16 | (c[3] & 0xff) << 24, - j1 = k[0] & 0xff | (k[1] & 0xff) << 8 | (k[2] & 0xff) << 16 | (k[3] & 0xff) << 24, - j2 = k[4] & 0xff | (k[5] & 0xff) << 8 | (k[6] & 0xff) << 16 | (k[7] & 0xff) << 24, - j3 = k[8] & 0xff | (k[9] & 0xff) << 8 | (k[10] & 0xff) << 16 | (k[11] & 0xff) << 24, - j4 = k[12] & 0xff | (k[13] & 0xff) << 8 | (k[14] & 0xff) << 16 | (k[15] & 0xff) << 24, - j5 = c[4] & 0xff | (c[5] & 0xff) << 8 | (c[6] & 0xff) << 16 | (c[7] & 0xff) << 24, - j6 = p[0] & 0xff | (p[1] & 0xff) << 8 | (p[2] & 0xff) << 16 | (p[3] & 0xff) << 24, - j7 = p[4] & 0xff | (p[5] & 0xff) << 8 | (p[6] & 0xff) << 16 | (p[7] & 0xff) << 24, - j8 = p[8] & 0xff | (p[9] & 0xff) << 8 | (p[10] & 0xff) << 16 | (p[11] & 0xff) << 24, - j9 = p[12] & 0xff | (p[13] & 0xff) << 8 | (p[14] & 0xff) << 16 | (p[15] & 0xff) << 24, - j10 = c[8] & 0xff | (c[9] & 0xff) << 8 | (c[10] & 0xff) << 16 | (c[11] & 0xff) << 24, - j11 = k[16] & 0xff | (k[17] & 0xff) << 8 | (k[18] & 0xff) << 16 | (k[19] & 0xff) << 24, - j12 = k[20] & 0xff | (k[21] & 0xff) << 8 | (k[22] & 0xff) << 16 | (k[23] & 0xff) << 24, - j13 = k[24] & 0xff | (k[25] & 0xff) << 8 | (k[26] & 0xff) << 16 | (k[27] & 0xff) << 24, - j14 = k[28] & 0xff | (k[29] & 0xff) << 8 | (k[30] & 0xff) << 16 | (k[31] & 0xff) << 24, - j15 = c[12] & 0xff | (c[13] & 0xff) << 8 | (c[14] & 0xff) << 16 | (c[15] & 0xff) << 24; - - 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; - - for (var i = 0; i < 20; i += 2) { - u = x0 + x12 | 0; - x4 ^= u << 7 | u >>> (32 - 7); - u = x4 + x0 | 0; - x8 ^= u << 9 | u >>> (32 - 9); - u = x8 + x4 | 0; - x12 ^= u << 13 | u >>> (32 - 13); - u = x12 + x8 | 0; - x0 ^= u << 18 | u >>> (32 - 18); - - u = x5 + x1 | 0; - x9 ^= u << 7 | u >>> (32 - 7); - u = x9 + x5 | 0; - x13 ^= u << 9 | u >>> (32 - 9); - u = x13 + x9 | 0; - x1 ^= u << 13 | u >>> (32 - 13); - u = x1 + x13 | 0; - x5 ^= u << 18 | u >>> (32 - 18); - - u = x10 + x6 | 0; - x14 ^= u << 7 | u >>> (32 - 7); - u = x14 + x10 | 0; - x2 ^= u << 9 | u >>> (32 - 9); - u = x2 + x14 | 0; - x6 ^= u << 13 | u >>> (32 - 13); - u = x6 + x2 | 0; - x10 ^= u << 18 | u >>> (32 - 18); - - u = x15 + x11 | 0; - x3 ^= u << 7 | u >>> (32 - 7); - u = x3 + x15 | 0; - x7 ^= u << 9 | u >>> (32 - 9); - u = x7 + x3 | 0; - x11 ^= u << 13 | u >>> (32 - 13); - u = x11 + x7 | 0; - x15 ^= u << 18 | u >>> (32 - 18); - - u = x0 + x3 | 0; - x1 ^= u << 7 | u >>> (32 - 7); - u = x1 + x0 | 0; - x2 ^= u << 9 | u >>> (32 - 9); - u = x2 + x1 | 0; - x3 ^= u << 13 | u >>> (32 - 13); - u = x3 + x2 | 0; - x0 ^= u << 18 | u >>> (32 - 18); - - u = x5 + x4 | 0; - x6 ^= u << 7 | u >>> (32 - 7); - u = x6 + x5 | 0; - x7 ^= u << 9 | u >>> (32 - 9); - u = x7 + x6 | 0; - x4 ^= u << 13 | u >>> (32 - 13); - u = x4 + x7 | 0; - x5 ^= u << 18 | u >>> (32 - 18); - - u = x10 + x9 | 0; - x11 ^= u << 7 | u >>> (32 - 7); - u = x11 + x10 | 0; - x8 ^= u << 9 | u >>> (32 - 9); - u = x8 + x11 | 0; - x9 ^= u << 13 | u >>> (32 - 13); - u = x9 + x8 | 0; - x10 ^= u << 18 | u >>> (32 - 18); - - u = x15 + x14 | 0; - x12 ^= u << 7 | u >>> (32 - 7); - u = x12 + x15 | 0; - x13 ^= u << 9 | u >>> (32 - 9); - u = x13 + x12 | 0; - x14 ^= u << 13 | u >>> (32 - 13); - u = x14 + x13 | 0; - x15 ^= u << 18 | u >>> (32 - 18); - } - - o[0] = x0 >>> 0 & 0xff; - o[1] = x0 >>> 8 & 0xff; - o[2] = x0 >>> 16 & 0xff; - o[3] = x0 >>> 24 & 0xff; - - o[4] = x5 >>> 0 & 0xff; - o[5] = x5 >>> 8 & 0xff; - o[6] = x5 >>> 16 & 0xff; - o[7] = x5 >>> 24 & 0xff; - - o[8] = x10 >>> 0 & 0xff; - o[9] = x10 >>> 8 & 0xff; - o[10] = x10 >>> 16 & 0xff; - o[11] = x10 >>> 24 & 0xff; - - o[12] = x15 >>> 0 & 0xff; - o[13] = x15 >>> 8 & 0xff; - o[14] = x15 >>> 16 & 0xff; - o[15] = x15 >>> 24 & 0xff; - - o[16] = x6 >>> 0 & 0xff; - o[17] = x6 >>> 8 & 0xff; - o[18] = x6 >>> 16 & 0xff; - o[19] = x6 >>> 24 & 0xff; - - o[20] = x7 >>> 0 & 0xff; - o[21] = x7 >>> 8 & 0xff; - o[22] = x7 >>> 16 & 0xff; - o[23] = x7 >>> 24 & 0xff; - - o[24] = x8 >>> 0 & 0xff; - o[25] = x8 >>> 8 & 0xff; - o[26] = x8 >>> 16 & 0xff; - o[27] = x8 >>> 24 & 0xff; - - o[28] = x9 >>> 0 & 0xff; - o[29] = x9 >>> 8 & 0xff; - o[30] = x9 >>> 16 & 0xff; - o[31] = x9 >>> 24 & 0xff; -} - -function crypto_core_salsa20(out, inp, k, c) { - core_salsa20(out, inp, k, c); -} - -function crypto_core_hsalsa20(out, inp, k, c) { - core_hsalsa20(out, inp, k, c); -} - -var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]); -// "expand 32-byte k" - -function crypto_stream_salsa20_xor(c, cpos, m, mpos, b, n, k) { - var z = new Uint8Array(16), x = new Uint8Array(64); - var u, i; - for (i = 0; i < 16; i++) z[i] = 0; - for (i = 0; i < 8; i++) z[i] = n[i]; - while (b >= 64) { - crypto_core_salsa20(x, z, k, sigma); - for (i = 0; i < 64; i++) c[cpos + i] = m[mpos + i] ^ x[i]; - u = 1; - for (i = 8; i < 16; i++) { - u = u + (z[i] & 0xff) | 0; - z[i] = u & 0xff; - u >>>= 8; - } - b -= 64; - cpos += 64; - mpos += 64; - } - if (b > 0) { - crypto_core_salsa20(x, z, k, sigma); - for (i = 0; i < b; i++) c[cpos + i] = m[mpos + i] ^ x[i]; - } - return 0; -} - -function crypto_stream_salsa20(c, cpos, b, n, k) { - var z = new Uint8Array(16), x = new Uint8Array(64); - var u, i; - for (i = 0; i < 16; i++) z[i] = 0; - for (i = 0; i < 8; i++) z[i] = n[i]; - while (b >= 64) { - crypto_core_salsa20(x, z, k, sigma); - for (i = 0; i < 64; i++) c[cpos + i] = x[i]; - u = 1; - for (i = 8; i < 16; i++) { - u = u + (z[i] & 0xff) | 0; - z[i] = u & 0xff; - u >>>= 8; - } - b -= 64; - cpos += 64; - } - if (b > 0) { - crypto_core_salsa20(x, z, k, sigma); - for (i = 0; i < b; i++) c[cpos + i] = x[i]; - } - return 0; -} - -var poly1305 = function (key) { - this.buffer = new Uint8Array(16); - this.r = new Uint16Array(10); - this.h = new Uint16Array(10); - this.pad = new Uint16Array(8); - this.leftover = 0; - this.fin = 0; - - var t0, t1, t2, t3, t4, t5, t6, t7; - - t0 = key[0] & 0xff | (key[1] & 0xff) << 8; this.r[0] = (t0) & 0x1fff; - t1 = key[2] & 0xff | (key[3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff; - t2 = key[4] & 0xff | (key[5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03; - t3 = key[6] & 0xff | (key[7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff; - t4 = key[8] & 0xff | (key[9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff; - this.r[5] = ((t4 >>> 1)) & 0x1ffe; - t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff; - t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81; - t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff; - this.r[9] = ((t7 >>> 5)) & 0x007f; - - this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8; - this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8; - this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8; - this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8; - this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8; - this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8; - this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8; - this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8; -}; - -poly1305.prototype.blocks = function (m, mpos, bytes) { - var hibit = this.fin ? 0 : (1 << 11); - var t0, t1, t2, t3, t4, t5, t6, t7, c; - var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9; - - 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]; - - 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]; - - while (bytes >= 16) { - t0 = m[mpos + 0] & 0xff | (m[mpos + 1] & 0xff) << 8; h0 += (t0) & 0x1fff; - t1 = m[mpos + 2] & 0xff | (m[mpos + 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff; - t2 = m[mpos + 4] & 0xff | (m[mpos + 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff; - t3 = m[mpos + 6] & 0xff | (m[mpos + 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff; - t4 = m[mpos + 8] & 0xff | (m[mpos + 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff; - h5 += ((t4 >>> 1)) & 0x1fff; - t5 = m[mpos + 10] & 0xff | (m[mpos + 11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff; - t6 = m[mpos + 12] & 0xff | (m[mpos + 13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff; - t7 = m[mpos + 14] & 0xff | (m[mpos + 15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff; - h9 += ((t7 >>> 5)) | hibit; - - c = 0; - - d0 = c; - d0 += h0 * r0; - d0 += h1 * (5 * r9); - d0 += h2 * (5 * r8); - d0 += h3 * (5 * r7); - d0 += h4 * (5 * r6); - c = (d0 >>> 13); d0 &= 0x1fff; - d0 += h5 * (5 * r5); - d0 += h6 * (5 * r4); - d0 += h7 * (5 * r3); - d0 += h8 * (5 * r2); - d0 += h9 * (5 * r1); - c += (d0 >>> 13); d0 &= 0x1fff; - - d1 = c; - d1 += h0 * r1; - d1 += h1 * r0; - d1 += h2 * (5 * r9); - d1 += h3 * (5 * r8); - d1 += h4 * (5 * r7); - c = (d1 >>> 13); d1 &= 0x1fff; - d1 += h5 * (5 * r6); - d1 += h6 * (5 * r5); - d1 += h7 * (5 * r4); - d1 += h8 * (5 * r3); - d1 += h9 * (5 * r2); - c += (d1 >>> 13); d1 &= 0x1fff; - - d2 = c; - d2 += h0 * r2; - d2 += h1 * r1; - d2 += h2 * r0; - d2 += h3 * (5 * r9); - d2 += h4 * (5 * r8); - c = (d2 >>> 13); d2 &= 0x1fff; - d2 += h5 * (5 * r7); - d2 += h6 * (5 * r6); - d2 += h7 * (5 * r5); - d2 += h8 * (5 * r4); - d2 += h9 * (5 * r3); - c += (d2 >>> 13); d2 &= 0x1fff; - - d3 = c; - d3 += h0 * r3; - d3 += h1 * r2; - d3 += h2 * r1; - d3 += h3 * r0; - d3 += h4 * (5 * r9); - c = (d3 >>> 13); d3 &= 0x1fff; - d3 += h5 * (5 * r8); - d3 += h6 * (5 * r7); - d3 += h7 * (5 * r6); - d3 += h8 * (5 * r5); - d3 += h9 * (5 * r4); - c += (d3 >>> 13); d3 &= 0x1fff; - - d4 = c; - d4 += h0 * r4; - d4 += h1 * r3; - d4 += h2 * r2; - d4 += h3 * r1; - d4 += h4 * r0; - c = (d4 >>> 13); d4 &= 0x1fff; - d4 += h5 * (5 * r9); - d4 += h6 * (5 * r8); - d4 += h7 * (5 * r7); - d4 += h8 * (5 * r6); - d4 += h9 * (5 * r5); - c += (d4 >>> 13); d4 &= 0x1fff; - - d5 = c; - d5 += h0 * r5; - d5 += h1 * r4; - d5 += h2 * r3; - d5 += h3 * r2; - d5 += h4 * r1; - c = (d5 >>> 13); d5 &= 0x1fff; - d5 += h5 * r0; - d5 += h6 * (5 * r9); - d5 += h7 * (5 * r8); - d5 += h8 * (5 * r7); - d5 += h9 * (5 * r6); - c += (d5 >>> 13); d5 &= 0x1fff; - - d6 = c; - d6 += h0 * r6; - d6 += h1 * r5; - d6 += h2 * r4; - d6 += h3 * r3; - d6 += h4 * r2; - c = (d6 >>> 13); d6 &= 0x1fff; - d6 += h5 * r1; - d6 += h6 * r0; - d6 += h7 * (5 * r9); - d6 += h8 * (5 * r8); - d6 += h9 * (5 * r7); - c += (d6 >>> 13); d6 &= 0x1fff; - - d7 = c; - d7 += h0 * r7; - d7 += h1 * r6; - d7 += h2 * r5; - d7 += h3 * r4; - d7 += h4 * r3; - c = (d7 >>> 13); d7 &= 0x1fff; - d7 += h5 * r2; - d7 += h6 * r1; - d7 += h7 * r0; - d7 += h8 * (5 * r9); - d7 += h9 * (5 * r8); - c += (d7 >>> 13); d7 &= 0x1fff; - - d8 = c; - d8 += h0 * r8; - d8 += h1 * r7; - d8 += h2 * r6; - d8 += h3 * r5; - d8 += h4 * r4; - c = (d8 >>> 13); d8 &= 0x1fff; - d8 += h5 * r3; - d8 += h6 * r2; - d8 += h7 * r1; - d8 += h8 * r0; - d8 += h9 * (5 * r9); - c += (d8 >>> 13); d8 &= 0x1fff; - - d9 = c; - d9 += h0 * r9; - d9 += h1 * r8; - d9 += h2 * r7; - d9 += h3 * r6; - d9 += h4 * r5; - c = (d9 >>> 13); d9 &= 0x1fff; - d9 += h5 * r4; - d9 += h6 * r3; - d9 += h7 * r2; - d9 += h8 * r1; - d9 += h9 * r0; - c += (d9 >>> 13); d9 &= 0x1fff; - - c = (((c << 2) + c)) | 0; - c = (c + d0) | 0; - d0 = c & 0x1fff; - c = (c >>> 13); - d1 += c; - - h0 = d0; - h1 = d1; - h2 = d2; - h3 = d3; - h4 = d4; - h5 = d5; - h6 = d6; - h7 = d7; - h8 = d8; - h9 = d9; - - mpos += 16; - bytes -= 16; - } - this.h[0] = h0; - this.h[1] = h1; - this.h[2] = h2; - this.h[3] = h3; - this.h[4] = h4; - this.h[5] = h5; - this.h[6] = h6; - this.h[7] = h7; - this.h[8] = h8; - this.h[9] = h9; -}; - -poly1305.prototype.finish = function (mac, macpos) { - var g = new Uint16Array(10); - var c, mask, f, i; - - if (this.leftover) { - i = this.leftover; - this.buffer[i++] = 1; - for (; i < 16; i++) this.buffer[i] = 0; - this.fin = 1; - this.blocks(this.buffer, 0, 16); - } - - c = this.h[1] >>> 13; - this.h[1] &= 0x1fff; - for (i = 2; i < 10; i++) { - this.h[i] += c; - c = this.h[i] >>> 13; - this.h[i] &= 0x1fff; - } - this.h[0] += (c * 5); - c = this.h[0] >>> 13; - this.h[0] &= 0x1fff; - this.h[1] += c; - c = this.h[1] >>> 13; - this.h[1] &= 0x1fff; - this.h[2] += c; - - g[0] = this.h[0] + 5; - c = g[0] >>> 13; - g[0] &= 0x1fff; - for (i = 1; i < 10; i++) { - g[i] = this.h[i] + c; - c = g[i] >>> 13; - g[i] &= 0x1fff; - } - g[9] -= (1 << 13); - - mask = (c ^ 1) - 1; - for (i = 0; i < 10; i++) g[i] &= mask; - mask = ~mask; - for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i]; - - this.h[0] = ((this.h[0]) | (this.h[1] << 13)) & 0xffff; - this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10)) & 0xffff; - this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7)) & 0xffff; - this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4)) & 0xffff; - this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff; - this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11)) & 0xffff; - this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8)) & 0xffff; - this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5)) & 0xffff; - - f = this.h[0] + this.pad[0]; - this.h[0] = f & 0xffff; - for (i = 1; i < 8; i++) { - f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0; - this.h[i] = f & 0xffff; - } - - mac[macpos + 0] = (this.h[0] >>> 0) & 0xff; - mac[macpos + 1] = (this.h[0] >>> 8) & 0xff; - mac[macpos + 2] = (this.h[1] >>> 0) & 0xff; - mac[macpos + 3] = (this.h[1] >>> 8) & 0xff; - mac[macpos + 4] = (this.h[2] >>> 0) & 0xff; - mac[macpos + 5] = (this.h[2] >>> 8) & 0xff; - mac[macpos + 6] = (this.h[3] >>> 0) & 0xff; - mac[macpos + 7] = (this.h[3] >>> 8) & 0xff; - mac[macpos + 8] = (this.h[4] >>> 0) & 0xff; - mac[macpos + 9] = (this.h[4] >>> 8) & 0xff; - mac[macpos + 10] = (this.h[5] >>> 0) & 0xff; - mac[macpos + 11] = (this.h[5] >>> 8) & 0xff; - mac[macpos + 12] = (this.h[6] >>> 0) & 0xff; - mac[macpos + 13] = (this.h[6] >>> 8) & 0xff; - mac[macpos + 14] = (this.h[7] >>> 0) & 0xff; - mac[macpos + 15] = (this.h[7] >>> 8) & 0xff; -}; - -poly1305.prototype.update = function (m, mpos, bytes) { - var i, want; - - if (this.leftover) { - want = (16 - this.leftover); - if (want > bytes) - want = bytes; - for (i = 0; i < want; i++) - this.buffer[this.leftover + i] = m[mpos + i]; - bytes -= want; - mpos += want; - this.leftover += want; - if (this.leftover < 16) - return; - this.blocks(this.buffer, 0, 16); - this.leftover = 0; - } - - if (bytes >= 16) { - want = bytes - (bytes % 16); - this.blocks(m, mpos, want); - mpos += want; - bytes -= want; - } - - if (bytes) { - for (i = 0; i < bytes; i++) - this.buffer[this.leftover + i] = m[mpos + i]; - this.leftover += bytes; - } -}; - -function checkLengths(k, n) { - if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size'); - if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size'); -} +// function vn(x, xi, y, yi, n) { +// var i, d = 0; +// for (i = 0; i < n; i++) d |= x[xi + i] ^ y[yi + i]; +// return (1 & ((d - 1) >>> 8)) - 1; +// } + +// function crypto_verify_16(x, xi, y, yi) { +// return vn(x, xi, y, yi, 16); +// } + +// 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; + + +// function core_salsa20(o, p, k, c) { +// var j0 = c[0] & 0xff | (c[1] & 0xff) << 8 | (c[2] & 0xff) << 16 | (c[3] & 0xff) << 24, +// j1 = k[0] & 0xff | (k[1] & 0xff) << 8 | (k[2] & 0xff) << 16 | (k[3] & 0xff) << 24, +// j2 = k[4] & 0xff | (k[5] & 0xff) << 8 | (k[6] & 0xff) << 16 | (k[7] & 0xff) << 24, +// j3 = k[8] & 0xff | (k[9] & 0xff) << 8 | (k[10] & 0xff) << 16 | (k[11] & 0xff) << 24, +// j4 = k[12] & 0xff | (k[13] & 0xff) << 8 | (k[14] & 0xff) << 16 | (k[15] & 0xff) << 24, +// j5 = c[4] & 0xff | (c[5] & 0xff) << 8 | (c[6] & 0xff) << 16 | (c[7] & 0xff) << 24, +// j6 = p[0] & 0xff | (p[1] & 0xff) << 8 | (p[2] & 0xff) << 16 | (p[3] & 0xff) << 24, +// j7 = p[4] & 0xff | (p[5] & 0xff) << 8 | (p[6] & 0xff) << 16 | (p[7] & 0xff) << 24, +// j8 = p[8] & 0xff | (p[9] & 0xff) << 8 | (p[10] & 0xff) << 16 | (p[11] & 0xff) << 24, +// j9 = p[12] & 0xff | (p[13] & 0xff) << 8 | (p[14] & 0xff) << 16 | (p[15] & 0xff) << 24, +// j10 = c[8] & 0xff | (c[9] & 0xff) << 8 | (c[10] & 0xff) << 16 | (c[11] & 0xff) << 24, +// j11 = k[16] & 0xff | (k[17] & 0xff) << 8 | (k[18] & 0xff) << 16 | (k[19] & 0xff) << 24, +// j12 = k[20] & 0xff | (k[21] & 0xff) << 8 | (k[22] & 0xff) << 16 | (k[23] & 0xff) << 24, +// j13 = k[24] & 0xff | (k[25] & 0xff) << 8 | (k[26] & 0xff) << 16 | (k[27] & 0xff) << 24, +// j14 = k[28] & 0xff | (k[29] & 0xff) << 8 | (k[30] & 0xff) << 16 | (k[31] & 0xff) << 24, +// j15 = c[12] & 0xff | (c[13] & 0xff) << 8 | (c[14] & 0xff) << 16 | (c[15] & 0xff) << 24; + +// 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; + +// for (var i = 0; i < 20; i += 2) { +// u = x0 + x12 | 0; +// x4 ^= u << 7 | u >>> (32 - 7); +// u = x4 + x0 | 0; +// x8 ^= u << 9 | u >>> (32 - 9); +// u = x8 + x4 | 0; +// x12 ^= u << 13 | u >>> (32 - 13); +// u = x12 + x8 | 0; +// x0 ^= u << 18 | u >>> (32 - 18); + +// u = x5 + x1 | 0; +// x9 ^= u << 7 | u >>> (32 - 7); +// u = x9 + x5 | 0; +// x13 ^= u << 9 | u >>> (32 - 9); +// u = x13 + x9 | 0; +// x1 ^= u << 13 | u >>> (32 - 13); +// u = x1 + x13 | 0; +// x5 ^= u << 18 | u >>> (32 - 18); + +// u = x10 + x6 | 0; +// x14 ^= u << 7 | u >>> (32 - 7); +// u = x14 + x10 | 0; +// x2 ^= u << 9 | u >>> (32 - 9); +// u = x2 + x14 | 0; +// x6 ^= u << 13 | u >>> (32 - 13); +// u = x6 + x2 | 0; +// x10 ^= u << 18 | u >>> (32 - 18); + +// u = x15 + x11 | 0; +// x3 ^= u << 7 | u >>> (32 - 7); +// u = x3 + x15 | 0; +// x7 ^= u << 9 | u >>> (32 - 9); +// u = x7 + x3 | 0; +// x11 ^= u << 13 | u >>> (32 - 13); +// u = x11 + x7 | 0; +// x15 ^= u << 18 | u >>> (32 - 18); + +// u = x0 + x3 | 0; +// x1 ^= u << 7 | u >>> (32 - 7); +// u = x1 + x0 | 0; +// x2 ^= u << 9 | u >>> (32 - 9); +// u = x2 + x1 | 0; +// x3 ^= u << 13 | u >>> (32 - 13); +// u = x3 + x2 | 0; +// x0 ^= u << 18 | u >>> (32 - 18); + +// u = x5 + x4 | 0; +// x6 ^= u << 7 | u >>> (32 - 7); +// u = x6 + x5 | 0; +// x7 ^= u << 9 | u >>> (32 - 9); +// u = x7 + x6 | 0; +// x4 ^= u << 13 | u >>> (32 - 13); +// u = x4 + x7 | 0; +// x5 ^= u << 18 | u >>> (32 - 18); + +// u = x10 + x9 | 0; +// x11 ^= u << 7 | u >>> (32 - 7); +// u = x11 + x10 | 0; +// x8 ^= u << 9 | u >>> (32 - 9); +// u = x8 + x11 | 0; +// x9 ^= u << 13 | u >>> (32 - 13); +// u = x9 + x8 | 0; +// x10 ^= u << 18 | u >>> (32 - 18); + +// u = x15 + x14 | 0; +// x12 ^= u << 7 | u >>> (32 - 7); +// u = x12 + x15 | 0; +// x13 ^= u << 9 | u >>> (32 - 9); +// u = x13 + x12 | 0; +// x14 ^= u << 13 | u >>> (32 - 13); +// u = x14 + x13 | 0; +// x15 ^= u << 18 | u >>> (32 - 18); +// } +// x0 = x0 + j0 | 0; +// x1 = x1 + j1 | 0; +// x2 = x2 + j2 | 0; +// x3 = x3 + j3 | 0; +// x4 = x4 + j4 | 0; +// x5 = x5 + j5 | 0; +// x6 = x6 + j6 | 0; +// x7 = x7 + j7 | 0; +// x8 = x8 + j8 | 0; +// x9 = x9 + j9 | 0; +// x10 = x10 + j10 | 0; +// x11 = x11 + j11 | 0; +// x12 = x12 + j12 | 0; +// x13 = x13 + j13 | 0; +// x14 = x14 + j14 | 0; +// x15 = x15 + j15 | 0; + +// o[0] = x0 >>> 0 & 0xff; +// o[1] = x0 >>> 8 & 0xff; +// o[2] = x0 >>> 16 & 0xff; +// o[3] = x0 >>> 24 & 0xff; + +// o[4] = x1 >>> 0 & 0xff; +// o[5] = x1 >>> 8 & 0xff; +// o[6] = x1 >>> 16 & 0xff; +// o[7] = x1 >>> 24 & 0xff; + +// o[8] = x2 >>> 0 & 0xff; +// o[9] = x2 >>> 8 & 0xff; +// o[10] = x2 >>> 16 & 0xff; +// o[11] = x2 >>> 24 & 0xff; + +// o[12] = x3 >>> 0 & 0xff; +// o[13] = x3 >>> 8 & 0xff; +// o[14] = x3 >>> 16 & 0xff; +// o[15] = x3 >>> 24 & 0xff; + +// o[16] = x4 >>> 0 & 0xff; +// o[17] = x4 >>> 8 & 0xff; +// o[18] = x4 >>> 16 & 0xff; +// o[19] = x4 >>> 24 & 0xff; + +// o[20] = x5 >>> 0 & 0xff; +// o[21] = x5 >>> 8 & 0xff; +// o[22] = x5 >>> 16 & 0xff; +// o[23] = x5 >>> 24 & 0xff; + +// o[24] = x6 >>> 0 & 0xff; +// o[25] = x6 >>> 8 & 0xff; +// o[26] = x6 >>> 16 & 0xff; +// o[27] = x6 >>> 24 & 0xff; + +// o[28] = x7 >>> 0 & 0xff; +// o[29] = x7 >>> 8 & 0xff; +// o[30] = x7 >>> 16 & 0xff; +// o[31] = x7 >>> 24 & 0xff; + +// o[32] = x8 >>> 0 & 0xff; +// o[33] = x8 >>> 8 & 0xff; +// o[34] = x8 >>> 16 & 0xff; +// o[35] = x8 >>> 24 & 0xff; + +// o[36] = x9 >>> 0 & 0xff; +// o[37] = x9 >>> 8 & 0xff; +// o[38] = x9 >>> 16 & 0xff; +// o[39] = x9 >>> 24 & 0xff; + +// o[40] = x10 >>> 0 & 0xff; +// o[41] = x10 >>> 8 & 0xff; +// o[42] = x10 >>> 16 & 0xff; +// o[43] = x10 >>> 24 & 0xff; + +// o[44] = x11 >>> 0 & 0xff; +// o[45] = x11 >>> 8 & 0xff; +// o[46] = x11 >>> 16 & 0xff; +// o[47] = x11 >>> 24 & 0xff; + +// o[48] = x12 >>> 0 & 0xff; +// o[49] = x12 >>> 8 & 0xff; +// o[50] = x12 >>> 16 & 0xff; +// o[51] = x12 >>> 24 & 0xff; + +// o[52] = x13 >>> 0 & 0xff; +// o[53] = x13 >>> 8 & 0xff; +// o[54] = x13 >>> 16 & 0xff; +// o[55] = x13 >>> 24 & 0xff; + +// o[56] = x14 >>> 0 & 0xff; +// o[57] = x14 >>> 8 & 0xff; +// o[58] = x14 >>> 16 & 0xff; +// o[59] = x14 >>> 24 & 0xff; + +// o[60] = x15 >>> 0 & 0xff; +// o[61] = x15 >>> 8 & 0xff; +// o[62] = x15 >>> 16 & 0xff; +// o[63] = x15 >>> 24 & 0xff; +// } + +// function core_hsalsa20(o, p, k, c) { +// var j0 = c[0] & 0xff | (c[1] & 0xff) << 8 | (c[2] & 0xff) << 16 | (c[3] & 0xff) << 24, +// j1 = k[0] & 0xff | (k[1] & 0xff) << 8 | (k[2] & 0xff) << 16 | (k[3] & 0xff) << 24, +// j2 = k[4] & 0xff | (k[5] & 0xff) << 8 | (k[6] & 0xff) << 16 | (k[7] & 0xff) << 24, +// j3 = k[8] & 0xff | (k[9] & 0xff) << 8 | (k[10] & 0xff) << 16 | (k[11] & 0xff) << 24, +// j4 = k[12] & 0xff | (k[13] & 0xff) << 8 | (k[14] & 0xff) << 16 | (k[15] & 0xff) << 24, +// j5 = c[4] & 0xff | (c[5] & 0xff) << 8 | (c[6] & 0xff) << 16 | (c[7] & 0xff) << 24, +// j6 = p[0] & 0xff | (p[1] & 0xff) << 8 | (p[2] & 0xff) << 16 | (p[3] & 0xff) << 24, +// j7 = p[4] & 0xff | (p[5] & 0xff) << 8 | (p[6] & 0xff) << 16 | (p[7] & 0xff) << 24, +// j8 = p[8] & 0xff | (p[9] & 0xff) << 8 | (p[10] & 0xff) << 16 | (p[11] & 0xff) << 24, +// j9 = p[12] & 0xff | (p[13] & 0xff) << 8 | (p[14] & 0xff) << 16 | (p[15] & 0xff) << 24, +// j10 = c[8] & 0xff | (c[9] & 0xff) << 8 | (c[10] & 0xff) << 16 | (c[11] & 0xff) << 24, +// j11 = k[16] & 0xff | (k[17] & 0xff) << 8 | (k[18] & 0xff) << 16 | (k[19] & 0xff) << 24, +// j12 = k[20] & 0xff | (k[21] & 0xff) << 8 | (k[22] & 0xff) << 16 | (k[23] & 0xff) << 24, +// j13 = k[24] & 0xff | (k[25] & 0xff) << 8 | (k[26] & 0xff) << 16 | (k[27] & 0xff) << 24, +// j14 = k[28] & 0xff | (k[29] & 0xff) << 8 | (k[30] & 0xff) << 16 | (k[31] & 0xff) << 24, +// j15 = c[12] & 0xff | (c[13] & 0xff) << 8 | (c[14] & 0xff) << 16 | (c[15] & 0xff) << 24; + +// 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; + +// for (var i = 0; i < 20; i += 2) { +// u = x0 + x12 | 0; +// x4 ^= u << 7 | u >>> (32 - 7); +// u = x4 + x0 | 0; +// x8 ^= u << 9 | u >>> (32 - 9); +// u = x8 + x4 | 0; +// x12 ^= u << 13 | u >>> (32 - 13); +// u = x12 + x8 | 0; +// x0 ^= u << 18 | u >>> (32 - 18); + +// u = x5 + x1 | 0; +// x9 ^= u << 7 | u >>> (32 - 7); +// u = x9 + x5 | 0; +// x13 ^= u << 9 | u >>> (32 - 9); +// u = x13 + x9 | 0; +// x1 ^= u << 13 | u >>> (32 - 13); +// u = x1 + x13 | 0; +// x5 ^= u << 18 | u >>> (32 - 18); + +// u = x10 + x6 | 0; +// x14 ^= u << 7 | u >>> (32 - 7); +// u = x14 + x10 | 0; +// x2 ^= u << 9 | u >>> (32 - 9); +// u = x2 + x14 | 0; +// x6 ^= u << 13 | u >>> (32 - 13); +// u = x6 + x2 | 0; +// x10 ^= u << 18 | u >>> (32 - 18); + +// u = x15 + x11 | 0; +// x3 ^= u << 7 | u >>> (32 - 7); +// u = x3 + x15 | 0; +// x7 ^= u << 9 | u >>> (32 - 9); +// u = x7 + x3 | 0; +// x11 ^= u << 13 | u >>> (32 - 13); +// u = x11 + x7 | 0; +// x15 ^= u << 18 | u >>> (32 - 18); + +// u = x0 + x3 | 0; +// x1 ^= u << 7 | u >>> (32 - 7); +// u = x1 + x0 | 0; +// x2 ^= u << 9 | u >>> (32 - 9); +// u = x2 + x1 | 0; +// x3 ^= u << 13 | u >>> (32 - 13); +// u = x3 + x2 | 0; +// x0 ^= u << 18 | u >>> (32 - 18); + +// u = x5 + x4 | 0; +// x6 ^= u << 7 | u >>> (32 - 7); +// u = x6 + x5 | 0; +// x7 ^= u << 9 | u >>> (32 - 9); +// u = x7 + x6 | 0; +// x4 ^= u << 13 | u >>> (32 - 13); +// u = x4 + x7 | 0; +// x5 ^= u << 18 | u >>> (32 - 18); + +// u = x10 + x9 | 0; +// x11 ^= u << 7 | u >>> (32 - 7); +// u = x11 + x10 | 0; +// x8 ^= u << 9 | u >>> (32 - 9); +// u = x8 + x11 | 0; +// x9 ^= u << 13 | u >>> (32 - 13); +// u = x9 + x8 | 0; +// x10 ^= u << 18 | u >>> (32 - 18); + +// u = x15 + x14 | 0; +// x12 ^= u << 7 | u >>> (32 - 7); +// u = x12 + x15 | 0; +// x13 ^= u << 9 | u >>> (32 - 9); +// u = x13 + x12 | 0; +// x14 ^= u << 13 | u >>> (32 - 13); +// u = x14 + x13 | 0; +// x15 ^= u << 18 | u >>> (32 - 18); +// } + +// o[0] = x0 >>> 0 & 0xff; +// o[1] = x0 >>> 8 & 0xff; +// o[2] = x0 >>> 16 & 0xff; +// o[3] = x0 >>> 24 & 0xff; + +// o[4] = x5 >>> 0 & 0xff; +// o[5] = x5 >>> 8 & 0xff; +// o[6] = x5 >>> 16 & 0xff; +// o[7] = x5 >>> 24 & 0xff; + +// o[8] = x10 >>> 0 & 0xff; +// o[9] = x10 >>> 8 & 0xff; +// o[10] = x10 >>> 16 & 0xff; +// o[11] = x10 >>> 24 & 0xff; + +// o[12] = x15 >>> 0 & 0xff; +// o[13] = x15 >>> 8 & 0xff; +// o[14] = x15 >>> 16 & 0xff; +// o[15] = x15 >>> 24 & 0xff; + +// o[16] = x6 >>> 0 & 0xff; +// o[17] = x6 >>> 8 & 0xff; +// o[18] = x6 >>> 16 & 0xff; +// o[19] = x6 >>> 24 & 0xff; + +// o[20] = x7 >>> 0 & 0xff; +// o[21] = x7 >>> 8 & 0xff; +// o[22] = x7 >>> 16 & 0xff; +// o[23] = x7 >>> 24 & 0xff; + +// o[24] = x8 >>> 0 & 0xff; +// o[25] = x8 >>> 8 & 0xff; +// o[26] = x8 >>> 16 & 0xff; +// o[27] = x8 >>> 24 & 0xff; + +// o[28] = x9 >>> 0 & 0xff; +// o[29] = x9 >>> 8 & 0xff; +// o[30] = x9 >>> 16 & 0xff; +// o[31] = x9 >>> 24 & 0xff; +// } + +// function crypto_core_salsa20(out, inp, k, c) { +// core_salsa20(out, inp, k, c); +// } + +// function crypto_core_hsalsa20(out, inp, k, c) { +// core_hsalsa20(out, inp, k, c); +// } + +// var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]); +// // "expand 32-byte k" + +// function crypto_stream_salsa20_xor(c, cpos, m, mpos, b, n, k) { +// var z = new Uint8Array(16), x = new Uint8Array(64); +// var u, i; +// for (i = 0; i < 16; i++) z[i] = 0; +// for (i = 0; i < 8; i++) z[i] = n[i]; +// while (b >= 64) { +// crypto_core_salsa20(x, z, k, sigma); +// for (i = 0; i < 64; i++) c[cpos + i] = m[mpos + i] ^ x[i]; +// u = 1; +// for (i = 8; i < 16; i++) { +// u = u + (z[i] & 0xff) | 0; +// z[i] = u & 0xff; +// u >>>= 8; +// } +// b -= 64; +// cpos += 64; +// mpos += 64; +// } +// if (b > 0) { +// crypto_core_salsa20(x, z, k, sigma); +// for (i = 0; i < b; i++) c[cpos + i] = m[mpos + i] ^ x[i]; +// } +// return 0; +// } + +// function crypto_stream_salsa20(c, cpos, b, n, k) { +// var z = new Uint8Array(16), x = new Uint8Array(64); +// var u, i; +// for (i = 0; i < 16; i++) z[i] = 0; +// for (i = 0; i < 8; i++) z[i] = n[i]; +// while (b >= 64) { +// crypto_core_salsa20(x, z, k, sigma); +// for (i = 0; i < 64; i++) c[cpos + i] = x[i]; +// u = 1; +// for (i = 8; i < 16; i++) { +// u = u + (z[i] & 0xff) | 0; +// z[i] = u & 0xff; +// u >>>= 8; +// } +// b -= 64; +// cpos += 64; +// } +// if (b > 0) { +// crypto_core_salsa20(x, z, k, sigma); +// for (i = 0; i < b; i++) c[cpos + i] = x[i]; +// } +// return 0; +// } + +// var poly1305 = function (key) { +// this.buffer = new Uint8Array(16); +// this.r = new Uint16Array(10); +// this.h = new Uint16Array(10); +// this.pad = new Uint16Array(8); +// this.leftover = 0; +// this.fin = 0; + +// var t0, t1, t2, t3, t4, t5, t6, t7; + +// t0 = key[0] & 0xff | (key[1] & 0xff) << 8; this.r[0] = (t0) & 0x1fff; +// t1 = key[2] & 0xff | (key[3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff; +// t2 = key[4] & 0xff | (key[5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03; +// t3 = key[6] & 0xff | (key[7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff; +// t4 = key[8] & 0xff | (key[9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff; +// this.r[5] = ((t4 >>> 1)) & 0x1ffe; +// t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff; +// t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81; +// t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff; +// this.r[9] = ((t7 >>> 5)) & 0x007f; + +// this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8; +// this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8; +// this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8; +// this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8; +// this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8; +// this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8; +// this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8; +// this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8; +// }; + +// poly1305.prototype.blocks = function (m, mpos, bytes) { +// var hibit = this.fin ? 0 : (1 << 11); +// var t0, t1, t2, t3, t4, t5, t6, t7, c; +// var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9; + +// 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]; + +// 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]; + +// while (bytes >= 16) { +// t0 = m[mpos + 0] & 0xff | (m[mpos + 1] & 0xff) << 8; h0 += (t0) & 0x1fff; +// t1 = m[mpos + 2] & 0xff | (m[mpos + 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff; +// t2 = m[mpos + 4] & 0xff | (m[mpos + 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff; +// t3 = m[mpos + 6] & 0xff | (m[mpos + 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff; +// t4 = m[mpos + 8] & 0xff | (m[mpos + 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff; +// h5 += ((t4 >>> 1)) & 0x1fff; +// t5 = m[mpos + 10] & 0xff | (m[mpos + 11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff; +// t6 = m[mpos + 12] & 0xff | (m[mpos + 13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff; +// t7 = m[mpos + 14] & 0xff | (m[mpos + 15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff; +// h9 += ((t7 >>> 5)) | hibit; + +// c = 0; + +// d0 = c; +// d0 += h0 * r0; +// d0 += h1 * (5 * r9); +// d0 += h2 * (5 * r8); +// d0 += h3 * (5 * r7); +// d0 += h4 * (5 * r6); +// c = (d0 >>> 13); d0 &= 0x1fff; +// d0 += h5 * (5 * r5); +// d0 += h6 * (5 * r4); +// d0 += h7 * (5 * r3); +// d0 += h8 * (5 * r2); +// d0 += h9 * (5 * r1); +// c += (d0 >>> 13); d0 &= 0x1fff; + +// d1 = c; +// d1 += h0 * r1; +// d1 += h1 * r0; +// d1 += h2 * (5 * r9); +// d1 += h3 * (5 * r8); +// d1 += h4 * (5 * r7); +// c = (d1 >>> 13); d1 &= 0x1fff; +// d1 += h5 * (5 * r6); +// d1 += h6 * (5 * r5); +// d1 += h7 * (5 * r4); +// d1 += h8 * (5 * r3); +// d1 += h9 * (5 * r2); +// c += (d1 >>> 13); d1 &= 0x1fff; + +// d2 = c; +// d2 += h0 * r2; +// d2 += h1 * r1; +// d2 += h2 * r0; +// d2 += h3 * (5 * r9); +// d2 += h4 * (5 * r8); +// c = (d2 >>> 13); d2 &= 0x1fff; +// d2 += h5 * (5 * r7); +// d2 += h6 * (5 * r6); +// d2 += h7 * (5 * r5); +// d2 += h8 * (5 * r4); +// d2 += h9 * (5 * r3); +// c += (d2 >>> 13); d2 &= 0x1fff; + +// d3 = c; +// d3 += h0 * r3; +// d3 += h1 * r2; +// d3 += h2 * r1; +// d3 += h3 * r0; +// d3 += h4 * (5 * r9); +// c = (d3 >>> 13); d3 &= 0x1fff; +// d3 += h5 * (5 * r8); +// d3 += h6 * (5 * r7); +// d3 += h7 * (5 * r6); +// d3 += h8 * (5 * r5); +// d3 += h9 * (5 * r4); +// c += (d3 >>> 13); d3 &= 0x1fff; + +// d4 = c; +// d4 += h0 * r4; +// d4 += h1 * r3; +// d4 += h2 * r2; +// d4 += h3 * r1; +// d4 += h4 * r0; +// c = (d4 >>> 13); d4 &= 0x1fff; +// d4 += h5 * (5 * r9); +// d4 += h6 * (5 * r8); +// d4 += h7 * (5 * r7); +// d4 += h8 * (5 * r6); +// d4 += h9 * (5 * r5); +// c += (d4 >>> 13); d4 &= 0x1fff; + +// d5 = c; +// d5 += h0 * r5; +// d5 += h1 * r4; +// d5 += h2 * r3; +// d5 += h3 * r2; +// d5 += h4 * r1; +// c = (d5 >>> 13); d5 &= 0x1fff; +// d5 += h5 * r0; +// d5 += h6 * (5 * r9); +// d5 += h7 * (5 * r8); +// d5 += h8 * (5 * r7); +// d5 += h9 * (5 * r6); +// c += (d5 >>> 13); d5 &= 0x1fff; + +// d6 = c; +// d6 += h0 * r6; +// d6 += h1 * r5; +// d6 += h2 * r4; +// d6 += h3 * r3; +// d6 += h4 * r2; +// c = (d6 >>> 13); d6 &= 0x1fff; +// d6 += h5 * r1; +// d6 += h6 * r0; +// d6 += h7 * (5 * r9); +// d6 += h8 * (5 * r8); +// d6 += h9 * (5 * r7); +// c += (d6 >>> 13); d6 &= 0x1fff; + +// d7 = c; +// d7 += h0 * r7; +// d7 += h1 * r6; +// d7 += h2 * r5; +// d7 += h3 * r4; +// d7 += h4 * r3; +// c = (d7 >>> 13); d7 &= 0x1fff; +// d7 += h5 * r2; +// d7 += h6 * r1; +// d7 += h7 * r0; +// d7 += h8 * (5 * r9); +// d7 += h9 * (5 * r8); +// c += (d7 >>> 13); d7 &= 0x1fff; + +// d8 = c; +// d8 += h0 * r8; +// d8 += h1 * r7; +// d8 += h2 * r6; +// d8 += h3 * r5; +// d8 += h4 * r4; +// c = (d8 >>> 13); d8 &= 0x1fff; +// d8 += h5 * r3; +// d8 += h6 * r2; +// d8 += h7 * r1; +// d8 += h8 * r0; +// d8 += h9 * (5 * r9); +// c += (d8 >>> 13); d8 &= 0x1fff; + +// d9 = c; +// d9 += h0 * r9; +// d9 += h1 * r8; +// d9 += h2 * r7; +// d9 += h3 * r6; +// d9 += h4 * r5; +// c = (d9 >>> 13); d9 &= 0x1fff; +// d9 += h5 * r4; +// d9 += h6 * r3; +// d9 += h7 * r2; +// d9 += h8 * r1; +// d9 += h9 * r0; +// c += (d9 >>> 13); d9 &= 0x1fff; + +// c = (((c << 2) + c)) | 0; +// c = (c + d0) | 0; +// d0 = c & 0x1fff; +// c = (c >>> 13); +// d1 += c; + +// h0 = d0; +// h1 = d1; +// h2 = d2; +// h3 = d3; +// h4 = d4; +// h5 = d5; +// h6 = d6; +// h7 = d7; +// h8 = d8; +// h9 = d9; + +// mpos += 16; +// bytes -= 16; +// } +// this.h[0] = h0; +// this.h[1] = h1; +// this.h[2] = h2; +// this.h[3] = h3; +// this.h[4] = h4; +// this.h[5] = h5; +// this.h[6] = h6; +// this.h[7] = h7; +// this.h[8] = h8; +// this.h[9] = h9; +// }; + +// poly1305.prototype.finish = function (mac, macpos) { +// var g = new Uint16Array(10); +// var c, mask, f, i; + +// if (this.leftover) { +// i = this.leftover; +// this.buffer[i++] = 1; +// for (; i < 16; i++) this.buffer[i] = 0; +// this.fin = 1; +// this.blocks(this.buffer, 0, 16); +// } + +// c = this.h[1] >>> 13; +// this.h[1] &= 0x1fff; +// for (i = 2; i < 10; i++) { +// this.h[i] += c; +// c = this.h[i] >>> 13; +// this.h[i] &= 0x1fff; +// } +// this.h[0] += (c * 5); +// c = this.h[0] >>> 13; +// this.h[0] &= 0x1fff; +// this.h[1] += c; +// c = this.h[1] >>> 13; +// this.h[1] &= 0x1fff; +// this.h[2] += c; + +// g[0] = this.h[0] + 5; +// c = g[0] >>> 13; +// g[0] &= 0x1fff; +// for (i = 1; i < 10; i++) { +// g[i] = this.h[i] + c; +// c = g[i] >>> 13; +// g[i] &= 0x1fff; +// } +// g[9] -= (1 << 13); + +// mask = (c ^ 1) - 1; +// for (i = 0; i < 10; i++) g[i] &= mask; +// mask = ~mask; +// for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i]; + +// this.h[0] = ((this.h[0]) | (this.h[1] << 13)) & 0xffff; +// this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10)) & 0xffff; +// this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7)) & 0xffff; +// this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4)) & 0xffff; +// this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff; +// this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11)) & 0xffff; +// this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8)) & 0xffff; +// this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5)) & 0xffff; + +// f = this.h[0] + this.pad[0]; +// this.h[0] = f & 0xffff; +// for (i = 1; i < 8; i++) { +// f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0; +// this.h[i] = f & 0xffff; +// } + +// mac[macpos + 0] = (this.h[0] >>> 0) & 0xff; +// mac[macpos + 1] = (this.h[0] >>> 8) & 0xff; +// mac[macpos + 2] = (this.h[1] >>> 0) & 0xff; +// mac[macpos + 3] = (this.h[1] >>> 8) & 0xff; +// mac[macpos + 4] = (this.h[2] >>> 0) & 0xff; +// mac[macpos + 5] = (this.h[2] >>> 8) & 0xff; +// mac[macpos + 6] = (this.h[3] >>> 0) & 0xff; +// mac[macpos + 7] = (this.h[3] >>> 8) & 0xff; +// mac[macpos + 8] = (this.h[4] >>> 0) & 0xff; +// mac[macpos + 9] = (this.h[4] >>> 8) & 0xff; +// mac[macpos + 10] = (this.h[5] >>> 0) & 0xff; +// mac[macpos + 11] = (this.h[5] >>> 8) & 0xff; +// mac[macpos + 12] = (this.h[6] >>> 0) & 0xff; +// mac[macpos + 13] = (this.h[6] >>> 8) & 0xff; +// mac[macpos + 14] = (this.h[7] >>> 0) & 0xff; +// mac[macpos + 15] = (this.h[7] >>> 8) & 0xff; +// }; + +// poly1305.prototype.update = function (m, mpos, bytes) { +// var i, want; + +// if (this.leftover) { +// want = (16 - this.leftover); +// if (want > bytes) +// want = bytes; +// for (i = 0; i < want; i++) +// this.buffer[this.leftover + i] = m[mpos + i]; +// bytes -= want; +// mpos += want; +// this.leftover += want; +// if (this.leftover < 16) +// return; +// this.blocks(this.buffer, 0, 16); +// this.leftover = 0; +// } + +// if (bytes >= 16) { +// want = bytes - (bytes % 16); +// this.blocks(m, mpos, want); +// mpos += want; +// bytes -= want; +// } + +// if (bytes) { +// for (i = 0; i < bytes; i++) +// this.buffer[this.leftover + i] = m[mpos + i]; +// this.leftover += bytes; +// } +// }; + +// function checkLengths(k, n) { +// if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size'); +// if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size'); +// } function checkArrayTypes() { @@ -783,77 +783,77 @@ function checkArrayTypes() { } } -function crypto_stream(c, cpos, d, n, k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s, n, k, sigma); - var sn = new Uint8Array(8); - for (var i = 0; i < 8; i++) sn[i] = n[i + 16]; - return crypto_stream_salsa20(c, cpos, d, sn, s); -} - - -function crypto_stream_xor(c, cpos, m, mpos, d, n, k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s, n, k, sigma); - var sn = new Uint8Array(8); - for (var i = 0; i < 8; i++) sn[i] = n[i + 16]; - return crypto_stream_salsa20_xor(c, cpos, m, mpos, d, sn, s); -} - -function crypto_onetimeauth(out, outpos, m, mpos, n, k) { - var s = new poly1305(k); - s.update(m, mpos, n); - s.finish(out, outpos); - return 0; -} - -function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) { - var x = new Uint8Array(16); - crypto_onetimeauth(x, 0, m, mpos, n, k); - return crypto_verify_16(h, hpos, x, 0); -} - -function crypto_secretbox(c, m, d, n, k) { - var i; - if (d < 32) return -1; - crypto_stream_xor(c, 0, m, 0, d, n, k); - crypto_onetimeauth(c, 16, c, 32, d - 32, c); - for (i = 0; i < 16; i++) c[i] = 0; - return 0; -} - -function crypto_secretbox_open(m, c, d, n, k) { - var i; - var x = new Uint8Array(32); - if (d < 32) return -1; - crypto_stream(x, 0, 32, n, k); - if (crypto_onetimeauth_verify(c, 16, c, 32, d - 32, x) !== 0) return -1; - crypto_stream_xor(m, 0, c, 0, d, n, k); - for (i = 0; i < 32; i++) m[i] = 0; - return 0; -} +// function crypto_stream(c, cpos, d, n, k) { +// var s = new Uint8Array(32); +// crypto_core_hsalsa20(s, n, k, sigma); +// var sn = new Uint8Array(8); +// for (var i = 0; i < 8; i++) sn[i] = n[i + 16]; +// return crypto_stream_salsa20(c, cpos, d, sn, s); +// } + + +// function crypto_stream_xor(c, cpos, m, mpos, d, n, k) { +// var s = new Uint8Array(32); +// crypto_core_hsalsa20(s, n, k, sigma); +// var sn = new Uint8Array(8); +// for (var i = 0; i < 8; i++) sn[i] = n[i + 16]; +// return crypto_stream_salsa20_xor(c, cpos, m, mpos, d, sn, s); +// } + +// function crypto_onetimeauth(out, outpos, m, mpos, n, k) { +// var s = new poly1305(k); +// s.update(m, mpos, n); +// s.finish(out, outpos); +// return 0; +// } + +// function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) { +// var x = new Uint8Array(16); +// crypto_onetimeauth(x, 0, m, mpos, n, k); +// return crypto_verify_16(h, hpos, x, 0); +// } + +// function crypto_secretbox(c, m, d, n, k) { +// var i; +// if (d < 32) return -1; +// crypto_stream_xor(c, 0, m, 0, d, n, k); +// crypto_onetimeauth(c, 16, c, 32, d - 32, c); +// for (i = 0; i < 16; i++) c[i] = 0; +// return 0; +// } + +// function crypto_secretbox_open(m, c, d, n, k) { +// var i; +// var x = new Uint8Array(32); +// if (d < 32) return -1; +// crypto_stream(x, 0, 32, n, k); +// if (crypto_onetimeauth_verify(c, 16, c, 32, d - 32, x) !== 0) return -1; +// crypto_stream_xor(m, 0, c, 0, d, n, k); +// for (i = 0; i < 32; i++) m[i] = 0; +// return 0; +// } nacl.secretbox = function (msg, nonce, key) { checkArrayTypes(msg, nonce, key); - checkLengths(key, nonce); - var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length); - var c = new Uint8Array(m.length); - for (var i = 0; i < msg.length; i++) m[i + crypto_secretbox_ZEROBYTES] = msg[i]; - crypto_secretbox(c, m, m.length, nonce, key); - return c.subarray(crypto_secretbox_BOXZEROBYTES); +// checkLengths(key, nonce); +// var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length); +// var c = new Uint8Array(m.length); +// for (var i = 0; i < msg.length; i++) m[i + crypto_secretbox_ZEROBYTES] = msg[i]; +// crypto_secretbox(c, m, m.length, nonce, key); +// return c.subarray(crypto_secretbox_BOXZEROBYTES); }; nacl.secretbox.open = function (box, nonce, key) { checkArrayTypes(box, nonce, key); - checkLengths(key, nonce); - var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length); - var m = new Uint8Array(c.length); - for (var i = 0; i < box.length; i++) c[i + crypto_secretbox_BOXZEROBYTES] = box[i]; - if (c.length < 32) return null; - if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null; - return m.subarray(crypto_secretbox_ZEROBYTES); +// checkLengths(key, nonce); +// var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length); +// var m = new Uint8Array(c.length); +// for (var i = 0; i < box.length; i++) c[i + crypto_secretbox_BOXZEROBYTES] = box[i]; +// if (c.length < 32) return null; +// if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null; +// return m.subarray(crypto_secretbox_ZEROBYTES); }; self.secretbox = nacl.secretbox diff --git a/sw_scripts/safari-notifications.js b/sw_scripts/safari-notifications.js index 4d5d2a4..f764543 100644 --- a/sw_scripts/safari-notifications.js +++ b/sw_scripts/safari-notifications.js @@ -1,5 +1,5 @@ -//importScripts("nacl.js") +importScripts("nacl.js") function validateBase64(s) { if (!(/^(?:[A-Za-z0-9+\/]{2}[A-Za-z0-9+\/]{2})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.test(s))) {