quarkdash 1.0.7 → 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 (113) 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} +246 -203
  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} +244 -201
  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} +87 -91
  72. package/dist/types/session/ringlwe.d.ts +21 -0
  73. package/dist/types/session/rringlwe.d.ts +27 -0
  74. package/package.json +13 -3
  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/img/cover.png +0 -0
  98. package/src/cipher.ts +0 -260
  99. package/src/crypto.ts +0 -306
  100. package/src/index.ts +0 -27
  101. package/src/kdf.ts +0 -64
  102. package/src/mac.ts +0 -65
  103. package/src/ringlwe.ts +0 -289
  104. package/src/sha.ts +0 -265
  105. package/src/shake.ts +0 -163
  106. package/src/types.ts +0 -75
  107. package/src/utils.ts +0 -290
  108. package/tsconfig.cjs.json +0 -7
  109. package/tsconfig.json +0 -18
  110. /package/dist/cjs/{kdf.js → core/kdf.js} +0 -0
  111. /package/dist/cjs/{types.js → core/types.js} +0 -0
  112. /package/dist/esm/{kdf.js → core/kdf.js} +0 -0
  113. /package/dist/esm/{types.js → core/types.js} +0 -0
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  ---
11
11
 
12
- [About](#about-quarkdash-crypto) | [Get Started](#get-started) | [Example](#basic-example) | [Benchmark](#benchmark) | [Docs](https://github.com/devsdaddy/quarkdash/wiki)
12
+ [About](#about-quarkdash-crypto) | [Get Started](#get-started) | [Example](#basic-example) | [Benchmark](#benchmark) | [Docs](https://github.com/devsdaddy/quarkdash/wiki) | [Scheme](https://app.holst.so/share/b/7ae942f8-8a40-42c9-9991-3b624f147da8)
13
13
 
14
14
  ---
15
15
 
@@ -17,6 +17,8 @@
17
17
  **QuarkDash Crypto** - It is a hybrid cryptographic protocol that provides post-quantum security, high performance, and attack resistance.
18
18
  This library can be used as shared solution for client and server. Written on **pure typescript**. **Dependency-free**.
19
19
 
20
+ > Algorithm Scheme [can be found here](https://app.holst.so/share/b/7ae942f8-8a40-42c9-9991-3b624f147da8)
21
+
20
22
  ### ❓ Why QuarkDash Crypto?<br/>
21
23
  🔹 **Lightweight library** with zero dependencies;<br/>
22
24
  🔹 **Powerful crypto** algorithm written in **Typescript**;<br/>
@@ -105,7 +107,7 @@ Below I've outlined a brief step-by-step flowchart of how the algorithm works. I
105
107
  4. Message Encryption (AEAD);
106
108
  5. Decryption;
107
109
 
108
- [Read more about algorithm in Wiki](https://github.com/devsdaddy/quarkdash)
110
+ > [Read more about algorithm in Wiki](https://github.com/devsdaddy/quarkdash) or [View scheme](https://app.holst.so/share/b/7ae942f8-8a40-42c9-9991-3b624f147da8)
109
111
 
110
112
  ---
111
113
 
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QuarkDashChaCha = void 0;
4
+ /**
5
+ * QuarkDash ChaCha Implementation
6
+ *
7
+ * @git https://github.com/devsdaddy/quarkdash
8
+ * @version 1.1.0
9
+ * @author Elijah Rastorguev
10
+ * @build 1002
11
+ * @website https://dev.to/devsdaddy
12
+ * @updated 13.04.2026
13
+ */
14
+ const utils_1 = require("../core/utils");
15
+ /**
16
+ * ChaCha20 Based Cipher Implementation
17
+ */
18
+ class QuarkDashChaCha {
19
+ /**
20
+ * Create ChaCha20 Cipher
21
+ * @param key {Uint8Array} Key buffer
22
+ * @param nonce {Uint8Array} Nonce buffer
23
+ */
24
+ constructor(key, nonce) {
25
+ if (key.length !== 32)
26
+ throw new Error('Key must be 32 bytes');
27
+ if (nonce.length !== 12)
28
+ throw new Error('Nonce must be 12 bytes');
29
+ this.key = key;
30
+ this.nonce = nonce;
31
+ }
32
+ /**
33
+ * Encrypt data async using ChaCha20
34
+ * @param data {Uint8Array} Raw data buffer
35
+ * @returns {Promise<Uint8Array>} Result buffer
36
+ * TODO: GPU Calculations
37
+ */
38
+ async encrypt(data) { return this.process(data); }
39
+ /**
40
+ * Decrypt data async using ChaCha20
41
+ * @param data {Uint8Array} Encrypted raw data buffer
42
+ * @returns {Promise<Uint8Array>} Result buffer
43
+ * TODO: GPU Calculations
44
+ */
45
+ async decrypt(data) { return this.process(data); }
46
+ /**
47
+ * Encrypt data sync using ChaCha20
48
+ * @param data {Uint8Array} Raw data buffer
49
+ * @returns {Uint8Array} Result buffer
50
+ */
51
+ encryptSync(data) { return this.process(data); }
52
+ /**
53
+ * Decrypt data sync using ChaCha20
54
+ * @param data {Uint8Array} Encrypted raw data buffer
55
+ * @returns {Uint8Array} Result buffer
56
+ */
57
+ decryptSync(data) { return this.process(data); }
58
+ /**
59
+ * Process ChaCha20 Cipher
60
+ * @param data {Uint8Array} Data for processing
61
+ * @returns {Uint8Array} Processing result
62
+ * @private
63
+ */
64
+ process(data) {
65
+ const out = new Uint8Array(data.length);
66
+ let offset = 0;
67
+ let blockCounter = 0;
68
+ while (offset < data.length) {
69
+ const blocksRemaining = Math.ceil((data.length - offset) / QuarkDashChaCha.BLOCK_SIZE);
70
+ const blocksThisBatch = Math.min(QuarkDashChaCha.BLOCKS_PER_BATCH, blocksRemaining);
71
+ const batchSize = blocksThisBatch * QuarkDashChaCha.BLOCK_SIZE;
72
+ const keystream = this.generateKeystreamBatch(blockCounter, blocksThisBatch);
73
+ const bytesToProcess = Math.min(batchSize, data.length - offset);
74
+ for (let i = 0; i < bytesToProcess; i++) {
75
+ out[offset + i] = data[offset + i] ^ keystream[i];
76
+ }
77
+ offset += bytesToProcess;
78
+ blockCounter += blocksThisBatch;
79
+ }
80
+ return out;
81
+ }
82
+ /**
83
+ * Quarter Round
84
+ * @param s {Uint8Array} Buffer
85
+ * @param a {number}
86
+ * @param b {number}
87
+ * @param c {number}
88
+ * @param d {number}
89
+ * @private
90
+ */
91
+ quarterRound(s, a, b, c, d) {
92
+ s[a] += s[b];
93
+ s[d] ^= s[a];
94
+ s[d] = (s[d] << 16) | (s[d] >>> 16);
95
+ s[c] += s[d];
96
+ s[b] ^= s[c];
97
+ s[b] = (s[b] << 12) | (s[b] >>> 20);
98
+ s[a] += s[b];
99
+ s[d] ^= s[a];
100
+ s[d] = (s[d] << 8) | (s[d] >>> 24);
101
+ s[c] += s[d];
102
+ s[b] ^= s[c];
103
+ s[b] = (s[b] << 7) | (s[b] >>> 25);
104
+ }
105
+ /**
106
+ * Generate Keystream Batch
107
+ * @param startCounter {number} Start counter
108
+ * @param count {number} Count
109
+ * @private
110
+ */
111
+ generateKeystreamBatch(startCounter, count) {
112
+ const out = new Uint8Array(count * QuarkDashChaCha.BLOCK_SIZE);
113
+ const state = new Uint32Array(16);
114
+ state[0] = 0x61707865;
115
+ state[1] = 0x3320646e;
116
+ state[2] = 0x79622d32;
117
+ state[3] = 0x6b206574;
118
+ // Ключ
119
+ for (let i = 0; i < 8; i++) {
120
+ state[4 + i] = utils_1.QuarkDashUtils.readUint32LE(this.key, i * 4);
121
+ }
122
+ // Nonce
123
+ for (let i = 0; i < 3; i++) {
124
+ state[13 + i] = utils_1.QuarkDashUtils.readUint32LE(this.nonce, i * 4);
125
+ }
126
+ for (let block = 0; block < count; block++) {
127
+ state[12] = startCounter + block;
128
+ const working = new Uint32Array(state);
129
+ for (let round = 0; round < 10; round++) {
130
+ this.quarterRound(working, 0, 4, 8, 12);
131
+ this.quarterRound(working, 1, 5, 9, 13);
132
+ this.quarterRound(working, 2, 6, 10, 14);
133
+ this.quarterRound(working, 3, 7, 11, 15);
134
+ this.quarterRound(working, 0, 5, 10, 15);
135
+ this.quarterRound(working, 1, 6, 11, 12);
136
+ this.quarterRound(working, 2, 7, 8, 13);
137
+ this.quarterRound(working, 3, 4, 9, 14);
138
+ }
139
+ for (let i = 0; i < 16; i++) {
140
+ working[i] += state[i];
141
+ }
142
+ const outOffset = block * QuarkDashChaCha.BLOCK_SIZE;
143
+ for (let i = 0; i < 16; i++) {
144
+ utils_1.QuarkDashUtils.writeUint32LE(working[i], out, outOffset + i * 4);
145
+ }
146
+ }
147
+ return out;
148
+ }
149
+ }
150
+ exports.QuarkDashChaCha = QuarkDashChaCha;
151
+ QuarkDashChaCha.BLOCK_SIZE = 64;
152
+ QuarkDashChaCha.BLOCKS_PER_BATCH = 32; // 2048 байт за раз
153
+ QuarkDashChaCha.BATCH_SIZE = QuarkDashChaCha.BLOCK_SIZE * QuarkDashChaCha.BLOCKS_PER_BATCH;
154
+ //# sourceMappingURL=chacha.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chacha.js","sourceRoot":"","sources":["../../../src/cipher/chacha.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CipherFactory = exports.CipherType = void 0;
4
+ const chacha_1 = require("./chacha");
5
+ const gimli_1 = require("./gimli");
6
+ /**
7
+ * Cipher Type
8
+ */
9
+ var CipherType;
10
+ (function (CipherType) {
11
+ CipherType[CipherType["ChaCha20"] = 0] = "ChaCha20";
12
+ CipherType[CipherType["Gimli"] = 1] = "Gimli";
13
+ })(CipherType || (exports.CipherType = CipherType = {}));
14
+ /**
15
+ * Cipher Factory
16
+ */
17
+ class CipherFactory {
18
+ /**
19
+ * Create Cipher
20
+ * @param algorithm {CipherType} Current cipher type
21
+ * @param key {Uint8Array} Key buffer
22
+ * @param nonce {Uint8Array} Nonce buffer
23
+ * @returns {ICipher} Cipher class instance
24
+ */
25
+ static create(algorithm, key, nonce) {
26
+ switch (algorithm) {
27
+ case CipherType.ChaCha20: return new chacha_1.QuarkDashChaCha(key, nonce);
28
+ case CipherType.Gimli: return new gimli_1.QuarkDashGimli(key, nonce);
29
+ default: throw new Error('Unsupported cipher type');
30
+ }
31
+ }
32
+ }
33
+ exports.CipherFactory = CipherFactory;
34
+ //# sourceMappingURL=cipher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cipher.js","sourceRoot":"","sources":["../../../src/cipher/cipher.ts"],"names":[],"mappings":";;;AAaA,qCAAyC;AACzC,mCAAuC;AAEvC;;GAEG;AACH,IAAY,UAGX;AAHD,WAAY,UAAU;IAClB,mDAAY,CAAA;IACZ,6CAAS,CAAA;AACb,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB;AAED;;GAEG;AACH,MAAa,aAAa;IACtB;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,CAAC,SAAqB,EAAE,GAAe,EAAE,KAAiB;QACnE,QAAO,SAAS,EAAE,CAAC;YACf,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,IAAI,wBAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACjE,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,sBAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC7D,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACxD,CAAC;IACL,CAAC;CACJ;AAfD,sCAeC"}
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QuarkDashGimli = void 0;
4
+ /**
5
+ * QuarkDash Gimli Implementation
6
+ *
7
+ * @git https://github.com/devsdaddy/quarkdash
8
+ * @version 1.1.0
9
+ * @author Elijah Rastorguev
10
+ * @build 1002
11
+ * @website https://dev.to/devsdaddy
12
+ * @updated 13.04.2026
13
+ */
14
+ const utils_1 = require("../core/utils");
15
+ /**
16
+ * Gimli Cipher
17
+ */
18
+ class QuarkDashGimli {
19
+ /**
20
+ * Create Gimli Cipher
21
+ * @param key {Uint8Array} Key buffer
22
+ * @param nonce {Uint8Array} Nonce buffer
23
+ */
24
+ constructor(key, nonce) {
25
+ if (key.length !== 32)
26
+ throw new Error('Key must be 32 bytes');
27
+ if (nonce.length !== 12)
28
+ throw new Error('Nonce must be 12 bytes');
29
+ this.key = key;
30
+ this.nonce = nonce;
31
+ }
32
+ /**
33
+ * Encrypt data async using Gimli
34
+ * @param data {Uint8Array} Raw data buffer
35
+ * @returns {Promise<Uint8Array>} Result buffer
36
+ * TODO: GPU Calculations
37
+ */
38
+ async encrypt(data) { return this.process(data); }
39
+ /**
40
+ * Decrypt data async using Gimli
41
+ * @param data {Uint8Array} Encrypted raw data buffer
42
+ * @returns {Promise<Uint8Array>} Result buffer
43
+ * TODO: GPU Calculations
44
+ */
45
+ async decrypt(data) { return this.process(data); }
46
+ /**
47
+ * Encrypt data sync using Gimli
48
+ * @param data {Uint8Array} Raw data buffer
49
+ * @returns {Uint8Array} Result buffer
50
+ */
51
+ encryptSync(data) { return this.process(data); }
52
+ /**
53
+ * Decrypt data sync using Gimli
54
+ * @param data {Uint8Array} Encrypted raw data buffer
55
+ * @returns {Uint8Array} Result buffer
56
+ */
57
+ decryptSync(data) { return this.process(data); }
58
+ /**
59
+ * Process Gimli Cipher
60
+ * @param data {Uint8Array} Input buffer
61
+ * @returns {Uint8Array} Output buffer
62
+ * @private
63
+ */
64
+ process(data) {
65
+ const out = new Uint8Array(data.length);
66
+ let offset = 0;
67
+ let blockCounter = 0;
68
+ while (offset < data.length) {
69
+ const blocksRemaining = Math.ceil((data.length - offset) / QuarkDashGimli.BLOCK_SIZE);
70
+ const blocksThisBatch = Math.min(QuarkDashGimli.BLOCKS_PER_BATCH, blocksRemaining);
71
+ const batchSize = blocksThisBatch * QuarkDashGimli.BLOCK_SIZE;
72
+ const keystream = this.generateKeystreamBatch(blockCounter, blocksThisBatch);
73
+ const bytesToProcess = Math.min(batchSize, data.length - offset);
74
+ for (let i = 0; i < bytesToProcess; i++) {
75
+ out[offset + i] = data[offset + i] ^ keystream[i];
76
+ }
77
+ offset += bytesToProcess;
78
+ blockCounter += blocksThisBatch;
79
+ }
80
+ return out;
81
+ }
82
+ /**
83
+ * Generate keystream batch
84
+ * @param startCounter {number} Start counter
85
+ * @param count {number} Count
86
+ * @private
87
+ */
88
+ generateKeystreamBatch(startCounter, count) {
89
+ const out = new Uint8Array(count * QuarkDashGimli.BLOCK_SIZE);
90
+ const state = new Uint32Array(12);
91
+ for (let i = 0; i < 8; i++) {
92
+ state[i] = utils_1.QuarkDashUtils.readUint32LE(this.key, i * 4);
93
+ }
94
+ // Nonce
95
+ state[8] = utils_1.QuarkDashUtils.readUint32LE(this.nonce, 0);
96
+ state[9] = utils_1.QuarkDashUtils.readUint32LE(this.nonce, 4);
97
+ state[10] = utils_1.QuarkDashUtils.readUint32LE(this.nonce, 8);
98
+ for (let block = 0; block < count; block++) {
99
+ state[11] = startCounter + block;
100
+ const working = new Uint32Array(state);
101
+ for (let round = 0; round < 24; round++) {
102
+ this.gimliRound(working, round);
103
+ }
104
+ const outOffset = block * QuarkDashGimli.BLOCK_SIZE;
105
+ for (let i = 0; i < 12; i++) {
106
+ utils_1.QuarkDashUtils.writeUint32LE(working[i], out, outOffset + i * 4);
107
+ }
108
+ }
109
+ return out;
110
+ }
111
+ /**
112
+ * Gimli Round
113
+ * @param state {Uint32Array} State buffer
114
+ * @param round {number} Round number
115
+ * @private
116
+ */
117
+ gimliRound(state, round) {
118
+ for (let i = 0; i < 4; i++) {
119
+ const x = state[i];
120
+ const y = state[i + 4];
121
+ const z = state[i + 8];
122
+ const newX = x ^ (z << 1) ^ ((y & z) << 2);
123
+ const newY = y ^ x ^ ((x | z) << 1);
124
+ const newZ = z ^ y ^ ((x & y) << 3);
125
+ state[i] = newX;
126
+ state[i + 4] = newY;
127
+ state[i + 8] = newZ;
128
+ }
129
+ // Перестановка слов
130
+ const t = state[1];
131
+ state[1] = state[2];
132
+ state[2] = state[3];
133
+ state[3] = t;
134
+ if ((round & 3) === 0) {
135
+ state[0] ^= (0x9e377900 | round);
136
+ }
137
+ }
138
+ }
139
+ exports.QuarkDashGimli = QuarkDashGimli;
140
+ QuarkDashGimli.BLOCK_SIZE = 48;
141
+ QuarkDashGimli.BLOCKS_PER_BATCH = 32; // 1536 байт за раз
142
+ QuarkDashGimli.BATCH_SIZE = QuarkDashGimli.BLOCK_SIZE * QuarkDashGimli.BLOCKS_PER_BATCH;
143
+ //# sourceMappingURL=gimli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gimli.js","sourceRoot":"","sources":["../../../src/cipher/gimli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kdf.js","sourceRoot":"","sources":["../../../src/core/kdf.ts"],"names":[],"mappings":";;;AAYA,mCAAyC;AAEzC;;GAEG;AACH,MAAa,YAAY;IACrB;;;;;;;;OAQG;IACI,KAAK,CAAC,MAAM,CAAC,GAAe,EAAE,IAAgB,EAAE,IAAgB,EAAE,MAAc;QACnF,MAAM,GAAG,GAAG,MAAM,sBAAc,CAAC,QAAQ,CAAC,sBAAc,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,sBAAc,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAe,CAAC;YACrF,CAAC,GAAG,MAAM,sBAAc,CAAC,QAAQ,CAAC,sBAAc,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,sBAAc,CAAC,YAAY,CAAC,sBAAc,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,sBAAc,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,CAAC,GAAG,sBAAc,CAAC,YAAY,CAAC,sBAAc,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;AA/CD,oCA+CC"}
@@ -2,10 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.QuarkDashMAC = void 0;
4
4
  const utils_1 = require("./utils");
5
+ const shake_1 = require("../hash/shake");
5
6
  /**
6
7
  * MAC implementation using Shake-256
7
8
  */
8
9
  class QuarkDashMAC {
10
+ constructor() {
11
+ this.tempBuffer = new Uint8Array(64 * 1024);
12
+ }
9
13
  /**
10
14
  * Sign data async
11
15
  * @param data {Uint8Array} Data buffer
@@ -15,7 +19,7 @@ class QuarkDashMAC {
15
19
  */
16
20
  async sign(data, key) {
17
21
  const full = utils_1.QuarkDashUtils.concatBytes(key, data);
18
- return await utils_1.QuarkDashUtils.shake256(full, 32);
22
+ return ((0, shake_1.isWasmShake)()) ? shake_1.Shake256Wasm.shake256Wasm(full, 32) : shake_1.Shake256.hash(full, 32);
19
23
  }
20
24
  /**
21
25
  * Verify async
@@ -29,6 +33,38 @@ class QuarkDashMAC {
29
33
  const expected = await this.sign(data, key);
30
34
  return utils_1.QuarkDashUtils.constantTimeEqual(expected, tag);
31
35
  }
36
+ /**
37
+ * Sign two async
38
+ * @param data1 {Uint8Array} First buffer
39
+ * @param data2 {Uint8Array} Second buffer
40
+ * @param key {Uint8Array} Key
41
+ * @returns {Promise<Uint8Array>}
42
+ */
43
+ async signTwo(data1, data2, key) {
44
+ const totalLen = key.length + data1.length + data2.length;
45
+ if (totalLen > this.tempBuffer.length) {
46
+ this.tempBuffer = new Uint8Array(totalLen);
47
+ }
48
+ this.tempBuffer.set(key, 0);
49
+ this.tempBuffer.set(data1, key.length);
50
+ this.tempBuffer.set(data2, key.length + data1.length);
51
+ return ((0, shake_1.isWasmShake)()) ? shake_1.Shake256Wasm.shake256Wasm(this.tempBuffer.subarray(0, totalLen), 32) : shake_1.Shake256.hash(this.tempBuffer.subarray(0, totalLen), 32);
52
+ }
53
+ /**
54
+ * Sign two sync
55
+ * @param data1 {Uint8Array} First buffer
56
+ * @param data2 {Uint8Array} Second buffer
57
+ * @param key {Uint8Array} Key
58
+ * @returns {Uint8Array}
59
+ */
60
+ signTwoSync(data1, data2, key) {
61
+ const totalLen = key.length + data1.length + data2.length;
62
+ const combined = new Uint8Array(totalLen);
63
+ combined.set(key, 0);
64
+ combined.set(data1, key.length);
65
+ combined.set(data2, key.length + data1.length);
66
+ return ((0, shake_1.isWasmShake)()) ? shake_1.Shake256Wasm.shake256Wasm(combined, 32) : shake_1.Shake256.hashSync(combined, 32);
67
+ }
32
68
  /**
33
69
  * Sign data sync
34
70
  * @param data {Uint8Array} Data buffer
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mac.js","sourceRoot":"","sources":["../../../src/core/mac.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":""}
@@ -1,20 +1,17 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.QuarkDashUtils = void 0;
7
4
  /**
8
5
  * QuarkDash Crypto Utils
9
6
  *
10
7
  * @git https://github.com/devsdaddy/quarkdash
11
- * @version 1.0.0
8
+ * @version 1.1.0
12
9
  * @author Elijah Rastorguev
13
- * @build 1000
10
+ * @build 1001
14
11
  * @website https://dev.to/devsdaddy
12
+ * @updated 13.04.2026
15
13
  */
16
- const crypto_1 = __importDefault(require("crypto"));
17
- const shake_1 = require("./shake");
14
+ const shake_1 = require("../hash/shake");
18
15
  /**
19
16
  * Crypto Utils Class
20
17
  */
@@ -119,7 +116,7 @@ class QuarkDashUtils {
119
116
  * @returns {Uint8Array} Random bytes buffer
120
117
  */
121
118
  static randomBytes(len) {
122
- return crypto_1.default.getRandomValues(new Uint8Array(len));
119
+ return crypto.getRandomValues(new Uint8Array(len));
123
120
  }
124
121
  /**
125
122
  * Convert raw text to bytes array
@@ -262,6 +259,26 @@ class QuarkDashUtils {
262
259
  v |= BigInt(arr[off + i]) << BigInt(i * 8);
263
260
  return v;
264
261
  }
262
+ /**
263
+ * Read Uint32 Little Endian Value
264
+ * @param arr {Uint8Array} Buffer
265
+ * @param off {number} Offset
266
+ */
267
+ static readUint32LE(arr, off) {
268
+ return (arr[off] | (arr[off + 1] << 8) | (arr[off + 2] << 16) | (arr[off + 3] << 24)) >>> 0;
269
+ }
270
+ /**
271
+ * Write Uint32 Little Endian Value
272
+ * @param v {number} Value
273
+ * @param arr {Uint8Array} Buffer
274
+ * @param off {number} Offset
275
+ */
276
+ static writeUint32LE(v, arr, off) {
277
+ arr[off] = v & 0xFF;
278
+ arr[off + 1] = (v >>> 8) & 0xFF;
279
+ arr[off + 2] = (v >>> 16) & 0xFF;
280
+ arr[off + 3] = (v >>> 24) & 0xFF;
281
+ }
265
282
  }
266
283
  exports.QuarkDashUtils = QuarkDashUtils;
267
284
  // Protected Constants
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/core/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.loadWasmModule = loadWasmModule;
37
+ /**
38
+ * QuarkDash Crypto WebAssembly Loader
39
+ *
40
+ * @git https://github.com/devsdaddy/quarkdash
41
+ * @version 1.1.0
42
+ * @author Elijah Rastorguev
43
+ * @build 1010
44
+ * @website https://dev.to/devsdaddy
45
+ * @updated 14.04.2026
46
+ */
47
+ // WASM Variables
48
+ let wasmPromise = null;
49
+ let wasmCache = null;
50
+ /**
51
+ * Load WASM Module
52
+ * @param wasmUrl
53
+ */
54
+ async function loadWasmModule(wasmUrl) {
55
+ if (wasmCache)
56
+ return wasmCache;
57
+ if (wasmPromise)
58
+ return wasmPromise;
59
+ wasmPromise = (async () => {
60
+ let bytes;
61
+ // For Node js
62
+ if (typeof process !== 'undefined' && process.versions && process.versions.node) {
63
+ try {
64
+ const { readFileSync } = await Promise.resolve().then(() => __importStar(require('fs')));
65
+ const { resolve } = await Promise.resolve().then(() => __importStar(require('path')));
66
+ const possiblePaths = [
67
+ resolve(process.cwd(), wasmUrl),
68
+ resolve(__dirname, wasmUrl)
69
+ ];
70
+ for (const path of possiblePaths) {
71
+ try {
72
+ const buffer = readFileSync(path);
73
+ bytes = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
74
+ return await WebAssembly.compile(bytes);
75
+ }
76
+ catch (e) { /* continue */ }
77
+ }
78
+ throw new Error('WASM file not found in Node.js filesystem');
79
+ }
80
+ catch (err) {
81
+ console.error('Node.js filesystem read failed:', err);
82
+ }
83
+ }
84
+ // Browser support
85
+ try {
86
+ const response = await fetch(wasmUrl);
87
+ if (!response.ok)
88
+ throw new Error(`HTTP ${response.status}`);
89
+ bytes = await response.arrayBuffer();
90
+ return await WebAssembly.compile(bytes);
91
+ }
92
+ catch (err) {
93
+ console.error(`Failed to fetch WASM from ${wasmUrl}:`, err);
94
+ }
95
+ throw new Error('Unable to load WASM module. Please provide a valid URL or install the .wasm file.');
96
+ })();
97
+ wasmCache = await wasmPromise;
98
+ return wasmCache;
99
+ }
100
+ //# sourceMappingURL=wasm_loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm_loader.js","sourceRoot":"","sources":["../../../src/core/wasm_loader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,wCA4CC;AA9DD;;;;;;;;;GASG;AACH,iBAAiB;AACjB,IAAI,WAAW,GAAuC,IAAI,CAAC;AAC3D,IAAI,SAAS,GAA8B,IAAI,CAAC;AAEhD;;;GAGG;AACI,KAAK,UAAU,cAAc,CAAC,OAAe;IAChD,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IAEpC,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;QACtB,IAAI,KAAkB,CAAC;QAEvB,cAAc;QACd,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC9E,IAAI,CAAC;gBACD,MAAM,EAAE,YAAY,EAAE,GAAG,wDAAa,IAAI,GAAC,CAAC;gBAC5C,MAAM,EAAE,OAAO,EAAE,GAAG,wDAAa,MAAM,GAAC,CAAC;gBACzC,MAAM,aAAa,GAAG;oBAClB,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC;oBAC/B,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC;iBAC9B,CAAC;gBACF,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;oBAC/B,IAAI,CAAC;wBACD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;wBAClC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;wBACtF,OAAO,MAAM,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAC5C,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC;gBAClC,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;YACjE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;YAC1D,CAAC;QACL,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7D,KAAK,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;YACrC,OAAO,MAAM,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,6BAA6B,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;IACzG,CAAC,CAAC,EAAE,CAAC;IAEL,SAAS,GAAG,MAAM,WAAW,CAAC;IAC9B,OAAO,SAAS,CAAC;AACrB,CAAC"}