@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
@@ -1,308 +0,0 @@
1
- var Module = (() => {
2
- var _scriptDir = import.meta.url;
3
- return (function (moduleArg = {}) {
4
- var Module = moduleArg;
5
- var readyPromiseResolve, readyPromiseReject;
6
- Module["ready"] = new Promise((resolve, reject) => { readyPromiseResolve = resolve; readyPromiseReject = reject; });
7
- var moduleOverrides = Object.assign({}, Module);
8
- var arguments_ = [];
9
- var thisProgram = "./this.program";
10
- var quit_ = (status, toThrow) => { throw toThrow; };
11
- var ENVIRONMENT_IS_WEB = true;
12
- var ENVIRONMENT_IS_WORKER = false;
13
- var scriptDirectory = "";
14
- function locateFile(path) { if (Module["locateFile"]) {
15
- return Module["locateFile"](path, scriptDirectory);
16
- } return scriptDirectory + path; }
17
- var read_, readAsync, readBinary;
18
- if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
19
- if (ENVIRONMENT_IS_WORKER) {
20
- scriptDirectory = self.location.href;
21
- }
22
- else if (typeof document != "undefined" && document.currentScript) {
23
- scriptDirectory = document.currentScript.src;
24
- }
25
- if (_scriptDir) {
26
- scriptDirectory = _scriptDir;
27
- }
28
- if (scriptDirectory.indexOf("blob:") !== 0) {
29
- scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1);
30
- }
31
- else {
32
- scriptDirectory = "";
33
- }
34
- {
35
- read_ = url => { var xhr = new XMLHttpRequest; xhr.open("GET", url, false); xhr.send(null); return xhr.responseText; };
36
- if (ENVIRONMENT_IS_WORKER) {
37
- readBinary = url => { var xhr = new XMLHttpRequest; xhr.open("GET", url, false); xhr.responseType = "arraybuffer"; xhr.send(null); return new Uint8Array(xhr.response); };
38
- }
39
- readAsync = (url, onload, onerror) => { var xhr = new XMLHttpRequest; xhr.open("GET", url, true); xhr.responseType = "arraybuffer"; xhr.onload = () => { if (xhr.status == 200 || xhr.status == 0 && xhr.response) {
40
- onload(xhr.response);
41
- return;
42
- } onerror(); }; xhr.onerror = onerror; xhr.send(null); };
43
- }
44
- }
45
- else { }
46
- var out = Module["print"] || console.log.bind(console);
47
- var err = Module["printErr"] || console.error.bind(console);
48
- Object.assign(Module, moduleOverrides);
49
- moduleOverrides = null;
50
- if (Module["arguments"])
51
- arguments_ = Module["arguments"];
52
- if (Module["thisProgram"])
53
- thisProgram = Module["thisProgram"];
54
- if (Module["quit"])
55
- quit_ = Module["quit"];
56
- var wasmBinary;
57
- if (Module["wasmBinary"])
58
- wasmBinary = Module["wasmBinary"];
59
- if (typeof WebAssembly != "object") {
60
- abort("no native wasm support detected");
61
- }
62
- function intArrayFromBase64(s) { var decoded = atob(s); var bytes = new Uint8Array(decoded.length); for (var i = 0; i < decoded.length; ++i) {
63
- bytes[i] = decoded.charCodeAt(i);
64
- } return bytes; }
65
- function tryParseAsDataURI(filename) { if (!isDataURI(filename)) {
66
- return;
67
- } return intArrayFromBase64(filename.slice(dataURIPrefix.length)); }
68
- var wasmMemory;
69
- var ABORT = false;
70
- var EXITSTATUS;
71
- var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAP64, HEAPU64, HEAPF64;
72
- 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); }
73
- var __ATPRERUN__ = [];
74
- var __ATINIT__ = [];
75
- var __ATPOSTRUN__ = [];
76
- var runtimeInitialized = false;
77
- function preRun() { if (Module["preRun"]) {
78
- if (typeof Module["preRun"] == "function")
79
- Module["preRun"] = [Module["preRun"]];
80
- while (Module["preRun"].length) {
81
- addOnPreRun(Module["preRun"].shift());
82
- }
83
- } callRuntimeCallbacks(__ATPRERUN__); }
84
- function initRuntime() { runtimeInitialized = true; callRuntimeCallbacks(__ATINIT__); }
85
- function postRun() { if (Module["postRun"]) {
86
- if (typeof Module["postRun"] == "function")
87
- Module["postRun"] = [Module["postRun"]];
88
- while (Module["postRun"].length) {
89
- addOnPostRun(Module["postRun"].shift());
90
- }
91
- } callRuntimeCallbacks(__ATPOSTRUN__); }
92
- function addOnPreRun(cb) { __ATPRERUN__.unshift(cb); }
93
- function addOnInit(cb) { __ATINIT__.unshift(cb); }
94
- function addOnPostRun(cb) { __ATPOSTRUN__.unshift(cb); }
95
- var runDependencies = 0;
96
- var runDependencyWatcher = null;
97
- var dependenciesFulfilled = null;
98
- function addRunDependency(id) { runDependencies++; Module["monitorRunDependencies"]?.(runDependencies); }
99
- function removeRunDependency(id) { runDependencies--; Module["monitorRunDependencies"]?.(runDependencies); if (runDependencies == 0) {
100
- if (runDependencyWatcher !== null) {
101
- clearInterval(runDependencyWatcher);
102
- runDependencyWatcher = null;
103
- }
104
- if (dependenciesFulfilled) {
105
- var callback = dependenciesFulfilled;
106
- dependenciesFulfilled = null;
107
- callback();
108
- }
109
- } }
110
- function abort(what) { Module["onAbort"]?.(what); what = "Aborted(" + what + ")"; err(what); ABORT = true; EXITSTATUS = 1; what += ". Build with -sASSERTIONS for more info."; var e = new WebAssembly.RuntimeError(what); readyPromiseReject(e); throw e; }
111
- var dataURIPrefix = "data:application/octet-stream;base64,";
112
- var isDataURI = filename => filename.startsWith(dataURIPrefix);
113
- var wasmBinaryFile;
114
- wasmBinaryFile = "data:application/octet-stream;base64,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";
115
- if (!isDataURI(wasmBinaryFile)) {
116
- wasmBinaryFile = locateFile(wasmBinaryFile);
117
- }
118
- function getBinarySync(file) { if (file == wasmBinaryFile && wasmBinary) {
119
- return new Uint8Array(wasmBinary);
120
- } var binary = tryParseAsDataURI(file); if (binary) {
121
- return binary;
122
- } if (readBinary) {
123
- return readBinary(file);
124
- } throw "both async and sync fetching of the wasm failed"; }
125
- function getBinaryPromise(binaryFile) { return Promise.resolve().then(() => getBinarySync(binaryFile)); }
126
- function instantiateArrayBuffer(binaryFile, imports, receiver) { return getBinaryPromise(binaryFile).then(binary => WebAssembly.instantiate(binary, imports)).then(instance => instance).then(receiver, reason => { err(`failed to asynchronously prepare wasm: ${reason}`); abort(reason); }); }
127
- function instantiateAsync(binary, binaryFile, imports, callback) { return instantiateArrayBuffer(binaryFile, imports, callback); }
128
- function createWasm() { var info = { "a": wasmImports }; 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"]) {
129
- try {
130
- return Module["instantiateWasm"](info, receiveInstance);
131
- }
132
- catch (e) {
133
- err(`Module.instantiateWasm callback failed with error: ${e}`);
134
- readyPromiseReject(e);
135
- }
136
- } instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject); return {}; }
137
- var callRuntimeCallbacks = callbacks => { while (callbacks.length > 0) {
138
- callbacks.shift()(Module);
139
- } };
140
- var noExitRuntime = Module["noExitRuntime"] || true;
141
- var getHeapMax = () => 2147483648;
142
- var growMemory = size => { var b = wasmMemory.buffer; var pages = (size - b.byteLength + 65535) / 65536; try {
143
- wasmMemory.grow(pages);
144
- updateMemoryViews();
145
- return 1;
146
- }
147
- catch (e) { } };
148
- var _emscripten_resize_heap = requestedSize => { var oldSize = HEAPU8.length; requestedSize >>>= 0; var maxHeapSize = getHeapMax(); if (requestedSize > maxHeapSize) {
149
- return false;
150
- } var alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple; for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {
151
- var overGrownHeapSize = oldSize * (1 + .2 / cutDown);
152
- overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);
153
- var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));
154
- var replacement = growMemory(newSize);
155
- if (replacement) {
156
- return true;
157
- }
158
- } return false; };
159
- var getCFunc = ident => { var func = Module["_" + ident]; return func; };
160
- var writeArrayToMemory = (array, buffer) => { HEAP8.set(array, buffer); };
161
- var lengthBytesUTF8 = str => { var len = 0; for (var i = 0; i < str.length; ++i) {
162
- var c = str.charCodeAt(i);
163
- if (c <= 127) {
164
- len++;
165
- }
166
- else if (c <= 2047) {
167
- len += 2;
168
- }
169
- else if (c >= 55296 && c <= 57343) {
170
- len += 4;
171
- ++i;
172
- }
173
- else {
174
- len += 3;
175
- }
176
- } return len; };
177
- var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => { if (!(maxBytesToWrite > 0))
178
- return 0; var startIdx = outIdx; var endIdx = outIdx + maxBytesToWrite - 1; for (var i = 0; i < str.length; ++i) {
179
- var u = str.charCodeAt(i);
180
- if (u >= 55296 && u <= 57343) {
181
- var u1 = str.charCodeAt(++i);
182
- u = 65536 + ((u & 1023) << 10) | u1 & 1023;
183
- }
184
- if (u <= 127) {
185
- if (outIdx >= endIdx)
186
- break;
187
- heap[outIdx++] = u;
188
- }
189
- else if (u <= 2047) {
190
- if (outIdx + 1 >= endIdx)
191
- break;
192
- heap[outIdx++] = 192 | u >> 6;
193
- heap[outIdx++] = 128 | u & 63;
194
- }
195
- else if (u <= 65535) {
196
- if (outIdx + 2 >= endIdx)
197
- break;
198
- heap[outIdx++] = 224 | u >> 12;
199
- heap[outIdx++] = 128 | u >> 6 & 63;
200
- heap[outIdx++] = 128 | u & 63;
201
- }
202
- else {
203
- if (outIdx + 3 >= endIdx)
204
- break;
205
- heap[outIdx++] = 240 | u >> 18;
206
- heap[outIdx++] = 128 | u >> 12 & 63;
207
- heap[outIdx++] = 128 | u >> 6 & 63;
208
- heap[outIdx++] = 128 | u & 63;
209
- }
210
- } heap[outIdx] = 0; return outIdx - startIdx; };
211
- var stringToUTF8 = (str, outPtr, maxBytesToWrite) => stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);
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("utf8") : undefined;
214
- var UTF8ArrayToString = (heapOrArray, idx, maxBytesToRead) => { 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.apply(null, 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 _ctr256 = Module["_ctr256"] = (a0, a1, a2, a3, a4) => (_ctr256 = Module["_ctr256"] = wasmExports["g"])(a0, a1, a2, a3, a4);
269
- var _cbc256_encrypt = Module["_cbc256_encrypt"] = (a0, a1, a2, a3) => (_cbc256_encrypt = Module["_cbc256_encrypt"] = wasmExports["h"])(a0, a1, a2, a3);
270
- var _cbc256_decrypt = Module["_cbc256_decrypt"] = (a0, a1, a2, a3) => (_cbc256_decrypt = Module["_cbc256_decrypt"] = wasmExports["i"])(a0, a1, a2, a3);
271
- var ___errno_location = () => (___errno_location = wasmExports["__errno_location"])();
272
- var _malloc = Module["_malloc"] = a0 => (_malloc = Module["_malloc"] = wasmExports["j"])(a0);
273
- var _free = Module["_free"] = a0 => (_free = Module["_free"] = wasmExports["k"])(a0);
274
- var stackSave = () => (stackSave = wasmExports["l"])();
275
- var stackRestore = a0 => (stackRestore = wasmExports["m"])(a0);
276
- var stackAlloc = a0 => (stackAlloc = wasmExports["n"])(a0);
277
- Module["ccall"] = ccall;
278
- var calledRun;
279
- dependenciesFulfilled = function runCaller() { if (!calledRun)
280
- run(); if (!calledRun)
281
- dependenciesFulfilled = runCaller; };
282
- function run() { if (runDependencies > 0) {
283
- return;
284
- } preRun(); if (runDependencies > 0) {
285
- return;
286
- } function doRun() { if (calledRun)
287
- return; calledRun = true; Module["calledRun"] = true; if (ABORT)
288
- return; initRuntime(); readyPromiseResolve(Module); if (Module["onRuntimeInitialized"])
289
- Module["onRuntimeInitialized"](); postRun(); } if (Module["setStatus"]) {
290
- Module["setStatus"]("Running...");
291
- setTimeout(function () { setTimeout(function () { Module["setStatus"](""); }, 1); doRun(); }, 1);
292
- }
293
- else {
294
- doRun();
295
- } }
296
- if (Module["preInit"]) {
297
- if (typeof Module["preInit"] == "function")
298
- Module["preInit"] = [Module["preInit"]];
299
- while (Module["preInit"].length > 0) {
300
- Module["preInit"].pop()();
301
- }
302
- }
303
- run();
304
- return moduleArg.ready;
305
- });
306
- })();
307
- ;
308
- export default Module;
@@ -1 +0,0 @@
1
- {"version":3,"file":"0_crypto.d.ts","sourceRoot":"","sources":["../../src/utilities/0_crypto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,qBAAa,GAAG;;gBAIF,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU;IAK3C,gDAAgD;IAChD,IAAI,CAAC,IAAI,EAAE,UAAU;IAIrB,OAAO;CAGR"}
@@ -1,55 +0,0 @@
1
- export declare function init(): Promise<void>;
2
- /**
3
- * Performs IGE-256 encryption.
4
- *
5
- * @param data The unencrypted data, larger than a byte, divisible by 16
6
- * @param key 32-byte encryption key
7
- * @param iv 32-byte initialization vector
8
- */
9
- export declare function ige256Encrypt(data: Uint8Array, key: Uint8Array, iv: Uint8Array): Uint8Array;
10
- /**
11
- * Performs IGE-256 decryption.
12
- *
13
- * @param data The encrypted data, larger than a byte, divisible by 16
14
- * @param key 32-byte encryption key
15
- * @param iv 32-byte initialization vector
16
- */
17
- export declare function ige256Decrypt(data: Uint8Array, key: Uint8Array, iv: Uint8Array): Uint8Array;
18
- export interface Ctr256State {
19
- statep: number;
20
- ivp: number;
21
- }
22
- export declare function createCtr256State(iv: Uint8Array): Ctr256State;
23
- export declare function destroyCtr256State(state: Ctr256State): void;
24
- export interface __Ctr256StateValues {
25
- iv: Uint8Array;
26
- state: Uint8Array;
27
- }
28
- export declare function __getCtr256StateValues(state: Ctr256State): __Ctr256StateValues;
29
- export declare function __settCtr256StateState(state: Ctr256State, state_: Uint8Array): void;
30
- /**
31
- * Performs CTR-256 encryption/decryption.
32
- *
33
- * @param data The data, larger than a byte
34
- * @param key 32-byte encryption key
35
- * @param iv 16-byte initialization vector
36
- * @param state Result of `createCtr256State()`
37
- */
38
- export declare function ctr256(data: Uint8Array, key: Uint8Array, state: Ctr256State): void;
39
- /**
40
- * Performs CBC-256 encryption.
41
- *
42
- * @param data The unencrypted data, larger than a byte, divisible by 16
43
- * @param key 32-byte encryption key
44
- * @param iv 16-byte initialization vector
45
- */
46
- export declare function cbc256Encrypt(data: Uint8Array, key: Uint8Array, iv: Uint8Array): Uint8Array;
47
- /**
48
- * Performs CBC-256 decryption.
49
- *
50
- * @param data The encrypted data, larger than a byte, divisible by 16
51
- * @param key 32-byte encryption key
52
- * @param iv 16-byte initialization vector
53
- */
54
- export declare function cbc256Decrypt(data: Uint8Array, key: Uint8Array, iv: Uint8Array): Uint8Array;
55
- //# sourceMappingURL=mod.d.ts.map
@@ -1,182 +0,0 @@
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
- exports.createCtr256State = createCtr256State;
10
- exports.destroyCtr256State = destroyCtr256State;
11
- exports.__getCtr256StateValues = __getCtr256StateValues;
12
- exports.__settCtr256StateState = __settCtr256StateState;
13
- exports.ctr256 = ctr256;
14
- exports.cbc256Encrypt = cbc256Encrypt;
15
- exports.cbc256Decrypt = cbc256Decrypt;
16
- const tgcrypto_js_1 = __importDefault(require("./tgcrypto.js"));
17
- // deno-lint-ignore no-explicit-any
18
- let module_;
19
- const promise = (0, tgcrypto_js_1.default)().then((v) => module_ = v);
20
- async function init() {
21
- await promise;
22
- }
23
- function checkIgeParams(data, key, iv) {
24
- if (data.byteLength == 0) {
25
- throw new TypeError("data must not be empty");
26
- }
27
- else if (data.byteLength % 16 != 0) {
28
- throw new TypeError("data must consist of a number of bytes that is divisible by 16");
29
- }
30
- else if (key.byteLength != 32) {
31
- throw new TypeError("key must be 32 bytes");
32
- }
33
- else if (iv.byteLength != 32) {
34
- throw new TypeError("iv must be 32 bytes");
35
- }
36
- }
37
- /**
38
- * Performs IGE-256 encryption.
39
- *
40
- * @param data The unencrypted data, larger than a byte, divisible by 16
41
- * @param key 32-byte encryption key
42
- * @param iv 32-byte initialization vector
43
- */
44
- function ige256Encrypt(data, key, iv) {
45
- checkIgeParams(data, key, iv);
46
- const out = module_._malloc(data.byteLength);
47
- const datap = module_._malloc(data.byteLength);
48
- module_.HEAPU8.set(data, datap);
49
- module_.ccall("ige256_encrypt", "void", ["pointer", "pointer", "number", "array", "array"], [datap, out, data.byteLength, key, iv]);
50
- try {
51
- return module_.HEAPU8.slice(out, out + data.byteLength);
52
- }
53
- finally {
54
- module_._free(out);
55
- module_._free(datap);
56
- }
57
- }
58
- /**
59
- * Performs IGE-256 decryption.
60
- *
61
- * @param data The encrypted data, larger than a byte, divisible by 16
62
- * @param key 32-byte encryption key
63
- * @param iv 32-byte initialization vector
64
- */
65
- function ige256Decrypt(data, key, iv) {
66
- checkIgeParams(data, key, iv);
67
- const out = module_._malloc(data.byteLength);
68
- const datap = module_._malloc(data.byteLength);
69
- module_.HEAPU8.set(data, datap);
70
- module_.ccall("ige256_decrypt", "void", ["pointer", "pointer", "number", "array", "array"], [datap, out, data.byteLength, key, iv]);
71
- try {
72
- return module_.HEAPU8.slice(out, out + data.byteLength);
73
- }
74
- finally {
75
- module_._free(out);
76
- module_._free(datap);
77
- }
78
- }
79
- function checkCtrParams(data, key) {
80
- if (data.byteLength == 0) {
81
- throw new TypeError("data must not be empty");
82
- }
83
- else if (key.byteLength != 32) {
84
- throw new TypeError("key must be 32 bytes");
85
- }
86
- }
87
- function createCtr256State(iv) {
88
- if (iv.byteLength != 16) {
89
- throw new TypeError("iv must be 16 bytes");
90
- }
91
- const state = {
92
- ivp: module_._malloc(16),
93
- statep: module_._malloc(1),
94
- };
95
- module_.HEAPU8.set(iv, state.ivp);
96
- module_.HEAPU8[state.statep] = 0;
97
- return state;
98
- }
99
- function destroyCtr256State(state) {
100
- module_._free(state.ivp);
101
- module_._free(state.statep);
102
- }
103
- function __getCtr256StateValues(state) {
104
- return {
105
- iv: module_.HEAPU8.slice(state.ivp, state.ivp + 16),
106
- state: module_.HEAPU8.slice(state.statep, state.statep + 1),
107
- };
108
- }
109
- function __settCtr256StateState(state, state_) {
110
- if (state_.byteLength != 1) {
111
- throw new Error("state_ must be 1 byte");
112
- }
113
- module_.HEAPU8.set(state_, state.statep);
114
- }
115
- /**
116
- * Performs CTR-256 encryption/decryption.
117
- *
118
- * @param data The data, larger than a byte
119
- * @param key 32-byte encryption key
120
- * @param iv 16-byte initialization vector
121
- * @param state Result of `createCtr256State()`
122
- */
123
- function ctr256(data, key, state) {
124
- checkCtrParams(data, key);
125
- const datap = module_._malloc(data.byteLength);
126
- module_.HEAPU8.set(data, datap);
127
- module_.ccall("ctr256", "void", ["pointer", "number", "array", "pointer", "pointer"], [datap, data.byteLength, key, state.ivp, state.statep]);
128
- data.set(module_.HEAPU8.slice(datap, datap + data.byteLength));
129
- module_._free(datap);
130
- }
131
- function checkCbcParams(data, key, iv) {
132
- if (data.byteLength == 0) {
133
- throw new TypeError("data must not be empty");
134
- }
135
- else if (data.byteLength % 16 != 0) {
136
- throw new TypeError("data must consist of a number of bytes that is divisible by 16");
137
- }
138
- else if (key.byteLength != 32) {
139
- throw new TypeError("key must be 32 bytes");
140
- }
141
- else if (iv.byteLength != 16) {
142
- throw new TypeError("iv must be 16 bytes");
143
- }
144
- }
145
- /**
146
- * Performs CBC-256 encryption.
147
- *
148
- * @param data The unencrypted data, larger than a byte, divisible by 16
149
- * @param key 32-byte encryption key
150
- * @param iv 16-byte initialization vector
151
- */
152
- function cbc256Encrypt(data, key, iv) {
153
- checkCbcParams(data, key, iv);
154
- const datap = module_._malloc(data.byteLength);
155
- module_.HEAPU8.set(data, datap);
156
- module_.ccall("cbc256_encrypt", "void", ["pointer", "number", "array", "array"], [datap, data.byteLength, key, iv]);
157
- try {
158
- return module_.HEAPU8.slice(datap, datap + data.byteLength);
159
- }
160
- finally {
161
- module_._free(datap);
162
- }
163
- }
164
- /**
165
- * Performs CBC-256 decryption.
166
- *
167
- * @param data The encrypted data, larger than a byte, divisible by 16
168
- * @param key 32-byte encryption key
169
- * @param iv 16-byte initialization vector
170
- */
171
- function cbc256Decrypt(data, key, iv) {
172
- checkCbcParams(data, key, iv);
173
- const datap = module_._malloc(data.byteLength);
174
- module_.HEAPU8.set(data, datap);
175
- module_.ccall("cbc256_decrypt", "void", ["pointer", "number", "array", "array"], [datap, data.byteLength, key, iv]);
176
- try {
177
- return module_.HEAPU8.slice(datap, datap + data.byteLength);
178
- }
179
- finally {
180
- module_._free(datap);
181
- }
182
- }