@basmilius/apple-encryption 0.7.2 → 0.8.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["generateKeyPair","tweetnacl","tweetnacl"],"sources":["../../../node_modules/.bun/@stablelib+int@2.0.1/node_modules/@stablelib/int/lib/int.js","../../../node_modules/.bun/@stablelib+binary@2.0.1/node_modules/@stablelib/binary/lib/binary.js","../../../node_modules/.bun/@stablelib+wipe@2.0.1/node_modules/@stablelib/wipe/lib/wipe.js","../../../node_modules/.bun/@stablelib+chacha@2.0.1/node_modules/@stablelib/chacha/lib/chacha.js","../../../node_modules/.bun/@stablelib+constant-time@2.0.1/node_modules/@stablelib/constant-time/lib/constant-time.js","../../../node_modules/.bun/@stablelib+poly1305@2.0.1/node_modules/@stablelib/poly1305/lib/poly1305.js","../../../node_modules/.bun/@stablelib+chacha20poly1305@2.0.1/node_modules/@stablelib/chacha20poly1305/lib/chacha20poly1305.js","../src/chacha20.ts","../../../node_modules/.bun/tweetnacl@1.0.3/node_modules/tweetnacl/nacl-fast.js","../src/curve25519.ts","../src/ed25519.ts","../src/hkdf.ts"],"sourcesContent":["// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n/**\n * Package int provides helper functions for integerss.\n */\n/** 32-bit integer multiplication. */\nexport const mul = Math.imul;\n/** 32-bit integer addition. */\nexport function add(a, b) {\n return (a + b) | 0;\n}\n/** 32-bit integer subtraction. */\nexport function sub(a, b) {\n return (a - b) | 0;\n}\n/** 32-bit integer left rotation */\nexport function rotl(x, n) {\n return x << n | x >>> (32 - n);\n}\n/** 32-bit integer left rotation */\nexport function rotr(x, n) {\n return x << (32 - n) | x >>> n;\n}\n/**\n * Returns true if the argument is an integer number.\n */\nexport const isInteger = Number.isInteger;\n/**\n * Math.pow(2, 53) - 1\n */\nexport const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER;\n/**\n * Returns true if the argument is a safe integer number\n * (-MIN_SAFE_INTEGER < number <= MAX_SAFE_INTEGER)\n */\nexport const isSafeInteger = Number.isSafeInteger;\n//# sourceMappingURL=int.js.map","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n/**\n * Package binary provides functions for encoding and decoding numbers in byte arrays.\n */\nimport { isSafeInteger } from \"@stablelib/int\";\n// TODO(dchest): add asserts for correct value ranges and array offsets.\n/**\n * Reads 2 bytes from array starting at offset as big-endian\n * signed 16-bit integer and returns it.\n */\nexport function readInt16BE(array, offset = 0) {\n return (((array[offset + 0] << 8) | array[offset + 1]) << 16) >> 16;\n}\n/**\n * Reads 2 bytes from array starting at offset as big-endian\n * unsigned 16-bit integer and returns it.\n */\nexport function readUint16BE(array, offset = 0) {\n return ((array[offset + 0] << 8) | array[offset + 1]) >>> 0;\n}\n/**\n * Reads 2 bytes from array starting at offset as little-endian\n * signed 16-bit integer and returns it.\n */\nexport function readInt16LE(array, offset = 0) {\n return (((array[offset + 1] << 8) | array[offset]) << 16) >> 16;\n}\n/**\n * Reads 2 bytes from array starting at offset as little-endian\n * unsigned 16-bit integer and returns it.\n */\nexport function readUint16LE(array, offset = 0) {\n return ((array[offset + 1] << 8) | array[offset]) >>> 0;\n}\n/**\n * Writes 2-byte big-endian representation of 16-bit unsigned\n * value to byte array starting at offset.\n *\n * If byte array is not given, creates a new 2-byte one.\n *\n * Returns the output byte array.\n */\nexport function writeUint16BE(value, out = new Uint8Array(2), offset = 0) {\n out[offset + 0] = value >>> 8;\n out[offset + 1] = value >>> 0;\n return out;\n}\nexport const writeInt16BE = writeUint16BE;\n/**\n * Writes 2-byte little-endian representation of 16-bit unsigned\n * value to array starting at offset.\n *\n * If byte array is not given, creates a new 2-byte one.\n *\n * Returns the output byte array.\n */\nexport function writeUint16LE(value, out = new Uint8Array(2), offset = 0) {\n out[offset + 0] = value >>> 0;\n out[offset + 1] = value >>> 8;\n return out;\n}\nexport const writeInt16LE = writeUint16LE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * signed 32-bit integer and returns it.\n */\nexport function readInt32BE(array, offset = 0) {\n return (array[offset] << 24) |\n (array[offset + 1] << 16) |\n (array[offset + 2] << 8) |\n array[offset + 3];\n}\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * unsigned 32-bit integer and returns it.\n */\nexport function readUint32BE(array, offset = 0) {\n return ((array[offset] << 24) |\n (array[offset + 1] << 16) |\n (array[offset + 2] << 8) |\n array[offset + 3]) >>> 0;\n}\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * signed 32-bit integer and returns it.\n */\nexport function readInt32LE(array, offset = 0) {\n return (array[offset + 3] << 24) |\n (array[offset + 2] << 16) |\n (array[offset + 1] << 8) |\n array[offset];\n}\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * unsigned 32-bit integer and returns it.\n */\nexport function readUint32LE(array, offset = 0) {\n return ((array[offset + 3] << 24) |\n (array[offset + 2] << 16) |\n (array[offset + 1] << 8) |\n array[offset]) >>> 0;\n}\n/**\n * Writes 4-byte big-endian representation of 32-bit unsigned\n * value to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nexport function writeUint32BE(value, out = new Uint8Array(4), offset = 0) {\n out[offset + 0] = value >>> 24;\n out[offset + 1] = value >>> 16;\n out[offset + 2] = value >>> 8;\n out[offset + 3] = value >>> 0;\n return out;\n}\nexport const writeInt32BE = writeUint32BE;\n/**\n * Writes 4-byte little-endian representation of 32-bit unsigned\n * value to array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nexport function writeUint32LE(value, out = new Uint8Array(4), offset = 0) {\n out[offset + 0] = value >>> 0;\n out[offset + 1] = value >>> 8;\n out[offset + 2] = value >>> 16;\n out[offset + 3] = value >>> 24;\n return out;\n}\nexport const writeInt32LE = writeUint32LE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * signed 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports exact\n * numbers in range -9007199254740991 to 9007199254740991.\n * If the number stored in the byte array is outside this range,\n * the result is not exact.\n */\nexport function readInt64BE(array, offset = 0) {\n const hi = readInt32BE(array, offset);\n const lo = readInt32BE(array, offset + 4);\n return hi * 0x100000000 + lo - ((lo >> 31) * 0x100000000);\n}\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * unsigned 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports values up to 2^53-1.\n */\nexport function readUint64BE(array, offset = 0) {\n const hi = readUint32BE(array, offset);\n const lo = readUint32BE(array, offset + 4);\n return hi * 0x100000000 + lo;\n}\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * signed 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports exact\n * numbers in range -9007199254740991 to 9007199254740991.\n * If the number stored in the byte array is outside this range,\n * the result is not exact.\n */\nexport function readInt64LE(array, offset = 0) {\n const lo = readInt32LE(array, offset);\n const hi = readInt32LE(array, offset + 4);\n return hi * 0x100000000 + lo - ((lo >> 31) * 0x100000000);\n}\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * unsigned 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports values up to 2^53-1.\n */\nexport function readUint64LE(array, offset = 0) {\n const lo = readUint32LE(array, offset);\n const hi = readUint32LE(array, offset + 4);\n return hi * 0x100000000 + lo;\n}\n/**\n * Writes 8-byte big-endian representation of 64-bit unsigned\n * value to byte array starting at offset.\n *\n * Due to JavaScript limitation, supports values up to 2^53-1.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nexport function writeUint64BE(value, out = new Uint8Array(8), offset = 0) {\n writeUint32BE(value / 0x100000000 >>> 0, out, offset);\n writeUint32BE(value >>> 0, out, offset + 4);\n return out;\n}\nexport const writeInt64BE = writeUint64BE;\n/**\n * Writes 8-byte little-endian representation of 64-bit unsigned\n * value to byte array starting at offset.\n *\n * Due to JavaScript limitation, supports values up to 2^53-1.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nexport function writeUint64LE(value, out = new Uint8Array(8), offset = 0) {\n writeUint32LE(value >>> 0, out, offset);\n writeUint32LE(value / 0x100000000 >>> 0, out, offset + 4);\n return out;\n}\nexport const writeInt64LE = writeUint64LE;\n/**\n * Reads bytes from array starting at offset as big-endian\n * unsigned bitLen-bit integer and returns it.\n *\n * Supports bit lengths divisible by 8, up to 48.\n */\nexport function readUintBE(bitLength, array, offset = 0) {\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"readUintBE supports only bitLengths divisible by 8\");\n }\n if (bitLength / 8 > array.length - offset) {\n throw new Error(\"readUintBE: array is too short for the given bitLength\");\n }\n let result = 0;\n let mul = 1;\n for (let i = bitLength / 8 + offset - 1; i >= offset; i--) {\n result += array[i] * mul;\n mul *= 256;\n }\n return result;\n}\n/**\n * Reads bytes from array starting at offset as little-endian\n * unsigned bitLen-bit integer and returns it.\n *\n * Supports bit lengths divisible by 8, up to 48.\n */\nexport function readUintLE(bitLength, array, offset = 0) {\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"readUintLE supports only bitLengths divisible by 8\");\n }\n if (bitLength / 8 > array.length - offset) {\n throw new Error(\"readUintLE: array is too short for the given bitLength\");\n }\n let result = 0;\n let mul = 1;\n for (let i = offset; i < offset + bitLength / 8; i++) {\n result += array[i] * mul;\n mul *= 256;\n }\n return result;\n}\n/**\n * Writes a big-endian representation of bitLen-bit unsigned\n * value to array starting at offset.\n *\n * Supports bit lengths divisible by 8, up to 48.\n *\n * If byte array is not given, creates a new one.\n *\n * Returns the output byte array.\n */\nexport function writeUintBE(bitLength, value, out = new Uint8Array(bitLength / 8), offset = 0) {\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"writeUintBE supports only bitLengths divisible by 8\");\n }\n if (!isSafeInteger(value)) {\n throw new Error(\"writeUintBE value must be an integer\");\n }\n let div = 1;\n for (let i = bitLength / 8 + offset - 1; i >= offset; i--) {\n out[i] = (value / div) & 0xff;\n div *= 256;\n }\n return out;\n}\n/**\n * Writes a little-endian representation of bitLen-bit unsigned\n * value to array starting at offset.\n *\n * Supports bit lengths divisible by 8, up to 48.\n *\n * If byte array is not given, creates a new one.\n *\n * Returns the output byte array.\n */\nexport function writeUintLE(bitLength, value, out = new Uint8Array(bitLength / 8), offset = 0) {\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"writeUintLE supports only bitLengths divisible by 8\");\n }\n if (!isSafeInteger(value)) {\n throw new Error(\"writeUintLE value must be an integer\");\n }\n let div = 1;\n for (let i = offset; i < offset + bitLength / 8; i++) {\n out[i] = (value / div) & 0xff;\n div *= 256;\n }\n return out;\n}\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * 32-bit floating-point number and returns it.\n */\nexport function readFloat32BE(array, offset = 0) {\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset);\n}\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * 32-bit floating-point number and returns it.\n */\nexport function readFloat32LE(array, offset = 0) {\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset, true);\n}\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * 64-bit floating-point number (\"double\") and returns it.\n */\nexport function readFloat64BE(array, offset = 0) {\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset);\n}\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * 64-bit floating-point number (\"double\") and returns it.\n */\nexport function readFloat64LE(array, offset = 0) {\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset, true);\n}\n/**\n * Writes 4-byte big-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nexport function writeFloat32BE(value, out = new Uint8Array(4), offset = 0) {\n const view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat32(offset, value);\n return out;\n}\n/**\n * Writes 4-byte little-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nexport function writeFloat32LE(value, out = new Uint8Array(4), offset = 0) {\n const view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat32(offset, value, true);\n return out;\n}\n/**\n * Writes 8-byte big-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nexport function writeFloat64BE(value, out = new Uint8Array(8), offset = 0) {\n const view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat64(offset, value);\n return out;\n}\n/**\n * Writes 8-byte little-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nexport function writeFloat64LE(value, out = new Uint8Array(8), offset = 0) {\n const view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat64(offset, value, true);\n return out;\n}\n//# sourceMappingURL=binary.js.map","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n/**\n * Sets all values in the given array to zero and returns it.\n *\n * The fact that it sets bytes to zero can be relied on.\n *\n * There is no guarantee that this function makes data disappear from memory,\n * as runtime implementation can, for example, have copying garbage collector\n * that will make copies of sensitive data before we wipe it. Or that an\n * operating system will write our data to swap or sleep image. Another thing\n * is that an optimizing compiler can remove calls to this function or make it\n * no-op. There's nothing we can do with it, so we just do our best and hope\n * that everything will be okay and good will triumph over evil.\n */\nexport function wipe(array) {\n // Right now it's similar to array.fill(0). If it turns\n // out that runtimes optimize this call away, maybe\n // we can try something else.\n for (let i = 0; i < array.length; i++) {\n array[i] = 0;\n }\n return array;\n}\n//# sourceMappingURL=wipe.js.map","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n/**\n * Package chacha implements ChaCha stream cipher.\n */\nimport { writeUint32LE } from \"@stablelib/binary\";\nimport { wipe } from \"@stablelib/wipe\";\n// Number of ChaCha rounds (ChaCha20).\nconst ROUNDS = 20;\n// Applies the ChaCha core function to 16-byte input,\n// 32-byte key key, and puts the result into 64-byte array out.\nfunction core(out, input, key) {\n let j0 = 0x61707865; // \"expa\" -- ChaCha's \"sigma\" constant\n let j1 = 0x3320646E; // \"nd 3\" for 32-byte keys\n let j2 = 0x79622D32; // \"2-by\"\n let j3 = 0x6B206574; // \"te k\"\n let j4 = (key[3] << 24) | (key[2] << 16) | (key[1] << 8) | key[0];\n let j5 = (key[7] << 24) | (key[6] << 16) | (key[5] << 8) | key[4];\n let j6 = (key[11] << 24) | (key[10] << 16) | (key[9] << 8) | key[8];\n let j7 = (key[15] << 24) | (key[14] << 16) | (key[13] << 8) | key[12];\n let j8 = (key[19] << 24) | (key[18] << 16) | (key[17] << 8) | key[16];\n let j9 = (key[23] << 24) | (key[22] << 16) | (key[21] << 8) | key[20];\n let j10 = (key[27] << 24) | (key[26] << 16) | (key[25] << 8) | key[24];\n let j11 = (key[31] << 24) | (key[30] << 16) | (key[29] << 8) | key[28];\n let j12 = (input[3] << 24) | (input[2] << 16) | (input[1] << 8) | input[0];\n let j13 = (input[7] << 24) | (input[6] << 16) | (input[5] << 8) | input[4];\n let j14 = (input[11] << 24) | (input[10] << 16) | (input[9] << 8) | input[8];\n let j15 = (input[15] << 24) | (input[14] << 16) | (input[13] << 8) | input[12];\n let x0 = j0;\n let x1 = j1;\n let x2 = j2;\n let x3 = j3;\n let x4 = j4;\n let x5 = j5;\n let x6 = j6;\n let x7 = j7;\n let x8 = j8;\n let x9 = j9;\n let x10 = j10;\n let x11 = j11;\n let x12 = j12;\n let x13 = j13;\n let x14 = j14;\n let x15 = j15;\n for (let i = 0; i < ROUNDS; i += 2) {\n x0 = x0 + x4 | 0;\n x12 ^= x0;\n x12 = x12 >>> (32 - 16) | x12 << 16;\n x8 = x8 + x12 | 0;\n x4 ^= x8;\n x4 = x4 >>> (32 - 12) | x4 << 12;\n x1 = x1 + x5 | 0;\n x13 ^= x1;\n x13 = x13 >>> (32 - 16) | x13 << 16;\n x9 = x9 + x13 | 0;\n x5 ^= x9;\n x5 = x5 >>> (32 - 12) | x5 << 12;\n x2 = x2 + x6 | 0;\n x14 ^= x2;\n x14 = x14 >>> (32 - 16) | x14 << 16;\n x10 = x10 + x14 | 0;\n x6 ^= x10;\n x6 = x6 >>> (32 - 12) | x6 << 12;\n x3 = x3 + x7 | 0;\n x15 ^= x3;\n x15 = x15 >>> (32 - 16) | x15 << 16;\n x11 = x11 + x15 | 0;\n x7 ^= x11;\n x7 = x7 >>> (32 - 12) | x7 << 12;\n x2 = x2 + x6 | 0;\n x14 ^= x2;\n x14 = x14 >>> (32 - 8) | x14 << 8;\n x10 = x10 + x14 | 0;\n x6 ^= x10;\n x6 = x6 >>> (32 - 7) | x6 << 7;\n x3 = x3 + x7 | 0;\n x15 ^= x3;\n x15 = x15 >>> (32 - 8) | x15 << 8;\n x11 = x11 + x15 | 0;\n x7 ^= x11;\n x7 = x7 >>> (32 - 7) | x7 << 7;\n x1 = x1 + x5 | 0;\n x13 ^= x1;\n x13 = x13 >>> (32 - 8) | x13 << 8;\n x9 = x9 + x13 | 0;\n x5 ^= x9;\n x5 = x5 >>> (32 - 7) | x5 << 7;\n x0 = x0 + x4 | 0;\n x12 ^= x0;\n x12 = x12 >>> (32 - 8) | x12 << 8;\n x8 = x8 + x12 | 0;\n x4 ^= x8;\n x4 = x4 >>> (32 - 7) | x4 << 7;\n x0 = x0 + x5 | 0;\n x15 ^= x0;\n x15 = x15 >>> (32 - 16) | x15 << 16;\n x10 = x10 + x15 | 0;\n x5 ^= x10;\n x5 = x5 >>> (32 - 12) | x5 << 12;\n x1 = x1 + x6 | 0;\n x12 ^= x1;\n x12 = x12 >>> (32 - 16) | x12 << 16;\n x11 = x11 + x12 | 0;\n x6 ^= x11;\n x6 = x6 >>> (32 - 12) | x6 << 12;\n x2 = x2 + x7 | 0;\n x13 ^= x2;\n x13 = x13 >>> (32 - 16) | x13 << 16;\n x8 = x8 + x13 | 0;\n x7 ^= x8;\n x7 = x7 >>> (32 - 12) | x7 << 12;\n x3 = x3 + x4 | 0;\n x14 ^= x3;\n x14 = x14 >>> (32 - 16) | x14 << 16;\n x9 = x9 + x14 | 0;\n x4 ^= x9;\n x4 = x4 >>> (32 - 12) | x4 << 12;\n x2 = x2 + x7 | 0;\n x13 ^= x2;\n x13 = x13 >>> (32 - 8) | x13 << 8;\n x8 = x8 + x13 | 0;\n x7 ^= x8;\n x7 = x7 >>> (32 - 7) | x7 << 7;\n x3 = x3 + x4 | 0;\n x14 ^= x3;\n x14 = x14 >>> (32 - 8) | x14 << 8;\n x9 = x9 + x14 | 0;\n x4 ^= x9;\n x4 = x4 >>> (32 - 7) | x4 << 7;\n x1 = x1 + x6 | 0;\n x12 ^= x1;\n x12 = x12 >>> (32 - 8) | x12 << 8;\n x11 = x11 + x12 | 0;\n x6 ^= x11;\n x6 = x6 >>> (32 - 7) | x6 << 7;\n x0 = x0 + x5 | 0;\n x15 ^= x0;\n x15 = x15 >>> (32 - 8) | x15 << 8;\n x10 = x10 + x15 | 0;\n x5 ^= x10;\n x5 = x5 >>> (32 - 7) | x5 << 7;\n }\n writeUint32LE(x0 + j0 | 0, out, 0);\n writeUint32LE(x1 + j1 | 0, out, 4);\n writeUint32LE(x2 + j2 | 0, out, 8);\n writeUint32LE(x3 + j3 | 0, out, 12);\n writeUint32LE(x4 + j4 | 0, out, 16);\n writeUint32LE(x5 + j5 | 0, out, 20);\n writeUint32LE(x6 + j6 | 0, out, 24);\n writeUint32LE(x7 + j7 | 0, out, 28);\n writeUint32LE(x8 + j8 | 0, out, 32);\n writeUint32LE(x9 + j9 | 0, out, 36);\n writeUint32LE(x10 + j10 | 0, out, 40);\n writeUint32LE(x11 + j11 | 0, out, 44);\n writeUint32LE(x12 + j12 | 0, out, 48);\n writeUint32LE(x13 + j13 | 0, out, 52);\n writeUint32LE(x14 + j14 | 0, out, 56);\n writeUint32LE(x15 + j15 | 0, out, 60);\n}\n/**\n * Encrypt src with ChaCha20 stream generated for the given 32-byte key and\n * 8-byte (as in original implementation) or 12-byte (as in RFC7539) nonce and\n * write the result into dst and return it.\n *\n * dst and src may be the same, but otherwise must not overlap.\n *\n * If nonce is 12 bytes, users should not encrypt more than 256 GiB with the\n * same key and nonce, otherwise the stream will repeat. The function will\n * throw error if counter overflows to prevent this.\n *\n * If nonce is 8 bytes, the output is practically unlimited (2^70 bytes, which\n * is more than a million petabytes). However, it is not recommended to\n * generate 8-byte nonces randomly, as the chance of collision is high.\n *\n * Never use the same key and nonce to encrypt more than one message.\n *\n * If nonceInplaceCounterLength is not 0, the nonce is assumed to be a 16-byte\n * array with stream counter in first nonceInplaceCounterLength bytes and nonce\n * in the last remaining bytes. The counter will be incremented inplace for\n * each ChaCha block. This is useful if you need to encrypt one stream of data\n * in chunks.\n */\nexport function streamXOR(key, nonce, src, dst, nonceInplaceCounterLength = 0) {\n // We only support 256-bit keys.\n if (key.length !== 32) {\n throw new Error(\"ChaCha: key size must be 32 bytes\");\n }\n if (dst.length < src.length) {\n throw new Error(\"ChaCha: destination is shorter than source\");\n }\n let nc;\n let counterLength;\n if (nonceInplaceCounterLength === 0) {\n if (nonce.length !== 8 && nonce.length !== 12) {\n throw new Error(\"ChaCha nonce must be 8 or 12 bytes\");\n }\n nc = new Uint8Array(16);\n // First counterLength bytes of nc are counter, starting with zero.\n counterLength = nc.length - nonce.length;\n // Last bytes of nc after counterLength are nonce, set them.\n nc.set(nonce, counterLength);\n }\n else {\n if (nonce.length !== 16) {\n throw new Error(\"ChaCha nonce with counter must be 16 bytes\");\n }\n // This will update passed nonce with counter inplace.\n nc = nonce;\n counterLength = nonceInplaceCounterLength;\n }\n // Allocate temporary space for ChaCha block.\n const block = new Uint8Array(64);\n for (let i = 0; i < src.length; i += 64) {\n // Generate a block.\n core(block, nc, key);\n // XOR block bytes with src into dst.\n for (let j = i; j < i + 64 && j < src.length; j++) {\n dst[j] = src[j] ^ block[j - i];\n }\n // Increment counter.\n incrementCounter(nc, 0, counterLength);\n }\n // Cleanup temporary space.\n wipe(block);\n if (nonceInplaceCounterLength === 0) {\n // Cleanup counter.\n wipe(nc);\n }\n return dst;\n}\n/**\n * Generate ChaCha20 stream for the given 32-byte key and 8-byte or 12-byte\n * nonce and write it into dst and return it.\n *\n * Never use the same key and nonce to generate more than one stream.\n *\n * If nonceInplaceCounterLength is not 0, it behaves the same with respect to\n * the nonce as described in the streamXOR documentation.\n *\n * stream is like streamXOR with all-zero src.\n */\nexport function stream(key, nonce, dst, nonceInplaceCounterLength = 0) {\n wipe(dst);\n return streamXOR(key, nonce, dst, dst, nonceInplaceCounterLength);\n}\nfunction incrementCounter(counter, pos, len) {\n let carry = 1;\n while (len--) {\n carry = carry + (counter[pos] & 0xff) | 0;\n counter[pos] = carry & 0xff;\n carry >>>= 8;\n pos++;\n }\n if (carry > 0) {\n throw new Error(\"ChaCha: counter overflow\");\n }\n}\n//# sourceMappingURL=chacha.js.map","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n/**\n * Package constant-time provides functions for performing algorithmically constant-time operations.\n */\n/**\n * NOTE! Due to the inability to guarantee real constant time evaluation of\n * anything in JavaScript VM, this is module is the best effort.\n */\n/**\n * Returns resultIfOne if subject is 1, or resultIfZero if subject is 0.\n *\n * Supports only 32-bit integers, so resultIfOne or resultIfZero are not\n * integers, they'll be converted to them with bitwise operations.\n */\nexport function select(subject, resultIfOne, resultIfZero) {\n return (~(subject - 1) & resultIfOne) | ((subject - 1) & resultIfZero);\n}\n/**\n * Returns 1 if a <= b, or 0 if not.\n * Arguments must be positive 32-bit integers less than or equal to 2^31 - 1.\n */\nexport function lessOrEqual(a, b) {\n return (((a | 0) - (b | 0) - 1) >>> 31) & 1;\n}\n/**\n * Returns 1 if a and b are of equal length and their contents\n * are equal, or 0 otherwise.\n *\n * Note that unlike in equal(), zero-length inputs are considered\n * the same, so this function will return 1.\n */\nexport function compare(a, b) {\n if (a.length !== b.length) {\n return 0;\n }\n let result = 0;\n for (let i = 0; i < a.length; i++) {\n result |= a[i] ^ b[i];\n }\n return (1 & ((result - 1) >>> 8));\n}\n/**\n * Returns true if a and b are of equal non-zero length,\n * and their contents are equal, or false otherwise.\n *\n * Note that unlike in compare() zero-length inputs are considered\n * _not_ equal, so this function will return false.\n */\nexport function equal(a, b) {\n if (a.length === 0 || b.length === 0) {\n return false;\n }\n return compare(a, b) !== 0;\n}\n//# sourceMappingURL=constant-time.js.map","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\n/**\n * Package poly1305 implements Poly1305 one-time message authentication algorithm.\n */\nimport { equal as constantTimeEqual } from \"@stablelib/constant-time\";\nimport { wipe } from \"@stablelib/wipe\";\nexport const DIGEST_LENGTH = 16;\n// Port of Andrew Moon's Poly1305-donna-16. Public domain.\n// https://github.com/floodyberry/poly1305-donna\n/**\n * Poly1305 computes 16-byte authenticator of message using\n * a one-time 32-byte key.\n *\n * Important: key should be used for only one message,\n * it should never repeat.\n */\nexport class Poly1305 {\n digestLength = DIGEST_LENGTH;\n _buffer = new Uint8Array(16);\n _r = new Uint16Array(10);\n _h = new Uint16Array(10);\n _pad = new Uint16Array(8);\n _leftover = 0;\n _fin = 0;\n _finished = false;\n constructor(key) {\n let t0 = key[0] | key[1] << 8;\n this._r[0] = (t0) & 0x1fff;\n let t1 = key[2] | key[3] << 8;\n this._r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n let t2 = key[4] | key[5] << 8;\n this._r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n let t3 = key[6] | key[7] << 8;\n this._r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n let t4 = key[8] | key[9] << 8;\n this._r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this._r[5] = ((t4 >>> 1)) & 0x1ffe;\n let t5 = key[10] | key[11] << 8;\n this._r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n let t6 = key[12] | key[13] << 8;\n this._r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n let t7 = key[14] | key[15] << 8;\n this._r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this._r[9] = ((t7 >>> 5)) & 0x007f;\n this._pad[0] = key[16] | key[17] << 8;\n this._pad[1] = key[18] | key[19] << 8;\n this._pad[2] = key[20] | key[21] << 8;\n this._pad[3] = key[22] | key[23] << 8;\n this._pad[4] = key[24] | key[25] << 8;\n this._pad[5] = key[26] | key[27] << 8;\n this._pad[6] = key[28] | key[29] << 8;\n this._pad[7] = key[30] | key[31] << 8;\n }\n _blocks(m, mpos, bytes) {\n let hibit = this._fin ? 0 : 1 << 11;\n let 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];\n let 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];\n while (bytes >= 16) {\n let t0 = m[mpos + 0] | m[mpos + 1] << 8;\n h0 += (t0) & 0x1fff;\n let t1 = m[mpos + 2] | m[mpos + 3] << 8;\n h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n let t2 = m[mpos + 4] | m[mpos + 5] << 8;\n h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n let t3 = m[mpos + 6] | m[mpos + 7] << 8;\n h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n let t4 = m[mpos + 8] | m[mpos + 9] << 8;\n h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n let t5 = m[mpos + 10] | m[mpos + 11] << 8;\n h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n let t6 = m[mpos + 12] | m[mpos + 13] << 8;\n h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n let t7 = m[mpos + 14] | m[mpos + 15] << 8;\n h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n let c = 0;\n let d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13);\n d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13);\n d0 &= 0x1fff;\n let d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13);\n d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13);\n d1 &= 0x1fff;\n let d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13);\n d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13);\n d2 &= 0x1fff;\n let d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13);\n d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13);\n d3 &= 0x1fff;\n let d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13);\n d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13);\n d4 &= 0x1fff;\n let d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13);\n d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13);\n d5 &= 0x1fff;\n let d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13);\n d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13);\n d6 &= 0x1fff;\n let d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13);\n d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13);\n d7 &= 0x1fff;\n let d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13);\n d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13);\n d8 &= 0x1fff;\n let d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13);\n d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13);\n d9 &= 0x1fff;\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n mpos += 16;\n bytes -= 16;\n }\n this._h[0] = h0;\n this._h[1] = h1;\n this._h[2] = h2;\n this._h[3] = h3;\n this._h[4] = h4;\n this._h[5] = h5;\n this._h[6] = h6;\n this._h[7] = h7;\n this._h[8] = h8;\n this._h[9] = h9;\n }\n finish(mac, macpos = 0) {\n const g = new Uint16Array(10);\n let c;\n let mask;\n let f;\n let i;\n if (this._leftover) {\n i = this._leftover;\n this._buffer[i++] = 1;\n for (; i < 16; i++) {\n this._buffer[i] = 0;\n }\n this._fin = 1;\n this._blocks(this._buffer, 0, 16);\n }\n c = this._h[1] >>> 13;\n this._h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this._h[i] += c;\n c = this._h[i] >>> 13;\n this._h[i] &= 0x1fff;\n }\n this._h[0] += (c * 5);\n c = this._h[0] >>> 13;\n this._h[0] &= 0x1fff;\n this._h[1] += c;\n c = this._h[1] >>> 13;\n this._h[1] &= 0x1fff;\n this._h[2] += c;\n g[0] = this._h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this._h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) {\n g[i] &= mask;\n }\n mask = ~mask;\n for (i = 0; i < 10; i++) {\n this._h[i] = (this._h[i] & mask) | g[i];\n }\n this._h[0] = ((this._h[0]) | (this._h[1] << 13)) & 0xffff;\n this._h[1] = ((this._h[1] >>> 3) | (this._h[2] << 10)) & 0xffff;\n this._h[2] = ((this._h[2] >>> 6) | (this._h[3] << 7)) & 0xffff;\n this._h[3] = ((this._h[3] >>> 9) | (this._h[4] << 4)) & 0xffff;\n this._h[4] = ((this._h[4] >>> 12) | (this._h[5] << 1) | (this._h[6] << 14)) & 0xffff;\n this._h[5] = ((this._h[6] >>> 2) | (this._h[7] << 11)) & 0xffff;\n this._h[6] = ((this._h[7] >>> 5) | (this._h[8] << 8)) & 0xffff;\n this._h[7] = ((this._h[8] >>> 8) | (this._h[9] << 5)) & 0xffff;\n f = this._h[0] + this._pad[0];\n this._h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this._h[i] + this._pad[i]) | 0) + (f >>> 16)) | 0;\n this._h[i] = f & 0xffff;\n }\n mac[macpos + 0] = this._h[0] >>> 0;\n mac[macpos + 1] = this._h[0] >>> 8;\n mac[macpos + 2] = this._h[1] >>> 0;\n mac[macpos + 3] = this._h[1] >>> 8;\n mac[macpos + 4] = this._h[2] >>> 0;\n mac[macpos + 5] = this._h[2] >>> 8;\n mac[macpos + 6] = this._h[3] >>> 0;\n mac[macpos + 7] = this._h[3] >>> 8;\n mac[macpos + 8] = this._h[4] >>> 0;\n mac[macpos + 9] = this._h[4] >>> 8;\n mac[macpos + 10] = this._h[5] >>> 0;\n mac[macpos + 11] = this._h[5] >>> 8;\n mac[macpos + 12] = this._h[6] >>> 0;\n mac[macpos + 13] = this._h[6] >>> 8;\n mac[macpos + 14] = this._h[7] >>> 0;\n mac[macpos + 15] = this._h[7] >>> 8;\n this._finished = true;\n return this;\n }\n update(m) {\n let mpos = 0;\n let bytes = m.length;\n let want;\n if (this._leftover) {\n want = (16 - this._leftover);\n if (want > bytes) {\n want = bytes;\n }\n for (let i = 0; i < want; i++) {\n this._buffer[this._leftover + i] = m[mpos + i];\n }\n bytes -= want;\n mpos += want;\n this._leftover += want;\n if (this._leftover < 16) {\n return this;\n }\n this._blocks(this._buffer, 0, 16);\n this._leftover = 0;\n }\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this._blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n if (bytes) {\n for (let i = 0; i < bytes; i++) {\n this._buffer[this._leftover + i] = m[mpos + i];\n }\n this._leftover += bytes;\n }\n return this;\n }\n digest() {\n // TODO(dchest): it behaves differently than other hashes/HMAC,\n // because it throws when finished — others just return saved result.\n if (this._finished) {\n throw new Error(\"Poly1305 was finished\");\n }\n let mac = new Uint8Array(16);\n this.finish(mac);\n return mac;\n }\n clean() {\n wipe(this._buffer);\n wipe(this._r);\n wipe(this._h);\n wipe(this._pad);\n this._leftover = 0;\n this._fin = 0;\n this._finished = true; // mark as finished even if not\n return this;\n }\n}\n/**\n * Returns 16-byte authenticator of data using a one-time 32-byte key.\n *\n * Important: key should be used for only one message, it should never repeat.\n */\nexport function oneTimeAuth(key, data) {\n const h = new Poly1305(key);\n h.update(data);\n const digest = h.digest();\n h.clean();\n return digest;\n}\n/**\n * Returns true if two authenticators are 16-byte long and equal.\n * Uses contant-time comparison to avoid leaking timing information.\n */\nexport function equal(a, b) {\n if (a.length !== DIGEST_LENGTH || b.length !== DIGEST_LENGTH) {\n return false;\n }\n return constantTimeEqual(a, b);\n}\n//# sourceMappingURL=poly1305.js.map","// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nimport { streamXOR, stream } from \"@stablelib/chacha\";\nimport { Poly1305 } from \"@stablelib/poly1305\";\nimport { wipe } from \"@stablelib/wipe\";\nimport { writeUint64LE } from \"@stablelib/binary\";\nimport { equal } from \"@stablelib/constant-time\";\nexport const KEY_LENGTH = 32;\nexport const NONCE_LENGTH = 12;\nexport const TAG_LENGTH = 16;\nconst ZEROS = new Uint8Array(16);\n/**\n * ChaCha20-Poly1305 Authenticated Encryption with Associated Data.\n *\n * Defined in RFC7539.\n */\nexport class ChaCha20Poly1305 {\n nonceLength = NONCE_LENGTH;\n tagLength = TAG_LENGTH;\n _key;\n /**\n * Creates a new instance with the given 32-byte key.\n */\n constructor(key) {\n if (key.length !== KEY_LENGTH) {\n throw new Error(\"ChaCha20Poly1305 needs 32-byte key\");\n }\n // Copy key.\n this._key = new Uint8Array(key);\n }\n /**\n * Encrypts and authenticates plaintext, authenticates associated data,\n * and returns sealed ciphertext, which includes authentication tag.\n *\n * RFC7539 specifies 12 bytes for nonce. It may be this 12-byte nonce\n * (\"IV\"), or full 16-byte counter (called \"32-bit fixed-common part\")\n * and nonce.\n *\n * If dst is given (it must be the size of plaintext + the size of tag\n * length) the result will be put into it. Dst and plaintext must not\n * overlap.\n */\n seal(nonce, plaintext, associatedData, dst) {\n if (nonce.length > 16) {\n throw new Error(\"ChaCha20Poly1305: incorrect nonce length\");\n }\n // Allocate space for counter, and set nonce as last bytes of it.\n const counter = new Uint8Array(16);\n counter.set(nonce, counter.length - nonce.length);\n // Generate authentication key by taking first 32-bytes of stream.\n // We pass full counter, which has 12-byte nonce and 4-byte block counter,\n // and it will get incremented after generating the block, which is\n // exactly what we need: we only use the first 32 bytes of 64-byte\n // ChaCha block and discard the next 32 bytes.\n const authKey = new Uint8Array(32);\n stream(this._key, counter, authKey, 4);\n // Allocate space for sealed ciphertext.\n const resultLength = plaintext.length + this.tagLength;\n let result;\n if (dst) {\n if (dst.length !== resultLength) {\n throw new Error(\"ChaCha20Poly1305: incorrect destination length\");\n }\n result = dst;\n }\n else {\n result = new Uint8Array(resultLength);\n }\n // Encrypt plaintext.\n streamXOR(this._key, counter, plaintext, result, 4);\n // Authenticate.\n // XXX: can \"simplify\" here: pass full result (which is already padded\n // due to zeroes prepared for tag), and ciphertext length instead of\n // subarray of result.\n this._authenticate(result.subarray(result.length - this.tagLength, result.length), authKey, result.subarray(0, result.length - this.tagLength), associatedData);\n // Cleanup.\n wipe(counter);\n return result;\n }\n /**\n * Authenticates sealed ciphertext (which includes authentication tag) and\n * associated data, decrypts ciphertext and returns decrypted plaintext.\n *\n * RFC7539 specifies 12 bytes for nonce. It may be this 12-byte nonce\n * (\"IV\"), or full 16-byte counter (called \"32-bit fixed-common part\")\n * and nonce.\n *\n * If authentication fails, it returns null.\n *\n * If dst is given (it must be of ciphertext length minus tag length),\n * the result will be put into it. Dst and plaintext must not overlap.\n */\n open(nonce, sealed, associatedData, dst) {\n if (nonce.length > 16) {\n throw new Error(\"ChaCha20Poly1305: incorrect nonce length\");\n }\n // Sealed ciphertext should at least contain tag.\n if (sealed.length < this.tagLength) {\n // TODO(dchest): should we throw here instead?\n return null;\n }\n // Allocate space for counter, and set nonce as last bytes of it.\n const counter = new Uint8Array(16);\n counter.set(nonce, counter.length - nonce.length);\n // Generate authentication key by taking first 32-bytes of stream.\n const authKey = new Uint8Array(32);\n stream(this._key, counter, authKey, 4);\n // Authenticate.\n // XXX: can simplify and avoid allocation: since authenticate()\n // already allocates tag (from Poly1305.digest(), it can return)\n // it instead of copying to calculatedTag. But then in seal()\n // we'll need to copy it.\n const calculatedTag = new Uint8Array(this.tagLength);\n this._authenticate(calculatedTag, authKey, sealed.subarray(0, sealed.length - this.tagLength), associatedData);\n // Constant-time compare tags and return null if they differ.\n if (!equal(calculatedTag, sealed.subarray(sealed.length - this.tagLength, sealed.length))) {\n return null;\n }\n // Allocate space for decrypted plaintext.\n const resultLength = sealed.length - this.tagLength;\n let result;\n if (dst) {\n if (dst.length !== resultLength) {\n throw new Error(\"ChaCha20Poly1305: incorrect destination length\");\n }\n result = dst;\n }\n else {\n result = new Uint8Array(resultLength);\n }\n // Decrypt.\n streamXOR(this._key, counter, sealed.subarray(0, sealed.length - this.tagLength), result, 4);\n // Cleanup.\n wipe(counter);\n return result;\n }\n clean() {\n wipe(this._key);\n return this;\n }\n _authenticate(tagOut, authKey, ciphertext, associatedData) {\n // Initialize Poly1305 with authKey.\n const h = new Poly1305(authKey);\n // Authenticate padded associated data.\n if (associatedData) {\n h.update(associatedData);\n if (associatedData.length % 16 > 0) {\n h.update(ZEROS.subarray(associatedData.length % 16));\n }\n }\n // Authenticate padded ciphertext.\n h.update(ciphertext);\n if (ciphertext.length % 16 > 0) {\n h.update(ZEROS.subarray(ciphertext.length % 16));\n }\n // Authenticate length of associated data.\n // XXX: can avoid allocation here?\n const length = new Uint8Array(8);\n if (associatedData) {\n writeUint64LE(associatedData.length, length);\n }\n h.update(length);\n // Authenticate length of ciphertext.\n writeUint64LE(ciphertext.length, length);\n h.update(length);\n // Get tag and copy it into tagOut.\n const tag = h.digest();\n for (let i = 0; i < tag.length; i++) {\n tagOut[i] = tag[i];\n }\n // Cleanup.\n h.clean();\n wipe(tag);\n wipe(length);\n }\n}\n//# sourceMappingURL=chacha20poly1305.js.map","import { ChaCha20Poly1305 } from '@stablelib/chacha20poly1305';\n\nexport const CHACHA20_AUTH_TAG_LENGTH = 16;\nexport const CHACHA20_NONCE_LENGTH = 12;\n\nexport function decrypt(key: Buffer, nonce: Buffer, aad: Buffer | null, ciphertext: Buffer, authTag: Buffer): Buffer {\n nonce = padNonce(nonce);\n\n const chacha = new ChaCha20Poly1305(key);\n const sealed = Buffer.concat([ciphertext, authTag]);\n const plaintext = chacha.open(nonce, sealed, aad ?? undefined);\n\n if (!plaintext) {\n throw new Error('Decryption failed: authentication tag mismatch');\n }\n\n return Buffer.from(plaintext);\n}\n\nexport function encrypt(key: Buffer, nonce: Buffer, aad: Buffer | null, plaintext: Buffer): EncryptedData {\n nonce = padNonce(nonce);\n\n const chacha = new ChaCha20Poly1305(key);\n const sealed = chacha.seal(nonce, plaintext, aad ?? undefined);\n const ciphertext = Buffer.from(sealed.subarray(0, sealed.length - CHACHA20_AUTH_TAG_LENGTH));\n const authTag = Buffer.from(sealed.subarray(sealed.length - CHACHA20_AUTH_TAG_LENGTH));\n\n return {\n ciphertext,\n authTag\n };\n}\n\nexport function padNonce(nonce: Buffer): Buffer {\n if (nonce.length >= CHACHA20_NONCE_LENGTH) {\n return nonce;\n }\n\n return Buffer.concat([\n Buffer.alloc(CHACHA20_NONCE_LENGTH - nonce.length, 0),\n nonce\n ]);\n}\n\nexport type EncryptedData = {\n readonly ciphertext: Buffer;\n readonly authTag: Buffer;\n};\n","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","import tweetnacl from 'tweetnacl';\nimport type { KeyPair } from './types';\n\nexport function generateKeyPair(): KeyPair {\n const keyPair = tweetnacl.box.keyPair();\n\n return {\n publicKey: keyPair.publicKey,\n secretKey: keyPair.secretKey\n };\n}\n\nexport function generateSharedSecKey(priKey: Uint8Array, pubKey: Uint8Array): Uint8Array {\n return tweetnacl.scalarMult(priKey, pubKey);\n}\n","import tweetnacl from 'tweetnacl';\nimport type { KeyPair } from './types';\n\nexport function generateKeyPair(): KeyPair {\n const keyPair = tweetnacl.sign.keyPair();\n\n return {\n publicKey: keyPair.publicKey,\n secretKey: keyPair.secretKey\n };\n}\n\nexport function sign(message: Uint8Array, secretKey: Uint8Array): Uint8Array {\n return tweetnacl.sign.detached(message, secretKey);\n}\n\nexport function verify(message: Uint8Array, signature: Uint8Array, publicKey: Uint8Array): boolean {\n return tweetnacl.sign.detached.verify(message, signature, publicKey);\n}\n","import { hkdfSync } from 'node:crypto';\n\nexport default function (options: HKDFOptions): Buffer {\n return Buffer.from(hkdfSync(options.hash, options.key, options.salt, options.info, options.length));\n}\n\nexport type HKDFOptions = {\n readonly hash: string;\n readonly key: Buffer;\n readonly length: number;\n readonly salt: Buffer;\n readonly info: Buffer;\n};\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,8],"mappings":"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EACV,GAAM,EAAI,EACV,GAAM,EAAI,EACV,GAAM,EAAI,EACV,GAAM,EAAI,EACV,GAAM,EAAI,EACV,GAAM,EAAI,EACV,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,EAAI,EAAE,GACN,GAAM,EAAI,EACV,GAAM,EAAI,EACV,GAAM,EAAI,EACV,GAAM,EAAI,EACV,GAAM,EAAI,EACV,GAAM,EAAI,EACV,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,EAAI,EAAE,GACN,GAAM,EAAI,EACV,GAAM,EAAI,EACV,GAAM,EAAI,EACV,GAAM,EAAI,EACV,GAAM,EAAI,EACV,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,EAAI,EAAE,GACN,GAAM,EAAI,EACV,GAAM,EAAI,EACV,GAAM,EAAI,EACV,GAAM,EAAI,EACV,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,EAAI,EAAE,GACN,GAAM,EAAI,EACV,GAAM,EAAI,EACV,GAAM,EAAI,EACV,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,EAAI,EAAE,GACN,GAAM,EAAI,EACV,GAAM,EAAI,EACV,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,EAAI,EAAE,GACN,GAAM,EAAI,EACV,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,EAAI,EAAE,IACN,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,EAAI,EAAE,IACN,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,EAAI,EAAE,IACN,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,EACX,GAAO,EAAI,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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@basmilius/apple-encryption",
3
3
  "description": "Common encryption utilities for Apple Protocols.",
4
- "version": "0.7.2",
4
+ "version": "0.8.0",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "author": {
@@ -24,22 +24,23 @@
24
24
  "provenance": false
25
25
  },
26
26
  "scripts": {
27
- "build": "tsgo && bun -b build.ts"
27
+ "build": "tsgo --noEmit && tsdown",
28
+ "dev": "tsdown --watch"
28
29
  },
29
- "main": "./dist/index.js",
30
- "types": "./dist/index.d.ts",
31
- "typings": "./dist/index.d.ts",
30
+ "main": "./dist/index.mjs",
31
+ "types": "./dist/index.d.mts",
32
+ "typings": "./dist/index.d.mts",
32
33
  "sideEffects": false,
33
34
  "exports": {
34
35
  ".": {
35
- "types": "./dist/index.d.ts",
36
- "default": "./dist/index.js"
36
+ "types": "./dist/index.d.mts",
37
+ "default": "./dist/index.mjs"
37
38
  }
38
39
  },
39
40
  "devDependencies": {
40
- "@basmilius/tools": "^2.25.0",
41
41
  "@stablelib/chacha20poly1305": "^2.0.1",
42
42
  "@types/bun": "^1.3.9",
43
+ "tsdown": "^0.21.0-beta.2",
43
44
  "tweetnacl": "^1.0.3"
44
45
  }
45
46
  }
