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
@@ -0,0 +1,150 @@
1
+ /**
2
+ * QuarkDash ChaCha 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 { QuarkDashUtils } from "../core/utils";
12
+ /**
13
+ * ChaCha20 Based Cipher Implementation
14
+ */
15
+ export class QuarkDashChaCha {
16
+ /**
17
+ * Create ChaCha20 Cipher
18
+ * @param key {Uint8Array} Key buffer
19
+ * @param nonce {Uint8Array} Nonce buffer
20
+ */
21
+ constructor(key, nonce) {
22
+ if (key.length !== 32)
23
+ throw new Error('Key must be 32 bytes');
24
+ if (nonce.length !== 12)
25
+ throw new Error('Nonce must be 12 bytes');
26
+ this.key = key;
27
+ this.nonce = nonce;
28
+ }
29
+ /**
30
+ * Encrypt data async using ChaCha20
31
+ * @param data {Uint8Array} Raw data buffer
32
+ * @returns {Promise<Uint8Array>} Result buffer
33
+ * TODO: GPU Calculations
34
+ */
35
+ async encrypt(data) { return this.process(data); }
36
+ /**
37
+ * Decrypt data async using ChaCha20
38
+ * @param data {Uint8Array} Encrypted raw data buffer
39
+ * @returns {Promise<Uint8Array>} Result buffer
40
+ * TODO: GPU Calculations
41
+ */
42
+ async decrypt(data) { return this.process(data); }
43
+ /**
44
+ * Encrypt data sync using ChaCha20
45
+ * @param data {Uint8Array} Raw data buffer
46
+ * @returns {Uint8Array} Result buffer
47
+ */
48
+ encryptSync(data) { return this.process(data); }
49
+ /**
50
+ * Decrypt data sync using ChaCha20
51
+ * @param data {Uint8Array} Encrypted raw data buffer
52
+ * @returns {Uint8Array} Result buffer
53
+ */
54
+ decryptSync(data) { return this.process(data); }
55
+ /**
56
+ * Process ChaCha20 Cipher
57
+ * @param data {Uint8Array} Data for processing
58
+ * @returns {Uint8Array} Processing result
59
+ * @private
60
+ */
61
+ process(data) {
62
+ const out = new Uint8Array(data.length);
63
+ let offset = 0;
64
+ let blockCounter = 0;
65
+ while (offset < data.length) {
66
+ const blocksRemaining = Math.ceil((data.length - offset) / QuarkDashChaCha.BLOCK_SIZE);
67
+ const blocksThisBatch = Math.min(QuarkDashChaCha.BLOCKS_PER_BATCH, blocksRemaining);
68
+ const batchSize = blocksThisBatch * QuarkDashChaCha.BLOCK_SIZE;
69
+ const keystream = this.generateKeystreamBatch(blockCounter, blocksThisBatch);
70
+ const bytesToProcess = Math.min(batchSize, data.length - offset);
71
+ for (let i = 0; i < bytesToProcess; i++) {
72
+ out[offset + i] = data[offset + i] ^ keystream[i];
73
+ }
74
+ offset += bytesToProcess;
75
+ blockCounter += blocksThisBatch;
76
+ }
77
+ return out;
78
+ }
79
+ /**
80
+ * Quarter Round
81
+ * @param s {Uint8Array} Buffer
82
+ * @param a {number}
83
+ * @param b {number}
84
+ * @param c {number}
85
+ * @param d {number}
86
+ * @private
87
+ */
88
+ quarterRound(s, a, b, c, d) {
89
+ s[a] += s[b];
90
+ s[d] ^= s[a];
91
+ s[d] = (s[d] << 16) | (s[d] >>> 16);
92
+ s[c] += s[d];
93
+ s[b] ^= s[c];
94
+ s[b] = (s[b] << 12) | (s[b] >>> 20);
95
+ s[a] += s[b];
96
+ s[d] ^= s[a];
97
+ s[d] = (s[d] << 8) | (s[d] >>> 24);
98
+ s[c] += s[d];
99
+ s[b] ^= s[c];
100
+ s[b] = (s[b] << 7) | (s[b] >>> 25);
101
+ }
102
+ /**
103
+ * Generate Keystream Batch
104
+ * @param startCounter {number} Start counter
105
+ * @param count {number} Count
106
+ * @private
107
+ */
108
+ generateKeystreamBatch(startCounter, count) {
109
+ const out = new Uint8Array(count * QuarkDashChaCha.BLOCK_SIZE);
110
+ const state = new Uint32Array(16);
111
+ state[0] = 0x61707865;
112
+ state[1] = 0x3320646e;
113
+ state[2] = 0x79622d32;
114
+ state[3] = 0x6b206574;
115
+ // Ключ
116
+ for (let i = 0; i < 8; i++) {
117
+ state[4 + i] = QuarkDashUtils.readUint32LE(this.key, i * 4);
118
+ }
119
+ // Nonce
120
+ for (let i = 0; i < 3; i++) {
121
+ state[13 + i] = QuarkDashUtils.readUint32LE(this.nonce, i * 4);
122
+ }
123
+ for (let block = 0; block < count; block++) {
124
+ state[12] = startCounter + block;
125
+ const working = new Uint32Array(state);
126
+ for (let round = 0; round < 10; round++) {
127
+ this.quarterRound(working, 0, 4, 8, 12);
128
+ this.quarterRound(working, 1, 5, 9, 13);
129
+ this.quarterRound(working, 2, 6, 10, 14);
130
+ this.quarterRound(working, 3, 7, 11, 15);
131
+ this.quarterRound(working, 0, 5, 10, 15);
132
+ this.quarterRound(working, 1, 6, 11, 12);
133
+ this.quarterRound(working, 2, 7, 8, 13);
134
+ this.quarterRound(working, 3, 4, 9, 14);
135
+ }
136
+ for (let i = 0; i < 16; i++) {
137
+ working[i] += state[i];
138
+ }
139
+ const outOffset = block * QuarkDashChaCha.BLOCK_SIZE;
140
+ for (let i = 0; i < 16; i++) {
141
+ QuarkDashUtils.writeUint32LE(working[i], out, outOffset + i * 4);
142
+ }
143
+ }
144
+ return out;
145
+ }
146
+ }
147
+ QuarkDashChaCha.BLOCK_SIZE = 64;
148
+ QuarkDashChaCha.BLOCKS_PER_BATCH = 32; // 2048 байт за раз
149
+ QuarkDashChaCha.BATCH_SIZE = QuarkDashChaCha.BLOCK_SIZE * QuarkDashChaCha.BLOCKS_PER_BATCH;
150
+ //# 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,30 @@
1
+ import { QuarkDashChaCha } from "./chacha";
2
+ import { QuarkDashGimli } from "./gimli";
3
+ /**
4
+ * Cipher Type
5
+ */
6
+ export var CipherType;
7
+ (function (CipherType) {
8
+ CipherType[CipherType["ChaCha20"] = 0] = "ChaCha20";
9
+ CipherType[CipherType["Gimli"] = 1] = "Gimli";
10
+ })(CipherType || (CipherType = {}));
11
+ /**
12
+ * Cipher Factory
13
+ */
14
+ export class CipherFactory {
15
+ /**
16
+ * Create Cipher
17
+ * @param algorithm {CipherType} Current cipher type
18
+ * @param key {Uint8Array} Key buffer
19
+ * @param nonce {Uint8Array} Nonce buffer
20
+ * @returns {ICipher} Cipher class instance
21
+ */
22
+ static create(algorithm, key, nonce) {
23
+ switch (algorithm) {
24
+ case CipherType.ChaCha20: return new QuarkDashChaCha(key, nonce);
25
+ case CipherType.Gimli: return new QuarkDashGimli(key, nonce);
26
+ default: throw new Error('Unsupported cipher type');
27
+ }
28
+ }
29
+ }
30
+ //# sourceMappingURL=cipher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cipher.js","sourceRoot":"","sources":["../../../src/cipher/cipher.ts"],"names":[],"mappings":"AAaA,OAAO,EAAC,eAAe,EAAC,MAAM,UAAU,CAAC;AACzC,OAAO,EAAC,cAAc,EAAC,MAAM,SAAS,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IAClB,mDAAY,CAAA;IACZ,6CAAS,CAAA;AACb,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAED;;GAEG;AACH,MAAM,OAAO,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,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACjE,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC7D,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACxD,CAAC;IACL,CAAC;CACJ"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * QuarkDash Gimli 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 { QuarkDashUtils } from "../core/utils";
12
+ /**
13
+ * Gimli Cipher
14
+ */
15
+ export class QuarkDashGimli {
16
+ /**
17
+ * Create Gimli Cipher
18
+ * @param key {Uint8Array} Key buffer
19
+ * @param nonce {Uint8Array} Nonce buffer
20
+ */
21
+ constructor(key, nonce) {
22
+ if (key.length !== 32)
23
+ throw new Error('Key must be 32 bytes');
24
+ if (nonce.length !== 12)
25
+ throw new Error('Nonce must be 12 bytes');
26
+ this.key = key;
27
+ this.nonce = nonce;
28
+ }
29
+ /**
30
+ * Encrypt data async using Gimli
31
+ * @param data {Uint8Array} Raw data buffer
32
+ * @returns {Promise<Uint8Array>} Result buffer
33
+ * TODO: GPU Calculations
34
+ */
35
+ async encrypt(data) { return this.process(data); }
36
+ /**
37
+ * Decrypt data async using Gimli
38
+ * @param data {Uint8Array} Encrypted raw data buffer
39
+ * @returns {Promise<Uint8Array>} Result buffer
40
+ * TODO: GPU Calculations
41
+ */
42
+ async decrypt(data) { return this.process(data); }
43
+ /**
44
+ * Encrypt data sync using Gimli
45
+ * @param data {Uint8Array} Raw data buffer
46
+ * @returns {Uint8Array} Result buffer
47
+ */
48
+ encryptSync(data) { return this.process(data); }
49
+ /**
50
+ * Decrypt data sync using Gimli
51
+ * @param data {Uint8Array} Encrypted raw data buffer
52
+ * @returns {Uint8Array} Result buffer
53
+ */
54
+ decryptSync(data) { return this.process(data); }
55
+ /**
56
+ * Process Gimli Cipher
57
+ * @param data {Uint8Array} Input buffer
58
+ * @returns {Uint8Array} Output buffer
59
+ * @private
60
+ */
61
+ process(data) {
62
+ const out = new Uint8Array(data.length);
63
+ let offset = 0;
64
+ let blockCounter = 0;
65
+ while (offset < data.length) {
66
+ const blocksRemaining = Math.ceil((data.length - offset) / QuarkDashGimli.BLOCK_SIZE);
67
+ const blocksThisBatch = Math.min(QuarkDashGimli.BLOCKS_PER_BATCH, blocksRemaining);
68
+ const batchSize = blocksThisBatch * QuarkDashGimli.BLOCK_SIZE;
69
+ const keystream = this.generateKeystreamBatch(blockCounter, blocksThisBatch);
70
+ const bytesToProcess = Math.min(batchSize, data.length - offset);
71
+ for (let i = 0; i < bytesToProcess; i++) {
72
+ out[offset + i] = data[offset + i] ^ keystream[i];
73
+ }
74
+ offset += bytesToProcess;
75
+ blockCounter += blocksThisBatch;
76
+ }
77
+ return out;
78
+ }
79
+ /**
80
+ * Generate keystream batch
81
+ * @param startCounter {number} Start counter
82
+ * @param count {number} Count
83
+ * @private
84
+ */
85
+ generateKeystreamBatch(startCounter, count) {
86
+ const out = new Uint8Array(count * QuarkDashGimli.BLOCK_SIZE);
87
+ const state = new Uint32Array(12);
88
+ for (let i = 0; i < 8; i++) {
89
+ state[i] = QuarkDashUtils.readUint32LE(this.key, i * 4);
90
+ }
91
+ // Nonce
92
+ state[8] = QuarkDashUtils.readUint32LE(this.nonce, 0);
93
+ state[9] = QuarkDashUtils.readUint32LE(this.nonce, 4);
94
+ state[10] = QuarkDashUtils.readUint32LE(this.nonce, 8);
95
+ for (let block = 0; block < count; block++) {
96
+ state[11] = startCounter + block;
97
+ const working = new Uint32Array(state);
98
+ for (let round = 0; round < 24; round++) {
99
+ this.gimliRound(working, round);
100
+ }
101
+ const outOffset = block * QuarkDashGimli.BLOCK_SIZE;
102
+ for (let i = 0; i < 12; i++) {
103
+ QuarkDashUtils.writeUint32LE(working[i], out, outOffset + i * 4);
104
+ }
105
+ }
106
+ return out;
107
+ }
108
+ /**
109
+ * Gimli Round
110
+ * @param state {Uint32Array} State buffer
111
+ * @param round {number} Round number
112
+ * @private
113
+ */
114
+ gimliRound(state, round) {
115
+ for (let i = 0; i < 4; i++) {
116
+ const x = state[i];
117
+ const y = state[i + 4];
118
+ const z = state[i + 8];
119
+ const newX = x ^ (z << 1) ^ ((y & z) << 2);
120
+ const newY = y ^ x ^ ((x | z) << 1);
121
+ const newZ = z ^ y ^ ((x & y) << 3);
122
+ state[i] = newX;
123
+ state[i + 4] = newY;
124
+ state[i + 8] = newZ;
125
+ }
126
+ // Перестановка слов
127
+ const t = state[1];
128
+ state[1] = state[2];
129
+ state[2] = state[3];
130
+ state[3] = t;
131
+ if ((round & 3) === 0) {
132
+ state[0] ^= (0x9e377900 | round);
133
+ }
134
+ }
135
+ }
136
+ QuarkDashGimli.BLOCK_SIZE = 48;
137
+ QuarkDashGimli.BLOCKS_PER_BATCH = 32; // 1536 байт за раз
138
+ QuarkDashGimli.BATCH_SIZE = QuarkDashGimli.BLOCK_SIZE * QuarkDashGimli.BLOCKS_PER_BATCH;
139
+ //# 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,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"}
@@ -0,0 +1,87 @@
1
+ import { QuarkDashUtils } from "./utils";
2
+ import { Shake256, Shake256Wasm, isWasmShake } from "../hash/shake";
3
+ /**
4
+ * MAC implementation using Shake-256
5
+ */
6
+ export class QuarkDashMAC {
7
+ constructor() {
8
+ this.tempBuffer = new Uint8Array(64 * 1024);
9
+ }
10
+ /**
11
+ * Sign data async
12
+ * @param data {Uint8Array} Data buffer
13
+ * @param key {Uint8Array} Key buffer
14
+ * @returns {Promise<Uint8Array>} Signed result buffer
15
+ * TODO: GPU Calculations
16
+ */
17
+ async sign(data, key) {
18
+ const full = QuarkDashUtils.concatBytes(key, data);
19
+ return (isWasmShake()) ? Shake256Wasm.shake256Wasm(full, 32) : Shake256.hash(full, 32);
20
+ }
21
+ /**
22
+ * Verify async
23
+ * @param data {Uint8Array} data buffer
24
+ * @param key {Uint8Array} key buffer
25
+ * @param tag {Uint8Array} tag buffer
26
+ * @returns {Promise<boolean>} Is verified?
27
+ * TODO: GPU Calculations
28
+ */
29
+ async verify(data, key, tag) {
30
+ const expected = await this.sign(data, key);
31
+ return QuarkDashUtils.constantTimeEqual(expected, tag);
32
+ }
33
+ /**
34
+ * Sign two async
35
+ * @param data1 {Uint8Array} First buffer
36
+ * @param data2 {Uint8Array} Second buffer
37
+ * @param key {Uint8Array} Key
38
+ * @returns {Promise<Uint8Array>}
39
+ */
40
+ async signTwo(data1, data2, key) {
41
+ const totalLen = key.length + data1.length + data2.length;
42
+ if (totalLen > this.tempBuffer.length) {
43
+ this.tempBuffer = new Uint8Array(totalLen);
44
+ }
45
+ this.tempBuffer.set(key, 0);
46
+ this.tempBuffer.set(data1, key.length);
47
+ this.tempBuffer.set(data2, key.length + data1.length);
48
+ return (isWasmShake()) ? Shake256Wasm.shake256Wasm(this.tempBuffer.subarray(0, totalLen), 32) : Shake256.hash(this.tempBuffer.subarray(0, totalLen), 32);
49
+ }
50
+ /**
51
+ * Sign two sync
52
+ * @param data1 {Uint8Array} First buffer
53
+ * @param data2 {Uint8Array} Second buffer
54
+ * @param key {Uint8Array} Key
55
+ * @returns {Uint8Array}
56
+ */
57
+ signTwoSync(data1, data2, key) {
58
+ const totalLen = key.length + data1.length + data2.length;
59
+ const combined = new Uint8Array(totalLen);
60
+ combined.set(key, 0);
61
+ combined.set(data1, key.length);
62
+ combined.set(data2, key.length + data1.length);
63
+ return (isWasmShake()) ? Shake256Wasm.shake256Wasm(combined, 32) : Shake256.hashSync(combined, 32);
64
+ }
65
+ /**
66
+ * Sign data sync
67
+ * @param data {Uint8Array} Data buffer
68
+ * @param key {Uint8Array} Key buffer
69
+ * @returns {Uint8Array} Signed result buffer
70
+ */
71
+ signSync(data, key) {
72
+ const full = QuarkDashUtils.concatBytes(key, data);
73
+ return QuarkDashUtils.shake256Sync(full, 32);
74
+ }
75
+ /**
76
+ * Verify sync
77
+ * @param data {Uint8Array} data buffer
78
+ * @param key {Uint8Array} key buffer
79
+ * @param tag {Uint8Array} tag buffer
80
+ * @returns {Promise<boolean>} Is verified?
81
+ */
82
+ verifySync(data, key, tag) {
83
+ const expected = this.signSync(data, key);
84
+ return QuarkDashUtils.constantTimeEqual(expected, tag);
85
+ }
86
+ }
87
+ //# sourceMappingURL=mac.js.map
@@ -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":""}
@@ -2,13 +2,13 @@
2
2
  * QuarkDash Crypto Utils
