quarkdash 1.0.8 → 1.1.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 (114) hide show
  1. package/README.md +4 -2
  2. package/dist/cjs/cipher/chacha.js +154 -0
  3. package/dist/cjs/cipher/chacha.js.map +1 -0
  4. package/dist/cjs/cipher/cipher.js +34 -0
  5. package/dist/cjs/cipher/cipher.js.map +1 -0
  6. package/dist/cjs/cipher/gimli.js +143 -0
  7. package/dist/cjs/cipher/gimli.js.map +1 -0
  8. package/dist/cjs/core/kdf.js.map +1 -0
  9. package/dist/cjs/{mac.js → core/mac.js} +37 -1
  10. package/dist/cjs/core/mac.js.map +1 -0
  11. package/dist/cjs/{types.js.map → core/types.js.map} +1 -1
  12. package/dist/cjs/{utils.js → core/utils.js} +25 -8
  13. package/dist/cjs/core/utils.js.map +1 -0
  14. package/dist/cjs/core/wasm_loader.js +100 -0
  15. package/dist/cjs/core/wasm_loader.js.map +1 -0
  16. package/dist/cjs/crypto.js +30 -13
  17. package/dist/cjs/crypto.js.map +1 -1
  18. package/dist/cjs/{sha.js → hash/sha.js} +3 -2
  19. package/dist/cjs/hash/sha.js.map +1 -0
  20. package/dist/cjs/hash/shake.js +318 -0
  21. package/dist/cjs/hash/shake.js.map +1 -0
  22. package/dist/cjs/index.js +16 -11
  23. package/dist/cjs/index.js.map +1 -1
  24. package/dist/cjs/{ringlwe.js → session/baselwe.js} +186 -177
  25. package/dist/cjs/session/baselwe.js.map +1 -0
  26. package/dist/cjs/session/ringlwe.js +19 -0
  27. package/dist/cjs/session/ringlwe.js.map +1 -0
  28. package/dist/cjs/session/rringlwe.js +42 -0
  29. package/dist/cjs/session/rringlwe.js.map +1 -0
  30. package/dist/esm/cipher/chacha.js +150 -0
  31. package/dist/esm/cipher/chacha.js.map +1 -0
  32. package/dist/esm/cipher/cipher.js +30 -0
  33. package/dist/esm/cipher/cipher.js.map +1 -0
  34. package/dist/esm/cipher/gimli.js +139 -0
  35. package/dist/esm/cipher/gimli.js.map +1 -0
  36. package/dist/esm/core/kdf.js.map +1 -0
  37. package/dist/esm/core/mac.js +87 -0
  38. package/dist/esm/core/mac.js.map +1 -0
  39. package/dist/esm/{types.js.map → core/types.js.map} +1 -1
  40. package/dist/esm/{utils.js → core/utils.js} +24 -4
  41. package/dist/esm/core/utils.js.map +1 -0
  42. package/dist/esm/core/wasm_loader.js +64 -0
  43. package/dist/esm/core/wasm_loader.js.map +1 -0
  44. package/dist/esm/crypto.js +30 -13
  45. package/dist/esm/crypto.js.map +1 -1
  46. package/dist/esm/{sha.js → hash/sha.js} +3 -2
  47. package/dist/esm/hash/sha.js.map +1 -0
  48. package/dist/esm/hash/shake.js +311 -0
  49. package/dist/esm/hash/shake.js.map +1 -0
  50. package/dist/esm/index.js +16 -11
  51. package/dist/esm/index.js.map +1 -1
  52. package/dist/esm/{ringlwe.js → session/baselwe.js} +184 -175
  53. package/dist/esm/session/baselwe.js.map +1 -0
  54. package/dist/esm/session/ringlwe.js +15 -0
  55. package/dist/esm/session/ringlwe.js.map +1 -0
  56. package/dist/esm/session/rringlwe.js +38 -0
  57. package/dist/esm/session/rringlwe.js.map +1 -0
  58. package/dist/shake.wasm +0 -0
  59. package/dist/types/cipher/chacha.d.ts +67 -0
  60. package/dist/types/cipher/cipher.d.ts +31 -0
  61. package/dist/types/cipher/gimli.d.ts +64 -0
  62. package/dist/types/{kdf.d.ts → core/kdf.d.ts} +3 -2
  63. package/dist/types/{mac.d.ts → core/mac.d.ts} +21 -2
  64. package/dist/types/{types.d.ts → core/types.d.ts} +5 -2
  65. package/dist/types/{utils.d.ts → core/utils.d.ts} +13 -0
  66. package/dist/types/core/wasm_loader.d.ts +5 -0
  67. package/dist/types/crypto.d.ts +8 -4
  68. package/dist/types/{sha.d.ts → hash/sha.d.ts} +3 -2
  69. package/dist/types/hash/shake.d.ts +85 -0
  70. package/dist/types/index.d.ts +15 -10
  71. package/dist/types/{ringlwe.d.ts → session/baselwe.d.ts} +49 -59
  72. package/dist/types/session/ringlwe.d.ts +21 -0
  73. package/dist/types/session/rringlwe.d.ts +27 -0
  74. package/package.json +12 -4
  75. package/wasm/shake.wasm +0 -0
  76. package/dist/cjs/cipher.js +0 -265
  77. package/dist/cjs/cipher.js.map +0 -1
  78. package/dist/cjs/kdf.js.map +0 -1
  79. package/dist/cjs/mac.js.map +0 -1
  80. package/dist/cjs/ringlwe.js.map +0 -1
  81. package/dist/cjs/sha.js.map +0 -1
  82. package/dist/cjs/shake.js +0 -159
  83. package/dist/cjs/shake.js.map +0 -1
  84. package/dist/cjs/utils.js.map +0 -1
  85. package/dist/esm/cipher.js +0 -259
  86. package/dist/esm/cipher.js.map +0 -1
  87. package/dist/esm/kdf.js.map +0 -1
  88. package/dist/esm/mac.js +0 -51
  89. package/dist/esm/mac.js.map +0 -1
  90. package/dist/esm/ringlwe.js.map +0 -1
  91. package/dist/esm/sha.js.map +0 -1
  92. package/dist/esm/shake.js +0 -155
  93. package/dist/esm/shake.js.map +0 -1
  94. package/dist/esm/utils.js.map +0 -1
  95. package/dist/types/cipher.d.ts +0 -153
  96. package/dist/types/shake.d.ts +0 -53
  97. package/docutil.ts +0 -84
  98. package/img/cover.png +0 -0
  99. package/src/cipher.ts +0 -260
  100. package/src/crypto.ts +0 -306
  101. package/src/index.ts +0 -27
  102. package/src/kdf.ts +0 -64
  103. package/src/mac.ts +0 -65
  104. package/src/ringlwe.ts +0 -340
  105. package/src/sha.ts +0 -265
  106. package/src/shake.ts +0 -163
  107. package/src/types.ts +0 -75
  108. package/src/utils.ts +0 -290
  109. package/tsconfig.cjs.json +0 -7
  110. package/tsconfig.json +0 -18
  111. /package/dist/cjs/{kdf.js → core/kdf.js} +0 -0
  112. /package/dist/cjs/{types.js → core/types.js} +0 -0
  113. /package/dist/esm/{kdf.js → core/kdf.js} +0 -0
  114. /package/dist/esm/{types.js → core/types.js} +0 -0
