quarkdash 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/.idea/modules.xml +8 -0
  2. package/.idea/quarkdash.iml +12 -0
  3. package/.idea/vcs.xml +6 -0
  4. package/LICENSE +21 -0
  5. package/README.md +161 -0
  6. package/coverage/clover.xml +470 -0
  7. package/coverage/coverage-final.json +8 -0
  8. package/coverage/lcov-report/base.css +224 -0
  9. package/coverage/lcov-report/block-navigation.js +87 -0
  10. package/coverage/lcov-report/cipher.ts.html +862 -0
  11. package/coverage/lcov-report/crypto.ts.html +1000 -0
  12. package/coverage/lcov-report/favicon.png +0 -0
  13. package/coverage/lcov-report/index.html +206 -0
  14. package/coverage/lcov-report/index.ts.html +151 -0
  15. package/coverage/lcov-report/kdf.ts.html +274 -0
  16. package/coverage/lcov-report/mac.ts.html +277 -0
  17. package/coverage/lcov-report/prettify.css +1 -0
  18. package/coverage/lcov-report/prettify.js +2 -0
  19. package/coverage/lcov-report/ringlwe.ts.html +895 -0
  20. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  21. package/coverage/lcov-report/sorter.js +210 -0
  22. package/coverage/lcov-report/utils.ts.html +1111 -0
  23. package/coverage/lcov.info +740 -0
  24. package/dist/cjs/cipher.js +265 -0
  25. package/dist/cjs/cipher.js.map +1 -0
  26. package/dist/cjs/crypto.js +284 -0
  27. package/dist/cjs/crypto.js.map +1 -0
  28. package/dist/cjs/index.js +37 -0
  29. package/dist/cjs/index.js.map +1 -0
  30. package/dist/cjs/kdf.js +56 -0
  31. package/dist/cjs/kdf.js.map +1 -0
  32. package/dist/cjs/mac.js +55 -0
  33. package/dist/cjs/mac.js.map +1 -0
  34. package/dist/cjs/ringlwe.js +267 -0
  35. package/dist/cjs/ringlwe.js.map +1 -0
  36. package/dist/cjs/types.js +3 -0
  37. package/dist/cjs/types.js.map +1 -0
  38. package/dist/cjs/utils.js +320 -0
  39. package/dist/cjs/utils.js.map +1 -0
  40. package/dist/esm/cipher.js +259 -0
  41. package/dist/esm/cipher.js.map +1 -0
  42. package/dist/esm/crypto.js +280 -0
  43. package/dist/esm/crypto.js.map +1 -0
  44. package/dist/esm/index.js +21 -0
  45. package/dist/esm/index.js.map +1 -0
  46. package/dist/esm/kdf.js +52 -0
  47. package/dist/esm/kdf.js.map +1 -0
  48. package/dist/esm/mac.js +51 -0
  49. package/dist/esm/mac.js.map +1 -0
  50. package/dist/esm/ringlwe.js +263 -0
  51. package/dist/esm/ringlwe.js.map +1 -0
  52. package/dist/esm/types.js +2 -0
  53. package/dist/esm/types.js.map +1 -0
  54. package/dist/esm/utils.js +313 -0
  55. package/dist/esm/utils.js.map +1 -0
  56. package/dist/types/cipher.d.ts +153 -0
  57. package/dist/types/crypto.d.ts +155 -0
  58. package/dist/types/index.d.ts +16 -0
  59. package/dist/types/kdf.d.ts +34 -0
  60. package/dist/types/mac.d.ts +47 -0
  61. package/dist/types/ringlwe.d.ts +127 -0
  62. package/dist/types/types.d.ts +69 -0
  63. package/dist/types/utils.d.ts +132 -0
  64. package/img/cover.png +0 -0
  65. package/package.json +63 -0
  66. package/src/cipher.ts +260 -0
  67. package/src/crypto.ts +306 -0
  68. package/src/index.ts +23 -0
  69. package/src/kdf.ts +64 -0
  70. package/src/mac.ts +65 -0
  71. package/src/ringlwe.ts +271 -0
  72. package/src/types.ts +75 -0
  73. package/src/utils.ts +343 -0
  74. package/tsconfig.cjs.json +7 -0
  75. package/tsconfig.json +18 -0
