@junobuild/core 0.0.5 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs.js +22 -22
- package/dist/cjs/index.cjs.js.map +4 -4
- package/dist/declarations/cmc/cmc.did.d.ts +2 -2
- package/dist/declarations/console/console.did.d.ts +1 -1
- package/dist/declarations/frontend/frontend.did +42 -1
- package/dist/declarations/frontend/frontend.did.d.ts +58 -14
- package/dist/declarations/frontend/frontend.factory.did.js +45 -2
- package/dist/declarations/internet_identity/internet_identity.did.d.ts +9 -9
- package/dist/declarations/ledger/ledger.did.d.ts +4 -4
- package/dist/declarations/satellite/satellite.did.d.ts +19 -17
- package/dist/declarations/satellite/satellite.factory.did.js +9 -4
- package/dist/declarations/satellite/satellite.factory.did.mjs +9 -4
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +4 -4
- package/dist/types/constants/auth.constants.d.ts +2 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/types/auth.types.d.ts +1 -1
- package/dist/types/types/list.types.d.ts +6 -4
- package/dist/types/utils/did.utils.d.ts +1 -1
- package/dist/types/utils/list.utils.d.ts +2 -8
- package/dist/types/utils/window.utils.d.ts +4 -0
- package/package.json +1 -1
package/dist/esm/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["node-modules-polyfills:crypto", "node-modules-polyfills-commonjs:crypto", "../../../../node_modules/tweetnacl/nacl-fast.js", "../../../../node_modules/@dfinity/identity/src/identity/ed25519.ts", "../../../../node_modules/@dfinity/identity/src/buffer.ts", "../../../../node_modules/@dfinity/identity/src/identity/der.ts", "../../../../node_modules/@dfinity/identity/src/identity/ecdsa.ts", "../../../../node_modules/@dfinity/identity/src/identity/delegation.ts", "../../../../node_modules/@dfinity/identity/src/identity/webauthn.ts", "../../../../node_modules/@dfinity/auth-client/src/idleManager.ts", "../../../../node_modules/idb/build/wrap-idb-value.js", "../../../../node_modules/idb/build/index.js", "../../../../node_modules/@dfinity/auth-client/src/db.ts", "../../../../node_modules/@dfinity/auth-client/src/storage.ts", "../../../../node_modules/@dfinity/auth-client/src/index.ts", "../../src/constants/auth.constants.ts", "../../src/stores/store.ts", "../../src/stores/auth.store.ts", "../../src/stores/env.store.ts", "../../src/utils/
|
|
4
|
-
"sourcesContent": ["export default {};\n", "\nconst polyfill = require('crypto')\n\nif (polyfill && polyfill.default) {\n module.exports = polyfill.default\n for (let k in polyfill) {\n module.exports[k] = polyfill[k]\n }\n} else if (polyfill) {\n module.exports = polyfill\n}\n\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 { DerEncodedPublicKey, KeyPair, PublicKey, Signature, SignIdentity } from '@dfinity/agent';\nimport * as tweetnacl from 'tweetnacl';\nimport { fromHexString, toHexString } from '../buffer';\nimport { ED25519_OID, unwrapDER, wrapDER } from './der';\n\nexport class Ed25519PublicKey implements PublicKey {\n public static from(key: PublicKey): Ed25519PublicKey {\n return this.fromDer(key.toDer());\n }\n\n public static fromRaw(rawKey: ArrayBuffer): Ed25519PublicKey {\n return new Ed25519PublicKey(rawKey);\n }\n\n public static fromDer(derKey: DerEncodedPublicKey): Ed25519PublicKey {\n return new Ed25519PublicKey(this.derDecode(derKey));\n }\n\n // The length of Ed25519 public keys is always 32 bytes.\n private static RAW_KEY_LENGTH = 32;\n\n private static derEncode(publicKey: ArrayBuffer): DerEncodedPublicKey {\n return wrapDER(publicKey, ED25519_OID).buffer as DerEncodedPublicKey;\n }\n\n private static derDecode(key: DerEncodedPublicKey): ArrayBuffer {\n const unwrapped = unwrapDER(key, ED25519_OID);\n if (unwrapped.length !== this.RAW_KEY_LENGTH) {\n throw new Error('An Ed25519 public key must be exactly 32bytes long');\n }\n return unwrapped;\n }\n\n private readonly rawKey: ArrayBuffer;\n private readonly derKey: DerEncodedPublicKey;\n\n // `fromRaw` and `fromDer` should be used for instantiation, not this constructor.\n private constructor(key: ArrayBuffer) {\n this.rawKey = key;\n this.derKey = Ed25519PublicKey.derEncode(key);\n }\n\n public toDer(): DerEncodedPublicKey {\n return this.derKey;\n }\n\n public toRaw(): ArrayBuffer {\n return this.rawKey;\n }\n}\n\nexport class Ed25519KeyIdentity extends SignIdentity {\n public static generate(seed?: Uint8Array): Ed25519KeyIdentity {\n if (seed && seed.length !== 32) {\n throw new Error('Ed25519 Seed needs to be 32 bytes long.');\n }\n\n const { publicKey, secretKey } =\n seed === undefined ? tweetnacl.sign.keyPair() : tweetnacl.sign.keyPair.fromSeed(seed);\n return new this(Ed25519PublicKey.fromRaw(publicKey), secretKey);\n }\n\n public static fromParsedJson(obj: JsonnableEd25519KeyIdentity): Ed25519KeyIdentity {\n const [publicKeyDer, privateKeyRaw] = obj;\n return new Ed25519KeyIdentity(\n Ed25519PublicKey.fromDer(fromHexString(publicKeyDer) as DerEncodedPublicKey),\n fromHexString(privateKeyRaw),\n );\n }\n\n public static fromJSON(json: string): Ed25519KeyIdentity {\n const parsed = JSON.parse(json);\n if (Array.isArray(parsed)) {\n if (typeof parsed[0] === 'string' && typeof parsed[1] === 'string') {\n return this.fromParsedJson([parsed[0], parsed[1]]);\n } else {\n throw new Error('Deserialization error: JSON must have at least 2 items.');\n }\n }\n throw new Error(`Deserialization error: Invalid JSON type for string: ${JSON.stringify(json)}`);\n }\n\n public static fromKeyPair(publicKey: ArrayBuffer, privateKey: ArrayBuffer): Ed25519KeyIdentity {\n return new Ed25519KeyIdentity(Ed25519PublicKey.fromRaw(publicKey), privateKey);\n }\n\n public static fromSecretKey(secretKey: ArrayBuffer): Ed25519KeyIdentity {\n const keyPair = tweetnacl.sign.keyPair.fromSecretKey(new Uint8Array(secretKey));\n return Ed25519KeyIdentity.fromKeyPair(keyPair.publicKey, keyPair.secretKey);\n }\n\n protected _publicKey: Ed25519PublicKey;\n\n // `fromRaw` and `fromDer` should be used for instantiation, not this constructor.\n protected constructor(publicKey: PublicKey, protected _privateKey: ArrayBuffer) {\n super();\n this._publicKey = Ed25519PublicKey.from(publicKey);\n }\n\n /**\n * Serialize this key to JSON.\n */\n public toJSON(): JsonnableEd25519KeyIdentity {\n return [toHexString(this._publicKey.toDer()), toHexString(this._privateKey)];\n }\n\n /**\n * Return a copy of the key pair.\n */\n public getKeyPair(): KeyPair {\n return {\n secretKey: this._privateKey,\n publicKey: this._publicKey,\n };\n }\n\n /**\n * Return the public key.\n */\n public getPublicKey(): PublicKey {\n return this._publicKey;\n }\n\n /**\n * Signs a blob of data, with this identity's private key.\n * @param challenge - challenge to sign with this identity's secretKey, producing a signature\n */\n public async sign(challenge: ArrayBuffer): Promise<Signature> {\n const blob = new Uint8Array(challenge);\n const signature = tweetnacl.sign.detached(blob, new Uint8Array(this._privateKey)).buffer;\n return signature as Signature;\n }\n}\n\ntype PublicKeyHex = string;\ntype SecretKeyHex = string;\nexport type JsonnableEd25519KeyIdentity = [PublicKeyHex, SecretKeyHex];\n", "/**\n * Return an array buffer from its hexadecimal representation.\n * @param hexString The hexadecimal string.\n */\nexport function fromHexString(hexString: string): ArrayBuffer {\n return new Uint8Array((hexString.match(/.{1,2}/g) ?? []).map(byte => parseInt(byte, 16))).buffer;\n}\n\n/**\n * Returns an hexadecimal representation of an array buffer.\n * @param bytes The array buffer.\n */\nexport function toHexString(bytes: ArrayBuffer): string {\n return new Uint8Array(bytes).reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n}\n", "export const bufEquals = (b1: ArrayBuffer, b2: ArrayBuffer): boolean => {\n if (b1.byteLength !== b2.byteLength) return false;\n const u1 = new Uint8Array(b1);\n const u2 = new Uint8Array(b2);\n for (let i = 0; i < u1.length; i++) {\n if (u1[i] !== u2[i]) return false;\n }\n return true;\n};\n\nexport const encodeLenBytes = (len: number): number => {\n if (len <= 0x7f) {\n return 1;\n } else if (len <= 0xff) {\n return 2;\n } else if (len <= 0xffff) {\n return 3;\n } else if (len <= 0xffffff) {\n return 4;\n } else {\n throw new Error('Length too long (> 4 bytes)');\n }\n};\n\nexport const encodeLen = (buf: Uint8Array, offset: number, len: number): number => {\n if (len <= 0x7f) {\n buf[offset] = len;\n return 1;\n } else if (len <= 0xff) {\n buf[offset] = 0x81;\n buf[offset + 1] = len;\n return 2;\n } else if (len <= 0xffff) {\n buf[offset] = 0x82;\n buf[offset + 1] = len >> 8;\n buf[offset + 2] = len;\n return 3;\n } else if (len <= 0xffffff) {\n buf[offset] = 0x83;\n buf[offset + 1] = len >> 16;\n buf[offset + 2] = len >> 8;\n buf[offset + 3] = len;\n return 4;\n } else {\n throw new Error('Length too long (> 4 bytes)');\n }\n};\n\nexport const decodeLenBytes = (buf: Uint8Array, offset: number): number => {\n if (buf[offset] < 0x80) return 1;\n if (buf[offset] === 0x80) throw new Error('Invalid length 0');\n if (buf[offset] === 0x81) return 2;\n if (buf[offset] === 0x82) return 3;\n if (buf[offset] === 0x83) return 4;\n throw new Error('Length too long (> 4 bytes)');\n};\n\nexport const decodeLen = (buf: Uint8Array, offset: number): number => {\n const lenBytes = decodeLenBytes(buf, offset);\n if (lenBytes === 1) return buf[offset];\n else if (lenBytes === 2) return buf[offset + 1];\n else if (lenBytes === 3) return (buf[offset + 1] << 8) + buf[offset + 2];\n else if (lenBytes === 4)\n return (buf[offset + 1] << 16) + (buf[offset + 2] << 8) + buf[offset + 3];\n throw new Error('Length too long (> 4 bytes)');\n};\n\n/**\n * A DER encoded `SEQUENCE(OID)` for DER-encoded-COSE\n */\nexport const DER_COSE_OID = Uint8Array.from([\n ...[0x30, 0x0c], // SEQUENCE\n ...[0x06, 0x0a], // OID with 10 bytes\n ...[0x2b, 0x06, 0x01, 0x04, 0x01, 0x83, 0xb8, 0x43, 0x01, 0x01], // DER encoded COSE\n]);\n\n/**\n * A DER encoded `SEQUENCE(OID)` for the Ed25519 algorithm\n */\nexport const ED25519_OID = Uint8Array.from([\n ...[0x30, 0x05], // SEQUENCE\n ...[0x06, 0x03], // OID with 3 bytes\n ...[0x2b, 0x65, 0x70], // id-Ed25519 OID\n]);\n\n/**\n * A DER encoded `SEQUENCE(OID)` for secp256k1 with the ECDSA algorithm\n */\nexport const SECP256K1_OID = Uint8Array.from([\n ...[0x30, 0x10], // SEQUENCE\n ...[0x06, 0x07], // OID with 7 bytes\n ...[0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01], // OID ECDSA\n ...[0x06, 0x05], // OID with 5 bytes\n ...[0x2b, 0x81, 0x04, 0x00, 0x0a], // OID secp256k1\n]);\n\n/**\n * Wraps the given `payload` in a DER encoding tagged with the given encoded `oid` like so:\n * `SEQUENCE(oid, BITSTRING(payload))`\n *\n * @param payload The payload to encode as the bit string\n * @param oid The DER encoded (and SEQUENCE wrapped!) OID to tag the payload with\n */\nexport function wrapDER(payload: ArrayBuffer, oid: Uint8Array): Uint8Array {\n // The Bit String header needs to include the unused bit count byte in its length\n const bitStringHeaderLength = 2 + encodeLenBytes(payload.byteLength + 1);\n const len = oid.byteLength + bitStringHeaderLength + payload.byteLength;\n let offset = 0;\n const buf = new Uint8Array(1 + encodeLenBytes(len) + len);\n // Sequence\n buf[offset++] = 0x30;\n // Sequence Length\n offset += encodeLen(buf, offset, len);\n\n // OID\n buf.set(oid, offset);\n offset += oid.byteLength;\n\n // Bit String Header\n buf[offset++] = 0x03;\n offset += encodeLen(buf, offset, payload.byteLength + 1);\n // 0 padding\n buf[offset++] = 0x00;\n buf.set(new Uint8Array(payload), offset);\n\n return buf;\n}\n\n/**\n * Extracts a payload from the given `derEncoded` data, and checks that it was tagged with the given `oid`.\n *\n * `derEncoded = SEQUENCE(oid, BITSTRING(payload))`\n *\n * @param derEncoded The DER encoded and tagged data\n * @param oid The DER encoded (and SEQUENCE wrapped!) expected OID\n * @returns The unwrapped payload\n */\nexport const unwrapDER = (derEncoded: ArrayBuffer, oid: Uint8Array): Uint8Array => {\n let offset = 0;\n const expect = (n: number, msg: string) => {\n if (buf[offset++] !== n) {\n throw new Error('Expected: ' + msg);\n }\n };\n\n const buf = new Uint8Array(derEncoded);\n expect(0x30, 'sequence');\n offset += decodeLenBytes(buf, offset);\n\n if (!bufEquals(buf.slice(offset, offset + oid.byteLength), oid)) {\n throw new Error('Not the expected OID.');\n }\n offset += oid.byteLength;\n\n expect(0x03, 'bit string');\n const payloadLen = decodeLen(buf, offset) - 1; // Subtracting 1 to account for the 0 padding\n offset += decodeLenBytes(buf, offset);\n expect(0x00, '0 padding');\n const result = buf.slice(offset);\n if (payloadLen !== result.length) {\n throw new Error(\n `DER payload mismatch: Expected length ${payloadLen} actual length ${result.length}`,\n );\n }\n return result;\n};\n", "import { DerEncodedPublicKey, PublicKey, Signature, SignIdentity } from '@dfinity/agent';\n\n/**\n * Options used in a {@link ECDSAKeyIdentity}\n */\nexport type CryptoKeyOptions = {\n extractable?: boolean;\n keyUsages?: KeyUsage[];\n subtleCrypto?: SubtleCrypto;\n};\n\nexport class CryptoError extends Error {\n constructor(public readonly message: string) {\n super(message);\n Object.setPrototypeOf(this, CryptoError.prototype);\n }\n}\n\nexport interface DerCryptoKey extends CryptoKey {\n toDer: () => DerEncodedPublicKey;\n}\n\n/**\n * Utility method to ensure that a subtleCrypto implementation is provided or is available in the global context\n * @param subtleCrypto SubtleCrypto implementation\n * @returns subleCrypto\n */\nfunction _getEffectiveCrypto(subtleCrypto: CryptoKeyOptions['subtleCrypto']): SubtleCrypto {\n if (subtleCrypto) {\n return subtleCrypto;\n } else if (typeof crypto !== 'undefined' && crypto['subtle']) {\n return crypto.subtle;\n } else {\n throw new CryptoError(\n 'Global crypto was not available and none was provided. Please inlcude a SubtleCrypto implementation. See https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto',\n );\n }\n}\n\n/**\n * An identity interface that wraps an ECDSA keypair using the P-256 named curve. Supports DER-encoding and decoding for agent calls\n */\nexport class ECDSAKeyIdentity extends SignIdentity {\n /**\n * Generates a randomly generated identity for use in calls to the Internet Computer.\n * @param {CryptoKeyOptions} options optional settings\n * @param {CryptoKeyOptions['extractable']} options.extractable - whether the key should allow itself to be used. Set to false for maximum security.\n * @param {CryptoKeyOptions['keyUsages']} options.keyUsages - a list of key usages that the key can be used for\n * @param {CryptoKeyOptions['subtleCrypto']} options.subtleCrypto interface\n * @constructs ECDSAKeyIdentity\n * @returns a {@link ECDSAKeyIdentity}\n */\n public static async generate(options?: CryptoKeyOptions): Promise<ECDSAKeyIdentity> {\n const { extractable = false, keyUsages = ['sign', 'verify'], subtleCrypto } = options ?? {};\n const effectiveCrypto = _getEffectiveCrypto(subtleCrypto);\n const keyPair = await effectiveCrypto.generateKey(\n {\n name: 'ECDSA',\n namedCurve: 'P-256',\n },\n extractable,\n keyUsages,\n );\n const derKey = (await effectiveCrypto.exportKey(\n 'spki',\n keyPair.publicKey,\n )) as DerEncodedPublicKey;\n\n return new this(keyPair, derKey, effectiveCrypto);\n }\n\n /**\n * generates an identity from a public and private key. Please ensure that you are generating these keys securely and protect the user's private key\n * @param keyPair a {@link CryptoKeyPair}\n * @param subtleCrypto a {@link SubtleCrypto} interface in case one is not available globally\n * @returns an {@link ECDSAKeyIdentity}\n */\n public static async fromKeyPair(\n keyPair: CryptoKeyPair | { privateKey: CryptoKey; publicKey: CryptoKey },\n subtleCrypto?: SubtleCrypto,\n ): Promise<ECDSAKeyIdentity> {\n const effectiveCrypto = _getEffectiveCrypto(subtleCrypto);\n const derKey = (await effectiveCrypto.exportKey(\n 'spki',\n keyPair.publicKey,\n )) as DerEncodedPublicKey;\n return new ECDSAKeyIdentity(keyPair, derKey, effectiveCrypto);\n }\n\n protected _derKey: DerEncodedPublicKey;\n protected _keyPair: CryptoKeyPair;\n protected _subtleCrypto: SubtleCrypto;\n\n // `fromKeyPair` and `generate` should be used for instantiation, not this constructor.\n protected constructor(\n keyPair: CryptoKeyPair,\n derKey: DerEncodedPublicKey,\n subtleCrypto: SubtleCrypto,\n ) {\n super();\n this._keyPair = keyPair;\n this._derKey = derKey;\n this._subtleCrypto = subtleCrypto;\n }\n\n /**\n * Return the internally-used key pair.\n * @returns a {@link CryptoKeyPair}\n */\n public getKeyPair(): CryptoKeyPair {\n return this._keyPair;\n }\n\n /**\n * Return the public key.\n * @returns an {@link DerCryptoKey}\n */\n public getPublicKey(): DerCryptoKey {\n const derKey = this._derKey;\n const key: DerCryptoKey = Object.create(this._keyPair.publicKey);\n key.toDer = function () {\n return derKey;\n };\n\n return key;\n }\n\n /**\n * Signs a blob of data, with this identity's private key.\n * @param {ArrayBuffer} challenge - challenge to sign with this identity's secretKey, producing a signature\n * @returns {Promise<Signature>} signature\n */\n public async sign(challenge: ArrayBuffer): Promise<Signature> {\n const params: EcdsaParams = {\n name: 'ECDSA',\n hash: { name: 'SHA-256' },\n };\n this._keyPair.privateKey;\n const signature = await this._subtleCrypto.sign(params, this._keyPair.privateKey, challenge);\n\n return signature as Signature;\n }\n}\n\nexport default ECDSAKeyIdentity;\n", "import {\n DerEncodedPublicKey,\n HttpAgentRequest,\n PublicKey,\n requestIdOf,\n Signature,\n SignIdentity,\n} from '@dfinity/agent';\nimport { Principal } from '@dfinity/principal';\nimport * as cbor from 'simple-cbor';\nimport { fromHexString, toHexString } from '../buffer';\n\nconst domainSeparator = new TextEncoder().encode('\\x1Aic-request-auth-delegation');\nconst requestDomainSeparator = new TextEncoder().encode('\\x0Aic-request');\n\nfunction _parseBlob(value: unknown): ArrayBuffer {\n if (typeof value !== 'string' || value.length < 64) {\n throw new Error('Invalid public key.');\n }\n\n return fromHexString(value);\n}\n\n/**\n * A single delegation object that is signed by a private key. This is constructed by\n * `DelegationChain.create()`.\n *\n * {@see DelegationChain}\n */\nexport class Delegation {\n constructor(\n public readonly pubkey: ArrayBuffer,\n public readonly expiration: bigint,\n public readonly targets?: Principal[],\n ) {}\n\n public toCBOR(): cbor.CborValue {\n // Expiration field needs to be encoded as a u64 specifically.\n return cbor.value.map({\n pubkey: cbor.value.bytes(this.pubkey),\n expiration: cbor.value.u64(this.expiration.toString(16), 16),\n ...(this.targets && {\n targets: cbor.value.array(this.targets.map(t => cbor.value.bytes(t.toUint8Array()))),\n }),\n });\n }\n\n public toJSON(): JsonnableDelegation {\n // every string should be hex and once-de-hexed,\n // discoverable what it is (e.g. de-hex to get JSON with a 'type' property, or de-hex to DER\n // with an OID). After de-hex, if it's not obvious what it is, it's an ArrayBuffer.\n return {\n expiration: this.expiration.toString(16),\n pubkey: toHexString(this.pubkey),\n ...(this.targets && { targets: this.targets.map(p => p.toHex()) }),\n };\n }\n}\n\n/**\n * Type of ReturnType<Delegation.toJSON>.\n * The goal here is to stringify all non-JSON-compatible types to some bytes representation we can\n * stringify as hex.\n * (Hex shouldn't be ambiguous ever, because you can encode as DER with semantic OIDs).\n */\ninterface JsonnableDelegation {\n // A BigInt of Nanoseconds since epoch as hex\n expiration: string;\n // Hexadecimal representation of the DER public key.\n pubkey: string;\n // Array of strings, where each string is hex of principal blob (*NOT* textual representation).\n targets?: string[];\n}\n\n/**\n * A signed delegation, which lends its identity to the public key in the delegation\n * object. This is constructed by `DelegationChain.create()`.\n *\n * {@see DelegationChain}\n */\nexport interface SignedDelegation {\n delegation: Delegation;\n signature: Signature;\n}\n\n/**\n * Sign a single delegation object for a period of time.\n *\n * @param from The identity that lends its delegation.\n * @param to The identity that receives the delegation.\n * @param expiration An expiration date for this delegation.\n * @param targets Limit this delegation to the target principals.\n */\nasync function _createSingleDelegation(\n from: SignIdentity,\n to: PublicKey,\n expiration: Date,\n targets?: Principal[],\n): Promise<SignedDelegation> {\n const delegation: Delegation = new Delegation(\n to.toDer(),\n BigInt(+expiration) * BigInt(1000000), // In nanoseconds.\n targets,\n );\n // The signature is calculated by signing the concatenation of the domain separator\n // and the message.\n // Note: To ensure Safari treats this as a user gesture, ensure to not use async methods\n // besides the actualy webauthn functionality (such as `sign`). Safari will de-register\n // a user gesture if you await an async call thats not fetch, xhr, or setTimeout.\n const challenge = new Uint8Array([\n ...domainSeparator,\n ...new Uint8Array(requestIdOf(delegation)),\n ]);\n const signature = await from.sign(challenge);\n\n return {\n delegation,\n signature,\n };\n}\n\nexport interface JsonnableDelegationChain {\n publicKey: string;\n delegations: Array<{\n signature: string;\n delegation: {\n pubkey: string;\n expiration: string;\n targets?: string[];\n };\n }>;\n}\n\n/**\n * A chain of delegations. This is JSON Serializable.\n * This is the object to serialize and pass to a DelegationIdentity. It does not keep any\n * private keys.\n */\nexport class DelegationChain {\n /**\n * Create a delegation chain between two (or more) keys. By default, the expiration time\n * will be very short (15 minutes).\n *\n * To build a chain of more than 2 identities, this function needs to be called multiple times,\n * passing the previous delegation chain into the options argument. For example:\n *\n * @example\n * const rootKey = createKey();\n * const middleKey = createKey();\n * const bottomeKey = createKey();\n *\n * const rootToMiddle = await DelegationChain.create(\n * root, middle.getPublicKey(), Date.parse('2100-01-01'),\n * );\n * const middleToBottom = await DelegationChain.create(\n * middle, bottom.getPublicKey(), Date.parse('2100-01-01'), { previous: rootToMiddle },\n * );\n *\n * // We can now use a delegation identity that uses the delegation above:\n * const identity = DelegationIdentity.fromDelegation(bottomKey, middleToBottom);\n *\n * @param from The identity that will delegate.\n * @param to The identity that gets delegated. It can now sign messages as if it was the\n * identity above.\n * @param expiration The length the delegation is valid. By default, 15 minutes from calling\n * this function.\n * @param options A set of options for this delegation. expiration and previous\n * @param options.previous - Another DelegationChain that this chain should start with.\n * @param options.targets - targets that scope the delegation (e.g. Canister Principals)\n */\n public static async create(\n from: SignIdentity,\n to: PublicKey,\n expiration: Date = new Date(Date.now() + 15 * 60 * 1000),\n options: {\n previous?: DelegationChain;\n targets?: Principal[];\n } = {},\n ): Promise<DelegationChain> {\n const delegation = await _createSingleDelegation(from, to, expiration, options.targets);\n return new DelegationChain(\n [...(options.previous?.delegations || []), delegation],\n options.previous?.publicKey || from.getPublicKey().toDer(),\n );\n }\n\n /**\n * Creates a DelegationChain object from a JSON string.\n *\n * @param json The JSON string to parse.\n */\n public static fromJSON(json: string | JsonnableDelegationChain): DelegationChain {\n const { publicKey, delegations } = typeof json === 'string' ? JSON.parse(json) : json;\n if (!Array.isArray(delegations)) {\n throw new Error('Invalid delegations.');\n }\n\n const parsedDelegations: SignedDelegation[] = delegations.map(signedDelegation => {\n const { delegation, signature } = signedDelegation;\n const { pubkey, expiration, targets } = delegation;\n if (targets !== undefined && !Array.isArray(targets)) {\n throw new Error('Invalid targets.');\n }\n\n return {\n delegation: new Delegation(\n _parseBlob(pubkey),\n BigInt(`0x${expiration}`), // expiration in JSON is an hexa string (See toJSON() below).\n targets &&\n targets.map((t: unknown) => {\n if (typeof t !== 'string') {\n throw new Error('Invalid target.');\n }\n return Principal.fromHex(t);\n }),\n ),\n signature: _parseBlob(signature) as Signature,\n };\n });\n\n return new this(parsedDelegations, _parseBlob(publicKey) as DerEncodedPublicKey);\n }\n\n /**\n * Creates a DelegationChain object from a list of delegations and a DER-encoded public key.\n *\n * @param delegations The list of delegations.\n * @param publicKey The DER-encoded public key of the key-pair signing the first delegation.\n */\n public static fromDelegations(\n delegations: SignedDelegation[],\n publicKey: DerEncodedPublicKey,\n ): DelegationChain {\n return new this(delegations, publicKey);\n }\n\n protected constructor(\n public readonly delegations: SignedDelegation[],\n public readonly publicKey: DerEncodedPublicKey,\n ) {}\n\n public toJSON(): JsonnableDelegationChain {\n return {\n delegations: this.delegations.map(signedDelegation => {\n const { delegation, signature } = signedDelegation;\n const { targets } = delegation;\n return {\n delegation: {\n expiration: delegation.expiration.toString(16),\n pubkey: toHexString(delegation.pubkey),\n ...(targets && {\n targets: targets.map(t => t.toHex()),\n }),\n },\n signature: toHexString(signature),\n };\n }),\n publicKey: toHexString(this.publicKey),\n };\n }\n}\n\n/**\n * An Identity that adds delegation to a request. Everywhere in this class, the name\n * innerKey refers to the SignIdentity that is being used to sign the requests, while\n * originalKey is the identity that is being borrowed. More identities can be used\n * in the middle to delegate.\n */\nexport class DelegationIdentity extends SignIdentity {\n /**\n * Create a delegation without having access to delegateKey.\n *\n * @param key The key used to sign the reqyests.\n * @param delegation A delegation object created using `createDelegation`.\n */\n public static fromDelegation(\n key: Pick<SignIdentity, 'sign'>,\n delegation: DelegationChain,\n ): DelegationIdentity {\n return new this(key, delegation);\n }\n\n protected constructor(\n private _inner: Pick<SignIdentity, 'sign'>,\n private _delegation: DelegationChain,\n ) {\n super();\n }\n\n public getDelegation(): DelegationChain {\n return this._delegation;\n }\n\n public getPublicKey(): PublicKey {\n return {\n toDer: () => this._delegation.publicKey,\n };\n }\n public sign(blob: ArrayBuffer): Promise<Signature> {\n return this._inner.sign(blob);\n }\n\n public async transformRequest(request: HttpAgentRequest): Promise<unknown> {\n const { body, ...fields } = request;\n const requestId = await requestIdOf(body);\n return {\n ...fields,\n body: {\n content: body,\n sender_sig: await this.sign(\n new Uint8Array([...requestDomainSeparator, ...new Uint8Array(requestId)]),\n ),\n sender_delegation: this._delegation.delegations,\n sender_pubkey: this._delegation.publicKey,\n },\n };\n }\n}\n\n/**\n * List of things to check for a delegation chain validity.\n */\nexport interface DelegationValidChecks {\n /**\n * Check that the scope is amongst the scopes that this delegation has access to.\n */\n scope?: Principal | string | Array<Principal | string>;\n}\n\n/**\n * Analyze a DelegationChain and validate that it's valid, ie. not expired and apply to the\n * scope.\n * @param chain The chain to validate.\n * @param checks Various checks to validate on the chain.\n */\nexport function isDelegationValid(chain: DelegationChain, checks?: DelegationValidChecks): boolean {\n // Verify that the no delegation is expired. If any are in the chain, returns false.\n for (const { delegation } of chain.delegations) {\n // prettier-ignore\n if (+new Date(Number(delegation.expiration / BigInt(1000000))) <= +Date.now()) {\n return false;\n }\n }\n\n // Check the scopes.\n const scopes: Principal[] = [];\n const maybeScope = checks?.scope;\n if (maybeScope) {\n if (Array.isArray(maybeScope)) {\n scopes.push(...maybeScope.map(s => (typeof s === 'string' ? Principal.fromText(s) : s)));\n } else {\n scopes.push(typeof maybeScope === 'string' ? Principal.fromText(maybeScope) : maybeScope);\n }\n }\n\n for (const s of scopes) {\n const scope = s.toText();\n for (const { delegation } of chain.delegations) {\n if (delegation.targets === undefined) {\n continue;\n }\n\n let none = true;\n for (const target of delegation.targets) {\n if (target.toText() === scope) {\n none = false;\n break;\n }\n }\n if (none) {\n return false;\n }\n }\n }\n\n return true;\n}\n", "import { DerEncodedPublicKey, PublicKey, Signature, SignIdentity } from '@dfinity/agent';\nimport borc from 'borc';\nimport * as tweetnacl from 'tweetnacl';\nimport { fromHexString, toHexString } from '../buffer';\nimport { DER_COSE_OID, wrapDER } from './der';\n\nfunction _coseToDerEncodedBlob(cose: ArrayBuffer): DerEncodedPublicKey {\n return wrapDER(cose, DER_COSE_OID).buffer as DerEncodedPublicKey;\n}\n\n/**\n * From the documentation;\n * The authData is a byte array described in the spec. Parsing it will involve slicing bytes from\n * the array and converting them into usable objects.\n *\n * See https://webauthn.guide/#registration (subsection \"Example: Parsing the authenticator data\").\n *\n * @param authData The authData field of the attestation response.\n * @returns The COSE key of the authData.\n */\nfunction _authDataToCose(authData: ArrayBuffer): ArrayBuffer {\n const dataView = new DataView(new ArrayBuffer(2));\n const idLenBytes = authData.slice(53, 55);\n [...new Uint8Array(idLenBytes)].forEach((v, i) => dataView.setUint8(i, v));\n const credentialIdLength = dataView.getUint16(0);\n\n // Get the public key object.\n return authData.slice(55 + credentialIdLength);\n}\n\nexport class CosePublicKey implements PublicKey {\n protected _encodedKey: DerEncodedPublicKey;\n public constructor(protected _cose: ArrayBuffer) {\n this._encodedKey = _coseToDerEncodedBlob(_cose);\n }\n\n public toDer(): DerEncodedPublicKey {\n return this._encodedKey;\n }\n\n public getCose(): ArrayBuffer {\n return this._cose;\n }\n}\n\n/**\n * Create a challenge from a string or array. The default challenge is always the same\n * because we don't need to verify the authenticity of the key on the server (we don't\n * register our keys with the IC). Any challenge would do, even one per key, randomly\n * generated.\n *\n * @param challenge The challenge to transform into a byte array. By default a hard\n * coded string.\n */\nfunction _createChallengeBuffer(challenge: string | Uint8Array = '<ic0.app>'): Uint8Array {\n if (typeof challenge === 'string') {\n return Uint8Array.from(challenge, c => c.charCodeAt(0));\n } else {\n return challenge;\n }\n}\n\n/**\n * Create a credentials to authenticate with a server. This is necessary in order in\n * WebAuthn to get credentials IDs (which give us the public key and allow us to\n * sign), but in the case of the Internet Computer, we don't actually need to register\n * it, so we don't.\n * @param credentialCreationOptions an optional CredentialCreationOptions object\n */\nasync function _createCredential(\n credentialCreationOptions?: CredentialCreationOptions,\n): Promise<PublicKeyCredential | null> {\n const creds = (await navigator.credentials.create(\n credentialCreationOptions ?? {\n publicKey: {\n authenticatorSelection: {\n userVerification: 'preferred',\n },\n attestation: 'direct',\n challenge: _createChallengeBuffer(),\n pubKeyCredParams: [{ type: 'public-key', alg: PubKeyCoseAlgo.ECDSA_WITH_SHA256 }],\n rp: {\n name: 'Internet Identity Service',\n },\n user: {\n id: tweetnacl.randomBytes(16),\n name: 'Internet Identity',\n displayName: 'Internet Identity',\n },\n },\n },\n )) as PublicKeyCredential;\n\n // Validate that it's the correct type at runtime, since WebAuthn does not HAVE to\n // reply with a PublicKeyCredential.\n if (creds.response === undefined || !(creds.rawId instanceof ArrayBuffer)) {\n return null;\n } else {\n return creds;\n }\n}\n\n// See https://www.iana.org/assignments/cose/cose.xhtml#algorithms for a complete\n// list of these algorithms. We only list the ones we support here.\nenum PubKeyCoseAlgo {\n ECDSA_WITH_SHA256 = -7,\n}\n\n/**\n * A SignIdentity that uses `navigator.credentials`. See https://webauthn.guide/ for\n * more information about WebAuthentication.\n */\nexport class WebAuthnIdentity extends SignIdentity {\n /**\n * Create an identity from a JSON serialization.\n * @param json - json to parse\n */\n public static fromJSON(json: string): WebAuthnIdentity {\n const { publicKey, rawId } = JSON.parse(json);\n\n if (typeof publicKey !== 'string' || typeof rawId !== 'string') {\n throw new Error('Invalid JSON string.');\n }\n\n return new this(fromHexString(rawId), fromHexString(publicKey));\n }\n\n /**\n * Create an identity.\n * @param credentialCreationOptions an optional CredentialCreationOptions Challenge\n */\n public static async create(\n credentialCreationOptions?: CredentialCreationOptions,\n ): Promise<WebAuthnIdentity> {\n const creds = await _createCredential(credentialCreationOptions);\n\n if (!creds || creds.type !== 'public-key') {\n throw new Error('Could not create credentials.');\n }\n\n const response = creds.response as AuthenticatorAttestationResponse;\n if (!(response.attestationObject instanceof ArrayBuffer)) {\n throw new Error('Was expecting an attestation response.');\n }\n\n // Parse the attestationObject as CBOR.\n const attObject = borc.decodeFirst(new Uint8Array(response.attestationObject));\n\n return new this(creds.rawId, _authDataToCose(attObject.authData));\n }\n\n protected _publicKey: CosePublicKey;\n\n protected constructor(public readonly rawId: ArrayBuffer, cose: ArrayBuffer) {\n super();\n this._publicKey = new CosePublicKey(cose);\n }\n\n public getPublicKey(): PublicKey {\n return this._publicKey;\n }\n\n public async sign(blob: ArrayBuffer): Promise<Signature> {\n const result = (await navigator.credentials.get({\n publicKey: {\n allowCredentials: [\n {\n type: 'public-key',\n id: this.rawId,\n },\n ],\n challenge: blob,\n userVerification: 'preferred',\n },\n })) as PublicKeyCredential;\n\n const response = result.response as AuthenticatorAssertionResponse;\n if (\n response.signature instanceof ArrayBuffer &&\n response.authenticatorData instanceof ArrayBuffer\n ) {\n const cbor = borc.encode(\n new borc.Tagged(55799, {\n authenticator_data: new Uint8Array(response.authenticatorData),\n client_data_json: new TextDecoder().decode(response.clientDataJSON),\n signature: new Uint8Array(response.signature),\n }),\n );\n if (!cbor) {\n throw new Error('failed to encode cbor');\n }\n return cbor.buffer as Signature;\n } else {\n throw new Error('Invalid response from WebAuthn.');\n }\n }\n\n /**\n * Allow for JSON serialization of all information needed to reuse this identity.\n */\n public toJSON(): JsonnableWebAuthnIdentitiy {\n return {\n publicKey: toHexString(this._publicKey.getCose()),\n rawId: toHexString(this.rawId),\n };\n }\n}\n\n/**\n * ReturnType<WebAuthnIdentity.toJSON>\n */\nexport interface JsonnableWebAuthnIdentitiy {\n // The hexadecimal representation of the DER encoded public key.\n publicKey: string;\n // The string representation of the local WebAuthn Credential.id (base64url encoded).\n rawId: string;\n}\n", "/** @module IdleManager */\ntype IdleCB = () => unknown;\nexport type IdleManagerOptions = {\n /**\n * Callback after the user has gone idle\n */\n onIdle?: IdleCB;\n /**\n * timeout in ms\n * @default 30 minutes [600_000]\n */\n idleTimeout?: number;\n /**\n * capture scroll events\n * @default false\n */\n captureScroll?: boolean;\n /**\n * scroll debounce time in ms\n * @default 100\n */\n scrollDebounce?: number;\n};\n\nconst events = ['mousedown', 'mousemove', 'keydown', 'touchstart', 'wheel'];\n\n/**\n * Detects if the user has been idle for a duration of `idleTimeout` ms, and calls `onIdle` and registered callbacks.\n * By default, the IdleManager will log a user out after 10 minutes of inactivity.\n * To override these defaults, you can pass an `onIdle` callback, or configure a custom `idleTimeout` in milliseconds\n */\nexport class IdleManager {\n callbacks: IdleCB[] = [];\n idleTimeout: IdleManagerOptions['idleTimeout'] = 10 * 60 * 1000;\n timeoutID?: number = undefined;\n\n /**\n * Creates an {@link IdleManager}\n * @param {IdleManagerOptions} options Optional configuration\n * @see {@link IdleManagerOptions}\n * @param options.onIdle Callback once user has been idle. Use to prompt for fresh login, and use `Actor.agentOf(your_actor).invalidateIdentity()` to protect the user\n * @param options.idleTimeout timeout in ms\n * @param options.captureScroll capture scroll events\n * @param options.scrollDebounce scroll debounce time in ms\n */\n public static create(\n options: {\n /**\n * Callback after the user has gone idle\n * @see {@link IdleCB}\n */\n onIdle?: () => unknown;\n /**\n * timeout in ms\n * @default 10 minutes [600_000]\n */\n idleTimeout?: number;\n /**\n * capture scroll events\n * @default false\n */\n captureScroll?: boolean;\n /**\n * scroll debounce time in ms\n * @default 100\n */\n scrollDebounce?: number;\n } = {},\n ): IdleManager {\n return new this(options);\n }\n\n /**\n * @protected\n * @param options {@link IdleManagerOptions}\n */\n protected constructor(options: IdleManagerOptions = {}) {\n const { onIdle, idleTimeout = 10 * 60 * 1000 } = options || {};\n\n this.callbacks = onIdle ? [onIdle] : [];\n this.idleTimeout = idleTimeout;\n\n const _resetTimer = this._resetTimer.bind(this);\n\n window.addEventListener('load', _resetTimer, true);\n\n events.forEach(function (name) {\n document.addEventListener(name, _resetTimer, true);\n });\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n const debounce = (func: Function, wait: number) => {\n let timeout: number | undefined;\n return (...args: unknown[]) => {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const context = this;\n const later = function () {\n timeout = undefined;\n func.apply(context, args);\n };\n clearTimeout(timeout);\n timeout = window.setTimeout(later, wait);\n };\n };\n\n if (options?.captureScroll) {\n // debounce scroll events\n const scroll = debounce(_resetTimer, options?.scrollDebounce ?? 100);\n window.addEventListener('scroll', scroll, true);\n }\n\n _resetTimer();\n }\n\n /**\n * @param {IdleCB} callback function to be called when user goes idle\n */\n public registerCallback(callback: IdleCB): void {\n this.callbacks.push(callback);\n }\n\n /**\n * Cleans up the idle manager and its listeners\n */\n public exit(): void {\n clearTimeout(this.timeoutID);\n window.removeEventListener('load', this._resetTimer, true);\n\n const _resetTimer = this._resetTimer.bind(this);\n events.forEach(function (name) {\n document.removeEventListener(name, _resetTimer, true);\n });\n this.callbacks.forEach(cb => cb());\n }\n\n /**\n * Resets the timeouts during cleanup\n */\n _resetTimer(): void {\n const exit = this.exit.bind(this);\n window.clearTimeout(this.timeoutID);\n this.timeoutID = window.setTimeout(exit, this.idleTimeout);\n }\n}\n", "const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n", "import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n", "import { openDB, IDBPDatabase } from 'idb';\nimport { isBrowser, KEY_STORAGE_DELEGATION, KEY_STORAGE_KEY } from './storage';\n\ntype Database = IDBPDatabase<unknown>;\ntype IDBValidKey = string | number | Date | BufferSource | IDBValidKey[];\nconst AUTH_DB_NAME = 'auth-client-db';\nconst OBJECT_STORE_NAME = 'ic-keyval';\n\nconst _openDbStore = async (\n dbName = AUTH_DB_NAME,\n storeName = OBJECT_STORE_NAME,\n version: number,\n) => {\n // Clear legacy stored delegations\n if (isBrowser && localStorage?.getItem(KEY_STORAGE_DELEGATION)) {\n localStorage.removeItem(KEY_STORAGE_DELEGATION);\n localStorage.removeItem(KEY_STORAGE_KEY);\n }\n return await openDB(dbName, version, {\n upgrade: database => {\n database.objectStoreNames;\n if (database.objectStoreNames.contains(storeName)) {\n database.clear(storeName);\n }\n database.createObjectStore(storeName);\n },\n });\n};\n\nasync function _getValue<T>(\n db: Database,\n storeName: string,\n key: IDBValidKey,\n): Promise<T | undefined> {\n return await db.get(storeName, key);\n}\n\nasync function _setValue<T>(\n db: Database,\n storeName: string,\n key: IDBValidKey,\n value: T,\n): Promise<IDBValidKey> {\n return await db.put(storeName, value, key);\n}\n\nasync function _removeValue(db: Database, storeName: string, key: IDBValidKey): Promise<void> {\n return await db.delete(storeName, key);\n}\n\nexport type DBCreateOptions = {\n dbName?: string;\n storeName?: string;\n version?: number;\n};\n\n/**\n * Simple Key Value store\n * Defaults to `'auth-client-db'` with an object store of `'ic-keyval'`\n */\nexport class IdbKeyVal {\n /**\n *\n * @param {DBCreateOptions} options {@link DbCreateOptions}\n * @param {DBCreateOptions['dbName']} options.dbName name for the indexeddb database\n * @default 'auth-client-db'\n * @param {DBCreateOptions['storeName']} options.storeName name for the indexeddb Data Store\n * @default 'ic-keyval'\n * @param {DBCreateOptions['version']} options.version version of the database. Increment to safely upgrade\n * @constructs an {@link IdbKeyVal}\n */\n public static async create(options?: DBCreateOptions): Promise<IdbKeyVal> {\n const { dbName = AUTH_DB_NAME, storeName = OBJECT_STORE_NAME, version = 1 } = options ?? {};\n const db = await _openDbStore(dbName, storeName, version);\n return new IdbKeyVal(db, storeName);\n }\n\n // Do not use - instead prefer create\n private constructor(private _db: Database, private _storeName: string) {}\n\n /**\n * Basic setter\n * @param {IDBValidKey} key string | number | Date | BufferSource | IDBValidKey[]\n * @param value value to set\n * @returns void\n */\n public async set<T>(key: IDBValidKey, value: T) {\n return await _setValue<T>(this._db, this._storeName, key, value);\n }\n /**\n * Basic getter\n * Pass in a type T for type safety if you know the type the value will have if it is found\n * @param {IDBValidKey} key string | number | Date | BufferSource | IDBValidKey[]\n * @returns `Promise<T | null>`\n * @example\n * await get<string>('exampleKey') -> 'exampleValue'\n */\n public async get<T>(key: IDBValidKey): Promise<T | null> {\n return (await _getValue<T>(this._db, this._storeName, key)) ?? null;\n }\n\n /**\n * Remove a key\n * @param key {@link IDBValidKey}\n * @returns void\n */\n public async remove(key: IDBValidKey) {\n return await _removeValue(this._db, this._storeName, key);\n }\n}\n", "import { IdbKeyVal } from './db';\n\nexport const KEY_STORAGE_KEY = 'identity';\nexport const KEY_STORAGE_DELEGATION = 'delegation';\nexport const KEY_VECTOR = 'iv';\n// Increment if any fields are modified\nexport const DB_VERSION = 1;\n\nexport const isBrowser = typeof window !== 'undefined';\n\nexport type StoredKey = string | CryptoKeyPair;\n\n/**\n * Interface for persisting user authentication data\n */\nexport interface AuthClientStorage {\n get(key: string): Promise<StoredKey | null>;\n\n set(key: string, value: StoredKey): Promise<void>;\n\n remove(key: string): Promise<void>;\n}\n\n/**\n * Legacy implementation of AuthClientStorage, for use where IndexedDb is not available\n */\nexport class LocalStorage implements AuthClientStorage {\n constructor(public readonly prefix = 'ic-', private readonly _localStorage?: Storage) {}\n\n public get(key: string): Promise<string | null> {\n return Promise.resolve(this._getLocalStorage().getItem(this.prefix + key));\n }\n\n public set(key: string, value: string): Promise<void> {\n this._getLocalStorage().setItem(this.prefix + key, value);\n return Promise.resolve();\n }\n\n public remove(key: string): Promise<void> {\n this._getLocalStorage().removeItem(this.prefix + key);\n return Promise.resolve();\n }\n\n private _getLocalStorage() {\n if (this._localStorage) {\n return this._localStorage;\n }\n\n const ls =\n typeof window === 'undefined'\n ? typeof global === 'undefined'\n ? typeof self === 'undefined'\n ? undefined\n : self.localStorage\n : global.localStorage\n : window.localStorage;\n\n if (!ls) {\n throw new Error('Could not find local storage.');\n }\n\n return ls;\n }\n}\n\n/**\n * IdbStorage is an interface for simple storage of string key-value pairs built on {@link IdbKeyVal}\n *\n * It replaces {@link LocalStorage}\n * @see implements {@link AuthClientStorage}\n */\nexport class IdbStorage implements AuthClientStorage {\n // Initializes a KeyVal on first request\n private initializedDb: IdbKeyVal | undefined;\n get _db(): Promise<IdbKeyVal> {\n return new Promise(resolve => {\n if (this.initializedDb) {\n resolve(this.initializedDb);\n return;\n }\n IdbKeyVal.create({ version: DB_VERSION }).then(db => {\n this.initializedDb = db;\n resolve(db);\n });\n });\n }\n\n public async get(key: string): Promise<string | null> {\n const db = await this._db;\n return await db.get<string>(key);\n // return (await db.get<string>(key)) ?? null;\n }\n\n public async set(key: string, value: string): Promise<void> {\n const db = await this._db;\n await db.set(key, value);\n }\n\n public async remove(key: string): Promise<void> {\n const db = await this._db;\n await db.remove(key);\n }\n}\n", "/** @module AuthClient */\nimport {\n AnonymousIdentity,\n DerEncodedPublicKey,\n Identity,\n Signature,\n SignIdentity,\n} from '@dfinity/agent';\nimport {\n Delegation,\n DelegationChain,\n isDelegationValid,\n DelegationIdentity,\n Ed25519KeyIdentity,\n ECDSAKeyIdentity,\n} from '@dfinity/identity';\nimport { Principal } from '@dfinity/principal';\nimport { IdleManager, IdleManagerOptions } from './idleManager';\nimport {\n AuthClientStorage,\n IdbStorage,\n isBrowser,\n KEY_STORAGE_DELEGATION,\n KEY_STORAGE_KEY,\n KEY_VECTOR,\n LocalStorage,\n} from './storage';\n\nexport { IdbStorage, LocalStorage, KEY_STORAGE_DELEGATION, KEY_STORAGE_KEY } from './storage';\nexport { IdbKeyVal, DBCreateOptions } from './db';\n\nconst IDENTITY_PROVIDER_DEFAULT = 'https://identity.ic0.app';\nconst IDENTITY_PROVIDER_ENDPOINT = '#authorize';\n\nconst INTERRUPT_CHECK_INTERVAL = 500;\n\nexport const ERROR_USER_INTERRUPT = 'UserInterrupt';\n\n/**\n * List of options for creating an {@link AuthClient}.\n */\nexport interface AuthClientCreateOptions {\n /**\n * An identity to use as the base\n */\n identity?: SignIdentity | ECDSAKeyIdentity;\n /**\n * Optional storage with get, set, and remove. Uses {@link IdbStorage} by default\n */\n storage?: AuthClientStorage;\n /**\n * Options to handle idle timeouts\n * @default after 30 minutes, invalidates the identity\n */\n idleOptions?: IdleOptions;\n}\n\nexport interface IdleOptions extends IdleManagerOptions {\n /**\n * Disables idle functionality for {@link IdleManager}\n * @default false\n */\n disableIdle?: boolean;\n\n /**\n * Disables default idle behavior - call logout & reload window\n * @default false\n */\n disableDefaultIdleCallback?: boolean;\n}\n\nexport * from './idleManager';\n\nexport interface AuthClientLoginOptions {\n /**\n * Identity provider\n * @default \"https://identity.ic0.app\"\n */\n identityProvider?: string | URL;\n /**\n * Expiration of the authentication in nanoseconds\n * @default BigInt(8) hours * BigInt(3_600_000_000_000) nanoseconds\n */\n maxTimeToLive?: bigint;\n /**\n * Origin for Identity Provider to use while generating the delegated identity. For II, the derivation origin must authorize this origin by setting a record at `<derivation-origin>/.well-known/ii-alternative-origins`.\n * @see https://github.com/dfinity/internet-identity/blob/main/docs/internet-identity-spec.adoc\n */\n derivationOrigin?: string | URL;\n /**\n * Auth Window feature config string\n * @example \"toolbar=0,location=0,menubar=0,width=500,height=500,left=100,top=100\"\n */\n windowOpenerFeatures?: string;\n /**\n * Callback once login has completed\n */\n onSuccess?: (() => void) | (() => Promise<void>);\n /**\n * Callback in case authentication fails\n */\n onError?: ((error?: string) => void) | ((error?: string) => Promise<void>);\n}\n\ninterface InternetIdentityAuthRequest {\n kind: 'authorize-client';\n sessionPublicKey: Uint8Array;\n maxTimeToLive?: bigint;\n derivationOrigin?: string;\n}\n\ninterface InternetIdentityAuthResponseSuccess {\n kind: 'authorize-client-success';\n delegations: {\n delegation: {\n pubkey: Uint8Array;\n expiration: bigint;\n targets?: Principal[];\n };\n signature: Uint8Array;\n }[];\n userPublicKey: Uint8Array;\n}\n\ninterface AuthReadyMessage {\n kind: 'authorize-ready';\n}\n\ninterface AuthResponseSuccess {\n kind: 'authorize-client-success';\n delegations: {\n delegation: {\n pubkey: Uint8Array;\n expiration: bigint;\n targets?: Principal[];\n };\n signature: Uint8Array;\n }[];\n userPublicKey: Uint8Array;\n}\n\ninterface AuthResponseFailure {\n kind: 'authorize-client-failure';\n text: string;\n}\n\ntype IdentityServiceResponseMessage = AuthReadyMessage | AuthResponse;\ntype AuthResponse = AuthResponseSuccess | AuthResponseFailure;\n\n/**\n * Tool to manage authentication and identity\n * @see {@link AuthClient}\n */\nexport class AuthClient {\n /**\n * Create an AuthClient to manage authentication and identity\n * @constructs {@link AuthClient}\n * @param {AuthClientCreateOptions} options\n * @see {@link AuthClientCreateOptions}\n * @param options.identity Optional Identity to use as the base\n * @see {@link SignIdentity}\n * @param options.storage Storage mechanism for delegration credentials\n * @see {@link AuthClientStorage}\n * @param {IdleOptions} options.idleOptions Configures an {@link IdleManager}\n * @see {@link IdleOptions}\n * Default behavior is to clear stored identity and reload the page when a user goes idle, unless you set the disableDefaultIdleCallback flag or pass in a custom idle callback.\n * @example\n * const authClient = await AuthClient.create({\n * idleOptions: {\n * disableIdle: true\n * }\n * })\n */\n public static async create(\n options: {\n /**\n * An {@link Identity} to use as the base.\n * By default, a new {@link AnonymousIdentity}\n */\n identity?: SignIdentity;\n /**\n * {@link AuthClientStorage}\n * @description Optional storage with get, set, and remove. Uses {@link IdbStorage} by default\n */\n storage?: AuthClientStorage;\n /**\n * Options to handle idle timeouts\n * @default after 10 minutes, invalidates the identity\n */\n idleOptions?: IdleOptions;\n } = {},\n ): Promise<AuthClient> {\n const storage = options.storage ?? new IdbStorage();\n\n let key: null | SignIdentity | ECDSAKeyIdentity = null;\n if (options.identity) {\n key = options.identity;\n } else {\n let maybeIdentityStorage = await storage.get(KEY_STORAGE_KEY);\n if (!maybeIdentityStorage && isBrowser) {\n // Attempt to migrate from localstorage\n try {\n const fallbackLocalStorage = new LocalStorage();\n const localChain = await fallbackLocalStorage.get(KEY_STORAGE_DELEGATION);\n const localKey = await fallbackLocalStorage.get(KEY_STORAGE_KEY);\n if (localChain && localKey) {\n console.log('Discovered an identity stored in localstorage. Migrating to IndexedDB');\n await storage.set(KEY_STORAGE_DELEGATION, localChain);\n await storage.set(KEY_STORAGE_KEY, localKey);\n maybeIdentityStorage = localChain;\n // clean up\n await fallbackLocalStorage.remove(KEY_STORAGE_DELEGATION);\n await fallbackLocalStorage.remove(KEY_STORAGE_KEY);\n }\n } catch (error) {\n console.error('error while attempting to recover localstorage: ' + error);\n }\n }\n if (maybeIdentityStorage) {\n try {\n if (typeof maybeIdentityStorage === 'object') {\n key = await ECDSAKeyIdentity.fromKeyPair(maybeIdentityStorage);\n } else if (typeof maybeIdentityStorage === 'string') {\n // This is a legacy identity, which is a serialized Ed25519KeyIdentity.\n key = Ed25519KeyIdentity.fromJSON(maybeIdentityStorage);\n }\n } catch (e) {\n // Ignore this, this means that the localStorage value isn't a valid Ed25519KeyIdentity or ECDSAKeyIdentity\n // serialization.\n }\n }\n }\n\n let identity = new AnonymousIdentity();\n let chain: null | DelegationChain = null;\n if (key) {\n try {\n const chainStorage = await storage.get(KEY_STORAGE_DELEGATION);\n if (typeof chainStorage === 'object' && chainStorage !== null) {\n throw new Error(\n 'Delegation chain is incorrectly stored. A delegation chain should be stored as a string.',\n );\n }\n\n if (options.identity) {\n identity = options.identity;\n } else if (chainStorage) {\n chain = DelegationChain.fromJSON(chainStorage);\n\n // Verify that the delegation isn't expired.\n if (!isDelegationValid(chain)) {\n await _deleteStorage(storage);\n key = null;\n } else {\n identity = DelegationIdentity.fromDelegation(key, chain);\n }\n }\n } catch (e) {\n console.error(e);\n // If there was a problem loading the chain, delete the key.\n await _deleteStorage(storage);\n key = null;\n }\n }\n let idleManager: IdleManager | undefined = undefined;\n if (options.idleOptions?.disableIdle) {\n idleManager = undefined;\n }\n // if there is a delegation chain or provided identity, setup idleManager\n else if (chain || options.identity) {\n idleManager = IdleManager.create(options.idleOptions);\n }\n\n if (!key) {\n // Create a new key (whether or not one was in storage).\n key = await ECDSAKeyIdentity.generate();\n await storage.set(KEY_STORAGE_KEY, (key as ECDSAKeyIdentity).getKeyPair());\n }\n\n return new this(identity, key, chain, storage, idleManager, options);\n }\n\n protected constructor(\n private _identity: Identity,\n private _key: SignIdentity,\n private _chain: DelegationChain | null,\n private _storage: AuthClientStorage,\n public idleManager: IdleManager | undefined,\n private _createOptions: AuthClientCreateOptions | undefined,\n // A handle on the IdP window.\n private _idpWindow?: Window,\n // The event handler for processing events from the IdP.\n private _eventHandler?: (event: MessageEvent) => void,\n ) {\n const logout = this.logout.bind(this);\n const idleOptions = _createOptions?.idleOptions;\n /**\n * Default behavior is to clear stored identity and reload the page.\n * By either setting the disableDefaultIdleCallback flag or passing in a custom idle callback, we will ignore this config\n */\n if (!idleOptions?.onIdle && !idleOptions?.disableDefaultIdleCallback) {\n this.idleManager?.registerCallback(() => {\n logout();\n location.reload();\n });\n }\n }\n\n private _handleSuccess(message: InternetIdentityAuthResponseSuccess, onSuccess?: () => void) {\n const delegations = message.delegations.map(signedDelegation => {\n return {\n delegation: new Delegation(\n signedDelegation.delegation.pubkey,\n signedDelegation.delegation.expiration,\n signedDelegation.delegation.targets,\n ),\n signature: signedDelegation.signature.buffer as Signature,\n };\n });\n\n const delegationChain = DelegationChain.fromDelegations(\n delegations,\n message.userPublicKey.buffer as DerEncodedPublicKey,\n );\n\n const key = this._key;\n if (!key) {\n return;\n }\n\n this._chain = delegationChain;\n this._identity = DelegationIdentity.fromDelegation(key, this._chain);\n\n this._idpWindow?.close();\n if (!this.idleManager) {\n const idleOptions = this._createOptions?.idleOptions;\n this.idleManager = IdleManager.create(idleOptions);\n\n if (!idleOptions?.onIdle && !idleOptions?.disableDefaultIdleCallback) {\n this.idleManager?.registerCallback(() => {\n this.logout();\n location.reload();\n });\n }\n }\n onSuccess?.();\n this._removeEventListener();\n delete this._idpWindow;\n }\n\n public getIdentity(): Identity {\n return this._identity;\n }\n\n public async isAuthenticated(): Promise<boolean> {\n return !this.getIdentity().getPrincipal().isAnonymous() && this._chain !== null;\n }\n\n /**\n * AuthClient Login -\n * Opens up a new window to authenticate with Internet Identity\n * @param {AuthClientLoginOptions} options\n * @param options.identityProvider Identity provider\n * @param options.maxTimeToLive Expiration of the authentication in nanoseconds\n * @param options.derivationOrigin Origin for Identity Provider to use while generating the delegated identity\n * @param options.windowOpenerFeatures Configures the opened authentication window\n * @param options.onSuccess Callback once login has completed\n * @param options.onError Callback in case authentication fails\n * @example\n * const authClient = await AuthClient.create();\n * authClient.login({\n * identityProvider: 'http://<canisterID>.localhost:8000',\n * maxTimeToLive: BigInt (7) * BigInt(24) * BigInt(3_600_000_000_000), // 1 week\n * windowOpenerFeatures: \"toolbar=0,location=0,menubar=0,width=500,height=500,left=100,top=100\",\n * onSuccess: () => {\n * console.log('Login Successful!');\n * },\n * onError: (error) => {\n * console.error('Login Failed: ', error);\n * }\n * });\n */\n public async login(options?: {\n /**\n * Identity provider\n * @default \"https://identity.ic0.app\"\n */\n identityProvider?: string | URL;\n /**\n * Expiration of the authentication in nanoseconds\n * @default BigInt(8) hours * BigInt(3_600_000_000_000) nanoseconds\n */\n maxTimeToLive?: bigint;\n /**\n * Auth Window feature config string\n * @example \"toolbar=0,location=0,menubar=0,width=500,height=500,left=100,top=100\"\n */\n /**\n * Origin for Identity Provider to use while generating the delegated identity. For II, the derivation origin must authorize this origin by setting a record at `<derivation-origin>/.well-known/ii-alternative-origins`.\n * @see https://github.com/dfinity/internet-identity/blob/main/docs/internet-identity-spec.adoc\n */\n derivationOrigin?: string | URL;\n windowOpenerFeatures?: string;\n /**\n * Callback once login has completed\n */\n onSuccess?: (() => void) | (() => Promise<void>);\n /**\n * Callback in case authentication fails\n */\n onError?: ((error?: string) => void) | ((error?: string) => Promise<void>);\n }): Promise<void> {\n // Set default maxTimeToLive to 8 hours\n const defaultTimeToLive = /* hours */ BigInt(8) * /* nanoseconds */ BigInt(3_600_000_000_000);\n\n // Create the URL of the IDP. (e.g. https://XXXX/#authorize)\n const identityProviderUrl = new URL(\n options?.identityProvider?.toString() || IDENTITY_PROVIDER_DEFAULT,\n );\n // Set the correct hash if it isn't already set.\n identityProviderUrl.hash = IDENTITY_PROVIDER_ENDPOINT;\n\n // If `login` has been called previously, then close/remove any previous windows\n // and event listeners.\n this._idpWindow?.close();\n this._removeEventListener();\n\n // Add an event listener to handle responses.\n this._eventHandler = this._getEventHandler(identityProviderUrl, {\n maxTimeToLive: options?.maxTimeToLive ?? defaultTimeToLive,\n ...options,\n });\n window.addEventListener('message', this._eventHandler);\n\n // Open a new window with the IDP provider.\n this._idpWindow =\n window.open(identityProviderUrl.toString(), 'idpWindow', options?.windowOpenerFeatures) ??\n undefined;\n\n // Check if the _idpWindow is closed by user.\n const checkInterruption = (): void => {\n // The _idpWindow is opened and not yet closed by the client\n if (this._idpWindow) {\n if (this._idpWindow.closed) {\n this._handleFailure(ERROR_USER_INTERRUPT, options?.onError);\n } else {\n setTimeout(checkInterruption, INTERRUPT_CHECK_INTERVAL);\n }\n }\n };\n checkInterruption();\n }\n\n private _getEventHandler(identityProviderUrl: URL, options?: AuthClientLoginOptions) {\n return async (event: MessageEvent) => {\n if (event.origin !== identityProviderUrl.origin) {\n console.warn(\n `WARNING: expected origin '${identityProviderUrl.origin}', got '${event.origin}' (ignoring)`,\n );\n return;\n }\n\n const message = event.data as IdentityServiceResponseMessage;\n\n switch (message.kind) {\n case 'authorize-ready': {\n // IDP is ready. Send a message to request authorization.\n const request: InternetIdentityAuthRequest = {\n kind: 'authorize-client',\n sessionPublicKey: new Uint8Array(this._key?.getPublicKey().toDer() as ArrayBuffer),\n maxTimeToLive: options?.maxTimeToLive,\n derivationOrigin: options?.derivationOrigin?.toString(),\n };\n this._idpWindow?.postMessage(request, identityProviderUrl.origin);\n break;\n }\n case 'authorize-client-success':\n // Create the delegation chain and store it.\n try {\n this._handleSuccess(message, options?.onSuccess);\n\n // Setting the storage is moved out of _handleSuccess to make\n // it a sync function. Having _handleSuccess as an async function\n // messes up the jest tests for some reason.\n if (this._chain) {\n await this._storage.set(KEY_STORAGE_DELEGATION, JSON.stringify(this._chain.toJSON()));\n }\n } catch (err) {\n this._handleFailure((err as Error).message, options?.onError);\n }\n break;\n case 'authorize-client-failure':\n this._handleFailure(message.text, options?.onError);\n break;\n default:\n break;\n }\n };\n }\n\n private _handleFailure(errorMessage?: string, onError?: (error?: string) => void): void {\n this._idpWindow?.close();\n onError?.(errorMessage);\n this._removeEventListener();\n delete this._idpWindow;\n }\n\n private _removeEventListener() {\n if (this._eventHandler) {\n window.removeEventListener('message', this._eventHandler);\n }\n this._eventHandler = undefined;\n }\n\n public async logout(options: { returnTo?: string } = {}): Promise<void> {\n await _deleteStorage(this._storage);\n\n // Reset this auth client to a non-authenticated state.\n this._identity = new AnonymousIdentity();\n this._chain = null;\n\n if (options.returnTo) {\n try {\n window.history.pushState({}, '', options.returnTo);\n } catch (e) {\n window.location.href = options.returnTo;\n }\n }\n }\n}\n\nasync function _deleteStorage(storage: AuthClientStorage) {\n await storage.remove(KEY_STORAGE_KEY);\n await storage.remove(KEY_STORAGE_DELEGATION);\n await storage.remove(KEY_VECTOR);\n}\n", "// How long the delegation identity should remain valid?\n// e.g. BigInt(7 * 24 * 60 * 60 * 1000 * 1000 * 1000) = 7 days in nanoseconds\n// For Papyrs: 4 hours\nexport const delegationIdentityExpiration = BigInt(4 * 60 * 60 * 1000 * 1000 * 1000);\n\nexport const internetIdentityMainnet = 'https://identity.ic0.app';\n", "export abstract class Store<T> {\n private callbacks: {id: symbol; callback: (data: T | null) => void}[] = [];\n\n protected populate(data: T | null) {\n this.callbacks.forEach(({callback}: {id: symbol; callback: (data: T | null) => void}) =>\n callback(data)\n );\n }\n\n subscribe(callback: (data: T | null) => void): () => void {\n const callbackId = Symbol();\n this.callbacks.push({id: callbackId, callback});\n\n return () =>\n (this.callbacks = this.callbacks.filter(\n ({id}: {id: symbol; callback: (data: T | null) => void}) => id !== callbackId\n ));\n }\n}\n", "import type {User} from '../types/auth.types';\nimport {Store} from './store';\n\nexport class AuthStore extends Store<User | null> {\n private static instance: AuthStore;\n\n private authUser: User | null = null;\n\n private constructor() {\n super();\n }\n\n static getInstance() {\n if (!AuthStore.instance) {\n AuthStore.instance = new AuthStore();\n }\n return AuthStore.instance;\n }\n\n set(authUser: User | null) {\n this.authUser = authUser;\n\n this.populate(authUser);\n }\n\n get(): User | null {\n return this.authUser;\n }\n\n override subscribe(callback: (data: User | null) => void): () => void {\n const unsubscribe: () => void = super.subscribe(callback);\n\n callback(this.authUser);\n\n return unsubscribe;\n }\n\n isLoggedIn(): boolean {\n return !this.authUser?.data?.principal.isAnonymous();\n }\n\n reset() {\n this.authUser = null;\n\n this.populate(this.authUser);\n }\n}\n", "import type {Environment} from '../types/env.types';\nimport {Store} from './store';\n\nexport class EnvStore extends Store<Environment | undefined> {\n private static instance: EnvStore;\n\n private env: Environment | undefined;\n\n private constructor() {\n super();\n }\n\n static getInstance() {\n if (!EnvStore.instance) {\n EnvStore.instance = new EnvStore();\n }\n return EnvStore.instance;\n }\n\n set(env: Environment | undefined) {\n this.env = env;\n\n this.populate(env);\n }\n\n get(): Environment | undefined {\n return this.env;\n }\n\n localIdentity(): boolean {\n return this.get()?.localIdentityCanisterId !== undefined;\n }\n\n override subscribe(callback: (data: Environment | null | undefined) => void): () => void {\n const unsubscribe: () => void = super.subscribe(callback);\n\n callback(this.env);\n\n return unsubscribe;\n }\n}\n", "export const toNullable = <T>(value?: T): [] | [T] => {\n return value ? [value] : [];\n};\n\nexport const fromNullable = <T>(value: [] | [T]): T | undefined => {\n return value?.[0];\n};\n\nexport const toArray = async <T>(data: T): Promise<Uint8Array> => {\n const blob: Blob = new Blob([JSON.stringify(data)], {\n type: 'application/json; charset=utf-8'\n });\n return new Uint8Array(await blob.arrayBuffer());\n};\n\nexport const fromArray = async <T>(data: Uint8Array): Promise<T> => {\n const blob: Blob = new Blob([data], {\n type: 'application/json; charset=utf-8'\n });\n return JSON.parse(await blob.text());\n};\n", "/** Is null or undefined */\nexport const isNullish = <T>(argument: T | undefined | null): argument is undefined | null =>\n argument === null || argument === undefined;\n\n/** Not null and not undefined */\nexport const nonNullish = <T>(argument: T | undefined | null): argument is NonNullable<T> =>\n !isNullish(argument);\n\nexport class NullishError extends Error {}\n\nexport const assertNonNullish: <T>(\n value: T,\n message?: string\n) => asserts value is NonNullable<T> = <T>(value: T, message?: string): void => {\n if (isNullish(value)) {\n throw new NullishError(message);\n }\n};\n", "import type {ListParams} from '../types/list.types';\nimport {toNullable} from './did.utils';\nimport {isNullish} from './utils';\n\nexport const toListParams = ({matcher, paginate, order}: ListParams) => ({\n matcher: toNullable(matcher),\n paginate: toNullable(\n isNullish(paginate)\n ? undefined\n : {\n start_after: toNullable(paginate.startAfter),\n limit: toNullable(isNullish(paginate.limit) ? undefined : BigInt(paginate.limit))\n }\n ),\n order: toNullable(order)\n});\n", "export const idlFactory = ({IDL}) => {\n const ControllersArgs = IDL.Record({\n controllers: IDL.Vec(IDL.Principal)\n });\n const CommitBatch = IDL.Record({\n batch_id: IDL.Nat,\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n chunk_ids: IDL.Vec(IDL.Nat)\n });\n const DelDoc = IDL.Record({updated_at: IDL.Opt(IDL.Nat64)});\n const StorageConfig = IDL.Record({\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))))\n });\n const Config = IDL.Record({storage: StorageConfig});\n const Doc = IDL.Record({\n updated_at: IDL.Nat64,\n owner: IDL.Principal,\n data: IDL.Vec(IDL.Nat8),\n created_at: IDL.Nat64\n });\n const HttpRequest = IDL.Record({\n url: IDL.Text,\n method: IDL.Text,\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))\n });\n const StreamingCallbackToken = IDL.Record({\n token: IDL.Opt(IDL.Text),\n sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n index: IDL.Nat64,\n encoding_type: IDL.Text,\n full_path: IDL.Text\n });\n const StreamingStrategy = IDL.Variant({\n Callback: IDL.Record({\n token: StreamingCallbackToken,\n callback: IDL.Func([], [], [])\n })\n });\n const HttpResponse = IDL.Record({\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n streaming_strategy: IDL.Opt(StreamingStrategy),\n status_code: IDL.Nat16\n });\n const StreamingCallbackHttpResponse = IDL.Record({\n token: IDL.Opt(StreamingCallbackToken),\n body: IDL.Vec(IDL.Nat8)\n });\n const InitAssetKey = IDL.Record({\n token: IDL.Opt(IDL.Text),\n collection: IDL.Text,\n name: IDL.Text,\n encoding_type: IDL.Opt(IDL.Text),\n full_path: IDL.Text\n });\n const InitUploadResult = IDL.Record({batch_id: IDL.Nat});\n const OrderKeys = IDL.Record({desc: IDL.Bool});\n const PaginateKeys = IDL.Record({\n start_after: IDL.Opt(IDL.Text),\n limit: IDL.Opt(IDL.Nat64)\n });\n const ListParams = IDL.Record({\n order: IDL.Opt(OrderKeys),\n matcher: IDL.Opt(IDL.Text),\n paginate: IDL.Opt(PaginateKeys)\n });\n const AssetKey = IDL.Record({\n token: IDL.Opt(IDL.Text),\n collection: IDL.Text,\n owner: IDL.Principal,\n name: IDL.Text,\n full_path: IDL.Text\n });\n const AssetEncodingNoContent = IDL.Record({\n modified: IDL.Nat64,\n sha256: IDL.Vec(IDL.Nat8),\n total_length: IDL.Nat\n });\n const AssetNoContent = IDL.Record({\n key: AssetKey,\n updated_at: IDL.Nat64,\n encodings: IDL.Vec(IDL.Tuple(IDL.Text, AssetEncodingNoContent)),\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n created_at: IDL.Nat64\n });\n const ListResults = IDL.Record({\n matches_length: IDL.Nat64,\n length: IDL.Nat64,\n items: IDL.Vec(IDL.Tuple(IDL.Text, AssetNoContent))\n });\n const CustomDomain = IDL.Record({\n updated_at: IDL.Nat64,\n created_at: IDL.Nat64,\n bn_id: IDL.Opt(IDL.Text)\n });\n const ListResults_1 = IDL.Record({\n matches_length: IDL.Nat64,\n length: IDL.Nat64,\n items: IDL.Vec(IDL.Tuple(IDL.Text, Doc))\n });\n const RulesType = IDL.Variant({Db: IDL.Null, Storage: IDL.Null});\n const Permission = IDL.Variant({\n Controllers: IDL.Null,\n Private: IDL.Null,\n Public: IDL.Null,\n Managed: IDL.Null\n });\n const Rule = IDL.Record({\n updated_at: IDL.Nat64,\n max_size: IDL.Opt(IDL.Nat),\n read: Permission,\n created_at: IDL.Nat64,\n write: Permission\n });\n const SetDoc = IDL.Record({\n updated_at: IDL.Opt(IDL.Nat64),\n data: IDL.Vec(IDL.Nat8)\n });\n const SetRule = IDL.Record({\n updated_at: IDL.Opt(IDL.Nat64),\n max_size: IDL.Opt(IDL.Nat),\n read: Permission,\n write: Permission\n });\n const Chunk = IDL.Record({\n content: IDL.Vec(IDL.Nat8),\n batch_id: IDL.Nat\n });\n const UploadChunk = IDL.Record({chunk_id: IDL.Nat});\n return IDL.Service({\n add_controllers: IDL.Func([ControllersArgs], [IDL.Vec(IDL.Principal)], []),\n commit_asset_upload: IDL.Func([CommitBatch], [], []),\n del_asset: IDL.Func([IDL.Text, IDL.Text], [], []),\n del_assets: IDL.Func([IDL.Opt(IDL.Text)], [], []),\n del_custom_domain: IDL.Func([IDL.Text], [], []),\n del_doc: IDL.Func([IDL.Text, IDL.Text, DelDoc], [], []),\n get_config: IDL.Func([], [Config], []),\n get_doc: IDL.Func([IDL.Text, IDL.Text], [IDL.Opt(Doc)], ['query']),\n http_request: IDL.Func([HttpRequest], [HttpResponse], ['query']),\n http_request_streaming_callback: IDL.Func(\n [StreamingCallbackToken],\n [StreamingCallbackHttpResponse],\n ['query']\n ),\n init_asset_upload: IDL.Func([InitAssetKey], [InitUploadResult], []),\n list_assets: IDL.Func([IDL.Opt(IDL.Text), ListParams], [ListResults], ['query']),\n list_controllers: IDL.Func([], [IDL.Vec(IDL.Principal)], ['query']),\n list_custom_domains: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, CustomDomain))], ['query']),\n list_docs: IDL.Func([IDL.Text, ListParams], [ListResults_1], ['query']),\n list_rules: IDL.Func([RulesType], [IDL.Vec(IDL.Tuple(IDL.Text, Rule))], ['query']),\n remove_controllers: IDL.Func([ControllersArgs], [IDL.Vec(IDL.Principal)], []),\n set_config: IDL.Func([Config], [], []),\n set_custom_domain: IDL.Func([IDL.Text, IDL.Opt(IDL.Text)], [], []),\n set_doc: IDL.Func([IDL.Text, IDL.Text, SetDoc], [Doc], []),\n set_rule: IDL.Func([RulesType, IDL.Text, SetRule], [], []),\n upload_asset_chunk: IDL.Func([Chunk], [UploadChunk], []),\n version: IDL.Func([], [IDL.Text], ['query'])\n });\n};\nexport const init = ({IDL}) => {\n return [];\n};\n", "import type {ActorMethod, ActorSubclass} from '@dfinity/agent';\nimport {Actor, HttpAgent} from '@dfinity/agent';\nimport type {IDL} from '@dfinity/candid';\nimport {EnvStore} from '../stores/env.store';\nimport type {Satellite} from '../types/satellite.types';\n\nexport const createActor = async <T = Record<string, ActorMethod>>({\n satelliteId: canisterId,\n idlFactory,\n identity,\n fetch,\n env = 'prod'\n}: {\n idlFactory: IDL.InterfaceFactory;\n} & Required<Pick<Satellite, 'satelliteId' | 'identity'>> &\n Pick<Satellite, 'fetch' | 'env'>): Promise<ActorSubclass<T>> => {\n const localActor = env === 'dev' || EnvStore.getInstance().localIdentity();\n\n const host: string = localActor ? 'http://127.0.0.1:8000/' : 'https://ic0.app';\n\n const agent: HttpAgent = new HttpAgent({identity, ...(host && {host}), ...(fetch && {fetch})});\n\n if (localActor) {\n // Fetch root key for certificate validation during development\n await agent.fetchRootKey();\n }\n\n // Creates an actor with using the candid interface and the HttpAgent\n return Actor.createActor(idlFactory, {\n agent,\n canisterId\n });\n};\n", "import type {_SERVICE as SatelliteActor} from '../../declarations/satellite/satellite.did';\nimport {idlFactory} from '../../declarations/satellite/satellite.factory.did.js';\nimport {EnvStore} from '../stores/env.store';\nimport type {Satellite} from '../types/satellite.types';\nimport {createActor} from '../utils/actor.utils';\n\nexport const getSatelliteActor = async ({\n satelliteId,\n ...rest\n}: Satellite): Promise<SatelliteActor> => {\n const {satelliteId: canisterId} =\n satelliteId !== undefined\n ? {satelliteId}\n : EnvStore.getInstance().get() ?? {satelliteId: undefined};\n\n if (!canisterId) {\n throw new Error('No satellite principal defined.');\n }\n\n return createActor({\n satelliteId: canisterId,\n idlFactory,\n ...rest\n });\n};\n", "import type {\n Doc as DocApi,\n ListResults_1 as ListDocsApi,\n _SERVICE as SatelliteActor\n} from '../../declarations/satellite/satellite.did';\nimport type {Doc} from '../types/doc.types';\nimport type {ListParams, ListResults} from '../types/list.types';\nimport type {Satellite} from '../types/satellite.types';\nimport {fromArray, fromNullable, toArray, toNullable} from '../utils/did.utils';\nimport {toListParams} from '../utils/list.utils';\nimport {getSatelliteActor} from './actor.api';\n\nexport const getDoc = async <D>({\n collection,\n key,\n satellite\n}: {\n collection: string;\n satellite: Satellite;\n} & Pick<Doc<D>, 'key'>): Promise<Doc<D> | undefined> => {\n const actor: SatelliteActor = await getSatelliteActor(satellite);\n\n const entry: DocApi | undefined = fromNullable(await actor.get_doc(collection, key));\n\n if (!entry) {\n return undefined;\n }\n\n const data: D = await fromArray<D>(entry.data);\n\n return {\n key,\n data,\n created_at: entry.created_at,\n updated_at: entry.updated_at\n };\n};\n\nexport const setDoc = async <D>({\n collection,\n doc,\n satellite\n}: {\n collection: string;\n doc: Doc<D>;\n satellite: Satellite;\n}): Promise<Doc<D>> => {\n const actor: SatelliteActor = await getSatelliteActor(satellite);\n\n const {key, data, updated_at} = doc;\n\n const updatedDoc: DocApi = await actor.set_doc(collection, key, {\n data: await toArray<D>(data),\n updated_at: toNullable(updated_at)\n });\n\n // We update the data with the updated_at timestamp generated in the backend.\n // The canister checks if the updated_at date is equals to the entity timestamp otherwise it rejects the update to prevent overwrite of data if user uses multiple devices.\n // In other words: to update a data, the current updated_at information need to be provided.\n return {\n key,\n data,\n created_at: updatedDoc.created_at,\n updated_at: updatedDoc.updated_at\n };\n};\n\nexport const delDoc = async <D>({\n collection,\n doc,\n satellite\n}: {\n collection: string;\n doc: Doc<D>;\n satellite: Satellite;\n}): Promise<void> => {\n const actor: SatelliteActor = await getSatelliteActor(satellite);\n\n const {key, updated_at} = doc;\n\n return actor.del_doc(collection, key, {\n updated_at: toNullable(updated_at)\n });\n};\n\nexport const listDocs = async <D>({\n collection,\n filter,\n satellite\n}: {\n collection: string;\n filter: ListParams;\n satellite: Satellite;\n}): Promise<ListResults<Doc<D>>> => {\n const actor: SatelliteActor = await getSatelliteActor(satellite);\n\n const {items, matches_length, length}: ListDocsApi = await actor.list_docs(\n collection,\n toListParams(filter)\n );\n\n const docs: Doc<D>[] = [];\n\n for (const [key, item] of items) {\n docs.push({\n key,\n data: await fromArray<D>(item.data),\n created_at: item.created_at,\n updated_at: item.updated_at\n });\n }\n\n return {\n items: docs,\n length,\n matches_length\n };\n};\n", "import type {Identity} from '@dfinity/agent';\nimport {getIdentity as getAuthIdentity} from './auth.services';\n\nexport const getIdentity = (identity?: Identity): Identity => {\n if (identity !== undefined) {\n return identity;\n }\n\n const authIdentity: Identity | undefined = getAuthIdentity();\n\n if (!authIdentity) {\n throw new Error('No internet identity.');\n }\n\n return authIdentity;\n};\n", "import type {Identity} from '@dfinity/agent';\nimport {\n delDoc as delDocApi,\n getDoc as getDocApi,\n listDocs as listDocsApi,\n setDoc as setDocApi\n} from '../api/doc.api';\nimport type {Doc} from '../types/doc.types';\nimport type {ListParams, ListResults} from '../types/list.types';\nimport type {SatelliteOptions} from '../types/satellite.types';\nimport {getIdentity} from './identity.services';\n\nexport const getDoc = async <D>({\n satellite,\n ...rest\n}: {\n collection: string;\n satellite?: SatelliteOptions;\n} & Pick<Doc<D>, 'key'>): Promise<Doc<D> | undefined> => {\n const identity: Identity | undefined = getIdentity(satellite?.identity);\n\n return getDocApi({...rest, satellite: {...satellite, identity}});\n};\n\nexport const setDoc = async <D>({\n satellite,\n ...rest\n}: {\n collection: string;\n doc: Doc<D>;\n satellite?: SatelliteOptions;\n}): Promise<Doc<D>> => {\n const identity: Identity | undefined = getIdentity(satellite?.identity);\n\n return setDocApi({...rest, satellite: {...satellite, identity}});\n};\n\nexport const delDoc = async <D>({\n satellite,\n ...rest\n}: {\n collection: string;\n doc: Doc<D>;\n satellite?: SatelliteOptions;\n}): Promise<void> => {\n const identity: Identity | undefined = getIdentity(satellite?.identity);\n\n return delDocApi({...rest, satellite: {...satellite, identity}});\n};\n\nexport const listDocs = async <D>({\n satellite,\n ...rest\n}: {\n collection: string;\n filter: ListParams;\n satellite?: SatelliteOptions;\n}): Promise<ListResults<Doc<D>>> => {\n const identity: Identity | undefined = getIdentity(satellite?.identity);\n\n return listDocsApi<D>({...rest, satellite: {...satellite, identity}});\n};\n", "import type {Identity} from '@dfinity/agent';\nimport type {Principal} from '@dfinity/principal';\nimport type {User, UserData} from '../types/auth.types';\nimport {getIdentity} from './auth.services';\nimport {getDoc, setDoc} from './doc.services';\n\nexport const initUser = async (): Promise<User> => {\n const identity: Identity | undefined = getIdentity();\n\n if (!identity) {\n throw new Error('No internet identity.');\n }\n\n const userId = identity.getPrincipal().toText();\n\n const user: User | undefined = await getDoc<UserData>({\n collection: `#user`,\n key: userId\n });\n\n if (!user) {\n const newUser: User = await createUser({userId, principal: identity.getPrincipal()});\n return newUser;\n }\n\n return user;\n};\n\nconst createUser = async ({\n userId,\n principal\n}: {\n userId: string;\n principal: Principal;\n}): Promise<User> => {\n const now: Date = new Date();\n\n const data: UserData = {\n principal,\n created_at: now,\n updated_at: now\n };\n\n return setDoc<UserData>({\n collection: `#user`,\n doc: {\n key: userId,\n data\n }\n });\n};\n", "import type {Identity} from '@dfinity/agent';\nimport {AuthClient} from '@dfinity/auth-client';\nimport {delegationIdentityExpiration} from '../constants/auth.constants';\nimport {AuthStore} from '../stores/auth.store';\nimport {EnvStore} from '../stores/env.store';\nimport type {SignInOptions} from '../types/auth.types';\nimport {initUser} from './user.services';\n\nlet authClient: AuthClient | undefined;\n\nconst createAuthClient = (): Promise<AuthClient> =>\n AuthClient.create({\n idleOptions: {\n disableIdle: true,\n disableDefaultIdleCallback: true\n }\n });\n\nexport const initAuth = async () => {\n authClient = authClient ?? (await createAuthClient());\n\n const isAuthenticated: boolean = (await authClient?.isAuthenticated()) || false;\n\n if (!isAuthenticated) {\n return;\n }\n\n const user = await initUser();\n AuthStore.getInstance().set(user);\n\n // TODO: idle timer worker\n};\n\nexport const signIn = async (options?: SignInOptions) =>\n /* eslint-disable no-async-promise-executor */\n new Promise<void>(async (resolve, reject) => {\n authClient = authClient ?? (await createAuthClient());\n\n await authClient.login({\n onSuccess: async () => {\n await initAuth();\n resolve();\n },\n onError: (error?: string) => reject(error),\n maxTimeToLive: options?.maxTimeToLive ?? delegationIdentityExpiration,\n ...(EnvStore.getInstance().localIdentity() && {\n identityProvider: `http://${\n EnvStore.getInstance().get()?.localIdentityCanisterId\n }.localhost:8000?#authorize`\n }),\n ...(options?.derivationOrigin !== undefined && {derivationOrigin: options.derivationOrigin}),\n ...(options?.windowOpenerFeatures !== undefined && {\n windowOpenerFeatures: options.windowOpenerFeatures\n })\n });\n });\n\nexport const signOut = async (): Promise<void> => {\n await authClient?.logout();\n\n // Reset local object otherwise next sign in (sign in - sign out - sign in) might not work out - i.e. agent-js might not recreate the delegation or identity if not resetted\n authClient = undefined;\n\n AuthStore.getInstance().reset();\n};\n\nexport const getIdentity = (): Identity | undefined => {\n return authClient?.getIdentity();\n};\n", "import {EnvStore} from '../stores/env.store';\n\nexport const isBrowser = () => typeof window !== `undefined`;\n\nexport const satelliteUrl = (): string => {\n const satelliteId: string = EnvStore.getInstance().get()?.satelliteId ?? 'unknown';\n\n if (EnvStore.getInstance().localIdentity()) {\n return `http://${satelliteId}.localhost:8000`;\n }\n\n return `https://${satelliteId}.ic0.app`;\n};\n", "import type {\n AssetNoContent,\n ListResults as ListAssetsApi,\n _SERVICE as SatelliteActor\n} from '../../declarations/satellite/satellite.did';\nimport type {ListParams, ListResults} from '../types/list.types';\nimport type {Satellite} from '../types/satellite.types';\nimport type {Asset, ENCODING_TYPE, Storage} from '../types/storage.types';\nimport {toNullable} from '../utils/did.utils';\nimport {isBrowser} from '../utils/env.utils';\nimport {toListParams} from '../utils/list.utils';\nimport {getSatelliteActor} from './actor.api';\n\nexport const uploadAsset = async ({\n data,\n filename,\n collection,\n headers,\n token,\n fullPath,\n encoding,\n satellite\n}: Required<Omit<Storage, 'token' | 'encoding'>> &\n Pick<Storage, 'token' | 'encoding'> & {satellite: Satellite}): Promise<void> => {\n const actor: SatelliteActor = await getSatelliteActor(satellite);\n\n const {batch_id: batchId} = await actor.init_asset_upload({\n collection,\n full_path: fullPath,\n name: filename,\n token: toNullable<string>(token),\n encoding_type: toNullable<ENCODING_TYPE>(encoding)\n });\n\n const chunkSize = 700000;\n\n const chunkIds: {chunk_id: bigint}[] = [];\n\n // Prevent transforming chunk to arrayBuffer error: The requested file could not be read, typically due to permission problems that have occurred after a reference to a file was acquired.\n const clone: Blob = isBrowser() ? new Blob([await data.arrayBuffer()]) : data;\n\n for (let start = 0; start < clone.size; start += chunkSize) {\n const chunk: Blob = clone.slice(start, start + chunkSize);\n\n chunkIds.push(\n await uploadChunk({\n batchId,\n chunk,\n actor\n })\n );\n }\n\n const contentType: [[string, string]] | undefined =\n headers.find(([type, _]) => type.toLowerCase() === 'content-type') === undefined &&\n data.type !== undefined &&\n data.type !== ''\n ? [['Content-Type', data.type]]\n : undefined;\n\n await actor.commit_asset_upload({\n batch_id: batchId,\n chunk_ids: chunkIds.map(({chunk_id}: {chunk_id: bigint}) => chunk_id),\n headers: [...headers, ...(contentType ? contentType : [])]\n });\n};\n\nconst uploadChunk = async ({\n batchId,\n chunk,\n actor\n}: {\n batchId: bigint;\n chunk: Blob;\n actor: SatelliteActor;\n}): Promise<{chunk_id: bigint}> =>\n actor.upload_asset_chunk({\n batch_id: batchId,\n content: new Uint8Array(await chunk.arrayBuffer())\n });\n\nexport const listAssets = async ({\n collection,\n satellite,\n filter\n}: {\n collection: string;\n satellite: Satellite;\n filter: ListParams;\n}): Promise<ListResults<AssetNoContent>> => {\n const actor: SatelliteActor = await getSatelliteActor(satellite);\n\n const {\n items: assets,\n matches_length,\n length\n }: ListAssetsApi = await actor.list_assets(toNullable<string>(collection), toListParams(filter));\n\n return {\n items: assets.map(([_, asset]) => asset),\n length,\n matches_length\n };\n};\n\nexport const deleteAsset = async ({\n collection,\n storageFile,\n satellite\n}: {\n collection: string;\n storageFile: Asset;\n satellite: Satellite;\n}): Promise<void> => {\n const actor: SatelliteActor = await getSatelliteActor(satellite);\n\n const {fullPath} = storageFile;\n\n return actor.del_asset(collection, fullPath);\n};\n\nexport const deleteAssets = async ({\n collection,\n satellite\n}: {\n collection?: string;\n satellite: Satellite;\n}): Promise<void> => {\n const actor: SatelliteActor = await getSatelliteActor(satellite);\n\n return actor.del_assets(toNullable(collection));\n};\n", "export const sha256ToBase64String = (sha256: Iterable<number>): string =>\n btoa([...sha256].map((c) => String.fromCharCode(c)).join(''));\n", "export const encodeFilename = (filename: string): string =>\n encodeURI(filename.toLowerCase().replace(/\\s/g, '-'));\n", "import type {AssetNoContent} from '../../declarations/satellite/satellite.did';\nimport {\n deleteAsset as deleteAssetApi,\n deleteAssets as deleteAssetsApi,\n listAssets as listAssetsApi,\n uploadAsset as uploadAssetApi\n} from '../api/storage.api';\nimport type {ListParams, ListResults} from '../types/list.types';\nimport type {SatelliteOptions} from '../types/satellite.types';\nimport type {Asset, AssetEncoding, AssetKey, Assets, Storage} from '../types/storage.types';\nimport {sha256ToBase64String} from '../utils/crypto.utils';\nimport {fromNullable} from '../utils/did.utils';\nimport {satelliteUrl} from '../utils/env.utils';\nimport {encodeFilename} from '../utils/storage.utils';\nimport {getIdentity} from './identity.services';\n\nexport const uploadBlob = async (\n params: Storage & {satellite?: SatelliteOptions}\n): Promise<AssetKey> => uploadAssetIC(params);\n\nexport const uploadFile = async (\n params: Partial<Pick<Storage, 'filename'>> &\n Omit<Storage, 'filename' | 'data'> & {data: File} & {satellite?: SatelliteOptions}\n): Promise<AssetKey> =>\n uploadAssetIC({\n filename: params.data.name,\n ...params\n });\n\nconst uploadAssetIC = async ({\n filename: storageFilename,\n data,\n collection,\n headers = [],\n fullPath: storagePath,\n token,\n satellite,\n encoding\n}: Storage & {satellite?: SatelliteOptions}): Promise<AssetKey> => {\n const identity = getIdentity(satellite?.identity);\n\n const filename: string = encodeFilename(storageFilename);\n const fullPath: string = storagePath || `/${collection}/${filename}`;\n\n await uploadAssetApi({\n data,\n filename: encodeFilename(filename),\n collection,\n token,\n headers,\n fullPath,\n encoding,\n satellite: {...satellite, identity}\n });\n\n return {\n downloadUrl: `${satelliteUrl()}${fullPath}${token !== undefined ? `?token=${token}` : ''}`,\n fullPath,\n name: filename\n };\n};\n\nexport const listAssets = async ({\n collection,\n satellite,\n filter\n}: {\n collection: string;\n satellite?: SatelliteOptions;\n filter?: ListParams;\n}): Promise<Assets> => {\n const {items, ...rest}: ListResults<AssetNoContent> = await listAssetsApi({\n collection,\n satellite: {...satellite, identity: getIdentity(satellite?.identity)},\n filter: filter ?? {}\n });\n\n const host: string = satelliteUrl();\n\n return {\n assets: items.map(({key: {full_path, token: t, name}, headers, encodings}: AssetNoContent) => {\n const token = fromNullable(t);\n\n return {\n fullPath: full_path,\n name,\n downloadUrl: `${host}${full_path}${token !== undefined ? `?token=${token}` : ''}`,\n token,\n headers,\n encodings: encodings.reduce(\n (acc, [type, {modified, sha256, total_length}]) => ({\n ...acc,\n [type]: {\n modified,\n sha256: sha256ToBase64String(sha256),\n total_length\n }\n }),\n {} as Record<string, AssetEncoding>\n )\n } as Asset;\n }),\n ...rest\n };\n};\n\nexport const deleteAsset = async ({\n storageFile,\n collection,\n satellite\n}: {\n storageFile: Asset;\n collection: string;\n satellite?: SatelliteOptions;\n}): Promise<void> =>\n deleteAssetApi({\n collection,\n storageFile,\n satellite: {...satellite, identity: getIdentity(satellite?.identity)}\n });\n\nexport const deleteAssets = async ({\n collection,\n satellite\n}: {\n collection?: string;\n satellite?: SatelliteOptions;\n}): Promise<void> =>\n deleteAssetsApi({\n collection,\n satellite: {...satellite, identity: getIdentity(satellite?.identity)}\n });\n", "import type {Environment} from './types/env.types';\n\nexport {signIn, signOut} from './services/auth.services';\nexport * from './services/doc.services';\nexport * from './services/storage.services';\nexport * from './types/auth.types';\nexport * from './types/doc.types';\nexport {ListParams, ListResults, OrderDocs, PaginateDocs} from './types/list.types';\nexport * from './types/satellite.types';\nexport * from './types/storage.types';\n\nimport {initAuth} from './services/auth.services';\nimport {AuthStore} from './stores/auth.store';\nimport {EnvStore} from './stores/env.store';\nimport type {User} from './types/auth.types';\n\nexport const initJuno = async (env: Environment) => {\n EnvStore.getInstance().set(env);\n\n await initAuth();\n};\n\nexport const authSubscribe = (callback: (authUser: User | null) => void): (() => void) =>\n AuthStore.getInstance().subscribe(callback);\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["crypto_exports", "__export", "crypto_default", "init_crypto", "__esmMin", "require_crypto", "__commonJSMin", "exports", "module", "polyfill", "k", "require_nacl_fast", "__commonJSMin", "exports", "module", "nacl", "gf", "init", "i", "r", "randombytes", "_0", "_9", "gf0", "gf1", "_121665", "D", "D2", "X", "Y", "I", "ts64", "x", "h", "l", "vn", "xi", "y", "yi", "n", "d", "crypto_verify_16", "crypto_verify_32", "core_salsa20", "o", "p", "k", "c", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "j7", "j8", "j9", "j10", "j11", "j12", "j13", "j14", "j15", "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "u", "core_hsalsa20", "crypto_core_salsa20", "out", "inp", "crypto_core_hsalsa20", "sigma", "crypto_stream_salsa20_xor", "cpos", "m", "mpos", "b", "z", "crypto_stream_salsa20", "crypto_stream", "s", "sn", "crypto_stream_xor", "poly1305", "key", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "bytes", "hibit", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "h0", "h1", "h2", "h3", "h4", "h5", "h6", "h7", "h8", "h9", "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "mac", "macpos", "g", "mask", "f", "want", "crypto_onetimeauth", "outpos", "crypto_onetimeauth_verify", "hpos", "crypto_secretbox", "crypto_secretbox_open", "set25519", "a", "car25519", "v", "sel25519", "q", "pack25519", "j", "t", "neq25519", "par25519", "unpack25519", "A", "Z", "M", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24", "t25", "t26", "t27", "t28", "t29", "t30", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "S", "inv25519", "pow2523", "crypto_scalarmult", "e", "x32", "x16", "crypto_scalarmult_base", "crypto_box_keypair", "crypto_box_beforenm", "crypto_box_afternm", "crypto_box_open_afternm", "crypto_box", "crypto_box_open", "K", "crypto_hashblocks_hl", "hh", "hl", "wh", "wl", "bh0", "bh1", "bh2", "bh3", "bh4", "bh5", "bh6", "bh7", "bl0", "bl1", "bl2", "bl3", "bl4", "bl5", "bl6", "bl7", "th", "tl", "ah0", "ah1", "ah2", "ah3", "ah4", "ah5", "ah6", "ah7", "al0", "al1", "al2", "al3", "al4", "al5", "al6", "al7", "pos", "crypto_hash", "add", "cswap", "pack", "tx", "ty", "zi", "scalarmult", "scalarbase", "crypto_sign_keypair", "pk", "sk", "seeded", "L", "modL", "carry", "reduce", "crypto_sign", "sm", "smlen", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "crypto_sign_open", "crypto_secretbox_KEYBYTES", "crypto_secretbox_NONCEBYTES", "crypto_secretbox_ZEROBYTES", "crypto_secretbox_BOXZEROBYTES", "crypto_scalarmult_BYTES", "crypto_scalarmult_SCALARBYTES", "crypto_box_PUBLICKEYBYTES", "crypto_box_SECRETKEYBYTES", "crypto_box_BEFORENMBYTES", "crypto_box_NONCEBYTES", "crypto_box_ZEROBYTES", "crypto_box_BOXZEROBYTES", "crypto_sign_BYTES", "crypto_sign_PUBLICKEYBYTES", "crypto_sign_SECRETKEYBYTES", "crypto_sign_SEEDBYTES", "crypto_hash_BYTES", "checkLengths", "checkBoxLengths", "checkArrayTypes", "cleanup", "arr", "msg", "nonce", "box", "publicKey", "secretKey", "signedMsg", "tmp", "mlen", "sig", "seed", "fn", "crypto", "QUOTA", "__require", "tweetnacl", "fromHexString", "hexString", "_a", "byte", "toHexString", "bytes", "str", "bufEquals", "b1", "b2", "u1", "u2", "i", "encodeLenBytes", "len", "encodeLen", "buf", "offset", "decodeLenBytes", "decodeLen", "lenBytes", "DER_COSE_OID", "ED25519_OID", "SECP256K1_OID", "wrapDER", "payload", "oid", "bitStringHeaderLength", "unwrapDER", "derEncoded", "expect", "n", "msg", "payloadLen", "result", "Ed25519PublicKey", "key", "rawKey", "derKey", "publicKey", "wrapDER", "ED25519_OID", "unwrapped", "unwrapDER", "Ed25519KeyIdentity", "SignIdentity", "_privateKey", "seed", "secretKey", "obj", "publicKeyDer", "privateKeyRaw", "fromHexString", "json", "parsed", "privateKey", "keyPair", "toHexString", "challenge", "blob", "CryptoError", "message", "_getEffectiveCrypto", "subtleCrypto", "ECDSAKeyIdentity", "SignIdentity", "keyPair", "derKey", "options", "extractable", "keyUsages", "effectiveCrypto", "key", "challenge", "params", "cbor", "domainSeparator", "requestDomainSeparator", "_parseBlob", "value", "fromHexString", "Delegation", "pubkey", "expiration", "targets", "t", "toHexString", "p", "_createSingleDelegation", "from", "to", "delegation", "challenge", "requestIdOf", "signature", "DelegationChain", "delegations", "publicKey", "options", "_a", "_b", "json", "parsedDelegations", "signedDelegation", "Principal", "DelegationIdentity", "SignIdentity", "_inner", "_delegation", "key", "blob", "request", "body", "fields", "__rest", "requestId", "isDelegationValid", "chain", "checks", "scopes", "maybeScope", "s", "scope", "none", "target", "import_borc", "tweetnacl", "PubKeyCoseAlgo", "events", "IdleManager", "options", "onIdle", "idleTimeout", "_resetTimer", "name", "debounce", "func", "wait", "timeout", "args", "context", "later", "scroll", "_a", "callback", "cb", "exit", "instanceOfAny", "object", "constructors", "c", "idbProxyableTypes", "cursorAdvanceMethods", "getIdbProxyableTypes", "getCursorAdvanceMethods", "cursorRequestMap", "transactionDoneMap", "transactionStoreNamesMap", "transformCache", "reverseTransformCache", "promisifyRequest", "request", "promise", "resolve", "reject", "unlisten", "success", "error", "wrap", "value", "cacheDonePromiseForTransaction", "tx", "done", "complete", "idbProxyTraps", "target", "prop", "receiver", "replaceTraps", "callback", "wrapFunction", "func", "storeNames", "args", "unwrap", "transformCachableValue", "newValue", "openDB", "name", "version", "blocked", "upgrade", "blocking", "terminated", "request", "openPromise", "wrap", "event", "db", "readMethods", "writeMethods", "cachedMethods", "getMethod", "target", "prop", "targetFuncName", "useIndex", "isWrite", "method", "storeName", "args", "tx", "replaceTraps", "oldTraps", "receiver", "AUTH_DB_NAME", "OBJECT_STORE_NAME", "_openDbStore", "dbName", "storeName", "version", "isBrowser", "KEY_STORAGE_DELEGATION", "KEY_STORAGE_KEY", "openDB", "database", "_getValue", "db", "key", "_setValue", "value", "_removeValue", "IdbKeyVal", "_db", "_storeName", "options", "_a", "KEY_STORAGE_KEY", "KEY_STORAGE_DELEGATION", "KEY_VECTOR", "DB_VERSION", "isBrowser", "LocalStorage", "prefix", "_localStorage", "key", "value", "ls", "IdbStorage", "resolve", "IdbKeyVal", "db", "IDENTITY_PROVIDER_DEFAULT", "IDENTITY_PROVIDER_ENDPOINT", "INTERRUPT_CHECK_INTERVAL", "ERROR_USER_INTERRUPT", "AuthClient", "_identity", "_key", "_chain", "_storage", "idleManager", "_createOptions", "_idpWindow", "_eventHandler", "logout", "idleOptions", "_a", "options", "storage", "IdbStorage", "key", "maybeIdentityStorage", "KEY_STORAGE_KEY", "isBrowser", "fallbackLocalStorage", "LocalStorage", "localChain", "KEY_STORAGE_DELEGATION", "localKey", "error", "ECDSAKeyIdentity", "Ed25519KeyIdentity", "identity", "AnonymousIdentity", "chain", "chainStorage", "DelegationChain", "isDelegationValid", "DelegationIdentity", "_deleteStorage", "e", "_b", "IdleManager", "message", "onSuccess", "delegations", "signedDelegation", "Delegation", "delegationChain", "_c", "defaultTimeToLive", "identityProviderUrl", "_d", "checkInterruption", "event", "request", "err", "errorMessage", "onError", "KEY_VECTOR", "delegationIdentityExpiration", "Store", "data", "callback", "callbackId", "id", "_AuthStore", "Store", "authUser", "callback", "unsubscribe", "AuthStore", "__publicField", "_EnvStore", "Store", "env", "callback", "unsubscribe", "EnvStore", "__publicField", "toNullable", "value", "fromNullable", "toArray", "data", "blob", "fromArray", "isNullish", "argument", "toListParams", "matcher", "paginate", "order", "toNullable", "isNullish", "idlFactory", "IDL", "ControllersArgs", "CommitBatch", "DelDoc", "StorageConfig", "Config", "Doc", "HttpRequest", "StreamingCallbackToken", "StreamingStrategy", "HttpResponse", "StreamingCallbackHttpResponse", "InitAssetKey", "InitUploadResult", "OrderKeys", "PaginateKeys", "ListParams", "AssetKey", "AssetEncodingNoContent", "AssetNoContent", "ListResults", "CustomDomain", "ListResults_1", "RulesType", "Permission", "Rule", "SetDoc", "SetRule", "Chunk", "UploadChunk", "createActor", "canisterId", "idlFactory", "identity", "fetch", "env", "localActor", "EnvStore", "host", "agent", "HttpAgent", "Actor", "getSatelliteActor", "satelliteId", "rest", "canisterId", "EnvStore", "createActor", "idlFactory", "getDoc", "collection", "key", "satellite", "actor", "getSatelliteActor", "entry", "fromNullable", "data", "fromArray", "setDoc", "doc", "updated_at", "updatedDoc", "toArray", "toNullable", "delDoc", "listDocs", "filter", "items", "matches_length", "length", "toListParams", "docs", "item", "getIdentity", "identity", "authIdentity", "getDoc", "satellite", "rest", "identity", "getIdentity", "setDoc", "delDoc", "listDocs", "initUser", "identity", "getIdentity", "userId", "user", "getDoc", "createUser", "principal", "now", "setDoc", "authClient", "createAuthClient", "AuthClient", "initAuth", "user", "initUser", "AuthStore", "signIn", "options", "resolve", "reject", "error", "delegationIdentityExpiration", "EnvStore", "signOut", "getIdentity", "isBrowser", "satelliteUrl", "satelliteId", "EnvStore", "uploadAsset", "data", "filename", "collection", "headers", "token", "fullPath", "encoding", "satellite", "actor", "getSatelliteActor", "batchId", "toNullable", "chunkSize", "chunkIds", "clone", "isBrowser", "start", "chunk", "uploadChunk", "contentType", "type", "_", "chunk_id", "listAssets", "filter", "assets", "matches_length", "length", "toListParams", "asset", "deleteAsset", "storageFile", "deleteAssets", "sha256ToBase64String", "sha256", "c", "encodeFilename", "filename", "uploadBlob", "params", "uploadAssetIC", "uploadFile", "storageFilename", "data", "collection", "headers", "storagePath", "token", "satellite", "encoding", "identity", "getIdentity", "filename", "encodeFilename", "fullPath", "uploadAsset", "satelliteUrl", "listAssets", "filter", "items", "rest", "host", "full_path", "t", "name", "encodings", "fromNullable", "acc", "type", "modified", "sha256", "total_length", "sha256ToBase64String", "deleteAsset", "storageFile", "deleteAssets", "initJuno", "env", "EnvStore", "initAuth", "authSubscribe", "callback", "AuthStore"]
|
|
3
|
+
"sources": ["node-modules-polyfills:crypto", "node-modules-polyfills-commonjs:crypto", "../../../../node_modules/tweetnacl/nacl-fast.js", "../../../../node_modules/@dfinity/identity/src/identity/ed25519.ts", "../../../../node_modules/@dfinity/identity/src/buffer.ts", "../../../../node_modules/@dfinity/identity/src/identity/der.ts", "../../../../node_modules/@dfinity/identity/src/identity/ecdsa.ts", "../../../../node_modules/@dfinity/identity/src/identity/delegation.ts", "../../../../node_modules/@dfinity/identity/src/identity/webauthn.ts", "../../../../node_modules/@dfinity/auth-client/src/idleManager.ts", "../../../../node_modules/idb/build/wrap-idb-value.js", "../../../../node_modules/idb/build/index.js", "../../../../node_modules/@dfinity/auth-client/src/db.ts", "../../../../node_modules/@dfinity/auth-client/src/storage.ts", "../../../../node_modules/@dfinity/auth-client/src/index.ts", "../../src/constants/auth.constants.ts", "../../src/stores/store.ts", "../../src/stores/auth.store.ts", "../../src/stores/env.store.ts", "../../src/utils/env.utils.ts", "../../src/utils/utils.ts", "../../src/utils/window.utils.ts", "../../src/utils/did.utils.ts", "../../src/utils/list.utils.ts", "../../declarations/satellite/satellite.factory.did.js", "../../src/utils/actor.utils.ts", "../../src/api/actor.api.ts", "../../src/api/doc.api.ts", "../../src/services/identity.services.ts", "../../src/services/doc.services.ts", "../../src/services/user.services.ts", "../../src/services/auth.services.ts", "../../src/api/storage.api.ts", "../../src/utils/crypto.utils.ts", "../../src/utils/storage.utils.ts", "../../src/services/storage.services.ts", "../../src/index.ts"],
|
|
4
|
+
"sourcesContent": ["export default {};\n", "\nconst polyfill = require('crypto')\n\nif (polyfill && polyfill.default) {\n module.exports = polyfill.default\n for (let k in polyfill) {\n module.exports[k] = polyfill[k]\n }\n} else if (polyfill) {\n module.exports = polyfill\n}\n\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 { DerEncodedPublicKey, KeyPair, PublicKey, Signature, SignIdentity } from '@dfinity/agent';\nimport * as tweetnacl from 'tweetnacl';\nimport { fromHexString, toHexString } from '../buffer';\nimport { ED25519_OID, unwrapDER, wrapDER } from './der';\n\nexport class Ed25519PublicKey implements PublicKey {\n public static from(key: PublicKey): Ed25519PublicKey {\n return this.fromDer(key.toDer());\n }\n\n public static fromRaw(rawKey: ArrayBuffer): Ed25519PublicKey {\n return new Ed25519PublicKey(rawKey);\n }\n\n public static fromDer(derKey: DerEncodedPublicKey): Ed25519PublicKey {\n return new Ed25519PublicKey(this.derDecode(derKey));\n }\n\n // The length of Ed25519 public keys is always 32 bytes.\n private static RAW_KEY_LENGTH = 32;\n\n private static derEncode(publicKey: ArrayBuffer): DerEncodedPublicKey {\n return wrapDER(publicKey, ED25519_OID).buffer as DerEncodedPublicKey;\n }\n\n private static derDecode(key: DerEncodedPublicKey): ArrayBuffer {\n const unwrapped = unwrapDER(key, ED25519_OID);\n if (unwrapped.length !== this.RAW_KEY_LENGTH) {\n throw new Error('An Ed25519 public key must be exactly 32bytes long');\n }\n return unwrapped;\n }\n\n private readonly rawKey: ArrayBuffer;\n private readonly derKey: DerEncodedPublicKey;\n\n // `fromRaw` and `fromDer` should be used for instantiation, not this constructor.\n private constructor(key: ArrayBuffer) {\n this.rawKey = key;\n this.derKey = Ed25519PublicKey.derEncode(key);\n }\n\n public toDer(): DerEncodedPublicKey {\n return this.derKey;\n }\n\n public toRaw(): ArrayBuffer {\n return this.rawKey;\n }\n}\n\nexport class Ed25519KeyIdentity extends SignIdentity {\n public static generate(seed?: Uint8Array): Ed25519KeyIdentity {\n if (seed && seed.length !== 32) {\n throw new Error('Ed25519 Seed needs to be 32 bytes long.');\n }\n\n const { publicKey, secretKey } =\n seed === undefined ? tweetnacl.sign.keyPair() : tweetnacl.sign.keyPair.fromSeed(seed);\n return new this(Ed25519PublicKey.fromRaw(publicKey), secretKey);\n }\n\n public static fromParsedJson(obj: JsonnableEd25519KeyIdentity): Ed25519KeyIdentity {\n const [publicKeyDer, privateKeyRaw] = obj;\n return new Ed25519KeyIdentity(\n Ed25519PublicKey.fromDer(fromHexString(publicKeyDer) as DerEncodedPublicKey),\n fromHexString(privateKeyRaw),\n );\n }\n\n public static fromJSON(json: string): Ed25519KeyIdentity {\n const parsed = JSON.parse(json);\n if (Array.isArray(parsed)) {\n if (typeof parsed[0] === 'string' && typeof parsed[1] === 'string') {\n return this.fromParsedJson([parsed[0], parsed[1]]);\n } else {\n throw new Error('Deserialization error: JSON must have at least 2 items.');\n }\n }\n throw new Error(`Deserialization error: Invalid JSON type for string: ${JSON.stringify(json)}`);\n }\n\n public static fromKeyPair(publicKey: ArrayBuffer, privateKey: ArrayBuffer): Ed25519KeyIdentity {\n return new Ed25519KeyIdentity(Ed25519PublicKey.fromRaw(publicKey), privateKey);\n }\n\n public static fromSecretKey(secretKey: ArrayBuffer): Ed25519KeyIdentity {\n const keyPair = tweetnacl.sign.keyPair.fromSecretKey(new Uint8Array(secretKey));\n return Ed25519KeyIdentity.fromKeyPair(keyPair.publicKey, keyPair.secretKey);\n }\n\n protected _publicKey: Ed25519PublicKey;\n\n // `fromRaw` and `fromDer` should be used for instantiation, not this constructor.\n protected constructor(publicKey: PublicKey, protected _privateKey: ArrayBuffer) {\n super();\n this._publicKey = Ed25519PublicKey.from(publicKey);\n }\n\n /**\n * Serialize this key to JSON.\n */\n public toJSON(): JsonnableEd25519KeyIdentity {\n return [toHexString(this._publicKey.toDer()), toHexString(this._privateKey)];\n }\n\n /**\n * Return a copy of the key pair.\n */\n public getKeyPair(): KeyPair {\n return {\n secretKey: this._privateKey,\n publicKey: this._publicKey,\n };\n }\n\n /**\n * Return the public key.\n */\n public getPublicKey(): PublicKey {\n return this._publicKey;\n }\n\n /**\n * Signs a blob of data, with this identity's private key.\n * @param challenge - challenge to sign with this identity's secretKey, producing a signature\n */\n public async sign(challenge: ArrayBuffer): Promise<Signature> {\n const blob = new Uint8Array(challenge);\n const signature = tweetnacl.sign.detached(blob, new Uint8Array(this._privateKey)).buffer;\n return signature as Signature;\n }\n}\n\ntype PublicKeyHex = string;\ntype SecretKeyHex = string;\nexport type JsonnableEd25519KeyIdentity = [PublicKeyHex, SecretKeyHex];\n", "/**\n * Return an array buffer from its hexadecimal representation.\n * @param hexString The hexadecimal string.\n */\nexport function fromHexString(hexString: string): ArrayBuffer {\n return new Uint8Array((hexString.match(/.{1,2}/g) ?? []).map(byte => parseInt(byte, 16))).buffer;\n}\n\n/**\n * Returns an hexadecimal representation of an array buffer.\n * @param bytes The array buffer.\n */\nexport function toHexString(bytes: ArrayBuffer): string {\n return new Uint8Array(bytes).reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n}\n", "export const bufEquals = (b1: ArrayBuffer, b2: ArrayBuffer): boolean => {\n if (b1.byteLength !== b2.byteLength) return false;\n const u1 = new Uint8Array(b1);\n const u2 = new Uint8Array(b2);\n for (let i = 0; i < u1.length; i++) {\n if (u1[i] !== u2[i]) return false;\n }\n return true;\n};\n\nexport const encodeLenBytes = (len: number): number => {\n if (len <= 0x7f) {\n return 1;\n } else if (len <= 0xff) {\n return 2;\n } else if (len <= 0xffff) {\n return 3;\n } else if (len <= 0xffffff) {\n return 4;\n } else {\n throw new Error('Length too long (> 4 bytes)');\n }\n};\n\nexport const encodeLen = (buf: Uint8Array, offset: number, len: number): number => {\n if (len <= 0x7f) {\n buf[offset] = len;\n return 1;\n } else if (len <= 0xff) {\n buf[offset] = 0x81;\n buf[offset + 1] = len;\n return 2;\n } else if (len <= 0xffff) {\n buf[offset] = 0x82;\n buf[offset + 1] = len >> 8;\n buf[offset + 2] = len;\n return 3;\n } else if (len <= 0xffffff) {\n buf[offset] = 0x83;\n buf[offset + 1] = len >> 16;\n buf[offset + 2] = len >> 8;\n buf[offset + 3] = len;\n return 4;\n } else {\n throw new Error('Length too long (> 4 bytes)');\n }\n};\n\nexport const decodeLenBytes = (buf: Uint8Array, offset: number): number => {\n if (buf[offset] < 0x80) return 1;\n if (buf[offset] === 0x80) throw new Error('Invalid length 0');\n if (buf[offset] === 0x81) return 2;\n if (buf[offset] === 0x82) return 3;\n if (buf[offset] === 0x83) return 4;\n throw new Error('Length too long (> 4 bytes)');\n};\n\nexport const decodeLen = (buf: Uint8Array, offset: number): number => {\n const lenBytes = decodeLenBytes(buf, offset);\n if (lenBytes === 1) return buf[offset];\n else if (lenBytes === 2) return buf[offset + 1];\n else if (lenBytes === 3) return (buf[offset + 1] << 8) + buf[offset + 2];\n else if (lenBytes === 4)\n return (buf[offset + 1] << 16) + (buf[offset + 2] << 8) + buf[offset + 3];\n throw new Error('Length too long (> 4 bytes)');\n};\n\n/**\n * A DER encoded `SEQUENCE(OID)` for DER-encoded-COSE\n */\nexport const DER_COSE_OID = Uint8Array.from([\n ...[0x30, 0x0c], // SEQUENCE\n ...[0x06, 0x0a], // OID with 10 bytes\n ...[0x2b, 0x06, 0x01, 0x04, 0x01, 0x83, 0xb8, 0x43, 0x01, 0x01], // DER encoded COSE\n]);\n\n/**\n * A DER encoded `SEQUENCE(OID)` for the Ed25519 algorithm\n */\nexport const ED25519_OID = Uint8Array.from([\n ...[0x30, 0x05], // SEQUENCE\n ...[0x06, 0x03], // OID with 3 bytes\n ...[0x2b, 0x65, 0x70], // id-Ed25519 OID\n]);\n\n/**\n * A DER encoded `SEQUENCE(OID)` for secp256k1 with the ECDSA algorithm\n */\nexport const SECP256K1_OID = Uint8Array.from([\n ...[0x30, 0x10], // SEQUENCE\n ...[0x06, 0x07], // OID with 7 bytes\n ...[0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01], // OID ECDSA\n ...[0x06, 0x05], // OID with 5 bytes\n ...[0x2b, 0x81, 0x04, 0x00, 0x0a], // OID secp256k1\n]);\n\n/**\n * Wraps the given `payload` in a DER encoding tagged with the given encoded `oid` like so:\n * `SEQUENCE(oid, BITSTRING(payload))`\n *\n * @param payload The payload to encode as the bit string\n * @param oid The DER encoded (and SEQUENCE wrapped!) OID to tag the payload with\n */\nexport function wrapDER(payload: ArrayBuffer, oid: Uint8Array): Uint8Array {\n // The Bit String header needs to include the unused bit count byte in its length\n const bitStringHeaderLength = 2 + encodeLenBytes(payload.byteLength + 1);\n const len = oid.byteLength + bitStringHeaderLength + payload.byteLength;\n let offset = 0;\n const buf = new Uint8Array(1 + encodeLenBytes(len) + len);\n // Sequence\n buf[offset++] = 0x30;\n // Sequence Length\n offset += encodeLen(buf, offset, len);\n\n // OID\n buf.set(oid, offset);\n offset += oid.byteLength;\n\n // Bit String Header\n buf[offset++] = 0x03;\n offset += encodeLen(buf, offset, payload.byteLength + 1);\n // 0 padding\n buf[offset++] = 0x00;\n buf.set(new Uint8Array(payload), offset);\n\n return buf;\n}\n\n/**\n * Extracts a payload from the given `derEncoded` data, and checks that it was tagged with the given `oid`.\n *\n * `derEncoded = SEQUENCE(oid, BITSTRING(payload))`\n *\n * @param derEncoded The DER encoded and tagged data\n * @param oid The DER encoded (and SEQUENCE wrapped!) expected OID\n * @returns The unwrapped payload\n */\nexport const unwrapDER = (derEncoded: ArrayBuffer, oid: Uint8Array): Uint8Array => {\n let offset = 0;\n const expect = (n: number, msg: string) => {\n if (buf[offset++] !== n) {\n throw new Error('Expected: ' + msg);\n }\n };\n\n const buf = new Uint8Array(derEncoded);\n expect(0x30, 'sequence');\n offset += decodeLenBytes(buf, offset);\n\n if (!bufEquals(buf.slice(offset, offset + oid.byteLength), oid)) {\n throw new Error('Not the expected OID.');\n }\n offset += oid.byteLength;\n\n expect(0x03, 'bit string');\n const payloadLen = decodeLen(buf, offset) - 1; // Subtracting 1 to account for the 0 padding\n offset += decodeLenBytes(buf, offset);\n expect(0x00, '0 padding');\n const result = buf.slice(offset);\n if (payloadLen !== result.length) {\n throw new Error(\n `DER payload mismatch: Expected length ${payloadLen} actual length ${result.length}`,\n );\n }\n return result;\n};\n", "import { DerEncodedPublicKey, PublicKey, Signature, SignIdentity } from '@dfinity/agent';\n\n/**\n * Options used in a {@link ECDSAKeyIdentity}\n */\nexport type CryptoKeyOptions = {\n extractable?: boolean;\n keyUsages?: KeyUsage[];\n subtleCrypto?: SubtleCrypto;\n};\n\nexport class CryptoError extends Error {\n constructor(public readonly message: string) {\n super(message);\n Object.setPrototypeOf(this, CryptoError.prototype);\n }\n}\n\nexport interface DerCryptoKey extends CryptoKey {\n toDer: () => DerEncodedPublicKey;\n}\n\n/**\n * Utility method to ensure that a subtleCrypto implementation is provided or is available in the global context\n * @param subtleCrypto SubtleCrypto implementation\n * @returns subleCrypto\n */\nfunction _getEffectiveCrypto(subtleCrypto: CryptoKeyOptions['subtleCrypto']): SubtleCrypto {\n if (subtleCrypto) {\n return subtleCrypto;\n } else if (typeof crypto !== 'undefined' && crypto['subtle']) {\n return crypto.subtle;\n } else {\n throw new CryptoError(\n 'Global crypto was not available and none was provided. Please inlcude a SubtleCrypto implementation. See https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto',\n );\n }\n}\n\n/**\n * An identity interface that wraps an ECDSA keypair using the P-256 named curve. Supports DER-encoding and decoding for agent calls\n */\nexport class ECDSAKeyIdentity extends SignIdentity {\n /**\n * Generates a randomly generated identity for use in calls to the Internet Computer.\n * @param {CryptoKeyOptions} options optional settings\n * @param {CryptoKeyOptions['extractable']} options.extractable - whether the key should allow itself to be used. Set to false for maximum security.\n * @param {CryptoKeyOptions['keyUsages']} options.keyUsages - a list of key usages that the key can be used for\n * @param {CryptoKeyOptions['subtleCrypto']} options.subtleCrypto interface\n * @constructs ECDSAKeyIdentity\n * @returns a {@link ECDSAKeyIdentity}\n */\n public static async generate(options?: CryptoKeyOptions): Promise<ECDSAKeyIdentity> {\n const { extractable = false, keyUsages = ['sign', 'verify'], subtleCrypto } = options ?? {};\n const effectiveCrypto = _getEffectiveCrypto(subtleCrypto);\n const keyPair = await effectiveCrypto.generateKey(\n {\n name: 'ECDSA',\n namedCurve: 'P-256',\n },\n extractable,\n keyUsages,\n );\n const derKey = (await effectiveCrypto.exportKey(\n 'spki',\n keyPair.publicKey,\n )) as DerEncodedPublicKey;\n\n return new this(keyPair, derKey, effectiveCrypto);\n }\n\n /**\n * generates an identity from a public and private key. Please ensure that you are generating these keys securely and protect the user's private key\n * @param keyPair a {@link CryptoKeyPair}\n * @param subtleCrypto a {@link SubtleCrypto} interface in case one is not available globally\n * @returns an {@link ECDSAKeyIdentity}\n */\n public static async fromKeyPair(\n keyPair: CryptoKeyPair | { privateKey: CryptoKey; publicKey: CryptoKey },\n subtleCrypto?: SubtleCrypto,\n ): Promise<ECDSAKeyIdentity> {\n const effectiveCrypto = _getEffectiveCrypto(subtleCrypto);\n const derKey = (await effectiveCrypto.exportKey(\n 'spki',\n keyPair.publicKey,\n )) as DerEncodedPublicKey;\n return new ECDSAKeyIdentity(keyPair, derKey, effectiveCrypto);\n }\n\n protected _derKey: DerEncodedPublicKey;\n protected _keyPair: CryptoKeyPair;\n protected _subtleCrypto: SubtleCrypto;\n\n // `fromKeyPair` and `generate` should be used for instantiation, not this constructor.\n protected constructor(\n keyPair: CryptoKeyPair,\n derKey: DerEncodedPublicKey,\n subtleCrypto: SubtleCrypto,\n ) {\n super();\n this._keyPair = keyPair;\n this._derKey = derKey;\n this._subtleCrypto = subtleCrypto;\n }\n\n /**\n * Return the internally-used key pair.\n * @returns a {@link CryptoKeyPair}\n */\n public getKeyPair(): CryptoKeyPair {\n return this._keyPair;\n }\n\n /**\n * Return the public key.\n * @returns an {@link DerCryptoKey}\n */\n public getPublicKey(): DerCryptoKey {\n const derKey = this._derKey;\n const key: DerCryptoKey = Object.create(this._keyPair.publicKey);\n key.toDer = function () {\n return derKey;\n };\n\n return key;\n }\n\n /**\n * Signs a blob of data, with this identity's private key.\n * @param {ArrayBuffer} challenge - challenge to sign with this identity's secretKey, producing a signature\n * @returns {Promise<Signature>} signature\n */\n public async sign(challenge: ArrayBuffer): Promise<Signature> {\n const params: EcdsaParams = {\n name: 'ECDSA',\n hash: { name: 'SHA-256' },\n };\n this._keyPair.privateKey;\n const signature = await this._subtleCrypto.sign(params, this._keyPair.privateKey, challenge);\n\n return signature as Signature;\n }\n}\n\nexport default ECDSAKeyIdentity;\n", "import {\n DerEncodedPublicKey,\n HttpAgentRequest,\n PublicKey,\n requestIdOf,\n Signature,\n SignIdentity,\n} from '@dfinity/agent';\nimport { Principal } from '@dfinity/principal';\nimport * as cbor from 'simple-cbor';\nimport { fromHexString, toHexString } from '../buffer';\n\nconst domainSeparator = new TextEncoder().encode('\\x1Aic-request-auth-delegation');\nconst requestDomainSeparator = new TextEncoder().encode('\\x0Aic-request');\n\nfunction _parseBlob(value: unknown): ArrayBuffer {\n if (typeof value !== 'string' || value.length < 64) {\n throw new Error('Invalid public key.');\n }\n\n return fromHexString(value);\n}\n\n/**\n * A single delegation object that is signed by a private key. This is constructed by\n * `DelegationChain.create()`.\n *\n * {@see DelegationChain}\n */\nexport class Delegation {\n constructor(\n public readonly pubkey: ArrayBuffer,\n public readonly expiration: bigint,\n public readonly targets?: Principal[],\n ) {}\n\n public toCBOR(): cbor.CborValue {\n // Expiration field needs to be encoded as a u64 specifically.\n return cbor.value.map({\n pubkey: cbor.value.bytes(this.pubkey),\n expiration: cbor.value.u64(this.expiration.toString(16), 16),\n ...(this.targets && {\n targets: cbor.value.array(this.targets.map(t => cbor.value.bytes(t.toUint8Array()))),\n }),\n });\n }\n\n public toJSON(): JsonnableDelegation {\n // every string should be hex and once-de-hexed,\n // discoverable what it is (e.g. de-hex to get JSON with a 'type' property, or de-hex to DER\n // with an OID). After de-hex, if it's not obvious what it is, it's an ArrayBuffer.\n return {\n expiration: this.expiration.toString(16),\n pubkey: toHexString(this.pubkey),\n ...(this.targets && { targets: this.targets.map(p => p.toHex()) }),\n };\n }\n}\n\n/**\n * Type of ReturnType<Delegation.toJSON>.\n * The goal here is to stringify all non-JSON-compatible types to some bytes representation we can\n * stringify as hex.\n * (Hex shouldn't be ambiguous ever, because you can encode as DER with semantic OIDs).\n */\ninterface JsonnableDelegation {\n // A BigInt of Nanoseconds since epoch as hex\n expiration: string;\n // Hexadecimal representation of the DER public key.\n pubkey: string;\n // Array of strings, where each string is hex of principal blob (*NOT* textual representation).\n targets?: string[];\n}\n\n/**\n * A signed delegation, which lends its identity to the public key in the delegation\n * object. This is constructed by `DelegationChain.create()`.\n *\n * {@see DelegationChain}\n */\nexport interface SignedDelegation {\n delegation: Delegation;\n signature: Signature;\n}\n\n/**\n * Sign a single delegation object for a period of time.\n *\n * @param from The identity that lends its delegation.\n * @param to The identity that receives the delegation.\n * @param expiration An expiration date for this delegation.\n * @param targets Limit this delegation to the target principals.\n */\nasync function _createSingleDelegation(\n from: SignIdentity,\n to: PublicKey,\n expiration: Date,\n targets?: Principal[],\n): Promise<SignedDelegation> {\n const delegation: Delegation = new Delegation(\n to.toDer(),\n BigInt(+expiration) * BigInt(1000000), // In nanoseconds.\n targets,\n );\n // The signature is calculated by signing the concatenation of the domain separator\n // and the message.\n // Note: To ensure Safari treats this as a user gesture, ensure to not use async methods\n // besides the actualy webauthn functionality (such as `sign`). Safari will de-register\n // a user gesture if you await an async call thats not fetch, xhr, or setTimeout.\n const challenge = new Uint8Array([\n ...domainSeparator,\n ...new Uint8Array(requestIdOf(delegation)),\n ]);\n const signature = await from.sign(challenge);\n\n return {\n delegation,\n signature,\n };\n}\n\nexport interface JsonnableDelegationChain {\n publicKey: string;\n delegations: Array<{\n signature: string;\n delegation: {\n pubkey: string;\n expiration: string;\n targets?: string[];\n };\n }>;\n}\n\n/**\n * A chain of delegations. This is JSON Serializable.\n * This is the object to serialize and pass to a DelegationIdentity. It does not keep any\n * private keys.\n */\nexport class DelegationChain {\n /**\n * Create a delegation chain between two (or more) keys. By default, the expiration time\n * will be very short (15 minutes).\n *\n * To build a chain of more than 2 identities, this function needs to be called multiple times,\n * passing the previous delegation chain into the options argument. For example:\n *\n * @example\n * const rootKey = createKey();\n * const middleKey = createKey();\n * const bottomeKey = createKey();\n *\n * const rootToMiddle = await DelegationChain.create(\n * root, middle.getPublicKey(), Date.parse('2100-01-01'),\n * );\n * const middleToBottom = await DelegationChain.create(\n * middle, bottom.getPublicKey(), Date.parse('2100-01-01'), { previous: rootToMiddle },\n * );\n *\n * // We can now use a delegation identity that uses the delegation above:\n * const identity = DelegationIdentity.fromDelegation(bottomKey, middleToBottom);\n *\n * @param from The identity that will delegate.\n * @param to The identity that gets delegated. It can now sign messages as if it was the\n * identity above.\n * @param expiration The length the delegation is valid. By default, 15 minutes from calling\n * this function.\n * @param options A set of options for this delegation. expiration and previous\n * @param options.previous - Another DelegationChain that this chain should start with.\n * @param options.targets - targets that scope the delegation (e.g. Canister Principals)\n */\n public static async create(\n from: SignIdentity,\n to: PublicKey,\n expiration: Date = new Date(Date.now() + 15 * 60 * 1000),\n options: {\n previous?: DelegationChain;\n targets?: Principal[];\n } = {},\n ): Promise<DelegationChain> {\n const delegation = await _createSingleDelegation(from, to, expiration, options.targets);\n return new DelegationChain(\n [...(options.previous?.delegations || []), delegation],\n options.previous?.publicKey || from.getPublicKey().toDer(),\n );\n }\n\n /**\n * Creates a DelegationChain object from a JSON string.\n *\n * @param json The JSON string to parse.\n */\n public static fromJSON(json: string | JsonnableDelegationChain): DelegationChain {\n const { publicKey, delegations } = typeof json === 'string' ? JSON.parse(json) : json;\n if (!Array.isArray(delegations)) {\n throw new Error('Invalid delegations.');\n }\n\n const parsedDelegations: SignedDelegation[] = delegations.map(signedDelegation => {\n const { delegation, signature } = signedDelegation;\n const { pubkey, expiration, targets } = delegation;\n if (targets !== undefined && !Array.isArray(targets)) {\n throw new Error('Invalid targets.');\n }\n\n return {\n delegation: new Delegation(\n _parseBlob(pubkey),\n BigInt(`0x${expiration}`), // expiration in JSON is an hexa string (See toJSON() below).\n targets &&\n targets.map((t: unknown) => {\n if (typeof t !== 'string') {\n throw new Error('Invalid target.');\n }\n return Principal.fromHex(t);\n }),\n ),\n signature: _parseBlob(signature) as Signature,\n };\n });\n\n return new this(parsedDelegations, _parseBlob(publicKey) as DerEncodedPublicKey);\n }\n\n /**\n * Creates a DelegationChain object from a list of delegations and a DER-encoded public key.\n *\n * @param delegations The list of delegations.\n * @param publicKey The DER-encoded public key of the key-pair signing the first delegation.\n */\n public static fromDelegations(\n delegations: SignedDelegation[],\n publicKey: DerEncodedPublicKey,\n ): DelegationChain {\n return new this(delegations, publicKey);\n }\n\n protected constructor(\n public readonly delegations: SignedDelegation[],\n public readonly publicKey: DerEncodedPublicKey,\n ) {}\n\n public toJSON(): JsonnableDelegationChain {\n return {\n delegations: this.delegations.map(signedDelegation => {\n const { delegation, signature } = signedDelegation;\n const { targets } = delegation;\n return {\n delegation: {\n expiration: delegation.expiration.toString(16),\n pubkey: toHexString(delegation.pubkey),\n ...(targets && {\n targets: targets.map(t => t.toHex()),\n }),\n },\n signature: toHexString(signature),\n };\n }),\n publicKey: toHexString(this.publicKey),\n };\n }\n}\n\n/**\n * An Identity that adds delegation to a request. Everywhere in this class, the name\n * innerKey refers to the SignIdentity that is being used to sign the requests, while\n * originalKey is the identity that is being borrowed. More identities can be used\n * in the middle to delegate.\n */\nexport class DelegationIdentity extends SignIdentity {\n /**\n * Create a delegation without having access to delegateKey.\n *\n * @param key The key used to sign the reqyests.\n * @param delegation A delegation object created using `createDelegation`.\n */\n public static fromDelegation(\n key: Pick<SignIdentity, 'sign'>,\n delegation: DelegationChain,\n ): DelegationIdentity {\n return new this(key, delegation);\n }\n\n protected constructor(\n private _inner: Pick<SignIdentity, 'sign'>,\n private _delegation: DelegationChain,\n ) {\n super();\n }\n\n public getDelegation(): DelegationChain {\n return this._delegation;\n }\n\n public getPublicKey(): PublicKey {\n return {\n toDer: () => this._delegation.publicKey,\n };\n }\n public sign(blob: ArrayBuffer): Promise<Signature> {\n return this._inner.sign(blob);\n }\n\n public async transformRequest(request: HttpAgentRequest): Promise<unknown> {\n const { body, ...fields } = request;\n const requestId = await requestIdOf(body);\n return {\n ...fields,\n body: {\n content: body,\n sender_sig: await this.sign(\n new Uint8Array([...requestDomainSeparator, ...new Uint8Array(requestId)]),\n ),\n sender_delegation: this._delegation.delegations,\n sender_pubkey: this._delegation.publicKey,\n },\n };\n }\n}\n\n/**\n * List of things to check for a delegation chain validity.\n */\nexport interface DelegationValidChecks {\n /**\n * Check that the scope is amongst the scopes that this delegation has access to.\n */\n scope?: Principal | string | Array<Principal | string>;\n}\n\n/**\n * Analyze a DelegationChain and validate that it's valid, ie. not expired and apply to the\n * scope.\n * @param chain The chain to validate.\n * @param checks Various checks to validate on the chain.\n */\nexport function isDelegationValid(chain: DelegationChain, checks?: DelegationValidChecks): boolean {\n // Verify that the no delegation is expired. If any are in the chain, returns false.\n for (const { delegation } of chain.delegations) {\n // prettier-ignore\n if (+new Date(Number(delegation.expiration / BigInt(1000000))) <= +Date.now()) {\n return false;\n }\n }\n\n // Check the scopes.\n const scopes: Principal[] = [];\n const maybeScope = checks?.scope;\n if (maybeScope) {\n if (Array.isArray(maybeScope)) {\n scopes.push(...maybeScope.map(s => (typeof s === 'string' ? Principal.fromText(s) : s)));\n } else {\n scopes.push(typeof maybeScope === 'string' ? Principal.fromText(maybeScope) : maybeScope);\n }\n }\n\n for (const s of scopes) {\n const scope = s.toText();\n for (const { delegation } of chain.delegations) {\n if (delegation.targets === undefined) {\n continue;\n }\n\n let none = true;\n for (const target of delegation.targets) {\n if (target.toText() === scope) {\n none = false;\n break;\n }\n }\n if (none) {\n return false;\n }\n }\n }\n\n return true;\n}\n", "import { DerEncodedPublicKey, PublicKey, Signature, SignIdentity } from '@dfinity/agent';\nimport borc from 'borc';\nimport * as tweetnacl from 'tweetnacl';\nimport { fromHexString, toHexString } from '../buffer';\nimport { DER_COSE_OID, wrapDER } from './der';\n\nfunction _coseToDerEncodedBlob(cose: ArrayBuffer): DerEncodedPublicKey {\n return wrapDER(cose, DER_COSE_OID).buffer as DerEncodedPublicKey;\n}\n\n/**\n * From the documentation;\n * The authData is a byte array described in the spec. Parsing it will involve slicing bytes from\n * the array and converting them into usable objects.\n *\n * See https://webauthn.guide/#registration (subsection \"Example: Parsing the authenticator data\").\n *\n * @param authData The authData field of the attestation response.\n * @returns The COSE key of the authData.\n */\nfunction _authDataToCose(authData: ArrayBuffer): ArrayBuffer {\n const dataView = new DataView(new ArrayBuffer(2));\n const idLenBytes = authData.slice(53, 55);\n [...new Uint8Array(idLenBytes)].forEach((v, i) => dataView.setUint8(i, v));\n const credentialIdLength = dataView.getUint16(0);\n\n // Get the public key object.\n return authData.slice(55 + credentialIdLength);\n}\n\nexport class CosePublicKey implements PublicKey {\n protected _encodedKey: DerEncodedPublicKey;\n public constructor(protected _cose: ArrayBuffer) {\n this._encodedKey = _coseToDerEncodedBlob(_cose);\n }\n\n public toDer(): DerEncodedPublicKey {\n return this._encodedKey;\n }\n\n public getCose(): ArrayBuffer {\n return this._cose;\n }\n}\n\n/**\n * Create a challenge from a string or array. The default challenge is always the same\n * because we don't need to verify the authenticity of the key on the server (we don't\n * register our keys with the IC). Any challenge would do, even one per key, randomly\n * generated.\n *\n * @param challenge The challenge to transform into a byte array. By default a hard\n * coded string.\n */\nfunction _createChallengeBuffer(challenge: string | Uint8Array = '<ic0.app>'): Uint8Array {\n if (typeof challenge === 'string') {\n return Uint8Array.from(challenge, c => c.charCodeAt(0));\n } else {\n return challenge;\n }\n}\n\n/**\n * Create a credentials to authenticate with a server. This is necessary in order in\n * WebAuthn to get credentials IDs (which give us the public key and allow us to\n * sign), but in the case of the Internet Computer, we don't actually need to register\n * it, so we don't.\n * @param credentialCreationOptions an optional CredentialCreationOptions object\n */\nasync function _createCredential(\n credentialCreationOptions?: CredentialCreationOptions,\n): Promise<PublicKeyCredential | null> {\n const creds = (await navigator.credentials.create(\n credentialCreationOptions ?? {\n publicKey: {\n authenticatorSelection: {\n userVerification: 'preferred',\n },\n attestation: 'direct',\n challenge: _createChallengeBuffer(),\n pubKeyCredParams: [{ type: 'public-key', alg: PubKeyCoseAlgo.ECDSA_WITH_SHA256 }],\n rp: {\n name: 'Internet Identity Service',\n },\n user: {\n id: tweetnacl.randomBytes(16),\n name: 'Internet Identity',\n displayName: 'Internet Identity',\n },\n },\n },\n )) as PublicKeyCredential;\n\n // Validate that it's the correct type at runtime, since WebAuthn does not HAVE to\n // reply with a PublicKeyCredential.\n if (creds.response === undefined || !(creds.rawId instanceof ArrayBuffer)) {\n return null;\n } else {\n return creds;\n }\n}\n\n// See https://www.iana.org/assignments/cose/cose.xhtml#algorithms for a complete\n// list of these algorithms. We only list the ones we support here.\nenum PubKeyCoseAlgo {\n ECDSA_WITH_SHA256 = -7,\n}\n\n/**\n * A SignIdentity that uses `navigator.credentials`. See https://webauthn.guide/ for\n * more information about WebAuthentication.\n */\nexport class WebAuthnIdentity extends SignIdentity {\n /**\n * Create an identity from a JSON serialization.\n * @param json - json to parse\n */\n public static fromJSON(json: string): WebAuthnIdentity {\n const { publicKey, rawId } = JSON.parse(json);\n\n if (typeof publicKey !== 'string' || typeof rawId !== 'string') {\n throw new Error('Invalid JSON string.');\n }\n\n return new this(fromHexString(rawId), fromHexString(publicKey));\n }\n\n /**\n * Create an identity.\n * @param credentialCreationOptions an optional CredentialCreationOptions Challenge\n */\n public static async create(\n credentialCreationOptions?: CredentialCreationOptions,\n ): Promise<WebAuthnIdentity> {\n const creds = await _createCredential(credentialCreationOptions);\n\n if (!creds || creds.type !== 'public-key') {\n throw new Error('Could not create credentials.');\n }\n\n const response = creds.response as AuthenticatorAttestationResponse;\n if (!(response.attestationObject instanceof ArrayBuffer)) {\n throw new Error('Was expecting an attestation response.');\n }\n\n // Parse the attestationObject as CBOR.\n const attObject = borc.decodeFirst(new Uint8Array(response.attestationObject));\n\n return new this(creds.rawId, _authDataToCose(attObject.authData));\n }\n\n protected _publicKey: CosePublicKey;\n\n protected constructor(public readonly rawId: ArrayBuffer, cose: ArrayBuffer) {\n super();\n this._publicKey = new CosePublicKey(cose);\n }\n\n public getPublicKey(): PublicKey {\n return this._publicKey;\n }\n\n public async sign(blob: ArrayBuffer): Promise<Signature> {\n const result = (await navigator.credentials.get({\n publicKey: {\n allowCredentials: [\n {\n type: 'public-key',\n id: this.rawId,\n },\n ],\n challenge: blob,\n userVerification: 'preferred',\n },\n })) as PublicKeyCredential;\n\n const response = result.response as AuthenticatorAssertionResponse;\n if (\n response.signature instanceof ArrayBuffer &&\n response.authenticatorData instanceof ArrayBuffer\n ) {\n const cbor = borc.encode(\n new borc.Tagged(55799, {\n authenticator_data: new Uint8Array(response.authenticatorData),\n client_data_json: new TextDecoder().decode(response.clientDataJSON),\n signature: new Uint8Array(response.signature),\n }),\n );\n if (!cbor) {\n throw new Error('failed to encode cbor');\n }\n return cbor.buffer as Signature;\n } else {\n throw new Error('Invalid response from WebAuthn.');\n }\n }\n\n /**\n * Allow for JSON serialization of all information needed to reuse this identity.\n */\n public toJSON(): JsonnableWebAuthnIdentitiy {\n return {\n publicKey: toHexString(this._publicKey.getCose()),\n rawId: toHexString(this.rawId),\n };\n }\n}\n\n/**\n * ReturnType<WebAuthnIdentity.toJSON>\n */\nexport interface JsonnableWebAuthnIdentitiy {\n // The hexadecimal representation of the DER encoded public key.\n publicKey: string;\n // The string representation of the local WebAuthn Credential.id (base64url encoded).\n rawId: string;\n}\n", "/** @module IdleManager */\ntype IdleCB = () => unknown;\nexport type IdleManagerOptions = {\n /**\n * Callback after the user has gone idle\n */\n onIdle?: IdleCB;\n /**\n * timeout in ms\n * @default 30 minutes [600_000]\n */\n idleTimeout?: number;\n /**\n * capture scroll events\n * @default false\n */\n captureScroll?: boolean;\n /**\n * scroll debounce time in ms\n * @default 100\n */\n scrollDebounce?: number;\n};\n\nconst events = ['mousedown', 'mousemove', 'keydown', 'touchstart', 'wheel'];\n\n/**\n * Detects if the user has been idle for a duration of `idleTimeout` ms, and calls `onIdle` and registered callbacks.\n * By default, the IdleManager will log a user out after 10 minutes of inactivity.\n * To override these defaults, you can pass an `onIdle` callback, or configure a custom `idleTimeout` in milliseconds\n */\nexport class IdleManager {\n callbacks: IdleCB[] = [];\n idleTimeout: IdleManagerOptions['idleTimeout'] = 10 * 60 * 1000;\n timeoutID?: number = undefined;\n\n /**\n * Creates an {@link IdleManager}\n * @param {IdleManagerOptions} options Optional configuration\n * @see {@link IdleManagerOptions}\n * @param options.onIdle Callback once user has been idle. Use to prompt for fresh login, and use `Actor.agentOf(your_actor).invalidateIdentity()` to protect the user\n * @param options.idleTimeout timeout in ms\n * @param options.captureScroll capture scroll events\n * @param options.scrollDebounce scroll debounce time in ms\n */\n public static create(\n options: {\n /**\n * Callback after the user has gone idle\n * @see {@link IdleCB}\n */\n onIdle?: () => unknown;\n /**\n * timeout in ms\n * @default 10 minutes [600_000]\n */\n idleTimeout?: number;\n /**\n * capture scroll events\n * @default false\n */\n captureScroll?: boolean;\n /**\n * scroll debounce time in ms\n * @default 100\n */\n scrollDebounce?: number;\n } = {},\n ): IdleManager {\n return new this(options);\n }\n\n /**\n * @protected\n * @param options {@link IdleManagerOptions}\n */\n protected constructor(options: IdleManagerOptions = {}) {\n const { onIdle, idleTimeout = 10 * 60 * 1000 } = options || {};\n\n this.callbacks = onIdle ? [onIdle] : [];\n this.idleTimeout = idleTimeout;\n\n const _resetTimer = this._resetTimer.bind(this);\n\n window.addEventListener('load', _resetTimer, true);\n\n events.forEach(function (name) {\n document.addEventListener(name, _resetTimer, true);\n });\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n const debounce = (func: Function, wait: number) => {\n let timeout: number | undefined;\n return (...args: unknown[]) => {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const context = this;\n const later = function () {\n timeout = undefined;\n func.apply(context, args);\n };\n clearTimeout(timeout);\n timeout = window.setTimeout(later, wait);\n };\n };\n\n if (options?.captureScroll) {\n // debounce scroll events\n const scroll = debounce(_resetTimer, options?.scrollDebounce ?? 100);\n window.addEventListener('scroll', scroll, true);\n }\n\n _resetTimer();\n }\n\n /**\n * @param {IdleCB} callback function to be called when user goes idle\n */\n public registerCallback(callback: IdleCB): void {\n this.callbacks.push(callback);\n }\n\n /**\n * Cleans up the idle manager and its listeners\n */\n public exit(): void {\n clearTimeout(this.timeoutID);\n window.removeEventListener('load', this._resetTimer, true);\n\n const _resetTimer = this._resetTimer.bind(this);\n events.forEach(function (name) {\n document.removeEventListener(name, _resetTimer, true);\n });\n this.callbacks.forEach(cb => cb());\n }\n\n /**\n * Resets the timeouts during cleanup\n */\n _resetTimer(): void {\n const exit = this.exit.bind(this);\n window.clearTimeout(this.timeoutID);\n this.timeoutID = window.setTimeout(exit, this.idleTimeout);\n }\n}\n", "const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n", "import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n", "import { openDB, IDBPDatabase } from 'idb';\nimport { isBrowser, KEY_STORAGE_DELEGATION, KEY_STORAGE_KEY } from './storage';\n\ntype Database = IDBPDatabase<unknown>;\ntype IDBValidKey = string | number | Date | BufferSource | IDBValidKey[];\nconst AUTH_DB_NAME = 'auth-client-db';\nconst OBJECT_STORE_NAME = 'ic-keyval';\n\nconst _openDbStore = async (\n dbName = AUTH_DB_NAME,\n storeName = OBJECT_STORE_NAME,\n version: number,\n) => {\n // Clear legacy stored delegations\n if (isBrowser && localStorage?.getItem(KEY_STORAGE_DELEGATION)) {\n localStorage.removeItem(KEY_STORAGE_DELEGATION);\n localStorage.removeItem(KEY_STORAGE_KEY);\n }\n return await openDB(dbName, version, {\n upgrade: database => {\n database.objectStoreNames;\n if (database.objectStoreNames.contains(storeName)) {\n database.clear(storeName);\n }\n database.createObjectStore(storeName);\n },\n });\n};\n\nasync function _getValue<T>(\n db: Database,\n storeName: string,\n key: IDBValidKey,\n): Promise<T | undefined> {\n return await db.get(storeName, key);\n}\n\nasync function _setValue<T>(\n db: Database,\n storeName: string,\n key: IDBValidKey,\n value: T,\n): Promise<IDBValidKey> {\n return await db.put(storeName, value, key);\n}\n\nasync function _removeValue(db: Database, storeName: string, key: IDBValidKey): Promise<void> {\n return await db.delete(storeName, key);\n}\n\nexport type DBCreateOptions = {\n dbName?: string;\n storeName?: string;\n version?: number;\n};\n\n/**\n * Simple Key Value store\n * Defaults to `'auth-client-db'` with an object store of `'ic-keyval'`\n */\nexport class IdbKeyVal {\n /**\n *\n * @param {DBCreateOptions} options {@link DbCreateOptions}\n * @param {DBCreateOptions['dbName']} options.dbName name for the indexeddb database\n * @default 'auth-client-db'\n * @param {DBCreateOptions['storeName']} options.storeName name for the indexeddb Data Store\n * @default 'ic-keyval'\n * @param {DBCreateOptions['version']} options.version version of the database. Increment to safely upgrade\n * @constructs an {@link IdbKeyVal}\n */\n public static async create(options?: DBCreateOptions): Promise<IdbKeyVal> {\n const { dbName = AUTH_DB_NAME, storeName = OBJECT_STORE_NAME, version = 1 } = options ?? {};\n const db = await _openDbStore(dbName, storeName, version);\n return new IdbKeyVal(db, storeName);\n }\n\n // Do not use - instead prefer create\n private constructor(private _db: Database, private _storeName: string) {}\n\n /**\n * Basic setter\n * @param {IDBValidKey} key string | number | Date | BufferSource | IDBValidKey[]\n * @param value value to set\n * @returns void\n */\n public async set<T>(key: IDBValidKey, value: T) {\n return await _setValue<T>(this._db, this._storeName, key, value);\n }\n /**\n * Basic getter\n * Pass in a type T for type safety if you know the type the value will have if it is found\n * @param {IDBValidKey} key string | number | Date | BufferSource | IDBValidKey[]\n * @returns `Promise<T | null>`\n * @example\n * await get<string>('exampleKey') -> 'exampleValue'\n */\n public async get<T>(key: IDBValidKey): Promise<T | null> {\n return (await _getValue<T>(this._db, this._storeName, key)) ?? null;\n }\n\n /**\n * Remove a key\n * @param key {@link IDBValidKey}\n * @returns void\n */\n public async remove(key: IDBValidKey) {\n return await _removeValue(this._db, this._storeName, key);\n }\n}\n", "import { IdbKeyVal } from './db';\n\nexport const KEY_STORAGE_KEY = 'identity';\nexport const KEY_STORAGE_DELEGATION = 'delegation';\nexport const KEY_VECTOR = 'iv';\n// Increment if any fields are modified\nexport const DB_VERSION = 1;\n\nexport const isBrowser = typeof window !== 'undefined';\n\nexport type StoredKey = string | CryptoKeyPair;\n\n/**\n * Interface for persisting user authentication data\n */\nexport interface AuthClientStorage {\n get(key: string): Promise<StoredKey | null>;\n\n set(key: string, value: StoredKey): Promise<void>;\n\n remove(key: string): Promise<void>;\n}\n\n/**\n * Legacy implementation of AuthClientStorage, for use where IndexedDb is not available\n */\nexport class LocalStorage implements AuthClientStorage {\n constructor(public readonly prefix = 'ic-', private readonly _localStorage?: Storage) {}\n\n public get(key: string): Promise<string | null> {\n return Promise.resolve(this._getLocalStorage().getItem(this.prefix + key));\n }\n\n public set(key: string, value: string): Promise<void> {\n this._getLocalStorage().setItem(this.prefix + key, value);\n return Promise.resolve();\n }\n\n public remove(key: string): Promise<void> {\n this._getLocalStorage().removeItem(this.prefix + key);\n return Promise.resolve();\n }\n\n private _getLocalStorage() {\n if (this._localStorage) {\n return this._localStorage;\n }\n\n const ls =\n typeof window === 'undefined'\n ? typeof global === 'undefined'\n ? typeof self === 'undefined'\n ? undefined\n : self.localStorage\n : global.localStorage\n : window.localStorage;\n\n if (!ls) {\n throw new Error('Could not find local storage.');\n }\n\n return ls;\n }\n}\n\n/**\n * IdbStorage is an interface for simple storage of string key-value pairs built on {@link IdbKeyVal}\n *\n * It replaces {@link LocalStorage}\n * @see implements {@link AuthClientStorage}\n */\nexport class IdbStorage implements AuthClientStorage {\n // Initializes a KeyVal on first request\n private initializedDb: IdbKeyVal | undefined;\n get _db(): Promise<IdbKeyVal> {\n return new Promise(resolve => {\n if (this.initializedDb) {\n resolve(this.initializedDb);\n return;\n }\n IdbKeyVal.create({ version: DB_VERSION }).then(db => {\n this.initializedDb = db;\n resolve(db);\n });\n });\n }\n\n public async get(key: string): Promise<string | null> {\n const db = await this._db;\n return await db.get<string>(key);\n // return (await db.get<string>(key)) ?? null;\n }\n\n public async set(key: string, value: string): Promise<void> {\n const db = await this._db;\n await db.set(key, value);\n }\n\n public async remove(key: string): Promise<void> {\n const db = await this._db;\n await db.remove(key);\n }\n}\n", "/** @module AuthClient */\nimport {\n AnonymousIdentity,\n DerEncodedPublicKey,\n Identity,\n Signature,\n SignIdentity,\n} from '@dfinity/agent';\nimport {\n Delegation,\n DelegationChain,\n isDelegationValid,\n DelegationIdentity,\n Ed25519KeyIdentity,\n ECDSAKeyIdentity,\n} from '@dfinity/identity';\nimport { Principal } from '@dfinity/principal';\nimport { IdleManager, IdleManagerOptions } from './idleManager';\nimport {\n AuthClientStorage,\n IdbStorage,\n isBrowser,\n KEY_STORAGE_DELEGATION,\n KEY_STORAGE_KEY,\n KEY_VECTOR,\n LocalStorage,\n} from './storage';\n\nexport { IdbStorage, LocalStorage, KEY_STORAGE_DELEGATION, KEY_STORAGE_KEY } from './storage';\nexport { IdbKeyVal, DBCreateOptions } from './db';\n\nconst IDENTITY_PROVIDER_DEFAULT = 'https://identity.ic0.app';\nconst IDENTITY_PROVIDER_ENDPOINT = '#authorize';\n\nconst INTERRUPT_CHECK_INTERVAL = 500;\n\nexport const ERROR_USER_INTERRUPT = 'UserInterrupt';\n\n/**\n * List of options for creating an {@link AuthClient}.\n */\nexport interface AuthClientCreateOptions {\n /**\n * An identity to use as the base\n */\n identity?: SignIdentity | ECDSAKeyIdentity;\n /**\n * Optional storage with get, set, and remove. Uses {@link IdbStorage} by default\n */\n storage?: AuthClientStorage;\n /**\n * Options to handle idle timeouts\n * @default after 30 minutes, invalidates the identity\n */\n idleOptions?: IdleOptions;\n}\n\nexport interface IdleOptions extends IdleManagerOptions {\n /**\n * Disables idle functionality for {@link IdleManager}\n * @default false\n */\n disableIdle?: boolean;\n\n /**\n * Disables default idle behavior - call logout & reload window\n * @default false\n */\n disableDefaultIdleCallback?: boolean;\n}\n\nexport * from './idleManager';\n\nexport interface AuthClientLoginOptions {\n /**\n * Identity provider\n * @default \"https://identity.ic0.app\"\n */\n identityProvider?: string | URL;\n /**\n * Expiration of the authentication in nanoseconds\n * @default BigInt(8) hours * BigInt(3_600_000_000_000) nanoseconds\n */\n maxTimeToLive?: bigint;\n /**\n * Origin for Identity Provider to use while generating the delegated identity. For II, the derivation origin must authorize this origin by setting a record at `<derivation-origin>/.well-known/ii-alternative-origins`.\n * @see https://github.com/dfinity/internet-identity/blob/main/docs/internet-identity-spec.adoc\n */\n derivationOrigin?: string | URL;\n /**\n * Auth Window feature config string\n * @example \"toolbar=0,location=0,menubar=0,width=500,height=500,left=100,top=100\"\n */\n windowOpenerFeatures?: string;\n /**\n * Callback once login has completed\n */\n onSuccess?: (() => void) | (() => Promise<void>);\n /**\n * Callback in case authentication fails\n */\n onError?: ((error?: string) => void) | ((error?: string) => Promise<void>);\n}\n\ninterface InternetIdentityAuthRequest {\n kind: 'authorize-client';\n sessionPublicKey: Uint8Array;\n maxTimeToLive?: bigint;\n derivationOrigin?: string;\n}\n\ninterface InternetIdentityAuthResponseSuccess {\n kind: 'authorize-client-success';\n delegations: {\n delegation: {\n pubkey: Uint8Array;\n expiration: bigint;\n targets?: Principal[];\n };\n signature: Uint8Array;\n }[];\n userPublicKey: Uint8Array;\n}\n\ninterface AuthReadyMessage {\n kind: 'authorize-ready';\n}\n\ninterface AuthResponseSuccess {\n kind: 'authorize-client-success';\n delegations: {\n delegation: {\n pubkey: Uint8Array;\n expiration: bigint;\n targets?: Principal[];\n };\n signature: Uint8Array;\n }[];\n userPublicKey: Uint8Array;\n}\n\ninterface AuthResponseFailure {\n kind: 'authorize-client-failure';\n text: string;\n}\n\ntype IdentityServiceResponseMessage = AuthReadyMessage | AuthResponse;\ntype AuthResponse = AuthResponseSuccess | AuthResponseFailure;\n\n/**\n * Tool to manage authentication and identity\n * @see {@link AuthClient}\n */\nexport class AuthClient {\n /**\n * Create an AuthClient to manage authentication and identity\n * @constructs {@link AuthClient}\n * @param {AuthClientCreateOptions} options\n * @see {@link AuthClientCreateOptions}\n * @param options.identity Optional Identity to use as the base\n * @see {@link SignIdentity}\n * @param options.storage Storage mechanism for delegration credentials\n * @see {@link AuthClientStorage}\n * @param {IdleOptions} options.idleOptions Configures an {@link IdleManager}\n * @see {@link IdleOptions}\n * Default behavior is to clear stored identity and reload the page when a user goes idle, unless you set the disableDefaultIdleCallback flag or pass in a custom idle callback.\n * @example\n * const authClient = await AuthClient.create({\n * idleOptions: {\n * disableIdle: true\n * }\n * })\n */\n public static async create(\n options: {\n /**\n * An {@link Identity} to use as the base.\n * By default, a new {@link AnonymousIdentity}\n */\n identity?: SignIdentity;\n /**\n * {@link AuthClientStorage}\n * @description Optional storage with get, set, and remove. Uses {@link IdbStorage} by default\n */\n storage?: AuthClientStorage;\n /**\n * Options to handle idle timeouts\n * @default after 10 minutes, invalidates the identity\n */\n idleOptions?: IdleOptions;\n } = {},\n ): Promise<AuthClient> {\n const storage = options.storage ?? new IdbStorage();\n\n let key: null | SignIdentity | ECDSAKeyIdentity = null;\n if (options.identity) {\n key = options.identity;\n } else {\n let maybeIdentityStorage = await storage.get(KEY_STORAGE_KEY);\n if (!maybeIdentityStorage && isBrowser) {\n // Attempt to migrate from localstorage\n try {\n const fallbackLocalStorage = new LocalStorage();\n const localChain = await fallbackLocalStorage.get(KEY_STORAGE_DELEGATION);\n const localKey = await fallbackLocalStorage.get(KEY_STORAGE_KEY);\n if (localChain && localKey) {\n console.log('Discovered an identity stored in localstorage. Migrating to IndexedDB');\n await storage.set(KEY_STORAGE_DELEGATION, localChain);\n await storage.set(KEY_STORAGE_KEY, localKey);\n maybeIdentityStorage = localChain;\n // clean up\n await fallbackLocalStorage.remove(KEY_STORAGE_DELEGATION);\n await fallbackLocalStorage.remove(KEY_STORAGE_KEY);\n }\n } catch (error) {\n console.error('error while attempting to recover localstorage: ' + error);\n }\n }\n if (maybeIdentityStorage) {\n try {\n if (typeof maybeIdentityStorage === 'object') {\n key = await ECDSAKeyIdentity.fromKeyPair(maybeIdentityStorage);\n } else if (typeof maybeIdentityStorage === 'string') {\n // This is a legacy identity, which is a serialized Ed25519KeyIdentity.\n key = Ed25519KeyIdentity.fromJSON(maybeIdentityStorage);\n }\n } catch (e) {\n // Ignore this, this means that the localStorage value isn't a valid Ed25519KeyIdentity or ECDSAKeyIdentity\n // serialization.\n }\n }\n }\n\n let identity = new AnonymousIdentity();\n let chain: null | DelegationChain = null;\n if (key) {\n try {\n const chainStorage = await storage.get(KEY_STORAGE_DELEGATION);\n if (typeof chainStorage === 'object' && chainStorage !== null) {\n throw new Error(\n 'Delegation chain is incorrectly stored. A delegation chain should be stored as a string.',\n );\n }\n\n if (options.identity) {\n identity = options.identity;\n } else if (chainStorage) {\n chain = DelegationChain.fromJSON(chainStorage);\n\n // Verify that the delegation isn't expired.\n if (!isDelegationValid(chain)) {\n await _deleteStorage(storage);\n key = null;\n } else {\n identity = DelegationIdentity.fromDelegation(key, chain);\n }\n }\n } catch (e) {\n console.error(e);\n // If there was a problem loading the chain, delete the key.\n await _deleteStorage(storage);\n key = null;\n }\n }\n let idleManager: IdleManager | undefined = undefined;\n if (options.idleOptions?.disableIdle) {\n idleManager = undefined;\n }\n // if there is a delegation chain or provided identity, setup idleManager\n else if (chain || options.identity) {\n idleManager = IdleManager.create(options.idleOptions);\n }\n\n if (!key) {\n // Create a new key (whether or not one was in storage).\n key = await ECDSAKeyIdentity.generate();\n await storage.set(KEY_STORAGE_KEY, (key as ECDSAKeyIdentity).getKeyPair());\n }\n\n return new this(identity, key, chain, storage, idleManager, options);\n }\n\n protected constructor(\n private _identity: Identity,\n private _key: SignIdentity,\n private _chain: DelegationChain | null,\n private _storage: AuthClientStorage,\n public idleManager: IdleManager | undefined,\n private _createOptions: AuthClientCreateOptions | undefined,\n // A handle on the IdP window.\n private _idpWindow?: Window,\n // The event handler for processing events from the IdP.\n private _eventHandler?: (event: MessageEvent) => void,\n ) {\n const logout = this.logout.bind(this);\n const idleOptions = _createOptions?.idleOptions;\n /**\n * Default behavior is to clear stored identity and reload the page.\n * By either setting the disableDefaultIdleCallback flag or passing in a custom idle callback, we will ignore this config\n */\n if (!idleOptions?.onIdle && !idleOptions?.disableDefaultIdleCallback) {\n this.idleManager?.registerCallback(() => {\n logout();\n location.reload();\n });\n }\n }\n\n private _handleSuccess(message: InternetIdentityAuthResponseSuccess, onSuccess?: () => void) {\n const delegations = message.delegations.map(signedDelegation => {\n return {\n delegation: new Delegation(\n signedDelegation.delegation.pubkey,\n signedDelegation.delegation.expiration,\n signedDelegation.delegation.targets,\n ),\n signature: signedDelegation.signature.buffer as Signature,\n };\n });\n\n const delegationChain = DelegationChain.fromDelegations(\n delegations,\n message.userPublicKey.buffer as DerEncodedPublicKey,\n );\n\n const key = this._key;\n if (!key) {\n return;\n }\n\n this._chain = delegationChain;\n this._identity = DelegationIdentity.fromDelegation(key, this._chain);\n\n this._idpWindow?.close();\n if (!this.idleManager) {\n const idleOptions = this._createOptions?.idleOptions;\n this.idleManager = IdleManager.create(idleOptions);\n\n if (!idleOptions?.onIdle && !idleOptions?.disableDefaultIdleCallback) {\n this.idleManager?.registerCallback(() => {\n this.logout();\n location.reload();\n });\n }\n }\n onSuccess?.();\n this._removeEventListener();\n delete this._idpWindow;\n }\n\n public getIdentity(): Identity {\n return this._identity;\n }\n\n public async isAuthenticated(): Promise<boolean> {\n return !this.getIdentity().getPrincipal().isAnonymous() && this._chain !== null;\n }\n\n /**\n * AuthClient Login -\n * Opens up a new window to authenticate with Internet Identity\n * @param {AuthClientLoginOptions} options\n * @param options.identityProvider Identity provider\n * @param options.maxTimeToLive Expiration of the authentication in nanoseconds\n * @param options.derivationOrigin Origin for Identity Provider to use while generating the delegated identity\n * @param options.windowOpenerFeatures Configures the opened authentication window\n * @param options.onSuccess Callback once login has completed\n * @param options.onError Callback in case authentication fails\n * @example\n * const authClient = await AuthClient.create();\n * authClient.login({\n * identityProvider: 'http://<canisterID>.localhost:8000',\n * maxTimeToLive: BigInt (7) * BigInt(24) * BigInt(3_600_000_000_000), // 1 week\n * windowOpenerFeatures: \"toolbar=0,location=0,menubar=0,width=500,height=500,left=100,top=100\",\n * onSuccess: () => {\n * console.log('Login Successful!');\n * },\n * onError: (error) => {\n * console.error('Login Failed: ', error);\n * }\n * });\n */\n public async login(options?: {\n /**\n * Identity provider\n * @default \"https://identity.ic0.app\"\n */\n identityProvider?: string | URL;\n /**\n * Expiration of the authentication in nanoseconds\n * @default BigInt(8) hours * BigInt(3_600_000_000_000) nanoseconds\n */\n maxTimeToLive?: bigint;\n /**\n * Auth Window feature config string\n * @example \"toolbar=0,location=0,menubar=0,width=500,height=500,left=100,top=100\"\n */\n /**\n * Origin for Identity Provider to use while generating the delegated identity. For II, the derivation origin must authorize this origin by setting a record at `<derivation-origin>/.well-known/ii-alternative-origins`.\n * @see https://github.com/dfinity/internet-identity/blob/main/docs/internet-identity-spec.adoc\n */\n derivationOrigin?: string | URL;\n windowOpenerFeatures?: string;\n /**\n * Callback once login has completed\n */\n onSuccess?: (() => void) | (() => Promise<void>);\n /**\n * Callback in case authentication fails\n */\n onError?: ((error?: string) => void) | ((error?: string) => Promise<void>);\n }): Promise<void> {\n // Set default maxTimeToLive to 8 hours\n const defaultTimeToLive = /* hours */ BigInt(8) * /* nanoseconds */ BigInt(3_600_000_000_000);\n\n // Create the URL of the IDP. (e.g. https://XXXX/#authorize)\n const identityProviderUrl = new URL(\n options?.identityProvider?.toString() || IDENTITY_PROVIDER_DEFAULT,\n );\n // Set the correct hash if it isn't already set.\n identityProviderUrl.hash = IDENTITY_PROVIDER_ENDPOINT;\n\n // If `login` has been called previously, then close/remove any previous windows\n // and event listeners.\n this._idpWindow?.close();\n this._removeEventListener();\n\n // Add an event listener to handle responses.\n this._eventHandler = this._getEventHandler(identityProviderUrl, {\n maxTimeToLive: options?.maxTimeToLive ?? defaultTimeToLive,\n ...options,\n });\n window.addEventListener('message', this._eventHandler);\n\n // Open a new window with the IDP provider.\n this._idpWindow =\n window.open(identityProviderUrl.toString(), 'idpWindow', options?.windowOpenerFeatures) ??\n undefined;\n\n // Check if the _idpWindow is closed by user.\n const checkInterruption = (): void => {\n // The _idpWindow is opened and not yet closed by the client\n if (this._idpWindow) {\n if (this._idpWindow.closed) {\n this._handleFailure(ERROR_USER_INTERRUPT, options?.onError);\n } else {\n setTimeout(checkInterruption, INTERRUPT_CHECK_INTERVAL);\n }\n }\n };\n checkInterruption();\n }\n\n private _getEventHandler(identityProviderUrl: URL, options?: AuthClientLoginOptions) {\n return async (event: MessageEvent) => {\n if (event.origin !== identityProviderUrl.origin) {\n console.warn(\n `WARNING: expected origin '${identityProviderUrl.origin}', got '${event.origin}' (ignoring)`,\n );\n return;\n }\n\n const message = event.data as IdentityServiceResponseMessage;\n\n switch (message.kind) {\n case 'authorize-ready': {\n // IDP is ready. Send a message to request authorization.\n const request: InternetIdentityAuthRequest = {\n kind: 'authorize-client',\n sessionPublicKey: new Uint8Array(this._key?.getPublicKey().toDer() as ArrayBuffer),\n maxTimeToLive: options?.maxTimeToLive,\n derivationOrigin: options?.derivationOrigin?.toString(),\n };\n this._idpWindow?.postMessage(request, identityProviderUrl.origin);\n break;\n }\n case 'authorize-client-success':\n // Create the delegation chain and store it.\n try {\n this._handleSuccess(message, options?.onSuccess);\n\n // Setting the storage is moved out of _handleSuccess to make\n // it a sync function. Having _handleSuccess as an async function\n // messes up the jest tests for some reason.\n if (this._chain) {\n await this._storage.set(KEY_STORAGE_DELEGATION, JSON.stringify(this._chain.toJSON()));\n }\n } catch (err) {\n this._handleFailure((err as Error).message, options?.onError);\n }\n break;\n case 'authorize-client-failure':\n this._handleFailure(message.text, options?.onError);\n break;\n default:\n break;\n }\n };\n }\n\n private _handleFailure(errorMessage?: string, onError?: (error?: string) => void): void {\n this._idpWindow?.close();\n onError?.(errorMessage);\n this._removeEventListener();\n delete this._idpWindow;\n }\n\n private _removeEventListener() {\n if (this._eventHandler) {\n window.removeEventListener('message', this._eventHandler);\n }\n this._eventHandler = undefined;\n }\n\n public async logout(options: { returnTo?: string } = {}): Promise<void> {\n await _deleteStorage(this._storage);\n\n // Reset this auth client to a non-authenticated state.\n this._identity = new AnonymousIdentity();\n this._chain = null;\n\n if (options.returnTo) {\n try {\n window.history.pushState({}, '', options.returnTo);\n } catch (e) {\n window.location.href = options.returnTo;\n }\n }\n }\n}\n\nasync function _deleteStorage(storage: AuthClientStorage) {\n await storage.remove(KEY_STORAGE_KEY);\n await storage.remove(KEY_STORAGE_DELEGATION);\n await storage.remove(KEY_VECTOR);\n}\n", "// How long the delegation identity should remain valid?\n// e.g. BigInt(7 * 24 * 60 * 60 * 1000 * 1000 * 1000) = 7 days in nanoseconds\n// For Juno: 4 hours\nexport const delegationIdentityExpiration = BigInt(4 * 60 * 60 * 1000 * 1000 * 1000);\n\nexport const popupWidth = 576;\nexport const popupHeight = 576;\n", "export abstract class Store<T> {\n private callbacks: {id: symbol; callback: (data: T | null) => void}[] = [];\n\n protected populate(data: T | null) {\n this.callbacks.forEach(({callback}: {id: symbol; callback: (data: T | null) => void}) =>\n callback(data)\n );\n }\n\n subscribe(callback: (data: T | null) => void): () => void {\n const callbackId = Symbol();\n this.callbacks.push({id: callbackId, callback});\n\n return () =>\n (this.callbacks = this.callbacks.filter(\n ({id}: {id: symbol; callback: (data: T | null) => void}) => id !== callbackId\n ));\n }\n}\n", "import type {User} from '../types/auth.types';\nimport {Store} from './store';\n\nexport class AuthStore extends Store<User | null> {\n private static instance: AuthStore;\n\n private authUser: User | null = null;\n\n private constructor() {\n super();\n }\n\n static getInstance() {\n if (!AuthStore.instance) {\n AuthStore.instance = new AuthStore();\n }\n return AuthStore.instance;\n }\n\n set(authUser: User | null) {\n this.authUser = authUser;\n\n this.populate(authUser);\n }\n\n get(): User | null {\n return this.authUser;\n }\n\n override subscribe(callback: (data: User | null) => void): () => void {\n const unsubscribe: () => void = super.subscribe(callback);\n\n callback(this.authUser);\n\n return unsubscribe;\n }\n\n isLoggedIn(): boolean {\n return !this.authUser?.data?.principal.isAnonymous();\n }\n\n reset() {\n this.authUser = null;\n\n this.populate(this.authUser);\n }\n}\n", "import type {Environment} from '../types/env.types';\nimport {Store} from './store';\n\nexport class EnvStore extends Store<Environment | undefined> {\n private static instance: EnvStore;\n\n private env: Environment | undefined;\n\n private constructor() {\n super();\n }\n\n static getInstance() {\n if (!EnvStore.instance) {\n EnvStore.instance = new EnvStore();\n }\n return EnvStore.instance;\n }\n\n set(env: Environment | undefined) {\n this.env = env;\n\n this.populate(env);\n }\n\n get(): Environment | undefined {\n return this.env;\n }\n\n localIdentity(): boolean {\n return this.get()?.localIdentityCanisterId !== undefined;\n }\n\n override subscribe(callback: (data: Environment | null | undefined) => void): () => void {\n const unsubscribe: () => void = super.subscribe(callback);\n\n callback(this.env);\n\n return unsubscribe;\n }\n}\n", "import {EnvStore} from '../stores/env.store';\n\nexport const isBrowser = () => typeof window !== `undefined`;\n\nexport const satelliteUrl = (): string => {\n const satelliteId: string = EnvStore.getInstance().get()?.satelliteId ?? 'unknown';\n\n if (EnvStore.getInstance().localIdentity()) {\n return `http://${satelliteId}.localhost:8000`;\n }\n\n return `https://${satelliteId}.ic0.app`;\n};\n", "/** Is null or undefined */\nexport const isNullish = <T>(argument: T | undefined | null): argument is undefined | null =>\n argument === null || argument === undefined;\n\n/** Not null and not undefined */\nexport const nonNullish = <T>(argument: T | undefined | null): argument is NonNullable<T> =>\n !isNullish(argument);\n\nexport class NullishError extends Error {}\n\nexport const assertNonNullish: <T>(\n value: T,\n message?: string\n) => asserts value is NonNullable<T> = <T>(value: T, message?: string): void => {\n if (isNullish(value)) {\n throw new NullishError(message);\n }\n};\n", "import {isBrowser} from './env.utils';\nimport {isNullish} from './utils';\n\nexport const popupCenter = ({\n width,\n height\n}: {\n width: number;\n height: number;\n}): string | undefined => {\n if (!isBrowser()) {\n return undefined;\n }\n\n if (isNullish(window) || isNullish(window.top)) {\n return undefined;\n }\n\n const {\n top: {innerWidth, innerHeight}\n } = window;\n\n const y = innerHeight / 2 + screenY - height / 2;\n const x = innerWidth / 2 + screenX - width / 2;\n\n return `toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=no, width=${width}, height=${height}, top=${y}, left=${x}`;\n};\n", "export const toNullable = <T>(value?: T): [] | [T] => {\n return value ? [value] : [];\n};\n\nexport const fromNullable = <T>(value: [] | [T]): T | undefined => {\n return value?.[0];\n};\n\nexport const toArray = async <T>(data: T): Promise<Uint8Array> => {\n const blob: Blob = new Blob([JSON.stringify(data)], {\n type: 'application/json; charset=utf-8'\n });\n return new Uint8Array(await blob.arrayBuffer());\n};\n\nexport const fromArray = async <T>(data: Uint8Array | number[]): Promise<T> => {\n const blob: Blob = new Blob([data instanceof Uint8Array ? data : new Uint8Array(data)], {\n type: 'application/json; charset=utf-8'\n });\n return JSON.parse(await blob.text());\n};\n", "import type {ListParams as ListParamsApi} from '../../declarations/satellite/satellite.did';\nimport type {ListParams} from '../types/list.types';\nimport {toNullable} from './did.utils';\nimport {isNullish} from './utils';\n\nexport const toListParams = ({matcher, paginate, order}: ListParams): ListParamsApi => ({\n matcher: toNullable(matcher),\n paginate: toNullable(\n isNullish(paginate)\n ? undefined\n : {\n start_after: toNullable(paginate.startAfter),\n limit: toNullable(isNullish(paginate.limit) ? undefined : BigInt(paginate.limit))\n }\n ),\n order: toNullable(\n isNullish(order)\n ? undefined\n : {\n desc: order.desc,\n field:\n order.field === 'created_at'\n ? {CreatedAt: null}\n : order.field === 'updated_at'\n ? {UpdatedAt: null}\n : {Keys: null}\n }\n )\n});\n", "export const idlFactory = ({IDL}) => {\n const ControllersArgs = IDL.Record({\n controllers: IDL.Vec(IDL.Principal)\n });\n const CommitBatch = IDL.Record({\n batch_id: IDL.Nat,\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n chunk_ids: IDL.Vec(IDL.Nat)\n });\n const DelDoc = IDL.Record({updated_at: IDL.Opt(IDL.Nat64)});\n const StorageConfig = IDL.Record({\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))))\n });\n const Config = IDL.Record({storage: StorageConfig});\n const Doc = IDL.Record({\n updated_at: IDL.Nat64,\n owner: IDL.Principal,\n data: IDL.Vec(IDL.Nat8),\n created_at: IDL.Nat64\n });\n const HttpRequest = IDL.Record({\n url: IDL.Text,\n method: IDL.Text,\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))\n });\n const StreamingCallbackToken = IDL.Record({\n token: IDL.Opt(IDL.Text),\n sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n index: IDL.Nat64,\n encoding_type: IDL.Text,\n full_path: IDL.Text\n });\n const StreamingStrategy = IDL.Variant({\n Callback: IDL.Record({\n token: StreamingCallbackToken,\n callback: IDL.Func([], [], [])\n })\n });\n const HttpResponse = IDL.Record({\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n streaming_strategy: IDL.Opt(StreamingStrategy),\n status_code: IDL.Nat16\n });\n const StreamingCallbackHttpResponse = IDL.Record({\n token: IDL.Opt(StreamingCallbackToken),\n body: IDL.Vec(IDL.Nat8)\n });\n const InitAssetKey = IDL.Record({\n token: IDL.Opt(IDL.Text),\n collection: IDL.Text,\n name: IDL.Text,\n encoding_type: IDL.Opt(IDL.Text),\n full_path: IDL.Text\n });\n const InitUploadResult = IDL.Record({batch_id: IDL.Nat});\n const ListOrderField = IDL.Variant({\n UpdatedAt: IDL.Null,\n Keys: IDL.Null,\n CreatedAt: IDL.Null\n });\n const ListOrder = IDL.Record({field: ListOrderField, desc: IDL.Bool});\n const ListPaginate = IDL.Record({\n start_after: IDL.Opt(IDL.Text),\n limit: IDL.Opt(IDL.Nat64)\n });\n const ListParams = IDL.Record({\n order: IDL.Opt(ListOrder),\n matcher: IDL.Opt(IDL.Text),\n paginate: IDL.Opt(ListPaginate)\n });\n const AssetKey = IDL.Record({\n token: IDL.Opt(IDL.Text),\n collection: IDL.Text,\n owner: IDL.Principal,\n name: IDL.Text,\n full_path: IDL.Text\n });\n const AssetEncodingNoContent = IDL.Record({\n modified: IDL.Nat64,\n sha256: IDL.Vec(IDL.Nat8),\n total_length: IDL.Nat\n });\n const AssetNoContent = IDL.Record({\n key: AssetKey,\n updated_at: IDL.Nat64,\n encodings: IDL.Vec(IDL.Tuple(IDL.Text, AssetEncodingNoContent)),\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n created_at: IDL.Nat64\n });\n const ListResults = IDL.Record({\n matches_length: IDL.Nat64,\n length: IDL.Nat64,\n items: IDL.Vec(IDL.Tuple(IDL.Text, AssetNoContent))\n });\n const CustomDomain = IDL.Record({\n updated_at: IDL.Nat64,\n created_at: IDL.Nat64,\n bn_id: IDL.Opt(IDL.Text)\n });\n const ListResults_1 = IDL.Record({\n matches_length: IDL.Nat64,\n length: IDL.Nat64,\n items: IDL.Vec(IDL.Tuple(IDL.Text, Doc))\n });\n const RulesType = IDL.Variant({Db: IDL.Null, Storage: IDL.Null});\n const Permission = IDL.Variant({\n Controllers: IDL.Null,\n Private: IDL.Null,\n Public: IDL.Null,\n Managed: IDL.Null\n });\n const Rule = IDL.Record({\n updated_at: IDL.Nat64,\n max_size: IDL.Opt(IDL.Nat),\n read: Permission,\n created_at: IDL.Nat64,\n write: Permission\n });\n const SetDoc = IDL.Record({\n updated_at: IDL.Opt(IDL.Nat64),\n data: IDL.Vec(IDL.Nat8)\n });\n const SetRule = IDL.Record({\n updated_at: IDL.Opt(IDL.Nat64),\n max_size: IDL.Opt(IDL.Nat),\n read: Permission,\n write: Permission\n });\n const Chunk = IDL.Record({\n content: IDL.Vec(IDL.Nat8),\n batch_id: IDL.Nat\n });\n const UploadChunk = IDL.Record({chunk_id: IDL.Nat});\n return IDL.Service({\n add_controllers: IDL.Func([ControllersArgs], [IDL.Vec(IDL.Principal)], []),\n commit_asset_upload: IDL.Func([CommitBatch], [], []),\n del_asset: IDL.Func([IDL.Text, IDL.Text], [], []),\n del_assets: IDL.Func([IDL.Opt(IDL.Text)], [], []),\n del_custom_domain: IDL.Func([IDL.Text], [], []),\n del_doc: IDL.Func([IDL.Text, IDL.Text, DelDoc], [], []),\n get_config: IDL.Func([], [Config], []),\n get_doc: IDL.Func([IDL.Text, IDL.Text], [IDL.Opt(Doc)], ['query']),\n http_request: IDL.Func([HttpRequest], [HttpResponse], ['query']),\n http_request_streaming_callback: IDL.Func(\n [StreamingCallbackToken],\n [StreamingCallbackHttpResponse],\n ['query']\n ),\n init_asset_upload: IDL.Func([InitAssetKey], [InitUploadResult], []),\n list_assets: IDL.Func([IDL.Opt(IDL.Text), ListParams], [ListResults], ['query']),\n list_controllers: IDL.Func([], [IDL.Vec(IDL.Principal)], ['query']),\n list_custom_domains: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, CustomDomain))], ['query']),\n list_docs: IDL.Func([IDL.Text, ListParams], [ListResults_1], ['query']),\n list_rules: IDL.Func([RulesType], [IDL.Vec(IDL.Tuple(IDL.Text, Rule))], ['query']),\n remove_controllers: IDL.Func([ControllersArgs], [IDL.Vec(IDL.Principal)], []),\n set_config: IDL.Func([Config], [], []),\n set_custom_domain: IDL.Func([IDL.Text, IDL.Opt(IDL.Text)], [], []),\n set_doc: IDL.Func([IDL.Text, IDL.Text, SetDoc], [Doc], []),\n set_rule: IDL.Func([RulesType, IDL.Text, SetRule], [], []),\n upload_asset_chunk: IDL.Func([Chunk], [UploadChunk], []),\n version: IDL.Func([], [IDL.Text], ['query'])\n });\n};\nexport const init = ({IDL}) => {\n return [];\n};\n", "import type {ActorMethod, ActorSubclass} from '@dfinity/agent';\nimport {Actor, HttpAgent} from '@dfinity/agent';\nimport type {IDL} from '@dfinity/candid';\nimport {EnvStore} from '../stores/env.store';\nimport type {Satellite} from '../types/satellite.types';\n\nexport const createActor = async <T = Record<string, ActorMethod>>({\n satelliteId: canisterId,\n idlFactory,\n identity,\n fetch,\n env = 'prod'\n}: {\n idlFactory: IDL.InterfaceFactory;\n} & Required<Pick<Satellite, 'satelliteId' | 'identity'>> &\n Pick<Satellite, 'fetch' | 'env'>): Promise<ActorSubclass<T>> => {\n const localActor = env === 'dev' || EnvStore.getInstance().localIdentity();\n\n const host: string = localActor ? 'http://127.0.0.1:8000/' : 'https://ic0.app';\n\n const agent: HttpAgent = new HttpAgent({identity, ...(host && {host}), ...(fetch && {fetch})});\n\n if (localActor) {\n // Fetch root key for certificate validation during development\n await agent.fetchRootKey();\n }\n\n // Creates an actor with using the candid interface and the HttpAgent\n return Actor.createActor(idlFactory, {\n agent,\n canisterId\n });\n};\n", "import type {_SERVICE as SatelliteActor} from '../../declarations/satellite/satellite.did';\nimport {idlFactory} from '../../declarations/satellite/satellite.factory.did.js';\nimport {EnvStore} from '../stores/env.store';\nimport type {Satellite} from '../types/satellite.types';\nimport {createActor} from '../utils/actor.utils';\n\nexport const getSatelliteActor = async ({\n satelliteId,\n ...rest\n}: Satellite): Promise<SatelliteActor> => {\n const {satelliteId: canisterId} =\n satelliteId !== undefined\n ? {satelliteId}\n : EnvStore.getInstance().get() ?? {satelliteId: undefined};\n\n if (!canisterId) {\n throw new Error('No satellite principal defined.');\n }\n\n return createActor({\n satelliteId: canisterId,\n idlFactory,\n ...rest\n });\n};\n", "import type {\n Doc as DocApi,\n ListResults_1 as ListDocsApi,\n _SERVICE as SatelliteActor\n} from '../../declarations/satellite/satellite.did';\nimport type {Doc} from '../types/doc.types';\nimport type {ListParams, ListResults} from '../types/list.types';\nimport type {Satellite} from '../types/satellite.types';\nimport {fromArray, fromNullable, toArray, toNullable} from '../utils/did.utils';\nimport {toListParams} from '../utils/list.utils';\nimport {getSatelliteActor} from './actor.api';\n\nexport const getDoc = async <D>({\n collection,\n key,\n satellite\n}: {\n collection: string;\n satellite: Satellite;\n} & Pick<Doc<D>, 'key'>): Promise<Doc<D> | undefined> => {\n const actor: SatelliteActor = await getSatelliteActor(satellite);\n\n const entry: DocApi | undefined = fromNullable(await actor.get_doc(collection, key));\n\n if (!entry) {\n return undefined;\n }\n\n const data: D = await fromArray<D>(entry.data);\n\n return {\n key,\n data,\n created_at: entry.created_at,\n updated_at: entry.updated_at\n };\n};\n\nexport const setDoc = async <D>({\n collection,\n doc,\n satellite\n}: {\n collection: string;\n doc: Doc<D>;\n satellite: Satellite;\n}): Promise<Doc<D>> => {\n const actor: SatelliteActor = await getSatelliteActor(satellite);\n\n const {key, data, updated_at} = doc;\n\n const updatedDoc: DocApi = await actor.set_doc(collection, key, {\n data: await toArray<D>(data),\n updated_at: toNullable(updated_at)\n });\n\n // We update the data with the updated_at timestamp generated in the backend.\n // The canister checks if the updated_at date is equals to the entity timestamp otherwise it rejects the update to prevent overwrite of data if user uses multiple devices.\n // In other words: to update a data, the current updated_at information need to be provided.\n return {\n key,\n data,\n created_at: updatedDoc.created_at,\n updated_at: updatedDoc.updated_at\n };\n};\n\nexport const delDoc = async <D>({\n collection,\n doc,\n satellite\n}: {\n collection: string;\n doc: Doc<D>;\n satellite: Satellite;\n}): Promise<void> => {\n const actor: SatelliteActor = await getSatelliteActor(satellite);\n\n const {key, updated_at} = doc;\n\n return actor.del_doc(collection, key, {\n updated_at: toNullable(updated_at)\n });\n};\n\nexport const listDocs = async <D>({\n collection,\n filter,\n satellite\n}: {\n collection: string;\n filter: ListParams;\n satellite: Satellite;\n}): Promise<ListResults<Doc<D>>> => {\n const actor: SatelliteActor = await getSatelliteActor(satellite);\n\n const {items, matches_length, length}: ListDocsApi = await actor.list_docs(\n collection,\n toListParams(filter)\n );\n\n const docs: Doc<D>[] = [];\n\n for (const [key, item] of items) {\n docs.push({\n key,\n data: await fromArray<D>(item.data),\n created_at: item.created_at,\n updated_at: item.updated_at\n });\n }\n\n return {\n items: docs,\n length,\n matches_length\n };\n};\n", "import type {Identity} from '@dfinity/agent';\nimport {getIdentity as getAuthIdentity} from './auth.services';\n\nexport const getIdentity = (identity?: Identity): Identity => {\n if (identity !== undefined) {\n return identity;\n }\n\n const authIdentity: Identity | undefined = getAuthIdentity();\n\n if (!authIdentity) {\n throw new Error('No internet identity.');\n }\n\n return authIdentity;\n};\n", "import type {Identity} from '@dfinity/agent';\nimport {\n delDoc as delDocApi,\n getDoc as getDocApi,\n listDocs as listDocsApi,\n setDoc as setDocApi\n} from '../api/doc.api';\nimport type {Doc} from '../types/doc.types';\nimport type {ListParams, ListResults} from '../types/list.types';\nimport type {SatelliteOptions} from '../types/satellite.types';\nimport {getIdentity} from './identity.services';\n\nexport const getDoc = async <D>({\n satellite,\n ...rest\n}: {\n collection: string;\n satellite?: SatelliteOptions;\n} & Pick<Doc<D>, 'key'>): Promise<Doc<D> | undefined> => {\n const identity: Identity | undefined = getIdentity(satellite?.identity);\n\n return getDocApi({...rest, satellite: {...satellite, identity}});\n};\n\nexport const setDoc = async <D>({\n satellite,\n ...rest\n}: {\n collection: string;\n doc: Doc<D>;\n satellite?: SatelliteOptions;\n}): Promise<Doc<D>> => {\n const identity: Identity | undefined = getIdentity(satellite?.identity);\n\n return setDocApi({...rest, satellite: {...satellite, identity}});\n};\n\nexport const delDoc = async <D>({\n satellite,\n ...rest\n}: {\n collection: string;\n doc: Doc<D>;\n satellite?: SatelliteOptions;\n}): Promise<void> => {\n const identity: Identity | undefined = getIdentity(satellite?.identity);\n\n return delDocApi({...rest, satellite: {...satellite, identity}});\n};\n\nexport const listDocs = async <D>({\n satellite,\n ...rest\n}: {\n collection: string;\n filter: ListParams;\n satellite?: SatelliteOptions;\n}): Promise<ListResults<Doc<D>>> => {\n const identity: Identity | undefined = getIdentity(satellite?.identity);\n\n return listDocsApi<D>({...rest, satellite: {...satellite, identity}});\n};\n", "import type {Identity} from '@dfinity/agent';\nimport type {Principal} from '@dfinity/principal';\nimport type {User, UserData} from '../types/auth.types';\nimport {getIdentity} from './auth.services';\nimport {getDoc, setDoc} from './doc.services';\n\nexport const initUser = async (): Promise<User> => {\n const identity: Identity | undefined = getIdentity();\n\n if (!identity) {\n throw new Error('No internet identity.');\n }\n\n const userId = identity.getPrincipal().toText();\n\n const user: User | undefined = await getDoc<UserData>({\n collection: `#user`,\n key: userId\n });\n\n if (!user) {\n const newUser: User = await createUser({userId, principal: identity.getPrincipal()});\n return newUser;\n }\n\n return user;\n};\n\nconst createUser = async ({\n userId,\n principal\n}: {\n userId: string;\n principal: Principal;\n}): Promise<User> => {\n const now: Date = new Date();\n\n const data: UserData = {\n principal,\n created_at: now,\n updated_at: now\n };\n\n return setDoc<UserData>({\n collection: `#user`,\n doc: {\n key: userId,\n data\n }\n });\n};\n", "import type {Identity} from '@dfinity/agent';\nimport {AuthClient} from '@dfinity/auth-client';\nimport {delegationIdentityExpiration, popupHeight, popupWidth} from '../constants/auth.constants';\nimport {AuthStore} from '../stores/auth.store';\nimport {EnvStore} from '../stores/env.store';\nimport type {SignInOptions} from '../types/auth.types';\nimport {popupCenter} from '../utils/window.utils';\nimport {initUser} from './user.services';\n\nlet authClient: AuthClient | undefined;\n\nconst createAuthClient = (): Promise<AuthClient> =>\n AuthClient.create({\n idleOptions: {\n disableIdle: true,\n disableDefaultIdleCallback: true\n }\n });\n\nexport const initAuth = async () => {\n authClient = authClient ?? (await createAuthClient());\n\n const isAuthenticated: boolean = (await authClient?.isAuthenticated()) || false;\n\n if (!isAuthenticated) {\n return;\n }\n\n const user = await initUser();\n AuthStore.getInstance().set(user);\n\n // TODO: idle timer worker\n};\n\nexport const signIn = async (options?: SignInOptions) =>\n /* eslint-disable no-async-promise-executor */\n new Promise<void>(async (resolve, reject) => {\n authClient = authClient ?? (await createAuthClient());\n\n await authClient.login({\n onSuccess: async () => {\n await initAuth();\n resolve();\n },\n onError: (error?: string) => reject(error),\n maxTimeToLive: options?.maxTimeToLive ?? delegationIdentityExpiration,\n ...(EnvStore.getInstance().localIdentity() && {\n identityProvider: `http://${\n EnvStore.getInstance().get()?.localIdentityCanisterId\n }.localhost:8000?#authorize`\n }),\n ...(options?.derivationOrigin !== undefined && {derivationOrigin: options.derivationOrigin}),\n ...(options?.windowed !== false && {\n windowOpenerFeatures: popupCenter({width: popupWidth, height: popupHeight})\n })\n });\n });\n\nexport const signOut = async (): Promise<void> => {\n await authClient?.logout();\n\n // Reset local object otherwise next sign in (sign in - sign out - sign in) might not work out - i.e. agent-js might not recreate the delegation or identity if not resetted\n authClient = undefined;\n\n AuthStore.getInstance().reset();\n};\n\nexport const getIdentity = (): Identity | undefined => {\n return authClient?.getIdentity();\n};\n", "import type {\n AssetNoContent,\n ListResults as ListAssetsApi,\n _SERVICE as SatelliteActor\n} from '../../declarations/satellite/satellite.did';\nimport type {ListParams, ListResults} from '../types/list.types';\nimport type {Satellite} from '../types/satellite.types';\nimport type {Asset, ENCODING_TYPE, Storage} from '../types/storage.types';\nimport {toNullable} from '../utils/did.utils';\nimport {isBrowser} from '../utils/env.utils';\nimport {toListParams} from '../utils/list.utils';\nimport {getSatelliteActor} from './actor.api';\n\nexport const uploadAsset = async ({\n data,\n filename,\n collection,\n headers,\n token,\n fullPath,\n encoding,\n satellite\n}: Required<Omit<Storage, 'token' | 'encoding'>> &\n Pick<Storage, 'token' | 'encoding'> & {satellite: Satellite}): Promise<void> => {\n const actor: SatelliteActor = await getSatelliteActor(satellite);\n\n const {batch_id: batchId} = await actor.init_asset_upload({\n collection,\n full_path: fullPath,\n name: filename,\n token: toNullable<string>(token),\n encoding_type: toNullable<ENCODING_TYPE>(encoding)\n });\n\n const chunkSize = 700000;\n\n const chunkIds: {chunk_id: bigint}[] = [];\n\n // Prevent transforming chunk to arrayBuffer error: The requested file could not be read, typically due to permission problems that have occurred after a reference to a file was acquired.\n const clone: Blob = isBrowser() ? new Blob([await data.arrayBuffer()]) : data;\n\n for (let start = 0; start < clone.size; start += chunkSize) {\n const chunk: Blob = clone.slice(start, start + chunkSize);\n\n chunkIds.push(\n await uploadChunk({\n batchId,\n chunk,\n actor\n })\n );\n }\n\n const contentType: [[string, string]] | undefined =\n headers.find(([type, _]) => type.toLowerCase() === 'content-type') === undefined &&\n data.type !== undefined &&\n data.type !== ''\n ? [['Content-Type', data.type]]\n : undefined;\n\n await actor.commit_asset_upload({\n batch_id: batchId,\n chunk_ids: chunkIds.map(({chunk_id}: {chunk_id: bigint}) => chunk_id),\n headers: [...headers, ...(contentType ? contentType : [])]\n });\n};\n\nconst uploadChunk = async ({\n batchId,\n chunk,\n actor\n}: {\n batchId: bigint;\n chunk: Blob;\n actor: SatelliteActor;\n}): Promise<{chunk_id: bigint}> =>\n actor.upload_asset_chunk({\n batch_id: batchId,\n content: new Uint8Array(await chunk.arrayBuffer())\n });\n\nexport const listAssets = async ({\n collection,\n satellite,\n filter\n}: {\n collection: string;\n satellite: Satellite;\n filter: ListParams;\n}): Promise<ListResults<AssetNoContent>> => {\n const actor: SatelliteActor = await getSatelliteActor(satellite);\n\n const {\n items: assets,\n matches_length,\n length\n }: ListAssetsApi = await actor.list_assets(toNullable<string>(collection), toListParams(filter));\n\n return {\n items: assets.map(([_, asset]) => asset),\n length,\n matches_length\n };\n};\n\nexport const deleteAsset = async ({\n collection,\n storageFile,\n satellite\n}: {\n collection: string;\n storageFile: Asset;\n satellite: Satellite;\n}): Promise<void> => {\n const actor: SatelliteActor = await getSatelliteActor(satellite);\n\n const {fullPath} = storageFile;\n\n return actor.del_asset(collection, fullPath);\n};\n\nexport const deleteAssets = async ({\n collection,\n satellite\n}: {\n collection?: string;\n satellite: Satellite;\n}): Promise<void> => {\n const actor: SatelliteActor = await getSatelliteActor(satellite);\n\n return actor.del_assets(toNullable(collection));\n};\n", "export const sha256ToBase64String = (sha256: Iterable<number>): string =>\n btoa([...sha256].map((c) => String.fromCharCode(c)).join(''));\n", "export const encodeFilename = (filename: string): string =>\n encodeURI(filename.toLowerCase().replace(/\\s/g, '-'));\n", "import type {AssetNoContent} from '../../declarations/satellite/satellite.did';\nimport {\n deleteAsset as deleteAssetApi,\n deleteAssets as deleteAssetsApi,\n listAssets as listAssetsApi,\n uploadAsset as uploadAssetApi\n} from '../api/storage.api';\nimport type {ListParams, ListResults} from '../types/list.types';\nimport type {SatelliteOptions} from '../types/satellite.types';\nimport type {Asset, AssetEncoding, AssetKey, Assets, Storage} from '../types/storage.types';\nimport {sha256ToBase64String} from '../utils/crypto.utils';\nimport {fromNullable} from '../utils/did.utils';\nimport {satelliteUrl} from '../utils/env.utils';\nimport {encodeFilename} from '../utils/storage.utils';\nimport {getIdentity} from './identity.services';\n\nexport const uploadBlob = async (\n params: Storage & {satellite?: SatelliteOptions}\n): Promise<AssetKey> => uploadAssetIC(params);\n\nexport const uploadFile = async (\n params: Partial<Pick<Storage, 'filename'>> &\n Omit<Storage, 'filename' | 'data'> & {data: File} & {satellite?: SatelliteOptions}\n): Promise<AssetKey> =>\n uploadAssetIC({\n filename: params.data.name,\n ...params\n });\n\nconst uploadAssetIC = async ({\n filename: storageFilename,\n data,\n collection,\n headers = [],\n fullPath: storagePath,\n token,\n satellite,\n encoding\n}: Storage & {satellite?: SatelliteOptions}): Promise<AssetKey> => {\n const identity = getIdentity(satellite?.identity);\n\n const filename: string = encodeFilename(storageFilename);\n const fullPath: string = storagePath || `/${collection}/${filename}`;\n\n await uploadAssetApi({\n data,\n filename: encodeFilename(filename),\n collection,\n token,\n headers,\n fullPath,\n encoding,\n satellite: {...satellite, identity}\n });\n\n return {\n downloadUrl: `${satelliteUrl()}${fullPath}${token !== undefined ? `?token=${token}` : ''}`,\n fullPath,\n name: filename\n };\n};\n\nexport const listAssets = async ({\n collection,\n satellite,\n filter\n}: {\n collection: string;\n satellite?: SatelliteOptions;\n filter?: ListParams;\n}): Promise<Assets> => {\n const {items, ...rest}: ListResults<AssetNoContent> = await listAssetsApi({\n collection,\n satellite: {...satellite, identity: getIdentity(satellite?.identity)},\n filter: filter ?? {}\n });\n\n const host: string = satelliteUrl();\n\n return {\n assets: items.map(({key: {full_path, token: t, name}, headers, encodings}: AssetNoContent) => {\n const token = fromNullable(t);\n\n return {\n fullPath: full_path,\n name,\n downloadUrl: `${host}${full_path}${token !== undefined ? `?token=${token}` : ''}`,\n token,\n headers,\n encodings: encodings.reduce(\n (acc, [type, {modified, sha256, total_length}]) => ({\n ...acc,\n [type]: {\n modified,\n sha256: sha256ToBase64String(sha256),\n total_length\n }\n }),\n {} as Record<string, AssetEncoding>\n )\n } as Asset;\n }),\n ...rest\n };\n};\n\nexport const deleteAsset = async ({\n storageFile,\n collection,\n satellite\n}: {\n storageFile: Asset;\n collection: string;\n satellite?: SatelliteOptions;\n}): Promise<void> =>\n deleteAssetApi({\n collection,\n storageFile,\n satellite: {...satellite, identity: getIdentity(satellite?.identity)}\n });\n\nexport const deleteAssets = async ({\n collection,\n satellite\n}: {\n collection?: string;\n satellite?: SatelliteOptions;\n}): Promise<void> =>\n deleteAssetsApi({\n collection,\n satellite: {...satellite, identity: getIdentity(satellite?.identity)}\n });\n", "import type {Environment} from './types/env.types';\n\nexport {signIn, signOut} from './services/auth.services';\nexport * from './services/doc.services';\nexport * from './services/storage.services';\nexport * from './types/auth.types';\nexport * from './types/doc.types';\nexport {ListOrder, ListPaginate, ListParams, ListResults} from './types/list.types';\nexport * from './types/satellite.types';\nexport * from './types/storage.types';\n\nimport {initAuth} from './services/auth.services';\nimport {AuthStore} from './stores/auth.store';\nimport {EnvStore} from './stores/env.store';\nimport type {User} from './types/auth.types';\n\nexport const initJuno = async (env: Environment) => {\n EnvStore.getInstance().set(env);\n\n await initAuth();\n};\n\nexport const authSubscribe = (callback: (authUser: User | null) => void): (() => void) =>\n AuthStore.getInstance().subscribe(callback);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["crypto_exports", "__export", "crypto_default", "init_crypto", "__esmMin", "require_crypto", "__commonJSMin", "exports", "module", "polyfill", "k", "require_nacl_fast", "__commonJSMin", "exports", "module", "nacl", "gf", "init", "i", "r", "randombytes", "_0", "_9", "gf0", "gf1", "_121665", "D", "D2", "X", "Y", "I", "ts64", "x", "h", "l", "vn", "xi", "y", "yi", "n", "d", "crypto_verify_16", "crypto_verify_32", "core_salsa20", "o", "p", "k", "c", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "j7", "j8", "j9", "j10", "j11", "j12", "j13", "j14", "j15", "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "u", "core_hsalsa20", "crypto_core_salsa20", "out", "inp", "crypto_core_hsalsa20", "sigma", "crypto_stream_salsa20_xor", "cpos", "m", "mpos", "b", "z", "crypto_stream_salsa20", "crypto_stream", "s", "sn", "crypto_stream_xor", "poly1305", "key", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "bytes", "hibit", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "h0", "h1", "h2", "h3", "h4", "h5", "h6", "h7", "h8", "h9", "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "mac", "macpos", "g", "mask", "f", "want", "crypto_onetimeauth", "outpos", "crypto_onetimeauth_verify", "hpos", "crypto_secretbox", "crypto_secretbox_open", "set25519", "a", "car25519", "v", "sel25519", "q", "pack25519", "j", "t", "neq25519", "par25519", "unpack25519", "A", "Z", "M", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24", "t25", "t26", "t27", "t28", "t29", "t30", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "S", "inv25519", "pow2523", "crypto_scalarmult", "e", "x32", "x16", "crypto_scalarmult_base", "crypto_box_keypair", "crypto_box_beforenm", "crypto_box_afternm", "crypto_box_open_afternm", "crypto_box", "crypto_box_open", "K", "crypto_hashblocks_hl", "hh", "hl", "wh", "wl", "bh0", "bh1", "bh2", "bh3", "bh4", "bh5", "bh6", "bh7", "bl0", "bl1", "bl2", "bl3", "bl4", "bl5", "bl6", "bl7", "th", "tl", "ah0", "ah1", "ah2", "ah3", "ah4", "ah5", "ah6", "ah7", "al0", "al1", "al2", "al3", "al4", "al5", "al6", "al7", "pos", "crypto_hash", "add", "cswap", "pack", "tx", "ty", "zi", "scalarmult", "scalarbase", "crypto_sign_keypair", "pk", "sk", "seeded", "L", "modL", "carry", "reduce", "crypto_sign", "sm", "smlen", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "crypto_sign_open", "crypto_secretbox_KEYBYTES", "crypto_secretbox_NONCEBYTES", "crypto_secretbox_ZEROBYTES", "crypto_secretbox_BOXZEROBYTES", "crypto_scalarmult_BYTES", "crypto_scalarmult_SCALARBYTES", "crypto_box_PUBLICKEYBYTES", "crypto_box_SECRETKEYBYTES", "crypto_box_BEFORENMBYTES", "crypto_box_NONCEBYTES", "crypto_box_ZEROBYTES", "crypto_box_BOXZEROBYTES", "crypto_sign_BYTES", "crypto_sign_PUBLICKEYBYTES", "crypto_sign_SECRETKEYBYTES", "crypto_sign_SEEDBYTES", "crypto_hash_BYTES", "checkLengths", "checkBoxLengths", "checkArrayTypes", "cleanup", "arr", "msg", "nonce", "box", "publicKey", "secretKey", "signedMsg", "tmp", "mlen", "sig", "seed", "fn", "crypto", "QUOTA", "__require", "tweetnacl", "fromHexString", "hexString", "_a", "byte", "toHexString", "bytes", "str", "bufEquals", "b1", "b2", "u1", "u2", "i", "encodeLenBytes", "len", "encodeLen", "buf", "offset", "decodeLenBytes", "decodeLen", "lenBytes", "DER_COSE_OID", "ED25519_OID", "SECP256K1_OID", "wrapDER", "payload", "oid", "bitStringHeaderLength", "unwrapDER", "derEncoded", "expect", "n", "msg", "payloadLen", "result", "Ed25519PublicKey", "key", "rawKey", "derKey", "publicKey", "wrapDER", "ED25519_OID", "unwrapped", "unwrapDER", "Ed25519KeyIdentity", "SignIdentity", "_privateKey", "seed", "secretKey", "obj", "publicKeyDer", "privateKeyRaw", "fromHexString", "json", "parsed", "privateKey", "keyPair", "toHexString", "challenge", "blob", "CryptoError", "message", "_getEffectiveCrypto", "subtleCrypto", "ECDSAKeyIdentity", "SignIdentity", "keyPair", "derKey", "options", "extractable", "keyUsages", "effectiveCrypto", "key", "challenge", "params", "cbor", "domainSeparator", "requestDomainSeparator", "_parseBlob", "value", "fromHexString", "Delegation", "pubkey", "expiration", "targets", "t", "toHexString", "p", "_createSingleDelegation", "from", "to", "delegation", "challenge", "requestIdOf", "signature", "DelegationChain", "delegations", "publicKey", "options", "_a", "_b", "json", "parsedDelegations", "signedDelegation", "Principal", "DelegationIdentity", "SignIdentity", "_inner", "_delegation", "key", "blob", "request", "body", "fields", "__rest", "requestId", "isDelegationValid", "chain", "checks", "scopes", "maybeScope", "s", "scope", "none", "target", "import_borc", "tweetnacl", "PubKeyCoseAlgo", "events", "IdleManager", "options", "onIdle", "idleTimeout", "_resetTimer", "name", "debounce", "func", "wait", "timeout", "args", "context", "later", "scroll", "_a", "callback", "cb", "exit", "instanceOfAny", "object", "constructors", "c", "idbProxyableTypes", "cursorAdvanceMethods", "getIdbProxyableTypes", "getCursorAdvanceMethods", "cursorRequestMap", "transactionDoneMap", "transactionStoreNamesMap", "transformCache", "reverseTransformCache", "promisifyRequest", "request", "promise", "resolve", "reject", "unlisten", "success", "error", "wrap", "value", "cacheDonePromiseForTransaction", "tx", "done", "complete", "idbProxyTraps", "target", "prop", "receiver", "replaceTraps", "callback", "wrapFunction", "func", "storeNames", "args", "unwrap", "transformCachableValue", "newValue", "openDB", "name", "version", "blocked", "upgrade", "blocking", "terminated", "request", "openPromise", "wrap", "event", "db", "readMethods", "writeMethods", "cachedMethods", "getMethod", "target", "prop", "targetFuncName", "useIndex", "isWrite", "method", "storeName", "args", "tx", "replaceTraps", "oldTraps", "receiver", "AUTH_DB_NAME", "OBJECT_STORE_NAME", "_openDbStore", "dbName", "storeName", "version", "isBrowser", "KEY_STORAGE_DELEGATION", "KEY_STORAGE_KEY", "openDB", "database", "_getValue", "db", "key", "_setValue", "value", "_removeValue", "IdbKeyVal", "_db", "_storeName", "options", "_a", "KEY_STORAGE_KEY", "KEY_STORAGE_DELEGATION", "KEY_VECTOR", "DB_VERSION", "isBrowser", "LocalStorage", "prefix", "_localStorage", "key", "value", "ls", "IdbStorage", "resolve", "IdbKeyVal", "db", "IDENTITY_PROVIDER_DEFAULT", "IDENTITY_PROVIDER_ENDPOINT", "INTERRUPT_CHECK_INTERVAL", "ERROR_USER_INTERRUPT", "AuthClient", "_identity", "_key", "_chain", "_storage", "idleManager", "_createOptions", "_idpWindow", "_eventHandler", "logout", "idleOptions", "_a", "options", "storage", "IdbStorage", "key", "maybeIdentityStorage", "KEY_STORAGE_KEY", "isBrowser", "fallbackLocalStorage", "LocalStorage", "localChain", "KEY_STORAGE_DELEGATION", "localKey", "error", "ECDSAKeyIdentity", "Ed25519KeyIdentity", "identity", "AnonymousIdentity", "chain", "chainStorage", "DelegationChain", "isDelegationValid", "DelegationIdentity", "_deleteStorage", "e", "_b", "IdleManager", "message", "onSuccess", "delegations", "signedDelegation", "Delegation", "delegationChain", "_c", "defaultTimeToLive", "identityProviderUrl", "_d", "checkInterruption", "event", "request", "err", "errorMessage", "onError", "KEY_VECTOR", "delegationIdentityExpiration", "popupWidth", "popupHeight", "Store", "data", "callback", "callbackId", "id", "_AuthStore", "Store", "authUser", "callback", "unsubscribe", "AuthStore", "__publicField", "_EnvStore", "Store", "env", "callback", "unsubscribe", "EnvStore", "__publicField", "isBrowser", "satelliteUrl", "satelliteId", "EnvStore", "isNullish", "argument", "popupCenter", "width", "height", "isBrowser", "isNullish", "innerWidth", "innerHeight", "y", "x", "toNullable", "value", "fromNullable", "toArray", "data", "blob", "fromArray", "toListParams", "matcher", "paginate", "order", "toNullable", "isNullish", "idlFactory", "IDL", "ControllersArgs", "CommitBatch", "DelDoc", "StorageConfig", "Config", "Doc", "HttpRequest", "StreamingCallbackToken", "StreamingStrategy", "HttpResponse", "StreamingCallbackHttpResponse", "InitAssetKey", "InitUploadResult", "ListOrderField", "ListOrder", "ListPaginate", "ListParams", "AssetKey", "AssetEncodingNoContent", "AssetNoContent", "ListResults", "CustomDomain", "ListResults_1", "RulesType", "Permission", "Rule", "SetDoc", "SetRule", "Chunk", "UploadChunk", "createActor", "canisterId", "idlFactory", "identity", "fetch", "env", "localActor", "EnvStore", "host", "agent", "HttpAgent", "Actor", "getSatelliteActor", "satelliteId", "rest", "canisterId", "EnvStore", "createActor", "idlFactory", "getDoc", "collection", "key", "satellite", "actor", "getSatelliteActor", "entry", "fromNullable", "data", "fromArray", "setDoc", "doc", "updated_at", "updatedDoc", "toArray", "toNullable", "delDoc", "listDocs", "filter", "items", "matches_length", "length", "toListParams", "docs", "item", "getIdentity", "identity", "authIdentity", "getDoc", "satellite", "rest", "identity", "getIdentity", "setDoc", "delDoc", "listDocs", "initUser", "identity", "getIdentity", "userId", "user", "getDoc", "createUser", "principal", "now", "setDoc", "authClient", "createAuthClient", "AuthClient", "initAuth", "user", "initUser", "AuthStore", "signIn", "options", "resolve", "reject", "error", "delegationIdentityExpiration", "EnvStore", "popupCenter", "popupWidth", "popupHeight", "signOut", "getIdentity", "uploadAsset", "data", "filename", "collection", "headers", "token", "fullPath", "encoding", "satellite", "actor", "getSatelliteActor", "batchId", "toNullable", "chunkSize", "chunkIds", "clone", "isBrowser", "start", "chunk", "uploadChunk", "contentType", "type", "_", "chunk_id", "listAssets", "filter", "assets", "matches_length", "length", "toListParams", "asset", "deleteAsset", "storageFile", "deleteAssets", "sha256ToBase64String", "sha256", "c", "encodeFilename", "filename", "uploadBlob", "params", "uploadAssetIC", "uploadFile", "storageFilename", "data", "collection", "headers", "storagePath", "token", "satellite", "encoding", "identity", "getIdentity", "filename", "encodeFilename", "fullPath", "uploadAsset", "satelliteUrl", "listAssets", "filter", "items", "rest", "host", "full_path", "t", "name", "encodings", "fromNullable", "acc", "type", "modified", "sha256", "total_length", "sha256ToBase64String", "deleteAsset", "storageFile", "deleteAssets", "initJuno", "env", "EnvStore", "initAuth", "authSubscribe", "callback", "AuthStore"]
|
|
7
7
|
}
|