3
3
  *
4
4
  * @git https://github.com/devsdaddy/quarkdash
5
- * @version 1.0.0
5
+ * @version 1.1.0
6
6
  * @author Elijah Rastorguev
7
- * @build 1000
7
+ * @build 1001
8
8
  * @website https://dev.to/devsdaddy
9
+ * @updated 13.04.2026
9
10
  */
10
- import crypto from "crypto";
11
- import { Shake256 } from "./shake";
11
+ import { Shake256 } from "../hash/shake";
12
12
  /**
13
13
  * Crypto Utils Class
14
14
  */
@@ -256,6 +256,26 @@ export class QuarkDashUtils {
256
256
  v |= BigInt(arr[off + i]) << BigInt(i * 8);
257
257
  return v;
258
258
  }
259
+ /**
260
+ * Read Uint32 Little Endian Value
261
+ * @param arr {Uint8Array} Buffer
262
+ * @param off {number} Offset
263
+ */
264
+ static readUint32LE(arr, off) {
265
+ return (arr[off] | (arr[off + 1] << 8) | (arr[off + 2] << 16) | (arr[off + 3] << 24)) >>> 0;
266
+ }
267
+ /**
268
+ * Write Uint32 Little Endian Value
269
+ * @param v {number} Value
270
+ * @param arr {Uint8Array} Buffer
271
+ * @param off {number} Offset
272
+ */
273
+ static writeUint32LE(v, arr, off) {
274
+ arr[off] = v & 0xFF;
275
+ arr[off + 1] = (v >>> 8) & 0xFF;
276
+ arr[off + 2] = (v >>> 16) & 0xFF;
277
+ arr[off + 3] = (v >>> 24) & 0xFF;
278
+ }
259
279
  }