@@ -1,10 +1,26 @@
1
- var _a;
2
- import { QuarkDashUtils } from "./utils";
3
- import { SHA256 } from "./sha";
4
1
  /**
5
- * Ring-LWE based key exchange implementation
2
+ * QuarkDash Basic LWE Utils Implementation
3
+ *
4
+ * @git https://github.com/devsdaddy/quarkdash
5
+ * @version 1.1.0
6
+ * @author Elijah Rastorguev
7
+ * @build 1003
8
+ * @website https://dev.to/devsdaddy
9
+ * @updated 13.04.2026
6
10
  */
7
- export class QuarkDashKeyExchange {
11
+ import { QuarkDashUtils } from "../core/utils";
12
+ import { SHA256 } from "../hash/sha";
13
+ /**
14
+ * Base Ring-LWE Function
15
+ */
16
+ export class BaseRingLWE {
17
+ constructor() {
18
+ // Constants for override
19
+ this.N = 256;
20
+ this.Q = 7681n;
21
+ this.ROOT = 7n;
22
+ this.INV_N = this.modInverse(BigInt(this.N), this.Q);
23
+ }
8
24
  /**
9
25
  * Generate crypto key pair async
10
26
  * @returns {ICryptoKeyPair} Crypto key pair
@@ -18,16 +34,16 @@ export class QuarkDashKeyExchange {
18
34
  * @returns {ICryptoKeyPair} Crypto key pair
19
35
  */
20
36
  generateKeyPairSync() {
21
- const a = _a.uniformPoly();
22
- const s = _a.smallPoly();
23
- const e = _a.errorPoly();
24
- const as = _a.multiply(a, s);
25
- const b = new Array(_a.N);
26
- for (let i = 0; i < _a.N; i++) {
27
- b[i] = (as[i] + e[i]) % _a.Q;
37
+ const a = this.uniformPoly();
38
+ const s = this.smallPoly();
39
+ const e = this.errorPoly();
40
+ const as = this.multiply(a, s);
41
+ const b = new Array(this.N);
42
+ for (let i = 0; i < this.N; i++) {
43
+ b[i] = (as[i] + e[i]) % this.Q;
28
44
  }
29
- const publicKey = QuarkDashUtils.concatBytes(_a.serializePoly(a), _a.serializePoly(b));
30
- const privateKey = _a.serializePoly(s);
45
+ const publicKey = QuarkDashUtils.concatBytes(this.serializePoly(a), this.serializePoly(b));
46
+ const privateKey = this.serializePoly(s);
31
47
  return { publicKey, privateKey };
32
48
  }
33
49
  /**
@@ -45,20 +61,20 @@ export class QuarkDashKeyExchange {
45
61
  * @returns {ICryptoEncapsulated} Encapsulated data
46
62
  */
47
63
  encapsulateSync(publicKey) {
48
- const aBytes = publicKey.slice(0, _a.N * 2);
49
- const bBytes = publicKey.slice(_a.N * 2);
50
- const a = _a.deserializePoly(aBytes);
51
- const b = _a.deserializePoly(bBytes);
52
- const sp = _a.smallPoly();
53
- const ep = _a.errorPoly();
54
- const uArr = _a.multiply(a, sp);
55
- for (let i = 0; i < _a.N; i++) {
56
- uArr[i] = (uArr[i] + ep[i]) % _a.Q;
64
+ const aBytes = publicKey.slice(0, this.N * 2);
65
+ const bBytes = publicKey.slice(this.N * 2);
66
+ const a = this.deserializePoly(aBytes);
67
+ const b = this.deserializePoly(bBytes);
68
+ const sp = this.smallPoly();
69
+ const ep = this.errorPoly();
70
+ const uArr = this.multiply(a, sp);
71
+ for (let i = 0; i < this.N; i++) {
72
+ uArr[i] = (uArr[i] + ep[i]) % this.Q;
57
73
  }
58
- const w = _a.multiply(b, sp);
59
- const rawSecret = _a.roundToBits(w);
60
- const ciphertext = _a.serializePoly(uArr);
61
- const sharedSecret = _a.hashSharedSecret(rawSecret, publicKey, ciphertext);
74
+ const w = this.multiply(b, sp);
75
+ const rawSecret = this.roundToBits(w);
76
+ const ciphertext = this.serializePoly(uArr);
77
+ const sharedSecret = this.hashSharedSecretSync(rawSecret, publicKey, ciphertext);
62
78
  return { ciphertext, sharedSecret };
63
79
  }
64
80
  /**
@@ -80,101 +96,114 @@ export class QuarkDashKeyExchange {
80
96
  * @returns {Uint8Array} Buffer data
81
97
  */
82
98
  decapsulateSync(privateKey, peerPublicKey, ciphertext) {
83
- const s = _a.deserializePoly(privateKey);
84
- const u = _a.deserializePoly(ciphertext);
85
- const w = _a.multiply(u, s);
86
- const rawSecret = _a.roundToBits(w);
87
- return _a.hashSharedSecret(rawSecret, peerPublicKey, ciphertext);
99
+ const s = this.deserializePoly(privateKey);
100
+ const u = this.deserializePoly(ciphertext);
101
+ const w = this.multiply(u, s);
102
+ const rawSecret = this.roundToBits(w);
103
+ return this.hashSharedSecretSync(rawSecret, peerPublicKey, ciphertext);
88
104
  }
89
105
  /**
90
- * Get small polygon
91
- * @returns {bigint[]} Small polygon
106
+ * Modular inverse
107
+ * @param a {bigint}
108
+ * @param m {bigint}
109
+ * @returns {bigint} Inversion result
92
110
  * @private
93
111
  */
94
- static smallPoly() {
95
- const poly = new Array(this.N);
96
- const bytesNeeded = Math.ceil(this.N * 2 / 8);
97
- const randomBytes = QuarkDashUtils.randomBytes(bytesNeeded);
98
- for (let i = 0; i < this.N; i++) {
99
- const byteIdx = Math.floor(i * 2 / 8);
100
- const bitShift = (i * 2) % 8;
101
- const val = (randomBytes[byteIdx] >> bitShift) & 0x03; // 0..3
102
- if (val === 0)
103
- poly[i] = -1n;
104
- else if (val === 1)
105
- poly[i] = 0n;
106
- else if (val === 2)
107
- poly[i] = 1n;
108
- else {
109
- poly[i] = 1n;
110
- }
112
+ modInverse(a, m) {
113
+ let [old_r, r] = [a, m];
114
+ let [old_s, s] = [1n, 0n];
115
+ while (r !== 0n) {
116
+ const q = old_r / r;
117
+ [old_r, r] = [r, old_r - q * r];
118
+ [old_s, s] = [s, old_s - q * s];
111
119
  }
112
- return poly;
120
+ return (old_s % m + m) % m;
113
121
  }
114
122
  /**
115
- * Uniform polygon
116
- * @returns {bigint[]}
123
+ * Modular exponentiation
124
+ * @param base {bigint} Base
125
+ * @param exp {bigint} exponential
126
+ * @param mod {bigint} module
127
+ * @returns {bigint} Result of modular exponentiation
117
128
  * @private
118
129
  */
119
- static uniformPoly() {
120
- const poly = new Array(this.N);
121
- const bytes = QuarkDashUtils.randomBytes(this.N * 2);
130
+ powMod(base, exp, mod) {
131
+ let result = 1n;
132
+ let b = base % mod;
133
+ let e = exp;
134
+ while (e > 0n) {
135
+ if (e & 1n)
136
+ result = (result * b) % mod;
137
+ b = (b * b) % mod;
138
+ e >>= 1n;
139
+ }
140
+ return result;
141
+ }
142
+ /**
143
+ * Round to bits
144
+ * @param poly {bigint[]} Polygon
145
+ * @returns {Uint8Array} rounded buffer
146
+ * @private
147
+ */
148
+ roundToBits(poly) {
149
+ const result = new Uint8Array(32);
122
150
  for (let i = 0; i < this.N; i++) {
123
- const val = (bytes[2 * i] | (bytes[2 * i + 1] << 8)) % Number(this.Q);
124
- poly[i] = BigInt(val);
151
+ const bit = (Number(poly[i]) > Number(this.Q) / 2) ? 1 : 0;
152
+ if (bit)
153
+ result[i >> 3] |= (1 << (i & 7));
125
154
  }
126
- return poly;
155
+ return result;
127
156
  }
128
157
  /**
129
- * Error polygon
158
+ * Deserialize Polygon
159
+ * @param bytes {Uint8Array} Polygon buffer
160
+ * @returns {bigint[]} Polygon
130
161
  * @private
131
162
  */
132
- static errorPoly() {
163
+ deserializePoly(bytes) {
133
164
  const poly = new Array(this.N);
134
- const SIGMA = 3.19;
135
165
  for (let i = 0; i < this.N; i++) {
136
- let sum = 0;
137
- const randBytes = QuarkDashUtils.randomBytes(12);
138
- for (let j = 0; j < 12; j++) {
139
- sum += randBytes[j];
140
- }
141
- // Центрируем и масштабируем к [-6,6]
142
- const centered = (sum / 255) - 6;
143
- const error = Math.floor(centered * SIGMA);
144
- poly[i] = BigInt(Math.max(-Number(this.Q), Math.min(Number(this.Q) - 1, error)));
166
+ const val = bytes[2 * i] | (bytes[2 * i + 1] << 8);
167
+ poly[i] = BigInt(val);
145
168
  }
146
169
  return poly;
147
170
  }
148
171
  /**
149
- * NTT Operation
172
+ * Serialize polygon
150
173
  * @param poly {bigint[]} Polygon
174
+ * @returns {Uint8Array} Polygon buffer
151
175
  * @private
152
176
  */
153
- static ntt(poly) {
154
- const res = [...poly];
155
- let len = 2;
156
- while (len <= this.N) {
157
- const wlen = this.powMod(this.ROOT, BigInt(this.N / len), this.Q);
158
- for (let i = 0; i < this.N; i += len) {
159
- let w = 1n;
160
- for (let j = 0; j < len / 2; j++) {
161
- const u = res[i + j];
162
- const v = (res[i + j + len / 2] * w) % this.Q;
163
- res[i + j] = (u + v) % this.Q;
164
- res[i + j + len / 2] = (u - v + this.Q) % this.Q;
165
- w = (w * wlen) % this.Q;
166
- }
167
- }
168
- len <<= 1;
177
+ serializePoly(poly) {
178
+ const bytes = new Uint8Array(this.N * 2);
179
+ for (let i = 0; i < this.N; i++) {
180
+ const val = Number(poly[i]);
181
+ bytes[2 * i] = val & 0xFF;
182
+ bytes[2 * i + 1] = (val >> 8) & 0xFF;
169
183
  }
170
- return res;
184
+ return bytes;
185
+ }
186
+ /**
187
+ * Multiply
188
+ * @param a {bigint[]} Polygon
189
+ * @param b {bigint[]} Polygon
190
+ * @returns {bigint[]} Multiplied polygons
191
+ */
192
+ multiply(a, b) {
193
+ const aNTT = this.ntt(a);
194
+ const bNTT = this.ntt(b);
195
+ const prod = new Array(this.N);
196
+ for (let i = 0; i < this.N; i++) {
197
+ prod[i] = (aNTT[i] * bNTT[i]) % this.Q;
198
+ }
199
+ return this.invNTT(prod);
171
200
  }
172
201
  /**
173
202
  * Inverse NTT
174
203
  * @param poly {bigint[]} Polygon
175
204
  * @private
176
205
  */
177
- static invNTT(poly) {
206
+ invNTT(poly) {
178
207
  const res = [...poly];
179
208
  let len = this.N;
180
209
  while (len >= 2) {
@@ -197,118 +226,98 @@ export class QuarkDashKeyExchange {
197
226
  return res;
198
227
  }
199
228
  /**
200
- * Multiply
201
- * @param a {bigint[]} Polygon
202
- * @param b {bigint[]} Polygon
203
- * @returns {bigint[]} Multiplied polygons
204
- */
205
- static multiply(a, b) {
206
- const aNTT = this.ntt(a);
207
- const bNTT = this.ntt(b);
208
- const prod = new Array(this.N);
209
- for (let i = 0; i < this.N; i++) {
210
- prod[i] = (aNTT[i] * bNTT[i]) % this.Q;
211
- }
212
- return this.invNTT(prod);
213
- }
214
- /**
215
- * Serialize polygon
229
+ * NTT Operation
216
230
  * @param poly {bigint[]} Polygon
217
- * @returns {Uint8Array} Polygon buffer
218
231
  * @private
219
232
  */
220
- static serializePoly(poly) {
221
- const bytes = new Uint8Array(this.N * 2);
222
- for (let i = 0; i < this.N; i++) {
223
- const val = Number(poly[i]);
224
- bytes[2 * i] = val & 0xFF;
225
- bytes[2 * i + 1] = (val >> 8) & 0xFF;
233
+ ntt(poly) {
234
+ const res = [...poly];
235
+ let len = 2;
236
+ while (len <= this.N) {
237
+ const wlen = this.powMod(this.ROOT, BigInt(this.N / len), this.Q);
238
+ for (let i = 0; i < this.N; i += len) {
239
+ let w = 1n;
240
+ for (let j = 0; j < len / 2; j++) {
241
+ const u = res[i + j];
242
+ const v = (res[i + j + len / 2] * w) % this.Q;
243
+ res[i + j] = (u + v) % this.Q;
244
+ res[i + j + len / 2] = BigInt((u - v + this.Q) % this.Q);
245
+ w = (w * wlen) % this.Q;
246
+ }
247
+ }
248
+ len <<= 1;
226
249
  }
227
- return bytes;
250
+ return res;
228
251
  }
229
252
  /**
230
- * Deserialize Polygon
231
- * @param bytes {Uint8Array} Polygon buffer
232
- * @returns {bigint[]} Polygon
253
+ * Error polygon
233
254
  * @private
234
255
  */
235
- static deserializePoly(bytes) {
256
+ errorPoly() {
236
257
  const poly = new Array(this.N);
258
+ const SIGMA = 3.19;
237
259
  for (let i = 0; i < this.N; i++) {
238
- const val = bytes[2 * i] | (bytes[2 * i + 1] << 8);
239
- poly[i] = BigInt(val);
260
+ let sum = 0;
261
+ const randBytes = QuarkDashUtils.randomBytes(12);
262
+ for (let j = 0; j < 12; j++) {
263
+ sum += randBytes[j];
264
+ }
265
+ const centered = (sum / 255) - 6;
266
+ const error = Math.floor(centered * SIGMA);
267
+ poly[i] = BigInt(Math.max(-Number(this.Q), Math.min(Number(this.Q) - 1, error)));
240
268
  }
241
269
  return poly;
242
270
  }
243
271
  /**
244
- * Round to bits
245
- * @param poly {bigint[]} Polygon
246
- * @returns {Uint8Array} rounded buffer
272
+ * Uniform polygon
273
+ * @returns {bigint[]}
247
274
  * @private
248
275
  */
249
- static roundToBits(poly) {
250
- const result = new Uint8Array(32);
276
+ uniformPoly() {
277
+ const poly = new Array(this.N);
278
+ const bytes = QuarkDashUtils.randomBytes(this.N * 2);
251
279
  for (let i = 0; i < this.N; i++) {
252
- const bit = (Number(poly[i]) > Number(this.Q) / 2) ? 1 : 0;
253
- if (bit)
254
- result[i >> 3] |= (1 << (i & 7));
255
- }
256
- return result;
257
- }
258
- /**
259
- * Modular exponentiation
260
- * @param base {bigint} Base
261
- * @param exp {bigint} exponential
262
- * @param mod {bigint} module
263
- * @returns {bigint} Result of modular exponentiation
264
- * @private
265
- */
266
- static powMod(base, exp, mod) {
267
- let result = 1n;
268
- let b = base % mod;
269
- let e = exp;
270
- while (e > 0n) {
271
- if (e & 1n)
272
- result = (result * b) % mod;
273
- b = (b * b) % mod;
274
- e >>= 1n;
280
+ const val = (bytes[2 * i] | (bytes[2 * i + 1] << 8)) % Number(this.Q);
281
+ poly[i] = BigInt(val);
275
282
  }
276
- return result;
283
+ return poly;
277
284
  }
278
285
  /**
279
- * Modular inverse
280
- * @param a {bigint}
281
- * @param m {bigint}
282
- * @returns {bigint} Inversion result
286
+ * Get small polygon
287
+ * @returns {bigint[]} Small polygon
283
288
  * @private
284
289
  */
285
- static modInverse(a, m) {
286
- let [old_r, r] = [a, m];
287
- let [old_s, s] = [1n, 0n];
288
- while (r !== 0n) {
289
- const q = old_r / r;
290
- [old_r, r] = [r, old_r - q * r];
291
- [old_s, s] = [s, old_s - q * s];
290
+ smallPoly() {
291
+ const poly = new Array(this.N);
292
+ const bytesNeeded = Math.ceil(this.N * 2 / 8);
293
+ const randomBytes = QuarkDashUtils.randomBytes(bytesNeeded);
294
+ for (let i = 0; i < this.N; i++) {
295
+ const byteIdx = Math.floor(i * 2 / 8);
296
+ const bitShift = (i * 2) % 8;
297
+ const val = (randomBytes[byteIdx] >> bitShift) & 0x03; // 0..3
298
+ if (val === 0)
299
+ poly[i] = -1n;
300
+ else if (val === 1)
301
+ poly[i] = 0n;
302
+ else if (val === 2)
303
+ poly[i] = 1n;
304
+ else {
305
+ poly[i] = 1n;
306
+ }
292
307
  }
293
- return (old_s % m + m) % m;
308
+ return poly;
294
309
  }
295
310
  /**
296
311
  * Hash shared secret
297
- * @param ss {Uint8Array} Shared secret buffer
298
- * @param publicKey {Uint8Array} Public key buffer
299
- * @param ciphertext {Uint8Array} Cipher text buffer
300
- * @returns {Uint8Array} Shared secret hash
301
- * @private
312
+ * @param ss {Uint8Array} Shared Secret
313
+ * @param publicKey {Uint8Array} Public Key
314
+ * @param ciphertext {Uint8Array} Cipher text
315
+ * @returns {Uint8Array} Hash buffer
316
+ * @protected
302
317
  */
303
- static hashSharedSecret(ss, publicKey, ciphertext) {
318
+ hashSharedSecretSync(ss, publicKey, ciphertext) {
304
319
  const data = QuarkDashUtils.concatBytes(ss, publicKey, ciphertext);
305
320
  return SHA256.hash(data, true);
306
321
  }
307
322
  }
308
- _a = QuarkDashKeyExchange;
309
- // Ring-LWE Constants
310
- QuarkDashKeyExchange.N = 256;
311
- QuarkDashKeyExchange.Q = 7681n;
312
- QuarkDashKeyExchange.ROOT = 7n;
313
- QuarkDashKeyExchange.INV_N = _a.modInverse(BigInt(_a.N), _a.Q);
314
- //# sourceMappingURL=ringlwe.js.map
323
+ //# sourceMappingURL=baselwe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baselwe.js","sourceRoot":"","sources":["../../../src/session/baselwe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { BaseRingLWE } from "./baselwe";
2
+ /**
3
+ * Ring-LWE based key exchange implementation
4
+ */
5
+ export class QuarkDashRLWE extends BaseRingLWE {
6
+ constructor() {
7
+ super(...arguments);
8
+ // Ring-LWE Constants
9
+ this.N = 256;
10
+ this.Q = 7681n;
11
+ this.ROOT = 7n;
12
+ this.INV_N = this.modInverse(BigInt(this.N), this.Q);
13
+ }
14
+ }
15
+ //# sourceMappingURL=ringlwe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ringlwe.js","sourceRoot":"","sources":["../../../src/session/ringlwe.ts"],"names":[],"mappings":"AAcA,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AAEtC;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,WAAW;IAA9C;;QACI,qBAAqB;QACO,MAAC,GAAG,GAAG,CAAC;QACR,MAAC,GAAG,KAAK,CAAC;QACV,SAAI,GAAG,EAAE,CAAC;QACV,UAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC;CAAA"}
@@ -0,0 +1,38 @@
1
+ import { QuarkDashUtils } from "../core/utils";
2
+ import { BaseRingLWE } from "./baselwe";
3
+ /**
4
+ * QuarkDash Radical Ring-LWE Implementation
5
+ */
6
+ export class QuarkDashRRLWE extends BaseRingLWE {
7
+ constructor() {
8
+ super(...arguments);
9
+ // General Constants
10
+ this.N = 256;
11
+ this.Q = 12289n;
12
+ this.ROOT = 7n;
13
+ this.INV_N = this.modInverse(BigInt(this.N), this.Q);
14
+ }
15
+ /**
16
+ * Override small polynome for Radical Ring-lWE
17
+ * @returns {bigint[]} Small polynome
18
+ * @protected
19
+ */
20
+ smallPoly() {
21
+ const poly = new Array(this.N);
22
+ const bytesNeeded = Math.ceil(this.N * 2 / 8);
23
+ const randomBytes = QuarkDashUtils.randomBytes(bytesNeeded);
24
+ for (let i = 0; i < this.N; i++) {
25
+ const byteIdx = Math.floor(i * 2 / 8);
26
+ const bitShift = (i * 2) % 8;
27
+ const val = (randomBytes[byteIdx] >> bitShift) & 0x03;
28
+ if (val === 0)
29
+ poly[i] = -1n;
30
+ else if (val === 1)
31
+ poly[i] = 0n;
32
+ else
33
+ poly[i] = 1n;
34
+ }
35
+ return poly;
36
+ }
37
+ }
38
+ //# sourceMappingURL=rringlwe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rringlwe.js","sourceRoot":"","sources":["../../../src/session/rringlwe.ts"],"names":[],"mappings":"AAYA,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AAEtC;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,WAAW;IAA/C;;QACI,oBAAoB;QACQ,MAAC,GAAG,GAAG,CAAC;QACR,MAAC,GAAG,MAAM,CAAC;QACX,SAAI,GAAG,EAAE,CAAC;QACV,UAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAqBhF,CAAC;IAnBG;;;;OAIG;IACgB,SAAS;QACxB,MAAM,IAAI,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,GAAG,IAAI,CAAC;YACtD,IAAI,GAAG,KAAK,CAAC;gBAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;iBACxB,IAAI,GAAG,KAAK,CAAC;gBAAE,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;;gBAC5B,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
Binary file
@@ -0,0 +1,67 @@
1
+ import { ICipher } from "../core/types";
2
+ /**
3
+ * ChaCha20 Based Cipher Implementation
4
+ */
5
+ export declare class QuarkDashChaCha implements ICipher {
6
+ private readonly key;
7
+ private readonly nonce;
8
+ private static readonly BLOCK_SIZE;
9
+ private static readonly BLOCKS_PER_BATCH;
10
+ private static readonly BATCH_SIZE;
11
+ /**
12
+ * Create ChaCha20 Cipher
13
+ * @param key {Uint8Array} Key buffer
14
+ * @param nonce {Uint8Array} Nonce buffer
15
+ */
16
+ constructor(key: Uint8Array, nonce: Uint8Array);
17
+ /**
18
+ * Encrypt data async using ChaCha20
19
+ * @param data {Uint8Array} Raw data buffer
20
+ * @returns {Promise<Uint8Array>} Result buffer
21
+ * TODO: GPU Calculations
22
+ */
23
+ encrypt(data: Uint8Array): Promise<Uint8Array>;
24
+ /**
25
+ * Decrypt data async using ChaCha20
26
+ * @param data {Uint8Array} Encrypted raw data buffer
27
+ * @returns {Promise<Uint8Array>} Result buffer
28
+ * TODO: GPU Calculations
29
+ */
30
+ decrypt(data: Uint8Array): Promise<Uint8Array>;
31
+ /**
32
+ * Encrypt data sync using ChaCha20
33
+ * @param data {Uint8Array} Raw data buffer
34
+ * @returns {Uint8Array} Result buffer
35
+ */
36
+ encryptSync(data: Uint8Array): Uint8Array;
37
+ /**
38
+ * Decrypt data sync using ChaCha20
39
+ * @param data {Uint8Array} Encrypted raw data buffer
40
+ * @returns {Uint8Array} Result buffer
41
+ */
42
+ decryptSync(data: Uint8Array): Uint8Array;
43
+ /**
44
+ * Process ChaCha20 Cipher
45
+ * @param data {Uint8Array} Data for processing
46
+ * @returns {Uint8Array} Processing result
47
+ * @private
48
+ */
49
+ private process;
50
+ /**
51
+ * Quarter Round
52
+ * @param s {Uint8Array} Buffer
53
+ * @param a {number}
54
+ * @param b {number}
55
+ * @param c {number}
56
+ * @param d {number}
57
+ * @private
58
+ */
59
+ private quarterRound;
60
+ /**
61
+ * Generate Keystream Batch
62
+ * @param startCounter {number} Start counter
63
+ * @param count {number} Count
64
+ * @private
65
+ */
66
+ private generateKeystreamBatch;
67
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * QuarkDash Ciphers Implementation
3
+ *
4
+ * @git https://github.com/devsdaddy/quarkdash
5
+ * @version 1.1.0
6
+ * @author Elijah Rastorguev
7
+ * @build 1002
8
+ * @website https://dev.to/devsdaddy
9
+ * @updated 13.04.2026
10
+ */
11
+ import { ICipher } from "../core/types";
12
+ /**
13
+ * Cipher Type
14
+ */
15
+ export declare enum CipherType {
16
+ ChaCha20 = 0,
17
+ Gimli = 1
18
+ }
19
+ /**
20
+ * Cipher Factory
21
+ */
22
+ export declare class CipherFactory {
23
+ /**
24
+ * Create Cipher
25
+ * @param algorithm {CipherType} Current cipher type
26
+ * @param key {Uint8Array} Key buffer
27
+ * @param nonce {Uint8Array} Nonce buffer
28
+ * @returns {ICipher} Cipher class instance
29
+ */
30
+ static create(algorithm: CipherType, key: Uint8Array, nonce: Uint8Array): ICipher;
31
+ }