@@ -0,0 +1,51 @@
1
+ import { QuarkDashUtils } from "./utils";
2
+ /**
3
+ * MAC implementation using Shake-256
4
+ */
5
+ export class QuarkDashMAC {
6
+ /**
7
+ * Sign data async
8
+ * @param data {Uint8Array} Data buffer
9
+ * @param key {Uint8Array} Key buffer
10
+ * @returns {Promise<Uint8Array>} Signed result buffer
11
+ * TODO: GPU Calculations
12
+ */
13
+ async sign(data, key) {
14
+ const full = QuarkDashUtils.concatBytes(key, data);
15
+ return await QuarkDashUtils.shake256(full, 32);
16
+ }
17
+ /**
18
+ * Verify async
19
+ * @param data {Uint8Array} data buffer
20
+ * @param key {Uint8Array} key buffer
21
+ * @param tag {Uint8Array} tag buffer
22
+ * @returns {Promise<boolean>} Is verified?
23
+ * TODO: GPU Calculations
24
+ */
25
+ async verify(data, key, tag) {
26
+ const expected = await this.sign(data, key);
27
+ return QuarkDashUtils.constantTimeEqual(expected, tag);
28
+ }
29
+ /**
30
+ * Sign data sync
31
+ * @param data {Uint8Array} Data buffer
32
+ * @param key {Uint8Array} Key buffer
33
+ * @returns {Uint8Array} Signed result buffer
34
+ */
35
+ signSync(data, key) {
36
+ const full = QuarkDashUtils.concatBytes(key, data);
37
+ return QuarkDashUtils.shake256Sync(full, 32);
38
+ }
39
+ /**
40
+ * Verify sync
41
+ * @param data {Uint8Array} data buffer
42
+ * @param key {Uint8Array} key buffer
43
+ * @param tag {Uint8Array} tag buffer
44
+ * @returns {Promise<boolean>} Is verified?
45
+ */
46
+ verifySync(data, key, tag) {
47
+ const expected = this.signSync(data, key);
48
+ return QuarkDashUtils.constantTimeEqual(expected, tag);
49
+ }
50
+ }
51
+ //# sourceMappingURL=mac.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mac.js","sourceRoot":"","sources":["../../src/mac.ts"],"names":[],"mappings":"AAWA,OAAO,EAAC,cAAc,EAAC,MAAM,SAAS,CAAC;AAEvC;;GAEG;AACH,MAAM,OAAO,YAAY;IACrB;;;;;;OAMG;IACI,KAAK,CAAC,IAAI,CAAC,IAAgB,EAAE,GAAe;QAC/C,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACnD,OAAO,MAAM,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,MAAM,CAAC,IAAgB,EAAE,GAAe,EAAE,GAAe;QAClE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5C,OAAO,cAAc,CAAC,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;OAKG;IACI,QAAQ,CAAC,IAAgB,EAAE,GAAe;QAC7C,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACnD,OAAO,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IAED;;;;;;OAMG;IACI,UAAU,CAAC,IAAgB,EAAE,GAAe,EAAE,GAAe;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1C,OAAO,cAAc,CAAC,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC3D,CAAC;CACJ"}
@@ -0,0 +1,263 @@
1
+ var _a;
2
+ import { QuarkDashUtils } from "./utils";
3
+ /**
4
+ * Ring-LWE based key exchange implementation
5
+ */
6
+ export class QuarkDashKeyExchange {
7
+ /**
8
+ * Get small polygon
9
+ * @returns {bigint[]} Small polygon
10
+ * @private
11
+ */
12
+ static smallPoly() {
13
+ const poly = new Array(this.N);
14
+ for (let i = 0; i < this.N; i++) {
15
+ const r = Math.random();
16
+ if (r < 0.33)
17
+ poly[i] = -1n;
18
+ else if (r < 0.66)
19
+ poly[i] = 0n;
20
+ else
21
+ poly[i] = 1n;
22
+ }
23
+ return poly;
24
+ }
25
+ /**
26
+ * Uniform polygon
27
+ * @returns {bigint[]}
28
+ * @private
29
+ */
30
+ static uniformPoly() {
31
+ const poly = new Array(this.N);
32
+ const bytes = QuarkDashUtils.randomBytes(this.N * 2);
33
+ for (let i = 0; i < this.N; i++) {
34
+ const val = (bytes[2 * i] | (bytes[2 * i + 1] << 8)) % Number(this.Q);
35
+ poly[i] = BigInt(val);
36
+ }
37
+ return poly;
38
+ }
39
+ /**
40
+ * NTT Operation
41
+ * @param poly {bigint[]} Polygon
42
+ * @private
43
+ */
44
+ static ntt(poly) {
45
+ const res = [...poly];
46
+ let len = 2;
47
+ while (len <= this.N) {
48
+ const wlen = this.powMod(this.ROOT, BigInt(this.N / len), this.Q);
49
+ for (let i = 0; i < this.N; i += len) {
50
+ let w = 1n;
51
+ for (let j = 0; j < len / 2; j++) {
52
+ const u = res[i + j];
53
+ const v = (res[i + j + len / 2] * w) % this.Q;
54
+ res[i + j] = (u + v) % this.Q;
55
+ res[i + j + len / 2] = (u - v + this.Q) % this.Q;
56
+ w = (w * wlen) % this.Q;
57
+ }
58
+ }
59
+ len <<= 1;
60
+ }
61
+ return res;
62
+ }
63
+ /**
64
+ * Inverse NTT
65
+ * @param poly {bigint[]} Polygon
66
+ * @private
67
+ */
68
+ static invNTT(poly) {
69
+ const res = [...poly];
70
+ let len = this.N;
71
+ while (len >= 2) {
72
+ const wlen = this.powMod(this.ROOT, BigInt(this.N / len), this.Q);
73
+ for (let i = 0; i < this.N; i += len) {
74
+ let w = 1n;
75
+ for (let j = 0; j < len / 2; j++) {
76
+ const u = res[i + j];
77
+ const v = res[i + j + len / 2];
78
+ res[i + j] = (u + v) % this.Q;
79
+ res[i + j + len / 2] = ((u - v + this.Q) * w) % this.Q;
80
+ w = (w * wlen) % this.Q;
81
+ }
82
+ }
83
+ len >>= 1;
84
+ }
85
+ for (let i = 0; i < this.N; i++)
86
+ res[i] = (res[i] * this.INV_N) % this.Q;
87
+ return res;
88
+ }
89
+ /**
90
+ * Multiply
91
+ * @param a {bigint[]} Polygon
92
+ * @param b {bigint[]} Polygon
93
+ * @returns {bigint[]} Multiplied polygons
94
+ */
95
+ static multiply(a, b) {
96
+ const aNTT = this.ntt(a);
97
+ const bNTT = this.ntt(b);
98
+ const prod = new Array(this.N);
99
+ for (let i = 0; i < this.N; i++)
100
+ prod[i] = (aNTT[i] * bNTT[i]) % this.Q;
101
+ return this.invNTT(prod);
102
+ }
103
+ /**
104
+ * Serialize polygon
105
+ * @param poly {bigint[]} Polygon
106
+ * @returns {Uint8Array} Polygon buffer
107
+ * @private
108
+ */
109
+ static serializePoly(poly) {
110
+ const bytes = new Uint8Array(this.N * 2);
111
+ for (let i = 0; i < this.N; i++) {
112
+ const val = Number(poly[i]);
113
+ bytes[2 * i] = val & 0xFF;
114
+ bytes[2 * i + 1] = (val >> 8) & 0xFF;
115
+ }
116
+ return bytes;
117
+ }
118
+ /**
119
+ * Deserialize Polygon
120
+ * @param bytes {Uint8Array} Polygon buffer
121
+ * @returns {bigint[]} Polygon
122
+ * @private
123
+ */
124
+ static deserializePoly(bytes) {
125
+ const poly = new Array(this.N);
126
+ for (let i = 0; i < this.N; i++) {
127
+ const val = bytes[2 * i] | (bytes[2 * i + 1] << 8);
128
+ poly[i] = BigInt(val);
129
+ }
130
+ return poly;
131
+ }
132
+ /**
133
+ * Round to bits
134
+ * @param poly {bigint[]} Polygon
135
+ * @returns {Uint8Array} rounded buffer
136
+ * @private
137
+ */
138
+ static roundToBits(poly) {
139
+ const result = new Uint8Array(32);
140
+ for (let i = 0; i < this.N; i++) {
141
+ const bit = (Number(poly[i]) > Number(this.Q) / 2) ? 1 : 0;
142
+ if (bit)
143
+ result[i >> 3] |= (1 << (i & 7));
144
+ }
145
+ return result;
146
+ }
147
+ /**
148
+ * Modular exponentiation
149
+ * @param base {bigint} Base
150
+ * @param exp {bigint} exponential
151
+ * @param mod {bigint} module
152
+ * @returns {bigint} Result of modular exponentiation
153
+ * @private
154
+ */
155
+ static powMod(base, exp, mod) {
156
+ let result = 1n, b = base % mod, e = exp;
157
+ while (e > 0n) {
158
+ if (e & 1n)
159
+ result = (result * b) % mod;
160
+ b = (b * b) % mod;
161
+ e >>= 1n;
162
+ }
163
+ return result;
164
+ }
165
+ /**
166
+ * Modular inverse
167
+ * @param a {bigint}
168
+ * @param m {bigint}
169
+ * @returns {bigint} Inversion result
170
+ * @private
171
+ */
172
+ static modInverse(a, m) {
173
+ let [old_r, r] = [a, m], [old_s, s] = [1n, 0n];
174
+ while (r !== 0n) {
175
+ const q = old_r / r;
176
+ [old_r, r] = [r, old_r - q * r];
177
+ [old_s, s] = [s, old_s - q * s];
178
+ }
179
+ return (old_s % m + m) % m;
180
+ }
181
+ /**
182
+ * Generate crypto key pair async
183
+ * @returns {ICryptoKeyPair} Crypto key pair
184
+ * TODO: GPU Calculations
185
+ */
186
+ async generateKeyPair() {
187
+ return this.generateKeyPairSync();
188
+ }
189
+ /**
190
+ * Generate crypto key pair sync
191
+ * @returns {ICryptoKeyPair} Crypto key pair
192
+ */
193
+ generateKeyPairSync() {
194
+ const a = _a.uniformPoly();
195
+ const s = _a.smallPoly();
196
+ const e = _a.smallPoly();
197
+ const as = _a.multiply(a, s);
198
+ const b = new Array(_a.N);
199
+ for (let i = 0; i < _a.N; i++)
200
+ b[i] = (as[i] + e[i]) % _a.Q;
201
+ const pub = QuarkDashUtils.concatBytes(_a.serializePoly(a), _a.serializePoly(b));
202
+ const priv = _a.serializePoly(s);
203
+ return { publicKey: pub, privateKey: priv };
204
+ }
205
+ /**
206
+ * Encapsulate async
207
+ * @param publicKey {Uint8Array} Public key buffer
208
+ * @returns {Promise<ICryptoEncapsulated>} Encapsulated data
209
+ * TODO: GPU Calculations
210
+ */
211
+ async encapsulate(publicKey) {
212
+ return this.encapsulateSync(publicKey);
213
+ }
214
+ /**
215
+ * Encapsulate sync
216
+ * @param publicKey {Uint8Array} Public key buffer
217
+ * @returns {ICryptoEncapsulated} Encapsulated data
218
+ */
219
+ encapsulateSync(publicKey) {
220
+ const aBytes = publicKey.slice(0, _a.N * 2);
221
+ const bBytes = publicKey.slice(_a.N * 2);
222
+ const a = _a.deserializePoly(aBytes);
223
+ const b = _a.deserializePoly(bBytes);
224
+ const sp = _a.smallPoly();
225
+ const ep = _a.smallPoly();
226
+ const uArr = _a.multiply(a, sp);
227
+ for (let i = 0; i < _a.N; i++)
228
+ uArr[i] = (uArr[i] + ep[i]) % _a.Q;
229
+ const w = _a.multiply(b, sp);
230
+ const shared = _a.roundToBits(w);
231
+ const ciphertext = _a.serializePoly(uArr);
232
+ return { ciphertext, sharedSecret: shared };
233
+ }
234
+ /**
235
+ * Decapsulate async
236
+ * @param privateKey {Uint8Array} Private key buffer
237
+ * @param ciphertext {Uint8Array} Cipher text buffer
238
+ * @returns {Promise<Uint8Array>} Buffer data
239
+ * TODO: GPU Calculations
240
+ */
241
+ async decapsulate(privateKey, ciphertext) {
242
+ return this.decapsulateSync(privateKey, ciphertext);
243
+ }
244
+ /**
245
+ * Decapsulate sync
246
+ * @param privateKey {Uint8Array} Private key buffer
247
+ * @param ciphertext {Uint8Array} Cipher text buffer
248
+ * @returns {Uint8Array} Buffer data
249
+ */
250
+ decapsulateSync(privateKey, ciphertext) {
251
+ const s = _a.deserializePoly(privateKey);
252
+ const u = _a.deserializePoly(ciphertext);
253
+ const w = _a.multiply(u, s);
254
+ return _a.roundToBits(w);
255
+ }
256
+ }
257
+ _a = QuarkDashKeyExchange;
258
+ // Ring-LWE Constants
259
+ QuarkDashKeyExchange.N = 256;
260
+ QuarkDashKeyExchange.Q = 7681n;
261
+ QuarkDashKeyExchange.ROOT = 7n;
262
+ QuarkDashKeyExchange.INV_N = _a.modInverse(BigInt(_a.N), _a.Q);
263
+ //# sourceMappingURL=ringlwe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ringlwe.js","sourceRoot":"","sources":["../../src/ringlwe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,313 @@
1
+ /**
2
+ * QuarkDash Crypto Utils
3
+ *
4
+ * @git https://github.com/devsdaddy/quarkdash
5
+ * @version 1.0.0
6
+ * @author Elijah Rastorguev
7
+ * @build 1000
8
+ * @website https://dev.to/devsdaddy
9
+ */
10
+ import crypto from "crypto";
11
+ /**
12
+ * Crypto Utils Class
13
+ */
14
+ export class QuarkDashUtils {
15
+ /**
16
+ * Run SHA256 async
17
+ * @param data {Uint8Array} Bytes buffer
18
+ * @return {Promise<Uint8Array>} Result
19
+ */
20
+ static async sha256(data) {
21
+ const hash = await crypto.subtle.digest('SHA-256', data);
22
+ return new Uint8Array(hash);
23
+ }
24
+ /**
25
+ * Run SHA256 sync
26
+ * @param data {Uint8Array} Bytes buffer
27
+ * @return {Uint8Array} Result
28
+ */
29
+ static sha256Sync(data) {
30
+ if (typeof require !== 'undefined') {
31
+ const crypto = require('crypto');
32
+ const hash = crypto.createHash('sha256').update(data).digest();
33
+ return new Uint8Array(hash);
34
+ }
35
+ throw new Error('Synchronous SHA256 not available in browser');
36
+ }
37
+ /**
38
+ * Get Shake-256 result async
39
+ * @param data {Uint8Array} Bytes buffer
40
+ * @param len {number} Buffer length
41
+ * @return {Promise<Uint8Array>} Result buffer
42
+ */
43
+ static async shake256(data, len) {
44
+ const result = new Uint8Array(len);
45
+ let counter = 0;
46
+ let offset = 0;
47
+ while (offset < len) {
48
+ const cnt = new Uint8Array(4);
49
+ cnt[0] = (counter >> 24) & 0xFF;
50
+ cnt[1] = (counter >> 16) & 0xFF;
51
+ cnt[2] = (counter >> 8) & 0xFF;
52
+ cnt[3] = counter & 0xFF;
53
+ const hash = await this.sha256(this.concatBytes(data, cnt));
54
+ const take = Math.min(hash.length, len - offset);
55
+ result.set(hash.slice(0, take), offset);
56
+ offset += take;
57
+ counter++;
58
+ }
59
+ return result;
60
+ }
61
+ /**
62
+ * Get Shake-256 result sync
63
+ * @param data {Uint8Array} Bytes buffer
64
+ * @param len {number} Buffer length
65
+ * @return {Uint8Array} Result buffer
66
+ */
67
+ static shake256Sync(data, len) {
68
+ const result = new Uint8Array(len);
69
+ let counter = 0;
70
+ let offset = 0;
71
+ while (offset < len) {
72
+ const cnt = new Uint8Array(4);
73
+ cnt[0] = (counter >> 24) & 0xFF;
74
+ cnt[1] = (counter >> 16) & 0xFF;
75
+ cnt[2] = (counter >> 8) & 0xFF;
76
+ cnt[3] = counter & 0xFF;
77
+ const hash = this.sha256Sync(this.concatBytes(data, cnt));
78
+ const take = Math.min(hash.length, len - offset);
79
+ result.set(hash.slice(0, take), offset);
80
+ offset += take;
81
+ counter++;
82
+ }
83
+ return result;
84
+ }
85
+ /**
86
+ * Concat bytes
87
+ * @param arrays {Uint8Array|null|undefined} Input arrays for concat
88
+ * @returns {Uint8Array} Result buffer
89
+ */
90
+ static concatBytes(...arrays) {
91
+ const valid = arrays.filter(a => a != null);
92
+ const total = valid.reduce((s, a) => s + a.length, 0);
93
+ const res = new Uint8Array(total);
94
+ let pos = 0;
95
+ for (const a of valid) {
96
+ res.set(a, pos);
97
+ pos += a.length;
98
+ }
99
+ return res;
100
+ }
101
+ /**
102
+ * Coerce Array
103
+ * @param arg {any} Argument
104
+ * @param copy {any} Copy
105
+ * @protected
106
+ */
107
+ static coerceArray(arg, copy) {
108
+ let self = this;
109
+ // ArrayBuffer view
110
+ if (arg.buffer && arg.name === 'Uint8Array') {
111
+ if (copy) {
112
+ if (arg.slice) {
113
+ arg = arg.slice();
114
+ }
115
+ else {
116
+ arg = Array.prototype.slice.call(arg);
117
+ }
118
+ }
119
+ return arg;
120
+ }
121
+ // It's an array; check it is a valid representation of a byte
122
+ if (Array.isArray(arg)) {
123
+ if (!self.checkInts(arg)) {
124
+ throw new Error('Array contains invalid value: ' + arg);
125
+ }
126
+ return new Uint8Array(arg);
127
+ }
128
+ // Something else, but behaves like an array (maybe a Buffer? Arguments?)
129
+ if (self.checkInt(arg.length) && self.checkInts(arg)) {
130
+ return new Uint8Array(arg);
131
+ }
132
+ throw new Error('unsupported array-like object');
133
+ }
134
+ /**
135
+ * Check if value is int
136
+ * @param value {any} Value
137
+ * @returns {boolean}
138
+ * @protected
139
+ */
140
+ static checkInt(value) {
141
+ return parseInt(value) === value;
142
+ }
143
+ /**
144
+ * Check Ints inside array
145
+ * @param arrayish {any} Array
146
+ * @returns {boolean} Any value is integer and between 0 and 255
147
+ * @protected
148
+ */
149
+ static checkInts(arrayish) {
150
+ let self = this;
151
+ if (!self.checkInt(arrayish.length)) {
152
+ return false;
153
+ }
154
+ for (let i = 0; i < arrayish.length; i++) {
155
+ if (!self.checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) {
156
+ return false;
157
+ }
158
+ }
159
+ return true;
160
+ }
161
+ /**
162
+ * Get random bytes
163
+ * @param len {number} buffer length
164
+ * @returns {Uint8Array} Random bytes buffer
165
+ */
166
+ static randomBytes(len) {
167
+ return crypto.getRandomValues(new Uint8Array(len));
168
+ }
169
+ /**
170
+ * Convert raw text to bytes array
171
+ * @param text {string} raw string
172
+ * @returns {any} bytes array
173
+ */
174
+ static textToBytes(text) {
175
+ let self = this;
176
+ let result = [], i = 0;
177
+ text = encodeURI(text);
178
+ while (i < text.length) {
179
+ let c = text.charCodeAt(i++);
180
+ // if it is a % sign, encode the following 2 bytes as a hex value
181
+ if (c === 37) {
182
+ result.push(parseInt(text.substr(i, 2), 16));
183
+ i += 2;
184
+ // otherwise, just the actual byte
185
+ }
186
+ else {
187
+ result.push(c);
188
+ }
189
+ }
190
+ return self.coerceArray(result);
191
+ }
192
+ /**
193
+ * Convert bytes array to raw string
194
+ * @param bytes {number[]|Uint8Array} Bytes array
195
+ * @returns {string} raw string
196
+ */
197
+ static bytesToText(bytes) {
198
+ return new TextDecoder().decode(bytes);
199
+ let result = [], i = 0;
200
+ while (i < bytes.length) {
201
+ let c = bytes[i];
202
+ if (c < 128) {
203
+ result.push(String.fromCharCode(c));
204
+ i++;
205
+ }
206
+ else if (c > 191 && c < 224) {
207
+ result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f)));
208
+ i += 2;
209
+ }
210
+ else {
211
+ result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f)));
212
+ i += 3;
213
+ }
214
+ }
215
+ return result.join('');
216
+ }
217
+ /**
218
+ * Convert HEX string to bytes array
219
+ * @param text {string} HEX string
220
+ * @returns {number[]} bytes array
221
+ * @constructor
222
+ */
223
+ static HEXToBytes(text) {
224
+ let result = [];
225
+ for (let i = 0; i < text.length; i += 2) {
226
+ result.push(parseInt(text.substr(i, 2), 16));
227
+ }
228
+ return result;
229
+ }
230
+ /**
231
+ * Convert bytes array to HEX string
232
+ * @param bytes {number[]|Uint8Array} Bytes array
233
+ * @returns {string} HEX String
234
+ */
235
+ static bytesToHEX(bytes) {
236
+ let self = this;
237
+ let result = [];
238
+ for (let i = 0; i < bytes.length; i++) {
239
+ let v = bytes[i];
240
+ result.push(self.HEXChars[(v & 0xf0) >> 4] + self.HEXChars[v & 0x0f]);
241
+ }
242
+ return result.join('');
243
+ }
244
+ /**
245
+ * Constant time equal
246
+ * @param a {Uint8Array} first buffer
247
+ * @param b {Uint8Array} second buffer
248
+ * @returns {boolean} Equal or not
249
+ */
250
+ static constantTimeEqual(a, b) {
251
+ if (a.length !== b.length)
252
+ return false;
253
+ let diff = 0;
254
+ for (let i = 0; i < a.length; i++)
255
+ diff |= a[i] ^ b[i];
256
+ return diff === 0;
257
+ }
258
+ /**
259
+ * Secure zero
260
+ * @param bytes {Uint8Array} bytes buffer
261
+ */
262
+ static secureZero(bytes) {
263
+ for (let i = 0; i < bytes.length; i++)
264
+ bytes[i] = 0;
265
+ }
266
+ /**
267
+ * Read U32 from buffer
268
+ * @param arr {Uint8Array} buffer
269
+ * @param off {number} Offset
270
+ * @returns {number} U32
271
+ * @private
272
+ */
273
+ static readU32(arr, off) {
274
+ return (arr[off] | (arr[off + 1] << 8) | (arr[off + 2] << 16) | (arr[off + 3] << 24)) >>> 0;
275
+ }
276
+ /**
277
+ * Write U32 to buffer
278
+ * @param v {number} U32
279
+ * @param arr {Uint8Array} Target buffer
280
+ * @param off {number} Offset
281
+ * @private
282
+ */
283
+ static writeU32(v, arr, off) {
284
+ arr[off] = v & 0xFF;
285
+ arr[off + 1] = (v >> 8) & 0xFF;
286
+ arr[off + 2] = (v >> 16) & 0xFF;
287
+ arr[off + 3] = (v >> 24) & 0xFF;
288
+ }
289
+ /**
290
+ * Read Uint32 Value
291
+ * @param arr {Uint8Array} Bytes buffer
292
+ * @param off {number} Offset
293
+ * @returns {number} Uint32 Value
294
+ */
295
+ static readUint32(arr, off) {
296
+ return (arr[off] | (arr[off + 1] << 8) | (arr[off + 2] << 16) | (arr[off + 3] << 24)) >>> 0;
297
+ }
298
+ /**
299
+ * Read Uint64 Value
300
+ * @param arr {Uint8Array} Bytes buffer
301
+ * @param off {number} offset
302
+ * @returns {bigint} Bigint
303
+ */
304
+ static readUint64(arr, off) {
305
+ let v = 0n;
306
+ for (let i = 0; i < 8; i++)
307
+ v |= BigInt(arr[off + i]) << BigInt(i * 8);
308
+ return v;
309
+ }
310
+ }
311
+ // Protected Constants
312
+ QuarkDashUtils.HEXChars = '0123456789abcdef';
313
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}