260
280
  // Protected Constants
261
281
  QuarkDashUtils.HEXChars = '0123456789abcdef';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/core/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * QuarkDash Crypto WebAssembly Loader
3
+ *
4
+ * @git https://github.com/devsdaddy/quarkdash
5
+ * @version 1.1.0
6
+ * @author Elijah Rastorguev
7
+ * @build 1010
8
+ * @website https://dev.to/devsdaddy
9
+ * @updated 14.04.2026
10
+ */
11
+ // WASM Variables
12
+ let wasmPromise = null;
13
+ let wasmCache = null;
14
+ /**
15
+ * Load WASM Module
16
+ * @param wasmUrl
17
+ */
18
+ export async function loadWasmModule(wasmUrl) {
19
+ if (wasmCache)
20
+ return wasmCache;
21
+ if (wasmPromise)
22
+ return wasmPromise;
23
+ wasmPromise = (async () => {
24
+ let bytes;
25
+ // For Node js
26
+ if (typeof process !== 'undefined' && process.versions && process.versions.node) {
27
+ try {
28
+ const { readFileSync } = await import('fs');
29
+ const { resolve } = await import('path');
30
+ const possiblePaths = [
31
+ resolve(process.cwd(), wasmUrl),
32
+ resolve(__dirname, wasmUrl)
33
+ ];
34
+ for (const path of possiblePaths) {
35
+ try {
36
+ const buffer = readFileSync(path);
37
+ bytes = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
38
+ return await WebAssembly.compile(bytes);
39
+ }
40
+ catch (e) { /* continue */ }
41
+ }
42
+ throw new Error('WASM file not found in Node.js filesystem');
43
+ }
44
+ catch (err) {
45
+ console.error('Node.js filesystem read failed:', err);
46
+ }
47
+ }
48
+ // Browser support
49
+ try {
50
+ const response = await fetch(wasmUrl);
51
+ if (!response.ok)
52
+ throw new Error(`HTTP ${response.status}`);
53
+ bytes = await response.arrayBuffer();
54
+ return await WebAssembly.compile(bytes);
55
+ }
56
+ catch (err) {
57
+ console.error(`Failed to fetch WASM from ${wasmUrl}:`, err);
58
+ }
59
+ throw new Error('Unable to load WASM module. Please provide a valid URL or install the .wasm file.');
60
+ })();
61
+ wasmCache = await wasmPromise;
62
+ return wasmCache;
63
+ }
64
+ //# sourceMappingURL=wasm_loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm_loader.js","sourceRoot":"","sources":["../../../src/core/wasm_loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,iBAAiB;AACjB,IAAI,WAAW,GAAuC,IAAI,CAAC;AAC3D,IAAI,SAAS,GAA8B,IAAI,CAAC;AAEhD;;;GAGG;AACH,MAAM,CAAC,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,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,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"}