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 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,259 @@
1
+ import { QuarkDashUtils } from "./utils";
2
+ /**
3
+ * Cipher Type
4
+ */
5
+ export var CipherType;
6
+ (function (CipherType) {
7
+ CipherType[CipherType["ChaCha20"] = 0] = "ChaCha20";
8
+ CipherType[CipherType["Gimli"] = 1] = "Gimli";
9
+ })(CipherType || (CipherType = {}));
10
+ /**
11
+ * Cipher Factory
12
+ */
13
+ export class CipherFactory {
14
+ /**
15
+ * Create Cipher
16
+ * @param algorithm {CipherType} Current cipher type
17
+ * @param key {Uint8Array} Key buffer
18
+ * @param nonce {Uint8Array} Nonce buffer
19
+ * @returns {ICipher} Cipher class instance
20
+ */
21
+ static create(algorithm, key, nonce) {
22
+ switch (algorithm) {
23
+ case CipherType.ChaCha20: return new QuarkDashChaCha(key, nonce);
24
+ case CipherType.Gimli: return new QuarkDashGimli(key, nonce);
25
+ default: throw new Error('Unsupported cipher type');
26
+ }
27
+ }
28
+ }
29
+ /**
30
+ * ChaCha20 Based Cipher Implementation
31
+ */
32
+ export class QuarkDashChaCha {
33
+ /**
34
+ * Create ChaCha20 Cipher
35
+ * @param key {Uint8Array} Key buffer
36
+ * @param nonce {Uint8Array} Nonce buffer
37
+ */
38
+ constructor(key, nonce) {
39
+ if (key.length !== 32)
40
+ throw new Error('Key must be 32 bytes');
41
+ if (nonce.length !== 12)
42
+ throw new Error('Nonce must be 12 bytes');
43
+ this.key = key;
44
+ this.nonce = nonce;
45
+ }
46
+ /**
47
+ * Encrypt data async using ChaCha20
48
+ * @param data {Uint8Array} Raw data buffer
49
+ * @returns {Promise<Uint8Array>} Result buffer
50
+ * TODO: GPU Calculations
51
+ */
52
+ async encrypt(data) { return this.process(data); }
53
+ /**
54
+ * Decrypt data async using ChaCha20
55
+ * @param data {Uint8Array} Encrypted raw data buffer
56
+ * @returns {Promise<Uint8Array>} Result buffer
57
+ * TODO: GPU Calculations
58
+ */
59
+ async decrypt(data) { return this.process(data); }
60
+ /**
61
+ * Encrypt data sync using ChaCha20
62
+ * @param data {Uint8Array} Raw data buffer
63
+ * @returns {Uint8Array} Result buffer
64
+ */
65
+ encryptSync(data) { return this.process(data); }
66
+ /**
67
+ * Decrypt data sync using ChaCha20
68
+ * @param data {Uint8Array} Encrypted raw data buffer
69
+ * @returns {Uint8Array} Result buffer
70
+ */
71
+ decryptSync(data) { return this.process(data); }
72
+ /**
73
+ * Process ChaCha20 Cipher
74
+ * @param data {Uint8Array} Data for processing
75
+ * @returns {Uint8Array} Processing result
76
+ * @private
77
+ */
78
+ process(data) {
79
+ const out = new Uint8Array(data.length);
80
+ let block = 0;
81
+ let pos = 0;
82
+ while (pos < data.length) {
83
+ const ks = this.keystreamBlock(block);
84
+ const len = Math.min(64, data.length - pos);
85
+ for (let i = 0; i < len; i++)
86
+ out[pos + i] = data[pos + i] ^ ks[i];
87
+ pos += len;
88
+ block++;
89
+ }
90
+ return out;
91
+ }
92
+ /**
93
+ * Get keystream block
94
+ * @param counter {number} counter
95
+ * @returns {Uint8Array} result buffer
96
+ * @private
97
+ */
98
+ keystreamBlock(counter) {
99
+ const state = new Uint32Array(16);
100
+ state[0] = 0x61707865;
101
+ state[1] = 0x3320646e;
102
+ state[2] = 0x79622d32;
103
+ state[3] = 0x6b206574;
104
+ for (let i = 0; i < 8; i++)
105
+ state[4 + i] = QuarkDashUtils.readU32(this.key, i * 4);
106
+ state[12] = counter;
107
+ for (let i = 0; i < 3; i++)
108
+ state[13 + i] = QuarkDashUtils.readU32(this.nonce, i * 4);
109
+ const working = new Uint32Array(state);
110
+ for (let r = 0; r < 10; r++) {
111
+ this.quarterRound(working, 0, 4, 8, 12);
112
+ this.quarterRound(working, 1, 5, 9, 13);
113
+ this.quarterRound(working, 2, 6, 10, 14);
114
+ this.quarterRound(working, 3, 7, 11, 15);
115
+ this.quarterRound(working, 0, 5, 10, 15);
116
+ this.quarterRound(working, 1, 6, 11, 12);
117
+ this.quarterRound(working, 2, 7, 8, 13);
118
+ this.quarterRound(working, 3, 4, 9, 14);
119
+ }
120
+ for (let i = 0; i < 16; i++)
121
+ working[i] += state[i];
122
+ const out = new Uint8Array(64);
123
+ for (let i = 0; i < 16; i++)
124
+ QuarkDashUtils.writeU32(working[i], out, i * 4);
125
+ return out;
126
+ }
127
+ /**
128
+ * Quarter Round
129
+ * @param s {Uint8Array} Buffer
130
+ * @param a {number}
131
+ * @param b {number}
132
+ * @param c {number}
133
+ * @param d {number}
134
+ * @private
135
+ */
136
+ quarterRound(s, a, b, c, d) {
137
+ s[a] += s[b];
138
+ s[d] ^= s[a];
139
+ s[d] = (s[d] << 16) | (s[d] >>> 16);
140
+ s[c] += s[d];
141
+ s[b] ^= s[c];
142
+ s[b] = (s[b] << 12) | (s[b] >>> 20);
143
+ s[a] += s[b];
144
+ s[d] ^= s[a];
145
+ s[d] = (s[d] << 8) | (s[d] >>> 24);
146
+ s[c] += s[d];
147
+ s[b] ^= s[c];
148
+ s[b] = (s[b] << 7) | (s[b] >>> 25);
149
+ }
150
+ }
151
+ /**
152
+ * Gimli Cipher
153
+ */
154
+ export class QuarkDashGimli {
155
+ /**
156
+ * Create Gimli Cipher
157
+ * @param key {Uint8Array} Key buffer
158
+ * @param nonce {Uint8Array} Nonce buffer
159
+ */
160
+ constructor(key, nonce) {
161
+ if (key.length !== 32)
162
+ throw new Error('Key must be 32 bytes');
163
+ if (nonce.length !== 12)
164
+ throw new Error('Nonce must be 12 bytes');
165
+ this.key = key;
166
+ this.nonce = nonce;
167
+ }
168
+ /**
169
+ * Encrypt data async using Gimli
170
+ * @param data {Uint8Array} Raw data buffer
171
+ * @returns {Promise<Uint8Array>} Result buffer
172
+ * TODO: GPU Calculations
173
+ */
174
+ async encrypt(data) { return this.process(data); }
175
+ /**
176
+ * Decrypt data async using Gimli
177
+ * @param data {Uint8Array} Encrypted raw data buffer
178
+ * @returns {Promise<Uint8Array>} Result buffer
179
+ * TODO: GPU Calculations
180
+ */
181
+ async decrypt(data) { return this.process(data); }
182
+ /**
183
+ * Encrypt data sync using Gimli
184
+ * @param data {Uint8Array} Raw data buffer
185
+ * @returns {Uint8Array} Result buffer
186
+ */
187
+ encryptSync(data) { return this.process(data); }
188
+ /**
189
+ * Decrypt data sync using Gimli
190
+ * @param data {Uint8Array} Encrypted raw data buffer
191
+ * @returns {Uint8Array} Result buffer
192
+ */
193
+ decryptSync(data) { return this.process(data); }
194
+ /**
195
+ * Process Gimli Cipher
196
+ * @param data {Uint8Array} Input buffer
197
+ * @returns {Uint8Array} Output buffer
198
+ * @private
199
+ */
200
+ process(data) {
201
+ const out = new Uint8Array(data.length);
202
+ let block = 0;
203
+ let pos = 0;
204
+ while (pos < data.length) {
205
+ const ks = this.keystreamBlock(block);
206
+ const len = Math.min(48, data.length - pos);
207
+ for (let i = 0; i < len; i++)
208
+ out[pos + i] = data[pos + i] ^ ks[i];
209
+ pos += len;
210
+ block++;
211
+ }
212
+ return out;
213
+ }
214
+ /**
215
+ * Get keystream block
216
+ * @param counter {number} Counter
217
+ * @returns {Uint8Array} Result buffer
218
+ * @private
219
+ */
220
+ keystreamBlock(counter) {
221
+ const state = new Uint32Array(12);
222
+ for (let i = 0; i < 8; i++)
223
+ state[i] = QuarkDashUtils.readU32(this.key, i * 4);
224
+ state[8] = QuarkDashUtils.readU32(this.nonce, 0);
225
+ state[9] = QuarkDashUtils.readU32(this.nonce, 4);
226
+ state[10] = QuarkDashUtils.readU32(this.nonce, 8);
227
+ state[11] = counter;
228
+ for (let r = 0; r < 24; r++)
229
+ this.gimliRound(state, r);
230
+ const out = new Uint8Array(48);
231
+ for (let i = 0; i < 12; i++)
232
+ QuarkDashUtils.writeU32(state[i], out, i * 4);
233
+ return out;
234
+ }
235
+ /**
236
+ * Gimli Round
237
+ * @param state {Uint32Array} State buffer
238
+ * @param round {number} Round number
239
+ * @private
240
+ */
241
+ gimliRound(state, round) {
242
+ for (let i = 0; i < 4; i++) {
243
+ const x = state[i], y = state[i + 4], z = state[i + 8];
244
+ const newX = x ^ (z << 1) ^ ((y & z) << 2);
245
+ const newY = y ^ x ^ ((x | z) << 1);
246
+ const newZ = z ^ y ^ ((x & y) << 3);
247
+ state[i] = newX;
248
+ state[i + 4] = newY;
249
+ state[i + 8] = newZ;
250
+ }
251
+ const t = state[1];
252
+ state[1] = state[2];
253
+ state[2] = state[3];
254
+ state[3] = t;
255
+ if ((round & 3) === 0)
256
+ state[0] ^= (0x9e377900 | round);
257
+ }
258
+ }
259
+ //# sourceMappingURL=cipher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cipher.js","sourceRoot":"","sources":["../../src/cipher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,280 @@
1
+ /**
2
+ * QuarkDash Crypto Algorithm Implementation
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 Required Modules */
11
+ import { CipherFactory, CipherType } from "./cipher";
12
+ import { QuarkDashKDF } from "./kdf";
13
+ import { QuarkDashMAC } from "./mac";
14
+ import { QuarkDashKeyExchange } from "./ringlwe";
15
+ import { QuarkDashUtils } from "./utils";
16
+ /**
17
+ * Default QuarkDash options
18
+ */
19
+ const DEFAULT_OPTIONS = {
20
+ cipher: CipherType.ChaCha20,
21
+ kdf: new QuarkDashKDF(),
22
+ mac: new QuarkDashMAC(),
23
+ keyExchange: new QuarkDashKeyExchange(),
24
+ maxPacketWindow: 1000,
25
+ timestampToleranceMs: 300000,
26
+ };
27
+ /**
28
+ * QuarkDash Crypto Algorithm Implementation
29
+ */
30
+ export class QuarkDash {
31
+ /**
32
+ * Create QuarkDash Crypto
33
+ * @param config {QuarkDashOptions} Crypto Options
34
+ */
35
+ constructor(config) {
36
+ this.sessionKey = null;
37
+ this.cipher = null;
38
+ this.macKey = null;
39
+ this.sendSeq = 0;
40
+ this.recvSeq = 0;
41
+ this.receivedPackets = new Set();
42
+ this.config = { ...DEFAULT_OPTIONS, ...config };
43
+ }
44
+ /**
45
+ * Generate key pair async
46
+ * @returns {Promise<Uint8Array>} Key pair buffer
47
+ * TODO: GPU Computing
48
+ */
49
+ async generateKeyPair() {
50
+ this.myKeyPair = await this.config.keyExchange.generateKeyPair();
51
+ return this.myKeyPair.publicKey;
52
+ }
53
+ /**
54
+ * Generate key pair sync
55
+ * @returns {Uint8Array} Key pair buffer
56
+ */
57
+ generateKeyPairSync() {
58
+ this.myKeyPair = this.config.keyExchange.generateKeyPairSync();
59
+ return this.myKeyPair.publicKey;
60
+ }
61
+ /**
62
+ * Initialize session async
63
+ * @param peerPublicKey {Uint8Array} Peer public key buffer
64
+ * @param isInitiator {boolean} Is session initiator
65
+ * @returns {Promise<Uint8Array|number>} Returns derived session key or null
66
+ * TODO: GPU Computing
67
+ */
68
+ async initializeSession(peerPublicKey, isInitiator) {
69
+ this.peerPublicKey = peerPublicKey;
70
+ if (!this.myKeyPair)
71
+ await this.generateKeyPair();
72
+ if (isInitiator) {
73
+ const { ciphertext, sharedSecret } = await this.config.keyExchange.encapsulate(peerPublicKey);
74
+ await this.deriveSessionKeys(sharedSecret);
75
+ return ciphertext;
76
+ }
77
+ else {
78
+ return null;
79
+ }
80
+ }
81
+ /**
82
+ * Initialize session sync
83
+ * @param peerPublicKey {Uint8Array} Peer public key buffer
84
+ * @param isInitiator {boolean} Is session initiator
85
+ * @returns {Uint8Array|number} Returns derived session key or null
86
+ */
87
+ initializeSessionSync(peerPublicKey, isInitiator) {
88
+ this.peerPublicKey = peerPublicKey;
89
+ if (!this.myKeyPair)
90
+ this.generateKeyPairSync();
91
+ if (isInitiator) {
92
+ const { ciphertext, sharedSecret } = this.config.keyExchange.encapsulateSync(peerPublicKey);
93
+ this.deriveSessionKeysSync(sharedSecret);
94
+ return ciphertext;
95
+ }
96
+ else {
97
+ return null;
98
+ }
99
+ }
100
+ /**
101
+ * Finalize session async
102
+ * @param ciphertext {Uint8Array} Cipher text buffer
103
+ * TODO: GPU Computing
104
+ */
105
+ async finalizeSession(ciphertext) {
106
+ if (!this.myKeyPair || !this.peerPublicKey)
107
+ throw new Error('Session not initialized');
108
+ const sharedSecret = await this.config.keyExchange.decapsulate(this.myKeyPair.privateKey, ciphertext);
109
+ await this.deriveSessionKeys(sharedSecret);
110
+ }
111
+ /**
112
+ * Finalize session sync
113
+ * @param ciphertext {Uint8Array} Cipher text buffer
114
+ */
115
+ finalizeSessionSync(ciphertext) {
116
+ if (!this.myKeyPair || !this.peerPublicKey)
117
+ throw new Error('Session not initialized');
118
+ const sharedSecret = this.config.keyExchange.decapsulateSync(this.myKeyPair.privateKey, ciphertext);
119
+ this.deriveSessionKeysSync(sharedSecret);
120
+ }
121
+ /**
122
+ * Derive session keys async
123
+ * @param sharedSecret {Uint8Array} Shared secret buffer
124
+ * @private
125
+ * TODO: GPU Computing
126
+ */
127
+ async deriveSessionKeys(sharedSecret) {
128
+ const salt = QuarkDashUtils.randomBytes(32);
129
+ const info = QuarkDashUtils.textToBytes('session-key');
130
+ const keyMaterial = await this.config.kdf.derive(sharedSecret, salt, info, 64);
131
+ this.processDeriveSessionKeys(keyMaterial, sharedSecret);
132
+ }
133
+ /**
134
+ * Derive session keys sync
135
+ * @param sharedSecret {Uint8Array} Shared secret buffer
136
+ * @private
137
+ */
138
+ deriveSessionKeysSync(sharedSecret) {
139
+ const salt = QuarkDashUtils.randomBytes(32);
140
+ const info = QuarkDashUtils.textToBytes('session-key');
141
+ const keyMaterial = this.config.kdf.deriveSync(sharedSecret, salt, info, 64);
142
+ this.processDeriveSessionKeys(keyMaterial, sharedSecret);
143
+ }
144
+ /**
145
+ * Process derive session keys
146
+ * @param keyMaterial {Uint8Array} Key material buffer
147
+ * @param sharedSecret {Uint8Array} Shared secret buffer
148
+ * @private
149
+ */
150
+ processDeriveSessionKeys(keyMaterial, sharedSecret) {
151
+ this.sessionKey = keyMaterial.slice(0, 32);
152
+ this.macKey = keyMaterial.slice(32, 64);
153
+ const nonce = new Uint8Array(12);
154
+ this.cipher = CipherFactory.create(this.config.cipher, this.sessionKey, nonce);
155
+ QuarkDashUtils.secureZero(sharedSecret);
156
+ QuarkDashUtils.secureZero(keyMaterial);
157
+ }
158
+ /**
159
+ * Encrypt sync
160
+ * @param decryptedData {Uint8Array} Decrypted buffer
161
+ * @returns {Promise<Uint8Array>} Encrypted buffer
162
+ * TODO: GPU Computing
163
+ */
164
+ async encrypt(decryptedData) {
165
+ if (!this.cipher || !this.macKey)
166
+ throw new Error('Session not established');
167
+ const metadata = this.buildMetadata();
168
+ const encrypted = await this.cipher.encrypt(decryptedData);
169
+ const mac = await this.config.mac.sign(QuarkDashUtils.concatBytes(metadata, encrypted), this.macKey);
170
+ return QuarkDashUtils.concatBytes(metadata, encrypted, mac);
171
+ }
172
+ /**
173
+ * Encrypt sync
174
+ * @param decryptedData {Uint8Array} Decrypted buffer
175
+ * @returns {Uint8Array} Encrypted buffer
176
+ */
177
+ encryptSync(decryptedData) {
178
+ if (!this.cipher || !this.macKey)
179
+ throw new Error('Session not established');
180
+ const metadata = this.buildMetadata();
181
+ const encrypted = this.cipher.encryptSync(decryptedData);
182
+ const mac = this.config.mac.signSync(QuarkDashUtils.concatBytes(metadata, encrypted), this.macKey);
183
+ return QuarkDashUtils.concatBytes(metadata, encrypted, mac);
184
+ }
185
+ /**
186
+ * Decrypt async
187
+ * @param encryptedData {Uint8Array} Encrypted buffer
188
+ * @returns {Promise<Uint8Array>} Decrypted buffer
189
+ * TODO: GPU Computing
190
+ */
191
+ async decrypt(encryptedData) {
192
+ if (!this.cipher || !this.macKey)
193
+ throw new Error('Session not established');
194
+ const packet = this.processDecrypt(encryptedData);
195
+ const valid = await this.config.mac.verify(QuarkDashUtils.concatBytes(packet.metadata, packet.encrypted), this.macKey, packet.mac);
196
+ if (!valid)
197
+ throw new Error('MAC verification failed');
198
+ this.checkMetadata(packet.metadata);
199
+ return await this.cipher.decrypt(packet.encrypted);
200
+ }
201
+ /**
202
+ * Decrypt sync
203
+ * @param encryptedData {Uint8Array} Encrypted buffer
204
+ * @returns {Uint8Array} Decrypted buffer
205
+ */
206
+ decryptSync(encryptedData) {
207
+ if (!this.cipher || !this.macKey)
208
+ throw new Error('Session not established');
209
+ const packet = this.processDecrypt(encryptedData);
210
+ const valid = this.config.mac.verifySync(QuarkDashUtils.concatBytes(packet.metadata, packet.encrypted), this.macKey, packet.mac);
211
+ if (!valid)
212
+ throw new Error('MAC verification failed');
213
+ this.checkMetadata(packet.metadata);
214
+ return this.cipher.decryptSync(packet.encrypted);
215
+ }
216
+ /**
217
+ * Process decrypt
218
+ * @param encryptedData {Uint8Array} encrypted buffer
219
+ * @returns {QDEncryptedPacket} Parsed encrypted packet
220
+ * @private
221
+ */
222
+ processDecrypt(encryptedData) {
223
+ if (encryptedData.length < 44)
224
+ throw new Error('Invalid ciphertext');
225
+ return {
226
+ metadata: encryptedData.slice(0, 12),
227
+ encrypted: encryptedData.slice(12, encryptedData.length - 32),
228
+ mac: encryptedData.slice(encryptedData.length - 32)
229
+ };
230
+ }
231
+ /**
232
+ * Build meta-data
233
+ * @returns {Uint8Array} Meta-data buffer
234
+ * @private
235
+ */
236
+ buildMetadata() {
237
+ const metadata = new Uint8Array(12);
238
+ const timestamp = BigInt(Date.now());
239
+ for (let i = 0; i < 8; i++)
240
+ metadata[i] = Number((timestamp >> BigInt(i * 8)) & 0xffn);
241
+ const seq = this.sendSeq++;
242
+ for (let i = 0; i < 4; i++)
243
+ metadata[8 + i] = (seq >> (i * 8)) & 0xFF;
244
+ return metadata;
245
+ }
246
+ /**
247
+ * Check Meta-Data
248
+ * @param metadata {Uint8Array} Meta-data buffer
249
+ * @private
250
+ */
251
+ checkMetadata(metadata) {
252
+ const timestamp = QuarkDashUtils.readUint64(metadata, 0);
253
+ const now = Date.now();
254
+ if (Math.abs(now - Number(timestamp)) > this.config.timestampToleranceMs) {
255
+ throw new Error('Timestamp out of window');
256
+ }
257
+ const seq = QuarkDashUtils.readUint32(metadata, 8);
258
+ if (this.receivedPackets.has(seq))
259
+ throw new Error('Replay detected');
260
+ this.receivedPackets.add(seq);
261
+ if (this.receivedPackets.size > this.config.maxPacketWindow) {
262
+ const oldest = Math.min(...this.receivedPackets);
263
+ this.receivedPackets.delete(oldest);
264
+ }
265
+ }
266
+ /**
267
+ * Dispose QuarkDash Crypto
268
+ */
269
+ dispose() {
270
+ if (this.sessionKey)
271
+ QuarkDashUtils.secureZero(this.sessionKey);
272
+ if (this.macKey)
273
+ QuarkDashUtils.secureZero(this.macKey);
274
+ this.sessionKey = null;
275
+ this.macKey = null;
276
+ this.cipher = null;
277
+ this.receivedPackets.clear();
278
+ }
279
+ }
280
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * QuarkDash Crypto Library
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
+ /* Export Types and Utils */
11
+ export * from "./types";
12
+ export * from "./utils";
13
+ /* Export KDF and MAC */
14
+ export * from "./kdf";
15
+ export * from "./mac";
16
+ /* Export Cipher and Ring-LWE */
17
+ export * from "./cipher";
18
+ export * from "./ringlwe";
19
+ /* Export Main Algorithm */
20
+ export * from "./crypto";
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,4BAA4B;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAExB,wBAAwB;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AAEtB,gCAAgC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAE1B,2BAA2B;AAC3B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { QuarkDashUtils } from "./utils";
2
+ /**
3
+ * KDF implementation using Shake-256
4
+ */
5
+ export class QuarkDashKDF {
6
+ /**
7
+ * Derive KDF async
8
+ * @param ikm {Uint8Array} IKM buffer
9
+ * @param salt {Uint8Array} Salt buffer
10
+ * @param info {Uint8Array} Meta buffer
11
+ * @param length {number} Buffer length
12
+ * @returns {Promise<Uint8Array>} Result
13
+ * TODO: GPU Calculations
14
+ */
15
+ async derive(ikm, salt, info, length) {
16
+ const prk = await QuarkDashUtils.shake256(QuarkDashUtils.concatBytes(salt, ikm), 64);
17
+ const result = new Uint8Array(length);
18
+ let t = new Uint8Array(0);
19
+ let i = 1;
20
+ while (result.length < length) {
21
+ const input = QuarkDashUtils.concatBytes(t, info, new Uint8Array([i]));
22
+ t = await QuarkDashUtils.shake256(QuarkDashUtils.concatBytes(prk, input), 64);
23
+ const take = Math.min(t.length, length - result.length);
24
+ result.set(t.slice(0, take), result.length);
25
+ i++;
26
+ }
27
+ return result;
28
+ }
29
+ /**
30
+ * Derive KDF sync
31
+ * @param ikm {Uint8Array} IKM buffer
32
+ * @param salt {Uint8Array} Salt buffer
33
+ * @param info {Uint8Array} Meta buffer
34
+ * @param length {number} Buffer length
35
+ * @returns {Uint8Array} Result
36
+ */
37
+ deriveSync(ikm, salt, info, length) {
38
+ const prk = QuarkDashUtils.shake256Sync(QuarkDashUtils.concatBytes(salt, ikm), 64);
39
+ const result = new Uint8Array(length);
40
+ let t = new Uint8Array(0);
41
+ let i = 1;
42
+ while (result.length < length) {
43
+ const input = QuarkDashUtils.concatBytes(t, info, new Uint8Array([i]));
44
+ t = QuarkDashUtils.shake256Sync(QuarkDashUtils.concatBytes(prk, input), 64);
45
+ const take = Math.min(t.length, length - result.length);
46
+ result.set(t.slice(0, take), result.length);
47
+ i++;
48
+ }
49
+ return result;
50
+ }
51
+ }
52
+ //# sourceMappingURL=kdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kdf.js","sourceRoot":"","sources":["../../src/kdf.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC;;GAEG;AACH,MAAM,OAAO,YAAY;IACrB;;;;;;;;OAQG;IACI,KAAK,CAAC,MAAM,CAAC,GAAe,EAAE,IAAgB,EAAE,IAAgB,EAAE,MAAc;QACnF,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAe,CAAC;QACnG,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,CAAe,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAe,CAAC;YACrF,CAAC,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9E,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5C,CAAC,EAAE,CAAC;QACR,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;;;OAOG;IACI,UAAU,CAAC,GAAe,EAAE,IAAgB,EAAE,IAAgB,EAAE,MAAc;QACjF,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QACnF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,CAAe,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,CAAC,GAAG,cAAc,CAAC,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5E,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5C,CAAC,EAAE,CAAC;QACR,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ"}