quarkdash 1.0.2 → 1.0.5
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.
- package/coverage/clover.xml +218 -72
- package/coverage/coverage-final.json +5 -4
- package/coverage/lcov-report/cipher.ts.html +1 -1
- package/coverage/lcov-report/crypto.ts.html +3 -3
- package/coverage/lcov-report/index.html +30 -15
- package/coverage/lcov-report/index.ts.html +13 -4
- package/coverage/lcov-report/kdf.ts.html +1 -1
- package/coverage/lcov-report/mac.ts.html +1 -1
- package/coverage/lcov-report/ringlwe.ts.html +73 -19
- package/coverage/lcov-report/sha.ts.html +877 -0
- package/coverage/lcov-report/shake.ts.html +1 -1
- package/coverage/lcov-report/utils.ts.html +9 -9
- package/coverage/lcov.info +274 -98
- package/dist/cjs/crypto.js +2 -2
- package/dist/cjs/crypto.js.map +1 -1
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/ringlwe.js +23 -6
- package/dist/cjs/ringlwe.js.map +1 -1
- package/dist/cjs/sha.js +242 -0
- package/dist/cjs/sha.js.map +1 -0
- package/dist/esm/crypto.js +2 -2
- package/dist/esm/crypto.js.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/ringlwe.js +23 -6
- package/dist/esm/ringlwe.js.map +1 -1
- package/dist/esm/sha.js +237 -0
- package/dist/esm/sha.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/ringlwe.d.ts +13 -2
- package/dist/types/sha.d.ts +49 -0
- package/dist/types/types.d.ts +2 -2
- package/package.json +1 -1
- package/src/crypto.ts +2 -2
- package/src/index.ts +3 -0
- package/src/ringlwe.ts +30 -12
- package/src/sha.ts +265 -0
- package/src/types.ts +2 -2
package/dist/esm/sha.js
ADDED
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QuarkDash SHA Implementations
|
|
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
|
+
/**
|
|
11
|
+
* SHA-256 Implementation
|
|
12
|
+
*/
|
|
13
|
+
export class SHA256 {
|
|
14
|
+
/**
|
|
15
|
+
* Right Rotate
|
|
16
|
+
* @param value {number} Value to rotate
|
|
17
|
+
* @param amount {number} Rotate amount
|
|
18
|
+
* @private
|
|
19
|
+
*/
|
|
20
|
+
static rightRotate(value, amount) {
|
|
21
|
+
return (value >>> amount) | (value << (32 - amount));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get SHA256 Hash
|
|
25
|
+
* @param data {string|Uint8Array} Raw string or bytes array
|
|
26
|
+
* @param returnBytes {boolean} Returns HEX String or Uint8Array
|
|
27
|
+
* @returns {string|Uint8Array} HEX String or Uint8Array
|
|
28
|
+
*/
|
|
29
|
+
static hash(data, returnBytes = false) {
|
|
30
|
+
const msgBytes = typeof data === 'string' ? new TextEncoder().encode(data) : data;
|
|
31
|
+
// Initial hash values
|
|
32
|
+
let h0 = 0x6a09e667;
|
|
33
|
+
let h1 = 0xbb67ae85;
|
|
34
|
+
let h2 = 0x3c6ef372;
|
|
35
|
+
let h3 = 0xa54ff53a;
|
|
36
|
+
let h4 = 0x510e527f;
|
|
37
|
+
let h5 = 0x9b05688c;
|
|
38
|
+
let h6 = 0x1f83d9ab;
|
|
39
|
+
let h7 = 0x5be0cd19;
|
|
40
|
+
// Pre-processing: padding
|
|
41
|
+
const ml = msgBytes.length * 8;
|
|
42
|
+
const padded = new Uint8Array(((ml + 64 + 511) & ~511) / 8);
|
|
43
|
+
padded.set(msgBytes);
|
|
44
|
+
padded[msgBytes.length] = 0x80;
|
|
45
|
+
// Append length
|
|
46
|
+
const dv = new DataView(padded.buffer);
|
|
47
|
+
dv.setUint32(padded.length - 8, 0, false);
|
|
48
|
+
dv.setUint32(padded.length - 4, ml, false);
|
|
49
|
+
// Process chunks
|
|
50
|
+
for (let i = 0; i < padded.length; i += 64) {
|
|
51
|
+
const w = new Array(64).fill(0);
|
|
52
|
+
// Prepare message schedule
|
|
53
|
+
for (let j = 0; j < 16; j++) {
|
|
54
|
+
w[j] = dv.getUint32(i + j * 4, false);
|
|
55
|
+
}
|
|
56
|
+
for (let j = 16; j < 64; j++) {
|
|
57
|
+
const s0 = this.rightRotate(w[j - 15], 7) ^ this.rightRotate(w[j - 15], 18) ^ (w[j - 15] >>> 3);
|
|
58
|
+
const s1 = this.rightRotate(w[j - 2], 17) ^ this.rightRotate(w[j - 2], 19) ^ (w[j - 2] >>> 10);
|
|
59
|
+
w[j] = (w[j - 16] + s0 + w[j - 7] + s1) >>> 0;
|
|
60
|
+
}
|
|
61
|
+
// Initialize working variables
|
|
62
|
+
let a = h0;
|
|
63
|
+
let b = h1;
|
|
64
|
+
let c = h2;
|
|
65
|
+
let d = h3;
|
|
66
|
+
let e = h4;
|
|
67
|
+
let f = h5;
|
|
68
|
+
let g = h6;
|
|
69
|
+
let h = h7;
|
|
70
|
+
// Main loop
|
|
71
|
+
for (let j = 0; j < 64; j++) {
|
|
72
|
+
const S1 = this.rightRotate(e, 6) ^ this.rightRotate(e, 11) ^ this.rightRotate(e, 25);
|
|
73
|
+
const ch = (e & f) ^ ((~e) & g);
|
|
74
|
+
const temp1 = (h + S1 + ch + this.K[j] + w[j]) >>> 0;
|
|
75
|
+
const S0 = this.rightRotate(a, 2) ^ this.rightRotate(a, 13) ^ this.rightRotate(a, 22);
|
|
76
|
+
const maj = (a & b) ^ (a & c) ^ (b & c);
|
|
77
|
+
const temp2 = (S0 + maj) >>> 0;
|
|
78
|
+
h = g;
|
|
79
|
+
g = f;
|
|
80
|
+
f = e;
|
|
81
|
+
e = (d + temp1) >>> 0;
|
|
82
|
+
d = c;
|
|
83
|
+
c = b;
|
|
84
|
+
b = a;
|
|
85
|
+
a = (temp1 + temp2) >>> 0;
|
|
86
|
+
}
|
|
87
|
+
// Update hash values
|
|
88
|
+
h0 = (h0 + a) >>> 0;
|
|
89
|
+
h1 = (h1 + b) >>> 0;
|
|
90
|
+
h2 = (h2 + c) >>> 0;
|
|
91
|
+
h3 = (h3 + d) >>> 0;
|
|
92
|
+
h4 = (h4 + e) >>> 0;
|
|
93
|
+
h5 = (h5 + f) >>> 0;
|
|
94
|
+
h6 = (h6 + g) >>> 0;
|
|
95
|
+
h7 = (h7 + h) >>> 0;
|
|
96
|
+
}
|
|
97
|
+
// Produce final hash
|
|
98
|
+
const result = new Uint8Array(32);
|
|
99
|
+
const resultView = new DataView(result.buffer);
|
|
100
|
+
resultView.setUint32(0, h0, false);
|
|
101
|
+
resultView.setUint32(4, h1, false);
|
|
102
|
+
resultView.setUint32(8, h2, false);
|
|
103
|
+
resultView.setUint32(12, h3, false);
|
|
104
|
+
resultView.setUint32(16, h4, false);
|
|
105
|
+
resultView.setUint32(20, h5, false);
|
|
106
|
+
resultView.setUint32(24, h6, false);
|
|
107
|
+
resultView.setUint32(28, h7, false);
|
|
108
|
+
return (returnBytes) ? result : Array.from(result).map(b => b.toString(16).padStart(2, '0')).join('');
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// Constants
|
|
112
|
+
SHA256.K = [
|
|
113
|
+
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
|
114
|
+
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
|
|
115
|
+
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
|
|
116
|
+
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
|
|
117
|
+
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
|
|
118
|
+
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
|
|
119
|
+
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
|
|
120
|
+
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
|
|
121
|
+
];
|
|
122
|
+
/**
|
|
123
|
+
* SHA-512 Implementation
|
|
124
|
+
*/
|
|
125
|
+
export class SHA512 {
|
|
126
|
+
/**
|
|
127
|
+
* Bitint right rotate
|
|
128
|
+
* @param value {number} Value
|
|
129
|
+
* @param amount {number} Rotate amount
|
|
130
|
+
* @private
|
|
131
|
+
*/
|
|
132
|
+
static rightRotate(value, amount) {
|
|
133
|
+
return (value >> BigInt(amount)) | (value << (64n - BigInt(amount)));
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Get SHA512 Hash
|
|
137
|
+
* @param data {string|Uint8Array} Raw string or bytes array
|
|
138
|
+
* @param returnBytes {boolean} Returns HEX String or Uint8Array
|
|
139
|
+
* @returns {string|Uint8Array} HEX String or Uint8Array
|
|
140
|
+
*/
|
|
141
|
+
static hash(data, returnBytes = false) {
|
|
142
|
+
const msgBytes = typeof data === "string" ? new TextEncoder().encode(data) : data;
|
|
143
|
+
// Initial hash values
|
|
144
|
+
let h0 = 0x6a09e667f3bcc908n;
|
|
145
|
+
let h1 = 0xbb67ae8584caa73bn;
|
|
146
|
+
let h2 = 0x3c6ef372fe94f82bn;
|
|
147
|
+
let h3 = 0xa54ff53a5f1d36f1n;
|
|
148
|
+
let h4 = 0x510e527fade682d1n;
|
|
149
|
+
let h5 = 0x9b05688c2b3e6c1fn;
|
|
150
|
+
let h6 = 0x1f83d9abfb41bd6bn;
|
|
151
|
+
let h7 = 0x5be0cd19137e2179n;
|
|
152
|
+
const ml = BigInt(msgBytes.length * 8);
|
|
153
|
+
const padded = new Uint8Array((((Number(ml) + 128 + 1023) & ~1023) / 8));
|
|
154
|
+
padded.set(msgBytes);
|
|
155
|
+
padded[msgBytes.length] = 0x80;
|
|
156
|
+
const dv = new DataView(padded.buffer);
|
|
157
|
+
dv.setBigUint64(padded.length - 8, ml, false);
|
|
158
|
+
for (let i = 0; i < padded.length; i += 128) {
|
|
159
|
+
const w = new Array(80).fill(0n);
|
|
160
|
+
for (let j = 0; j < 16; j++) {
|
|
161
|
+
w[j] = dv.getBigUint64(i + j * 8, false);
|
|
162
|
+
}
|
|
163
|
+
for (let j = 16; j < 80; j++) {
|
|
164
|
+
const s0 = this.rightRotate(w[j - 15], 1) ^ this.rightRotate(w[j - 15], 8) ^ (w[j - 15] >> 7n);
|
|
165
|
+
const s1 = this.rightRotate(w[j - 2], 19) ^ this.rightRotate(w[j - 2], 61) ^ (w[j - 2] >> 6n);
|
|
166
|
+
w[j] = (w[j - 16] + s0 + w[j - 7] + s1) & 0xffffffffffffffffn;
|
|
167
|
+
}
|
|
168
|
+
let a = h0;
|
|
169
|
+
let b = h1;
|
|
170
|
+
let c = h2;
|
|
171
|
+
let d = h3;
|
|
172
|
+
let e = h4;
|
|
173
|
+
let f = h5;
|
|
174
|
+
let g = h6;
|
|
175
|
+
let h = h7;
|
|
176
|
+
for (let j = 0; j < 80; j++) {
|
|
177
|
+
const S1 = this.rightRotate(e, 14) ^ this.rightRotate(e, 18) ^ this.rightRotate(e, 41);
|
|
178
|
+
const ch = (e & f) ^ ((~e) & g);
|
|
179
|
+
const temp1 = (h + S1 + ch + this.K[j] + w[j]) & 0xffffffffffffffffn;
|
|
180
|
+
const S0 = this.rightRotate(a, 28) ^ this.rightRotate(a, 34) ^ this.rightRotate(a, 39);
|
|
181
|
+
const maj = (a & b) ^ (a & c) ^ (b & c);
|
|
182
|
+
const temp2 = (S0 + maj) & 0xffffffffffffffffn;
|
|
183
|
+
h = g;
|
|
184
|
+
g = f;
|
|
185
|
+
f = e;
|
|
186
|
+
e = (d + temp1) & 0xffffffffffffffffn;
|
|
187
|
+
d = c;
|
|
188
|
+
c = b;
|
|
189
|
+
b = a;
|
|
190
|
+
a = (temp1 + temp2) & 0xffffffffffffffffn;
|
|
191
|
+
}
|
|
192
|
+
h0 = (h0 + a) & 0xffffffffffffffffn;
|
|
193
|
+
h1 = (h1 + b) & 0xffffffffffffffffn;
|
|
194
|
+
h2 = (h2 + c) & 0xffffffffffffffffn;
|
|
195
|
+
h3 = (h3 + d) & 0xffffffffffffffffn;
|
|
196
|
+
h4 = (h4 + e) & 0xffffffffffffffffn;
|
|
197
|
+
h5 = (h5 + f) & 0xffffffffffffffffn;
|
|
198
|
+
h6 = (h6 + g) & 0xffffffffffffffffn;
|
|
199
|
+
h7 = (h7 + h) & 0xffffffffffffffffn;
|
|
200
|
+
}
|
|
201
|
+
const result = new Uint8Array(64);
|
|
202
|
+
const resultView = new DataView(result.buffer);
|
|
203
|
+
resultView.setBigUint64(0, h0, false);
|
|
204
|
+
resultView.setBigUint64(8, h1, false);
|
|
205
|
+
resultView.setBigUint64(16, h2, false);
|
|
206
|
+
resultView.setBigUint64(24, h3, false);
|
|
207
|
+
resultView.setBigUint64(32, h4, false);
|
|
208
|
+
resultView.setBigUint64(40, h5, false);
|
|
209
|
+
resultView.setBigUint64(48, h6, false);
|
|
210
|
+
resultView.setBigUint64(56, h7, false);
|
|
211
|
+
return (returnBytes) ? result : Array.from(result).map(b => b.toString(16).padStart(2, '0')).join('');
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
// Constants
|
|
215
|
+
SHA512.K = [
|
|
216
|
+
0x428a2f98d728ae22n, 0x7137449123ef65cdn, 0xb5c0fbcfec4d3b2fn, 0xe9b5dba58189dbbcn,
|
|
217
|
+
0x3956c25bf348b538n, 0x59f111f1b605d019n, 0x923f82a4af194f9bn, 0xab1c5ed5da6d8118n,
|
|
218
|
+
0xd807aa98a3030242n, 0x12835b0145706fben, 0x243185be4ee4b28cn, 0x550c7dc3d5ffb4e2n,
|
|
219
|
+
0x72be5d74f27b896fn, 0x80deb1fe3b1696b1n, 0x9bdc06a725c71235n, 0xc19bf174cf692694n,
|
|
220
|
+
0xe49b69c19ef14ad2n, 0xefbe4786384f25e3n, 0x0fc19dc68b8cd5b5n, 0x240ca1cc77ac9c65n,
|
|
221
|
+
0x2de92c6f592b0275n, 0x4a7484aa6ea6e483n, 0x5cb0a9dcbd41fbd4n, 0x76f988da831153b5n,
|
|
222
|
+
0x983e5152ee66dfabn, 0xa831c66d2db43210n, 0xb00327c898fb213fn, 0xbf597fc7beef0ee4n,
|
|
223
|
+
0xc6e00bf33da88fc2n, 0xd5a79147930aa725n, 0x06ca6351e003826fn, 0x142929670a0e6e70n,
|
|
224
|
+
0x27b70a8546d22ffcn, 0x2e1b21385c26c926n, 0x4d2c6dfc5ac42aedn, 0x53380d139d95b3dfn,
|
|
225
|
+
0x650a73548baf63den, 0x766a0abb3c77b2a8n, 0x81c2c92e47edaee6n, 0x92722c851482353bn,
|
|
226
|
+
0xa2bfe8a14cf10364n, 0xa81a664bbc423001n, 0xc24b8b70d0f89791n, 0xc76c51a30654be30n,
|
|
227
|
+
0xd192e819d6ef5218n, 0xd69906245565a910n, 0xf40e35855771202an, 0x106aa07032bbd1b8n,
|
|
228
|
+
0x19a4c116b8d2d0c8n, 0x1e376c085141ab53n, 0x2748774cdf8eeb99n, 0x34b0bcb5e19b48a8n,
|
|
229
|
+
0x391c0cb3c5c95a63n, 0x4ed8aa4ae3418acbn, 0x5b9cca4f7763e373n, 0x682e6ff3d6b2b8a3n,
|
|
230
|
+
0x748f82ee5defb2fcn, 0x78a5636f43172f60n, 0x84c87814a1f0ab72n, 0x8cc702081a6439ecn,
|
|
231
|
+
0x90befffa23631e28n, 0xa4506cebde82bde9n, 0xbef9a3f7b2c67915n, 0xc67178f2e372532bn,
|
|
232
|
+
0xca273eceea26619cn, 0xd186b8c721c0c207n, 0xeada7dd6cde0eb1en, 0xf57d4f7fee6ed178n,
|
|
233
|
+
0x06f067aa72176fban, 0x0a637dc5a2c898a6n, 0x113f9804bef90daen, 0x1b710b35131c471bn,
|
|
234
|
+
0x28db77f523047d84n, 0x32caab7b40c72493n, 0x3c9ebe0a15c9bebcn, 0x431d67c49c100d4cn,
|
|
235
|
+
0x4cc5d4becb3e42b6n, 0x597f299cfc657e2an, 0x5fcb6fab3ad6faecn, 0x6c44198c4a475817n
|
|
236
|
+
];
|
|
237
|
+
//# sourceMappingURL=sha.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sha.js","sourceRoot":"","sources":["../../src/sha.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
package/dist/types/ringlwe.d.ts
CHANGED
|
@@ -112,16 +112,27 @@ export declare class QuarkDashKeyExchange implements IKeyExchange {
|
|
|
112
112
|
/**
|
|
113
113
|
* Decapsulate async
|
|
114
114
|
* @param privateKey {Uint8Array} Private key buffer
|
|
115
|
+
* @param peerPublicKey {Uint8Array} Peer public key
|
|
115
116
|
* @param ciphertext {Uint8Array} Cipher text buffer
|
|
116
117
|
* @returns {Promise<Uint8Array>} Buffer data
|
|
117
118
|
* TODO: GPU Calculations
|
|
118
119
|
*/
|
|
119
|
-
decapsulate(privateKey: Uint8Array, ciphertext: Uint8Array): Promise<Uint8Array>;
|
|
120
|
+
decapsulate(privateKey: Uint8Array, peerPublicKey: Uint8Array, ciphertext: Uint8Array): Promise<Uint8Array>;
|
|
120
121
|
/**
|
|
121
122
|
* Decapsulate sync
|
|
122
123
|
* @param privateKey {Uint8Array} Private key buffer
|
|
124
|
+
* @param peerPublicKey{Uint8Array} Peer public key buffer
|
|
123
125
|
* @param ciphertext {Uint8Array} Cipher text buffer
|
|
124
126
|
* @returns {Uint8Array} Buffer data
|
|
125
127
|
*/
|
|
126
|
-
decapsulateSync(privateKey: Uint8Array, ciphertext: Uint8Array): Uint8Array;
|
|
128
|
+
decapsulateSync(privateKey: Uint8Array, peerPublicKey: Uint8Array, ciphertext: Uint8Array): Uint8Array;
|
|
129
|
+
/**
|
|
130
|
+
* Hash shared secret
|
|
131
|
+
* @param ss {Uint8Array} Shared secret buffer
|
|
132
|
+
* @param publicKey {Uint8Array} Public key buffer
|
|
133
|
+
* @param ciphertext {Uint8Array} Cipher text buffer
|
|
134
|
+
* @returns {Uint8Array} Shared secret hash
|
|
135
|
+
* @private
|
|
136
|
+
*/
|
|
137
|
+
private hashSharedSecret;
|
|
127
138
|
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QuarkDash SHA Implementations
|
|
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
|
+
/**
|
|
11
|
+
* SHA-256 Implementation
|
|
12
|
+
*/
|
|
13
|
+
export declare class SHA256 {
|
|
14
|
+
private static readonly K;
|
|
15
|
+
/**
|
|
16
|
+
* Right Rotate
|
|
17
|
+
* @param value {number} Value to rotate
|
|
18
|
+
* @param amount {number} Rotate amount
|
|
19
|
+
* @private
|
|
20
|
+
*/
|
|
21
|
+
private static rightRotate;
|
|
22
|
+
/**
|
|
23
|
+
* Get SHA256 Hash
|
|
24
|
+
* @param data {string|Uint8Array} Raw string or bytes array
|
|
25
|
+
* @param returnBytes {boolean} Returns HEX String or Uint8Array
|
|
26
|
+
* @returns {string|Uint8Array} HEX String or Uint8Array
|
|
27
|
+
*/
|
|
28
|
+
static hash(data: string | Uint8Array, returnBytes?: boolean): string | Uint8Array;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* SHA-512 Implementation
|
|
32
|
+
*/
|
|
33
|
+
export declare class SHA512 {
|
|
34
|
+
private static readonly K;
|
|
35
|
+
/**
|
|
36
|
+
* Bitint right rotate
|
|
37
|
+
* @param value {number} Value
|
|
38
|
+
* @param amount {number} Rotate amount
|
|
39
|
+
* @private
|
|
40
|
+
*/
|
|
41
|
+
private static rightRotate;
|
|
42
|
+
/**
|
|
43
|
+
* Get SHA512 Hash
|
|
44
|
+
* @param data {string|Uint8Array} Raw string or bytes array
|
|
45
|
+
* @param returnBytes {boolean} Returns HEX String or Uint8Array
|
|
46
|
+
* @returns {string|Uint8Array} HEX String or Uint8Array
|
|
47
|
+
*/
|
|
48
|
+
static hash(data: string | Uint8Array, returnBytes?: boolean): string | Uint8Array;
|
|
49
|
+
}
|
package/dist/types/types.d.ts
CHANGED
|
@@ -50,8 +50,8 @@ export interface IKeyExchange {
|
|
|
50
50
|
generateKeyPairSync(): ICryptoKeyPair;
|
|
51
51
|
encapsulate(publicKey: Uint8Array): Promise<ICryptoEncapsulated>;
|
|
52
52
|
encapsulateSync(publicKey: Uint8Array): ICryptoEncapsulated;
|
|
53
|
-
decapsulate(privateKey: Uint8Array, ciphertext: Uint8Array): Promise<Uint8Array>;
|
|
54
|
-
decapsulateSync(privateKey: Uint8Array, ciphertext: Uint8Array): Uint8Array;
|
|
53
|
+
decapsulate(privateKey: Uint8Array, peerPublicKey: Uint8Array, ciphertext: Uint8Array): Promise<Uint8Array>;
|
|
54
|
+
decapsulateSync(privateKey: Uint8Array, peerPublicKey: Uint8Array, ciphertext: Uint8Array): Uint8Array;
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
57
57
|
* Crypto key pair
|
package/package.json
CHANGED
package/src/crypto.ts
CHANGED
|
@@ -133,7 +133,7 @@ export class QuarkDash implements ICryptoMethodAsync, ICryptoMethodSync {
|
|
|
133
133
|
*/
|
|
134
134
|
public async finalizeSession(ciphertext: Uint8Array): Promise<void> {
|
|
135
135
|
if (!this.myKeyPair || !this.peerPublicKey) throw new Error('Session not initialized');
|
|
136
|
-
const sharedSecret = await this.config.keyExchange.decapsulate(this.myKeyPair.privateKey, ciphertext);
|
|
136
|
+
const sharedSecret = await this.config.keyExchange.decapsulate(this.myKeyPair.privateKey, this.peerPublicKey, ciphertext);
|
|
137
137
|
await this.deriveSessionKeys(sharedSecret);
|
|
138
138
|
}
|
|
139
139
|
|
|
@@ -143,7 +143,7 @@ export class QuarkDash implements ICryptoMethodAsync, ICryptoMethodSync {
|
|
|
143
143
|
*/
|
|
144
144
|
public finalizeSessionSync(ciphertext: Uint8Array): void {
|
|
145
145
|
if (!this.myKeyPair || !this.peerPublicKey) throw new Error('Session not initialized');
|
|
146
|
-
const sharedSecret = this.config.keyExchange.decapsulateSync(this.myKeyPair.privateKey, ciphertext);
|
|
146
|
+
const sharedSecret = this.config.keyExchange.decapsulateSync(this.myKeyPair.privateKey, this.peerPublicKey, ciphertext);
|
|
147
147
|
this.deriveSessionKeysSync(sharedSecret);
|
|
148
148
|
}
|
|
149
149
|
|
package/src/index.ts
CHANGED
package/src/ringlwe.ts
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
/* Import Required Modules */
|
|
11
11
|
import {ICryptoEncapsulated, ICryptoKeyPair, IKeyExchange} from "./types";
|
|
12
12
|
import {QuarkDashUtils} from "./utils";
|
|
13
|
+
import {SHA256} from "./sha";
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* Ring-LWE based key exchange implementation
|
|
@@ -231,41 +232,58 @@ export class QuarkDashKeyExchange implements IKeyExchange {
|
|
|
231
232
|
* @returns {ICryptoEncapsulated} Encapsulated data
|
|
232
233
|
*/
|
|
233
234
|
public encapsulateSync(publicKey: Uint8Array): ICryptoEncapsulated {
|
|
234
|
-
const aBytes = publicKey.slice(0, QuarkDashKeyExchange.N*2);
|
|
235
|
-
const bBytes = publicKey.slice(QuarkDashKeyExchange.N*2);
|
|
235
|
+
const aBytes = publicKey.slice(0, QuarkDashKeyExchange.N * 2);
|
|
236
|
+
const bBytes = publicKey.slice(QuarkDashKeyExchange.N * 2);
|
|
236
237
|
const a = QuarkDashKeyExchange.deserializePoly(aBytes);
|
|
237
238
|
const b = QuarkDashKeyExchange.deserializePoly(bBytes);
|
|
238
239
|
const sp = QuarkDashKeyExchange.smallPoly();
|
|
239
240
|
const ep = QuarkDashKeyExchange.smallPoly();
|
|
240
|
-
const uArr = QuarkDashKeyExchange.multiply(a,sp);
|
|
241
|
-
for(let i=0; i<QuarkDashKeyExchange.N; i++) uArr[i] = (uArr[i]+ep[i]) % QuarkDashKeyExchange.Q;
|
|
242
|
-
const w = QuarkDashKeyExchange.multiply(b,sp);
|
|
243
|
-
const
|
|
241
|
+
const uArr = QuarkDashKeyExchange.multiply(a, sp);
|
|
242
|
+
for (let i = 0; i < QuarkDashKeyExchange.N; i++) uArr[i] = (uArr[i] + ep[i]) % QuarkDashKeyExchange.Q;
|
|
243
|
+
const w = QuarkDashKeyExchange.multiply(b, sp);
|
|
244
|
+
const rawSecret = QuarkDashKeyExchange.roundToBits(w);
|
|
244
245
|
const ciphertext = QuarkDashKeyExchange.serializePoly(uArr);
|
|
245
|
-
|
|
246
|
+
const sharedSecret = this.hashSharedSecret(rawSecret, publicKey, ciphertext);
|
|
247
|
+
return { ciphertext, sharedSecret };
|
|
246
248
|
}
|
|
247
249
|
|
|
248
250
|
/**
|
|
249
251
|
* Decapsulate async
|
|
250
252
|
* @param privateKey {Uint8Array} Private key buffer
|
|
253
|
+
* @param peerPublicKey {Uint8Array} Peer public key
|
|
251
254
|
* @param ciphertext {Uint8Array} Cipher text buffer
|
|
252
255
|
* @returns {Promise<Uint8Array>} Buffer data
|
|
253
256
|
* TODO: GPU Calculations
|
|
254
257
|
*/
|
|
255
|
-
public async decapsulate(privateKey: Uint8Array, ciphertext: Uint8Array): Promise<Uint8Array> {
|
|
256
|
-
return this.decapsulateSync(privateKey, ciphertext);
|
|
258
|
+
public async decapsulate(privateKey: Uint8Array, peerPublicKey: Uint8Array, ciphertext: Uint8Array): Promise<Uint8Array> {
|
|
259
|
+
return this.decapsulateSync(privateKey, peerPublicKey, ciphertext);
|
|
257
260
|
}
|
|
258
261
|
|
|
259
262
|
/**
|
|
260
263
|
* Decapsulate sync
|
|
261
264
|
* @param privateKey {Uint8Array} Private key buffer
|
|
265
|
+
* @param peerPublicKey{Uint8Array} Peer public key buffer
|
|
262
266
|
* @param ciphertext {Uint8Array} Cipher text buffer
|
|
263
267
|
* @returns {Uint8Array} Buffer data
|
|
264
268
|
*/
|
|
265
|
-
public decapsulateSync(privateKey: Uint8Array, ciphertext: Uint8Array): Uint8Array {
|
|
269
|
+
public decapsulateSync(privateKey: Uint8Array, peerPublicKey: Uint8Array, ciphertext: Uint8Array): Uint8Array {
|
|
266
270
|
const s = QuarkDashKeyExchange.deserializePoly(privateKey);
|
|
267
271
|
const u = QuarkDashKeyExchange.deserializePoly(ciphertext);
|
|
268
|
-
const w = QuarkDashKeyExchange.multiply(u,s);
|
|
269
|
-
|
|
272
|
+
const w = QuarkDashKeyExchange.multiply(u, s);
|
|
273
|
+
const rawSecret = QuarkDashKeyExchange.roundToBits(w);
|
|
274
|
+
return this.hashSharedSecret(rawSecret, peerPublicKey, ciphertext);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* Hash shared secret
|
|
279
|
+
* @param ss {Uint8Array} Shared secret buffer
|
|
280
|
+
* @param publicKey {Uint8Array} Public key buffer
|
|
281
|
+
* @param ciphertext {Uint8Array} Cipher text buffer
|
|
282
|
+
* @returns {Uint8Array} Shared secret hash
|
|
283
|
+
* @private
|
|
284
|
+
*/
|
|
285
|
+
private hashSharedSecret(ss: Uint8Array, publicKey: Uint8Array, ciphertext: Uint8Array): Uint8Array {
|
|
286
|
+
const data = QuarkDashUtils.concatBytes(ss, publicKey, ciphertext);
|
|
287
|
+
return SHA256.hash(data, true) as Uint8Array;
|
|
270
288
|
}
|
|
271
289
|
}
|