@mtkruto/node 0.6.1 → 0.6.3

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.
Files changed (83) hide show
  1. package/README.md +76 -1
  2. package/esm/0_deps.d.ts +1 -1
  3. package/esm/0_deps.d.ts.map +1 -1
  4. package/esm/0_deps.js +1 -1
  5. package/esm/1_utilities.d.ts +1 -1
  6. package/esm/1_utilities.d.ts.map +1 -1
  7. package/esm/1_utilities.js +1 -1
  8. package/esm/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/mod.d.ts +18 -0
  9. package/esm/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/mod.d.ts.map +1 -0
  10. package/esm/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/mod.js +63 -0
  11. package/esm/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/tgcrypto.d.ts +3 -0
  12. package/esm/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/tgcrypto.d.ts.map +1 -0
  13. package/esm/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/tgcrypto.js +301 -0
  14. package/esm/transport/0_obfuscation.d.ts.map +1 -1
  15. package/esm/transport/0_obfuscation.js +5 -4
  16. package/esm/transport/0_transport.d.ts +2 -2
  17. package/esm/transport/0_transport.d.ts.map +1 -1
  18. package/esm/transport/0_transport.js +10 -6
  19. package/esm/transport/1_transport_abridged.d.ts.map +1 -1
  20. package/esm/transport/1_transport_abridged.js +6 -8
  21. package/esm/transport/1_transport_intermediate.d.ts.map +1 -1
  22. package/esm/transport/1_transport_intermediate.js +4 -6
  23. package/esm/types/0_switch_inline_query_chosen_chats.d.ts +19 -0
  24. package/esm/types/0_switch_inline_query_chosen_chats.d.ts.map +1 -1
  25. package/esm/types/0_switch_inline_query_chosen_chats.js +19 -0
  26. package/esm/types/2_forward_header.d.ts +19 -0
  27. package/esm/types/2_forward_header.d.ts.map +1 -1
  28. package/esm/types/2_forward_header.js +19 -0
  29. package/esm/utilities/0_env.d.ts.map +1 -1
  30. package/esm/utilities/0_env.js +19 -0
  31. package/esm/utilities/0_gunzip.d.ts +19 -0
  32. package/esm/utilities/0_gunzip.d.ts.map +1 -1
  33. package/esm/utilities/0_gunzip.js +19 -0
  34. package/{script/utilities/0_crypto.d.ts → esm/utilities/1_crypto.d.ts} +9 -5
  35. package/esm/utilities/1_crypto.d.ts.map +1 -0
  36. package/esm/utilities/{0_crypto.js → 1_crypto.js} +41 -21
  37. package/esm/utilities/1_crypto_test.d.ts.map +1 -0
  38. package/package.json +1 -1
  39. package/script/0_deps.d.ts +1 -1
  40. package/script/0_deps.d.ts.map +1 -1
  41. package/script/0_deps.js +2 -5
  42. package/script/1_utilities.d.ts +1 -1
  43. package/script/1_utilities.d.ts.map +1 -1
  44. package/script/1_utilities.js +1 -1
  45. package/script/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/mod.d.ts +18 -0
  46. package/script/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/mod.d.ts.map +1 -0
  47. package/script/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/mod.js +71 -0
  48. package/script/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/tgcrypto.d.ts +3 -0
  49. package/script/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/tgcrypto.d.ts.map +1 -0
  50. package/script/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/tgcrypto.js +303 -0
  51. package/script/transport/0_obfuscation.d.ts.map +1 -1
  52. package/script/transport/0_obfuscation.js +5 -4
  53. package/script/transport/0_transport.d.ts +2 -2
  54. package/script/transport/0_transport.d.ts.map +1 -1
  55. package/script/transport/0_transport.js +10 -6
  56. package/script/transport/1_transport_abridged.d.ts.map +1 -1
  57. package/script/transport/1_transport_abridged.js +6 -8
  58. package/script/transport/1_transport_intermediate.d.ts.map +1 -1
  59. package/script/transport/1_transport_intermediate.js +4 -6
  60. package/script/types/0_switch_inline_query_chosen_chats.d.ts +19 -0
  61. package/script/types/0_switch_inline_query_chosen_chats.d.ts.map +1 -1
  62. package/script/types/0_switch_inline_query_chosen_chats.js +19 -0
  63. package/script/types/2_forward_header.d.ts +19 -0
  64. package/script/types/2_forward_header.d.ts.map +1 -1
  65. package/script/types/2_forward_header.js +19 -0
  66. package/script/utilities/0_env.d.ts.map +1 -1
  67. package/script/utilities/0_env.js +19 -0
  68. package/script/utilities/0_gunzip.d.ts +19 -0
  69. package/script/utilities/0_gunzip.d.ts.map +1 -1
  70. package/script/utilities/0_gunzip.js +19 -0
  71. package/{esm/utilities/0_crypto.d.ts → script/utilities/1_crypto.d.ts} +9 -5
  72. package/script/utilities/1_crypto.d.ts.map +1 -0
  73. package/script/utilities/1_crypto.js +95 -0
  74. package/script/utilities/1_crypto_test.d.ts.map +1 -0
  75. package/esm/deps/jsr.io/@roj/tgcrypto/0.4.1/dist/mod.d.ts +0 -55
  76. package/esm/deps/jsr.io/@roj/tgcrypto/0.4.1/dist/mod.js +0 -167
  77. package/esm/deps/jsr.io/@roj/tgcrypto/0.4.1/dist/tgcrypto.js +0 -308
  78. package/esm/utilities/0_crypto.d.ts.map +0 -1
  79. package/script/deps/jsr.io/@roj/tgcrypto/0.4.1/dist/mod.d.ts +0 -55
  80. package/script/deps/jsr.io/@roj/tgcrypto/0.4.1/dist/mod.js +0 -182
  81. package/script/deps/jsr.io/@roj/tgcrypto/0.4.1/dist/tgcrypto.js +0 -310
  82. package/script/utilities/0_crypto.d.ts.map +0 -1
  83. package/script/utilities/0_crypto.js +0 -52
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.init = init;
7
+ exports.ige256Encrypt = ige256Encrypt;
8
+ exports.ige256Decrypt = ige256Decrypt;
9
+ const tgcrypto_js_1 = __importDefault(require("./tgcrypto.js"));
10
+ // deno-lint-ignore no-explicit-any
11
+ let module_;
12
+ const promise = (0, tgcrypto_js_1.default)().then((v) => module_ = v);
13
+ async function init() {
14
+ await promise;
15
+ }
16
+ function checkIgeParams(data, key, iv) {
17
+ if (data.byteLength == 0) {
18
+ throw new TypeError("data must not be empty");
19
+ }
20
+ else if (data.byteLength % 16 != 0) {
21
+ throw new TypeError("data must consist of a number of bytes that is divisible by 16");
22
+ }
23
+ else if (key.byteLength != 32) {
24
+ throw new TypeError("key must be 32 bytes");
25
+ }
26
+ else if (iv.byteLength != 32) {
27
+ throw new TypeError("iv must be 32 bytes");
28
+ }
29
+ }
30
+ /**
31
+ * Performs IGE-256 encryption.
32
+ *
33
+ * @param data The unencrypted data, larger than a byte, divisible by 16
34
+ * @param key 32-byte encryption key
35
+ * @param iv 32-byte initialization vector
36
+ */
37
+ function ige256Encrypt(data, key, iv) {
38
+ checkIgeParams(data, key, iv);
39
+ const out = module_._malloc(data.byteLength);
40
+ const datap = module_._malloc(data.byteLength);
41
+ module_.HEAPU8.set(data, datap);
42
+ module_.ccall("ige256_encrypt", "void", ["pointer", "pointer", "number", "array", "array"], [datap, out, data.byteLength, key, iv]);
43
+ try {
44
+ return module_.HEAPU8.slice(out, out + data.byteLength);
45
+ }
46
+ finally {
47
+ module_._free(out);
48
+ module_._free(datap);
49
+ }
50
+ }
51
+ /**
52
+ * Performs IGE-256 decryption.
53
+ *
54
+ * @param data The encrypted data, larger than a byte, divisible by 16
55
+ * @param key 32-byte encryption key
56
+ * @param iv 32-byte initialization vector
57
+ */
58
+ function ige256Decrypt(data, key, iv) {
59
+ checkIgeParams(data, key, iv);
60
+ const out = module_._malloc(data.byteLength);
61
+ const datap = module_._malloc(data.byteLength);
62
+ module_.HEAPU8.set(data, datap);
63
+ module_.ccall("ige256_decrypt", "void", ["pointer", "pointer", "number", "array", "array"], [datap, out, data.byteLength, key, iv]);
64
+ try {
65
+ return module_.HEAPU8.slice(out, out + data.byteLength);
66
+ }
67
+ finally {
68
+ module_._free(out);
69
+ module_._free(datap);
70
+ }
71
+ }
@@ -0,0 +1,3 @@
1
+ export default Module;
2
+ declare function Module(moduleArg?: {}): Promise<any>;
3
+ //# sourceMappingURL=tgcrypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tgcrypto.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/tgcrypto.js"],"names":[],"mappings":";AAKA,sDAOC"}
@@ -0,0 +1,303 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var Module = (() => {
4
+ var _scriptName = require("url").pathToFileURL(__filename).href;
5
+ return (function (moduleArg = {}) {
6
+ var moduleRtn;
7
+ var Module = moduleArg;
8
+ var readyPromiseResolve, readyPromiseReject;
9
+ var readyPromise = new Promise((resolve, reject) => { readyPromiseResolve = resolve; readyPromiseReject = reject; });
10
+ var ENVIRONMENT_IS_WEB = true;
11
+ var ENVIRONMENT_IS_WORKER = false;
12
+ var moduleOverrides = Object.assign({}, Module);
13
+ var arguments_ = [];
14
+ var thisProgram = "./this.program";
15
+ var scriptDirectory = "";
16
+ var readAsync, readBinary;
17
+ if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
18
+ if (ENVIRONMENT_IS_WORKER) {
19
+ scriptDirectory = self.location.href;
20
+ }
21
+ else if (typeof document != "undefined" && document.currentScript) {
22
+ scriptDirectory = document.currentScript.src;
23
+ }
24
+ if (_scriptName) {
25
+ scriptDirectory = _scriptName;
26
+ }
27
+ if (scriptDirectory.startsWith("blob:")) {
28
+ scriptDirectory = "";
29
+ }
30
+ else {
31
+ scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1);
32
+ }
33
+ {
34
+ readAsync = url => fetch(url, { credentials: "same-origin" }).then(response => { if (response.ok) {
35
+ return response.arrayBuffer();
36
+ } return Promise.reject(new Error(response.status + " : " + response.url)); });
37
+ }
38
+ }
39
+ else { }
40
+ var out = Module["print"] || console.log.bind(console);
41
+ var err = Module["printErr"] || console.error.bind(console);
42
+ Object.assign(Module, moduleOverrides);
43
+ moduleOverrides = null;
44
+ if (Module["arguments"])
45
+ arguments_ = Module["arguments"];
46
+ if (Module["thisProgram"])
47
+ thisProgram = Module["thisProgram"];
48
+ var wasmBinary = Module["wasmBinary"];
49
+ function intArrayFromBase64(s) { var decoded = atob(s); var bytes = new Uint8Array(decoded.length); for (var i = 0; i < decoded.length; ++i) {
50
+ bytes[i] = decoded.charCodeAt(i);
51
+ } return bytes; }
52
+ function tryParseAsDataURI(filename) { if (!isDataURI(filename)) {
53
+ return;
54
+ } return intArrayFromBase64(filename.slice(dataURIPrefix.length)); }
55
+ var wasmMemory;
56
+ var ABORT = false;
57
+ var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAP64, HEAPU64, HEAPF64;
58
+ function updateMemoryViews() { var b = wasmMemory.buffer; Module["HEAP8"] = HEAP8 = new Int8Array(b); Module["HEAP16"] = HEAP16 = new Int16Array(b); Module["HEAPU8"] = HEAPU8 = new Uint8Array(b); Module["HEAPU16"] = HEAPU16 = new Uint16Array(b); Module["HEAP32"] = HEAP32 = new Int32Array(b); Module["HEAPU32"] = HEAPU32 = new Uint32Array(b); Module["HEAPF32"] = HEAPF32 = new Float32Array(b); Module["HEAPF64"] = HEAPF64 = new Float64Array(b); Module["HEAP64"] = HEAP64 = new BigInt64Array(b); Module["HEAPU64"] = HEAPU64 = new BigUint64Array(b); }
59
+ var __ATPRERUN__ = [];
60
+ var __ATINIT__ = [];
61
+ var __ATPOSTRUN__ = [];
62
+ var runtimeInitialized = false;
63
+ function preRun() { if (Module["preRun"]) {
64
+ if (typeof Module["preRun"] == "function")
65
+ Module["preRun"] = [Module["preRun"]];
66
+ while (Module["preRun"].length) {
67
+ addOnPreRun(Module["preRun"].shift());
68
+ }
69
+ } callRuntimeCallbacks(__ATPRERUN__); }
70
+ function initRuntime() { runtimeInitialized = true; callRuntimeCallbacks(__ATINIT__); }
71
+ function postRun() { if (Module["postRun"]) {
72
+ if (typeof Module["postRun"] == "function")
73
+ Module["postRun"] = [Module["postRun"]];
74
+ while (Module["postRun"].length) {
75
+ addOnPostRun(Module["postRun"].shift());
76
+ }
77
+ } callRuntimeCallbacks(__ATPOSTRUN__); }
78
+ function addOnPreRun(cb) { __ATPRERUN__.unshift(cb); }
79
+ function addOnInit(cb) { __ATINIT__.unshift(cb); }
80
+ function addOnPostRun(cb) { __ATPOSTRUN__.unshift(cb); }
81
+ var runDependencies = 0;
82
+ var runDependencyWatcher = null;
83
+ var dependenciesFulfilled = null;
84
+ function addRunDependency(id) { runDependencies++; Module["monitorRunDependencies"]?.(runDependencies); }
85
+ function removeRunDependency(id) { runDependencies--; Module["monitorRunDependencies"]?.(runDependencies); if (runDependencies == 0) {
86
+ if (runDependencyWatcher !== null) {
87
+ clearInterval(runDependencyWatcher);
88
+ runDependencyWatcher = null;
89
+ }
90
+ if (dependenciesFulfilled) {
91
+ var callback = dependenciesFulfilled;
92
+ dependenciesFulfilled = null;
93
+ callback();
94
+ }
95
+ } }
96
+ function abort(what) { Module["onAbort"]?.(what); what = "Aborted(" + what + ")"; err(what); ABORT = true; what += ". Build with -sASSERTIONS for more info."; var e = new WebAssembly.RuntimeError(what); readyPromiseReject(e); throw e; }
97
+ var dataURIPrefix = "data:application/octet-stream;base64,";
98
+ var isDataURI = filename => filename.startsWith(dataURIPrefix);
99
+ function findWasmBinary() { var f = "data:application/octet-stream;base64,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"; return f; }
100
+ var wasmBinaryFile;
101
+ function getBinarySync(file) { if (file == wasmBinaryFile && wasmBinary) {
102
+ return new Uint8Array(wasmBinary);
103
+ } var binary = tryParseAsDataURI(file); if (binary) {
104
+ return binary;
105
+ } if (readBinary) {
106
+ return readBinary(file);
107
+ } throw "both async and sync fetching of the wasm failed"; }
108
+ function getBinaryPromise(binaryFile) { return Promise.resolve().then(() => getBinarySync(binaryFile)); }
109
+ function instantiateArrayBuffer(binaryFile, imports, receiver) { return getBinaryPromise(binaryFile).then(binary => WebAssembly.instantiate(binary, imports)).then(receiver, reason => { err(`failed to asynchronously prepare wasm: ${reason}`); abort(reason); }); }
110
+ function instantiateAsync(binary, binaryFile, imports, callback) { return instantiateArrayBuffer(binaryFile, imports, callback); }
111
+ function getWasmImports() { return { a: wasmImports }; }
112
+ function createWasm() { var info = getWasmImports(); function receiveInstance(instance, module) { wasmExports = instance.exports; wasmMemory = wasmExports["b"]; updateMemoryViews(); addOnInit(wasmExports["c"]); removeRunDependency("wasm-instantiate"); return wasmExports; } addRunDependency("wasm-instantiate"); function receiveInstantiationResult(result) { receiveInstance(result["instance"]); } if (Module["instantiateWasm"]) {
113
+ try {
114
+ return Module["instantiateWasm"](info, receiveInstance);
115
+ }
116
+ catch (e) {
117
+ err(`Module.instantiateWasm callback failed with error: ${e}`);
118
+ readyPromiseReject(e);
119
+ }
120
+ } wasmBinaryFile ??= findWasmBinary(); instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject); return {}; }
121
+ class ExitStatus {
122
+ constructor(status) {
123
+ Object.defineProperty(this, "name", {
124
+ enumerable: true,
125
+ configurable: true,
126
+ writable: true,
127
+ value: "ExitStatus"
128
+ });
129
+ this.message = `Program terminated with exit(${status})`;
130
+ this.status = status;
131
+ }
132
+ }
133
+ var callRuntimeCallbacks = callbacks => { while (callbacks.length > 0) {
134
+ callbacks.shift()(Module);
135
+ } };
136
+ var noExitRuntime = Module["noExitRuntime"] || true;
137
+ var stackRestore = val => __emscripten_stack_restore(val);
138
+ var stackSave = () => _emscripten_stack_get_current();
139
+ var getHeapMax = () => 2147483648;
140
+ var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment;
141
+ var growMemory = size => { var b = wasmMemory.buffer; var pages = (size - b.byteLength + 65535) / 65536 | 0; try {
142
+ wasmMemory.grow(pages);
143
+ updateMemoryViews();
144
+ return 1;
145
+ }
146
+ catch (e) { } };
147
+ var _emscripten_resize_heap = requestedSize => { var oldSize = HEAPU8.length; requestedSize >>>= 0; var maxHeapSize = getHeapMax(); if (requestedSize > maxHeapSize) {
148
+ return false;
149
+ } for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {
150
+ var overGrownHeapSize = oldSize * (1 + .2 / cutDown);
151
+ overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);
152
+ var newSize = Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536));
153
+ var replacement = growMemory(newSize);
154
+ if (replacement) {
155
+ return true;
156
+ }
157
+ } return false; };
158
+ var getCFunc = ident => { var func = Module["_" + ident]; return func; };
159
+ var writeArrayToMemory = (array, buffer) => { HEAP8.set(array, buffer); };
160
+ var lengthBytesUTF8 = str => { var len = 0; for (var i = 0; i < str.length; ++i) {
161
+ var c = str.charCodeAt(i);
162
+ if (c <= 127) {
163
+ len++;
164
+ }
165
+ else if (c <= 2047) {
166
+ len += 2;
167
+ }
168
+ else if (c >= 55296 && c <= 57343) {
169
+ len += 4;
170
+ ++i;
171
+ }
172
+ else {
173
+ len += 3;
174
+ }
175
+ } return len; };
176
+ var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => { if (!(maxBytesToWrite > 0))
177
+ return 0; var startIdx = outIdx; var endIdx = outIdx + maxBytesToWrite - 1; for (var i = 0; i < str.length; ++i) {
178
+ var u = str.charCodeAt(i);
179
+ if (u >= 55296 && u <= 57343) {
180
+ var u1 = str.charCodeAt(++i);
181
+ u = 65536 + ((u & 1023) << 10) | u1 & 1023;
182
+ }
183
+ if (u <= 127) {
184
+ if (outIdx >= endIdx)
185
+ break;
186
+ heap[outIdx++] = u;
187
+ }
188
+ else if (u <= 2047) {
189
+ if (outIdx + 1 >= endIdx)
190
+ break;
191
+ heap[outIdx++] = 192 | u >> 6;
192
+ heap[outIdx++] = 128 | u & 63;
193
+ }
194
+ else if (u <= 65535) {
195
+ if (outIdx + 2 >= endIdx)
196
+ break;
197
+ heap[outIdx++] = 224 | u >> 12;
198
+ heap[outIdx++] = 128 | u >> 6 & 63;
199
+ heap[outIdx++] = 128 | u & 63;
200
+ }
201
+ else {
202
+ if (outIdx + 3 >= endIdx)
203
+ break;
204
+ heap[outIdx++] = 240 | u >> 18;
205
+ heap[outIdx++] = 128 | u >> 12 & 63;
206
+ heap[outIdx++] = 128 | u >> 6 & 63;
207
+ heap[outIdx++] = 128 | u & 63;
208
+ }
209
+ } heap[outIdx] = 0; return outIdx - startIdx; };
210
+ var stringToUTF8 = (str, outPtr, maxBytesToWrite) => stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);
211
+ var stackAlloc = sz => __emscripten_stack_alloc(sz);
212
+ var stringToUTF8OnStack = str => { var size = lengthBytesUTF8(str) + 1; var ret = stackAlloc(size); stringToUTF8(str, ret, size); return ret; };
213
+ var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder : undefined;
214
+ var UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead = NaN) => { var endIdx = idx + maxBytesToRead; var endPtr = idx; while (heapOrArray[endPtr] && !(endPtr >= endIdx))
215
+ ++endPtr; if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {
216
+ return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));
217
+ } var str = ""; while (idx < endPtr) {
218
+ var u0 = heapOrArray[idx++];
219
+ if (!(u0 & 128)) {
220
+ str += String.fromCharCode(u0);
221
+ continue;
222
+ }
223
+ var u1 = heapOrArray[idx++] & 63;
224
+ if ((u0 & 224) == 192) {
225
+ str += String.fromCharCode((u0 & 31) << 6 | u1);
226
+ continue;
227
+ }
228
+ var u2 = heapOrArray[idx++] & 63;
229
+ if ((u0 & 240) == 224) {
230
+ u0 = (u0 & 15) << 12 | u1 << 6 | u2;
231
+ }
232
+ else {
233
+ u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;
234
+ }
235
+ if (u0 < 65536) {
236
+ str += String.fromCharCode(u0);
237
+ }
238
+ else {
239
+ var ch = u0 - 65536;
240
+ str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);
241
+ }
242
+ } return str; };
243
+ var UTF8ToString = (ptr, maxBytesToRead) => ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "";
244
+ var ccall = (ident, returnType, argTypes, args, opts) => { var toC = { string: str => { var ret = 0; if (str !== null && str !== undefined && str !== 0) {
245
+ ret = stringToUTF8OnStack(str);
246
+ } return ret; }, array: arr => { var ret = stackAlloc(arr.length); writeArrayToMemory(arr, ret); return ret; } }; function convertReturnValue(ret) { if (returnType === "string") {
247
+ return UTF8ToString(ret);
248
+ } if (returnType === "boolean")
249
+ return Boolean(ret); return ret; } var func = getCFunc(ident); var cArgs = []; var stack = 0; if (args) {
250
+ for (var i = 0; i < args.length; i++) {
251
+ var converter = toC[argTypes[i]];
252
+ if (converter) {
253
+ if (stack === 0)
254
+ stack = stackSave();
255
+ cArgs[i] = converter(args[i]);
256
+ }
257
+ else {
258
+ cArgs[i] = args[i];
259
+ }
260
+ }
261
+ } var ret = func(...cArgs); function onDone(ret) { if (stack !== 0)
262
+ stackRestore(stack); return convertReturnValue(ret); } ret = onDone(ret); return ret; };
263
+ var wasmImports = { a: _emscripten_resize_heap };
264
+ var wasmExports = createWasm();
265
+ var ___wasm_call_ctors = () => (___wasm_call_ctors = wasmExports["c"])();
266
+ var _ige256_encrypt = Module["_ige256_encrypt"] = (a0, a1, a2, a3, a4) => (_ige256_encrypt = Module["_ige256_encrypt"] = wasmExports["e"])(a0, a1, a2, a3, a4);
267
+ var _ige256_decrypt = Module["_ige256_decrypt"] = (a0, a1, a2, a3, a4) => (_ige256_decrypt = Module["_ige256_decrypt"] = wasmExports["f"])(a0, a1, a2, a3, a4);
268
+ var _malloc = Module["_malloc"] = a0 => (_malloc = Module["_malloc"] = wasmExports["g"])(a0);
269
+ var _free = Module["_free"] = a0 => (_free = Module["_free"] = wasmExports["h"])(a0);
270
+ var __emscripten_stack_restore = a0 => (__emscripten_stack_restore = wasmExports["i"])(a0);
271
+ var __emscripten_stack_alloc = a0 => (__emscripten_stack_alloc = wasmExports["j"])(a0);
272
+ var _emscripten_stack_get_current = () => (_emscripten_stack_get_current = wasmExports["k"])();
273
+ Module["ccall"] = ccall;
274
+ var calledRun;
275
+ dependenciesFulfilled = function runCaller() { if (!calledRun)
276
+ run(); if (!calledRun)
277
+ dependenciesFulfilled = runCaller; };
278
+ function run() { if (runDependencies > 0) {
279
+ return;
280
+ } preRun(); if (runDependencies > 0) {
281
+ return;
282
+ } function doRun() { if (calledRun)
283
+ return; calledRun = true; Module["calledRun"] = true; if (ABORT)
284
+ return; initRuntime(); readyPromiseResolve(Module); Module["onRuntimeInitialized"]?.(); postRun(); } if (Module["setStatus"]) {
285
+ Module["setStatus"]("Running...");
286
+ setTimeout(() => { setTimeout(() => Module["setStatus"](""), 1); doRun(); }, 1);
287
+ }
288
+ else {
289
+ doRun();
290
+ } }
291
+ if (Module["preInit"]) {
292
+ if (typeof Module["preInit"] == "function")
293
+ Module["preInit"] = [Module["preInit"]];
294
+ while (Module["preInit"].length > 0) {
295
+ Module["preInit"].pop()();
296
+ }
297
+ }
298
+ run();
299
+ moduleRtn = readyPromise;
300
+ return moduleRtn;
301
+ });
302
+ })();
303
+ exports.default = Module;
@@ -1 +1 @@
1
- {"version":3,"file":"0_obfuscation.d.ts","sourceRoot":"","sources":["../../src/transport/0_obfuscation.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAoB,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;;;GAuCtF"}
1
+ {"version":3,"file":"0_obfuscation.d.ts","sourceRoot":"","sources":["../../src/transport/0_obfuscation.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAoB,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;;;GA0CtF"}
@@ -66,13 +66,14 @@ async function getObfuscationParameters(protocol, connection) {
66
66
  }
67
67
  const encryptKey = init.slice(8, 8 + 32);
68
68
  const encryptIv = init.slice(40, 40 + 16);
69
- const encryptionCTR = new _1_utilities_js_1.CTR(encryptKey, encryptIv);
70
- const encryptedInit = new Uint8Array(init);
71
- encryptionCTR.call(encryptedInit);
69
+ const importedEncryptedKey = await _1_utilities_js_1.CTR.importKey(encryptKey);
70
+ const encryptionCTR = new _1_utilities_js_1.CTR(importedEncryptedKey, encryptIv);
71
+ const encryptedInit = await encryptionCTR.call(init);
72
72
  const initRev = new Uint8Array(init).reverse();
73
73
  const decryptKey = initRev.slice(8, 8 + 32);
74
74
  const decryptIv = initRev.slice(40, 40 + 16);
75
- const decryptionCTR = new _1_utilities_js_1.CTR(decryptKey, decryptIv);
75
+ const importedDecryptKey = await _1_utilities_js_1.CTR.importKey(decryptKey);
76
+ const decryptionCTR = new _1_utilities_js_1.CTR(importedDecryptKey, decryptIv);
76
77
  await connection.write((0, _0_deps_js_1.concat)([init.subarray(0, 56), encryptedInit.subarray(56, 56 + 8)]));
77
78
  return { encryptionCTR, decryptionCTR };
78
79
  }
@@ -23,8 +23,8 @@ export declare abstract class Transport {
23
23
  encryptionCTR: CTR;
24
24
  decryptionCTR: CTR;
25
25
  } | null;
26
- protected encrypt(buffer: Uint8Array): void;
27
- protected decrypt(buffer: Uint8Array): void;
26
+ protected encrypt(buffer: Uint8Array): Promise<Uint8Array>;
27
+ protected decrypt(buffer: Uint8Array): Promise<Uint8Array>;
28
28
  abstract get initialized(): boolean;
29
29
  abstract initialize(): MaybePromise<void>;
30
30
  abstract receive(): MaybePromise<Uint8Array>;
@@ -1 +1 @@
1
- {"version":3,"file":"0_transport.d.ts","sourceRoot":"","sources":["../../src/transport/0_transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,8BAAsB,SAAS;IAC7B,SAAS,CAAC,qBAAqB,EAAE;QAAE,aAAa,EAAE,GAAG,CAAC;QAAC,aAAa,EAAE,GAAG,CAAA;KAAE,GAAG,IAAI,CAAQ;IAE1F,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU;IAMpC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU;IAMpC,QAAQ,KAAK,WAAW,IAAI,OAAO,CAAC;IACpC,QAAQ,CAAC,UAAU,IAAI,YAAY,CAAC,IAAI,CAAC;IACzC,QAAQ,CAAC,OAAO,IAAI,YAAY,CAAC,UAAU,CAAC;IAC5C,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC;IACrD,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC;CAOnC"}
1
+ {"version":3,"file":"0_transport.d.ts","sourceRoot":"","sources":["../../src/transport/0_transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,8BAAsB,SAAS;IAC7B,SAAS,CAAC,qBAAqB,EAAE;QAAE,aAAa,EAAE,GAAG,CAAC;QAAC,aAAa,EAAE,GAAG,CAAA;KAAE,GAAG,IAAI,CAAQ;cAE1E,OAAO,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;cAQhD,OAAO,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAQhE,QAAQ,KAAK,WAAW,IAAI,OAAO,CAAC;IACpC,QAAQ,CAAC,UAAU,IAAI,YAAY,CAAC,IAAI,CAAC;IACzC,QAAQ,CAAC,OAAO,IAAI,YAAY,CAAC,UAAU,CAAC;IAC5C,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC;IACrD,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC;CAKnC"}
@@ -29,20 +29,24 @@ class Transport {
29
29
  value: null
30
30
  });
31
31
  }
32
- encrypt(buffer) {
32
+ async encrypt(buffer) {
33
33
  if (this.obfuscationParameters) {
34
- this.obfuscationParameters.encryptionCTR.call(buffer);
34
+ return await this.obfuscationParameters.encryptionCTR.call(buffer);
35
+ }
36
+ else {
37
+ return buffer;
35
38
  }
36
39
  }
37
- decrypt(buffer) {
40
+ async decrypt(buffer) {
38
41
  if (this.obfuscationParameters) {
39
- this.obfuscationParameters.decryptionCTR.call(buffer);
42
+ return await this.obfuscationParameters.decryptionCTR.call(buffer);
43
+ }
44
+ else {
45
+ return buffer;
40
46
  }
41
47
  }
42
48
  deinitialize() {
43
49
  if (this.obfuscationParameters) {
44
- this.obfuscationParameters.encryptionCTR.destroy();
45
- this.obfuscationParameters.decryptionCTR.destroy();
46
50
  this.obfuscationParameters = null;
47
51
  }
48
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"1_transport_abridged.d.ts","sourceRoot":"","sources":["../../src/transport/1_transport_abridged.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,qBAAa,iBAAkB,SAAQ,SAAU,YAAW,SAAS;;gBAKvD,UAAU,EAAE,UAAU,EAAE,UAAU,UAAQ;IAMhD,UAAU;IAWV,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;IA2B9B,IAAI,CAAC,MAAM,EAAE,UAAU;IAepB,YAAY;IAKrB,IAAI,WAAW,IAAI,OAAO,CAEzB;CACF"}
1
+ {"version":3,"file":"1_transport_abridged.d.ts","sourceRoot":"","sources":["../../src/transport/1_transport_abridged.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,qBAAa,iBAAkB,SAAQ,SAAU,YAAW,SAAS;;gBAKvD,UAAU,EAAE,UAAU,EAAE,UAAU,UAAQ;IAMhD,UAAU;IAWV,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;IA0B9B,IAAI,CAAC,MAAM,EAAE,UAAU;IAcpB,YAAY;IAKrB,IAAI,WAAW,IAAI,OAAO,CAEzB;CACF"}
@@ -60,24 +60,23 @@ class TransportAbridged extends _0_transport_js_1.Transport {
60
60
  async receive() {
61
61
  let length;
62
62
  {
63
- const buffer = new Uint8Array(1);
63
+ let buffer = new Uint8Array(1);
64
64
  await __classPrivateFieldGet(this, _TransportAbridged_connection, "f").read(buffer);
65
- this.decrypt(buffer);
65
+ buffer = await this.decrypt(buffer);
66
66
  if (buffer[0] < 0x7F) {
67
67
  length = buffer[0];
68
68
  }
69
69
  else {
70
- const buffer = new Uint8Array(3);
70
+ let buffer = new Uint8Array(3);
71
71
  await __classPrivateFieldGet(this, _TransportAbridged_connection, "f").read(buffer);
72
- this.decrypt(buffer);
72
+ buffer = await this.decrypt(buffer);
73
73
  length = Number((0, _1_utilities_js_1.bigIntFromBuffer)(buffer, true, true));
74
74
  }
75
75
  }
76
76
  length *= 4;
77
77
  const buffer = new Uint8Array(length);
78
78
  await __classPrivateFieldGet(this, _TransportAbridged_connection, "f").read(buffer);
79
- this.decrypt(buffer);
80
- return buffer;
79
+ return await this.decrypt(buffer);
81
80
  }
82
81
  async send(buffer) {
83
82
  if (!this.initialized) {
@@ -87,8 +86,7 @@ class TransportAbridged extends _0_transport_js_1.Transport {
87
86
  const header = new Uint8Array([bufferLength >= 0x7F ? 0x7F : bufferLength]);
88
87
  const length = bufferLength >= 0x7F ? (0, _1_utilities_js_1.bufferFromBigInt)(bufferLength, 3) : new Uint8Array();
89
88
  const data = (0, _0_deps_js_1.concat)([header, length, buffer]);
90
- this.encrypt(data);
91
- await __classPrivateFieldGet(this, _TransportAbridged_connection, "f").write(data);
89
+ await __classPrivateFieldGet(this, _TransportAbridged_connection, "f").write(await this.encrypt(data));
92
90
  }
93
91
  deinitialize() {
94
92
  super.deinitialize();
@@ -1 +1 @@
1
- {"version":3,"file":"1_transport_intermediate.d.ts","sourceRoot":"","sources":["../../src/transport/1_transport_intermediate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,qBAAa,qBAAsB,SAAQ,SAAU,YAAW,SAAS;;gBAK3D,UAAU,EAAE,UAAU,EAAE,UAAU,UAAQ;IAMhD,UAAU;IAaV,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;IAiB9B,IAAI,CAAC,MAAM,EAAE,UAAU;IAYpB,YAAY;IAKrB,IAAI,WAAW,IAAI,OAAO,CAEzB;CACF"}
1
+ {"version":3,"file":"1_transport_intermediate.d.ts","sourceRoot":"","sources":["../../src/transport/1_transport_intermediate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,qBAAa,qBAAsB,SAAQ,SAAU,YAAW,SAAS;;gBAK3D,UAAU,EAAE,UAAU,EAAE,UAAU,UAAQ;IAMhD,UAAU;IAaV,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;IAiB9B,IAAI,CAAC,MAAM,EAAE,UAAU;IAWpB,YAAY;IAKrB,IAAI,WAAW,IAAI,OAAO,CAEzB;CACF"}
@@ -62,16 +62,15 @@ class TransportIntermediate extends _0_transport_js_1.Transport {
62
62
  async receive() {
63
63
  let length;
64
64
  {
65
- const buffer = new Uint8Array(4);
65
+ let buffer = new Uint8Array(4);
66
66
  await __classPrivateFieldGet(this, _TransportIntermediate_connection, "f").read(buffer);
67
- this.decrypt(buffer);
67
+ buffer = await this.decrypt(buffer);
68
68
  const dataView = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
69
69
  length = dataView.getUint32(0, true);
70
70
  }
71
71
  const buffer = new Uint8Array(length);
72
72
  await __classPrivateFieldGet(this, _TransportIntermediate_connection, "f").read(buffer);
73
- this.decrypt(buffer);
74
- return buffer;
73
+ return await this.decrypt(buffer);
75
74
  }
76
75
  async send(buffer) {
77
76
  if (!this.initialized) {
@@ -79,8 +78,7 @@ class TransportIntermediate extends _0_transport_js_1.Transport {
79
78
  }
80
79
  const length = (0, _1_utilities_js_1.bufferFromBigInt)(buffer.length, 4);
81
80
  const data = (0, _0_deps_js_1.concat)([length, buffer]);
82
- this.encrypt(data);
83
- await __classPrivateFieldGet(this, _TransportIntermediate_connection, "f").write(data);
81
+ await __classPrivateFieldGet(this, _TransportIntermediate_connection, "f").write(await this.encrypt(data));
84
82
  }
85
83
  deinitialize() {
86
84
  super.deinitialize();