@@ -1,9 +0,0 @@
1
- export declare const CHACHA20_AUTH_TAG_LENGTH = 16;
2
- export declare const CHACHA20_NONCE_LENGTH = 12;
3
- export declare function decrypt(key: Buffer, nonce: Buffer, aad: Buffer | null, ciphertext: Buffer, authTag: Buffer): Buffer;
4
- export declare function encrypt(key: Buffer, nonce: Buffer, aad: Buffer | null, plaintext: Buffer): EncryptedData;
5
- export declare function padNonce(nonce: Buffer): Buffer;
6
- export type EncryptedData = {
7
- readonly ciphertext: Buffer;
8
- readonly authTag: Buffer;
9
- };
@@ -1,3 +0,0 @@
1
- import type { KeyPair } from "./types";
2
- export declare function generateKeyPair(): KeyPair;
3
- export declare function generateSharedSecKey(priKey: Uint8Array, pubKey: Uint8Array): Uint8Array;
package/dist/ed25519.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import type { KeyPair } from "./types";
2
- export declare function generateKeyPair(): KeyPair;
3
- export declare function sign(message: Uint8Array, secretKey: Uint8Array): Uint8Array;
4
- export declare function verify(message: Uint8Array, signature: Uint8Array, publicKey: Uint8Array): boolean;
package/dist/hkdf.d.ts DELETED
@@ -1,8 +0,0 @@
1
- export default function(options: HKDFOptions): Buffer;
2
- export type HKDFOptions = {
3
- readonly hash: string;
4
- readonly key: Buffer;
5
- readonly length: number;
6
- readonly salt: Buffer;
7
- readonly info: Buffer;
8
- };
package/dist/index.d.ts DELETED
@@ -1,5 +0,0 @@
1
- export * as Chacha20 from "./chacha20";
2
- export * as Curve25519 from "./curve25519";
3
- export * as Ed25519 from "./ed25519";
4
- export { default as hkdf } from "./hkdf";
5
- export type * from "./types";