quarkdash 1.0.5 → 1.0.8

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/README.md CHANGED
@@ -5,6 +5,8 @@
5
5
 
6
6
  > Have a questions? <a href="mailto:ilya@neurosell.top">Contact me</a>
7
7
 
8
+ ![QuarkDash Crypto NPM](https://badge.fury.io/js/quarkdash.svg) ![QuarkDash Crypto - MIT opensource](https://img.shields.io/badge/License-MIT-yellow.svg)
9
+
8
10
  ---
9
11
 
10
12
  [About](#about-quarkdash-crypto) | [Get Started](#get-started) | [Example](#basic-example) | [Benchmark](#benchmark) | [Docs](https://github.com/devsdaddy/quarkdash/wiki)
@@ -8,6 +8,87 @@ const sha_1 = require("./sha");
8
8
  * Ring-LWE based key exchange implementation
9
9
  */
10
10
  class QuarkDashKeyExchange {
11
+ /**
12
+ * Generate crypto key pair async
13
+ * @returns {ICryptoKeyPair} Crypto key pair
14
+ * TODO: GPU Calculations
15
+ */
16
+ async generateKeyPair() {
17
+ return this.generateKeyPairSync();
18
+ }
19
+ /**
20
+ * Generate crypto key pair sync
21
+ * @returns {ICryptoKeyPair} Crypto key pair
22
+ */
23
+ generateKeyPairSync() {
24
+ const a = _a.uniformPoly();
25
+ const s = _a.smallPoly();
26
+ const e = _a.errorPoly();
27
+ const as = _a.multiply(a, s);
28
+ const b = new Array(_a.N);
29
+ for (let i = 0; i < _a.N; i++) {
30
+ b[i] = (as[i] + e[i]) % _a.Q;
31
+ }
32
+ const publicKey = utils_1.QuarkDashUtils.concatBytes(_a.serializePoly(a), _a.serializePoly(b));
33
+ const privateKey = _a.serializePoly(s);
34
+ return { publicKey, privateKey };
35
+ }
36
+ /**
37
+ * Encapsulate async
38
+ * @param publicKey {Uint8Array} Public key buffer
39
+ * @returns {Promise<ICryptoEncapsulated>} Encapsulated data
40
+ * TODO: GPU Calculations
41
+ */
42
+ async encapsulate(publicKey) {
43
+ return this.encapsulateSync(publicKey);
44
+ }
45
+ /**
46
+ * Encapsulate sync
47
+ * @param publicKey {Uint8Array} Public key buffer
48
+ * @returns {ICryptoEncapsulated} Encapsulated data
49
+ */
50
+ encapsulateSync(publicKey) {
51
+ const aBytes = publicKey.slice(0, _a.N * 2);
52
+ const bBytes = publicKey.slice(_a.N * 2);
53
+ const a = _a.deserializePoly(aBytes);
54
+ const b = _a.deserializePoly(bBytes);
55
+ const sp = _a.smallPoly();
56
+ const ep = _a.errorPoly();
57
+ const uArr = _a.multiply(a, sp);
58
+ for (let i = 0; i < _a.N; i++) {
59
+ uArr[i] = (uArr[i] + ep[i]) % _a.Q;
60
+ }
61
+ const w = _a.multiply(b, sp);
62
+ const rawSecret = _a.roundToBits(w);
63
+ const ciphertext = _a.serializePoly(uArr);
64
+ const sharedSecret = _a.hashSharedSecret(rawSecret, publicKey, ciphertext);
65
+ return { ciphertext, sharedSecret };
66
+ }
67
+ /**
68
+ * Decapsulate async
69
+ * @param privateKey {Uint8Array} Private key buffer
70
+ * @param peerPublicKey {Uint8Array} Peer public key
71
+ * @param ciphertext {Uint8Array} Cipher text buffer
72
+ * @returns {Promise<Uint8Array>} Buffer data
73
+ * TODO: GPU Calculations
74
+ */
75
+ async decapsulate(privateKey, peerPublicKey, ciphertext) {
76
+ return this.decapsulateSync(privateKey, peerPublicKey, ciphertext);
77
+ }
78
+ /**
79
+ * Decapsulate sync
80
+ * @param privateKey {Uint8Array} Private key buffer
81
+ * @param peerPublicKey{Uint8Array} Peer public key buffer
82
+ * @param ciphertext {Uint8Array} Cipher text buffer
83
+ * @returns {Uint8Array} Buffer data
84
+ */
85
+ decapsulateSync(privateKey, peerPublicKey, ciphertext) {
86
+ const s = _a.deserializePoly(privateKey);
87
+ const u = _a.deserializePoly(ciphertext);
88
+ const w = _a.multiply(u, s);
89
+ const rawSecret = _a.roundToBits(w);
90
+ return _a.hashSharedSecret(rawSecret, peerPublicKey, ciphertext);
91
+ }
11
92
  /**
12
93
  * Get small polygon
13
94
  * @returns {bigint[]} Small polygon
@@ -15,14 +96,21 @@ class QuarkDashKeyExchange {
15
96
  */
16
97
  static smallPoly() {
17
98
  const poly = new Array(this.N);
99
+ const bytesNeeded = Math.ceil(this.N * 2 / 8);
100
+ const randomBytes = utils_1.QuarkDashUtils.randomBytes(bytesNeeded);
18
101
  for (let i = 0; i < this.N; i++) {
19
- const r = Math.random();
20
- if (r < 0.33)
102
+ const byteIdx = Math.floor(i * 2 / 8);
103
+ const bitShift = (i * 2) % 8;
104
+ const val = (randomBytes[byteIdx] >> bitShift) & 0x03; // 0..3
105
+ if (val === 0)
21
106
  poly[i] = -1n;
22
- else if (r < 0.66)
107
+ else if (val === 1)
23
108
  poly[i] = 0n;
24
- else
109
+ else if (val === 2)
110
+ poly[i] = 1n;
111
+ else {
25
112
  poly[i] = 1n;
113
+ }
26
114
  }
27
115
  return poly;
28
116
  }
@@ -40,6 +128,26 @@ class QuarkDashKeyExchange {
40
128
  }
41
129
  return poly;
42
130
  }
131
+ /**
132
+ * Error polygon
133
+ * @private
134
+ */
135
+ static errorPoly() {
136
+ const poly = new Array(this.N);
137
+ const SIGMA = 3.19;
138
+ for (let i = 0; i < this.N; i++) {
139
+ let sum = 0;
140
+ const randBytes = utils_1.QuarkDashUtils.randomBytes(12);
141
+ for (let j = 0; j < 12; j++) {
142
+ sum += randBytes[j];
143
+ }
144
+ // Центрируем и масштабируем к [-6,6]
145
+ const centered = (sum / 255) - 6;
146
+ const error = Math.floor(centered * SIGMA);
147
+ poly[i] = BigInt(Math.max(-Number(this.Q), Math.min(Number(this.Q) - 1, error)));
148
+ }
149
+ return poly;
150
+ }
43
151
  /**
44
152
  * NTT Operation
45
153
  * @param poly {bigint[]} Polygon
@@ -86,8 +194,9 @@ class QuarkDashKeyExchange {
86
194
  }
87
195
  len >>= 1;
88
196
  }
89
- for (let i = 0; i < this.N; i++)
197
+ for (let i = 0; i < this.N; i++) {
90
198
  res[i] = (res[i] * this.INV_N) % this.Q;
199
+ }
91
200
  return res;
92
201
  }
93
202
  /**
@@ -100,8 +209,9 @@ class QuarkDashKeyExchange {
100
209
  const aNTT = this.ntt(a);
101
210
  const bNTT = this.ntt(b);
102
211
  const prod = new Array(this.N);
103
- for (let i = 0; i < this.N; i++)
212
+ for (let i = 0; i < this.N; i++) {
104
213
  prod[i] = (aNTT[i] * bNTT[i]) % this.Q;
214
+ }
105
215
  return this.invNTT(prod);
106
216
  }
107
217
  /**
@@ -157,7 +267,9 @@ class QuarkDashKeyExchange {
157
267
  * @private
158
268
  */
159
269
  static powMod(base, exp, mod) {
160
- let result = 1n, b = base % mod, e = exp;
270
+ let result = 1n;
271
+ let b = base % mod;
272
+ let e = exp;
161
273
  while (e > 0n) {
162
274
  if (e & 1n)
163
275
  result = (result * b) % mod;
@@ -174,7 +286,8 @@ class QuarkDashKeyExchange {
174
286
  * @private
175
287
  */
176
288
  static modInverse(a, m) {
177
- let [old_r, r] = [a, m], [old_s, s] = [1n, 0n];
289
+ let [old_r, r] = [a, m];
290
+ let [old_s, s] = [1n, 0n];
178
291
  while (r !== 0n) {
179
292
  const q = old_r / r;
180
293
  [old_r, r] = [r, old_r - q * r];
@@ -182,85 +295,6 @@ class QuarkDashKeyExchange {
182
295
  }
183
296
  return (old_s % m + m) % m;
184
297
  }
185
- /**
186
- * Generate crypto key pair async
187
- * @returns {ICryptoKeyPair} Crypto key pair
188
- * TODO: GPU Calculations
189
- */
190
- async generateKeyPair() {
191
- return this.generateKeyPairSync();
192
- }
193
- /**
194
- * Generate crypto key pair sync
195
- * @returns {ICryptoKeyPair} Crypto key pair
196
- */
197
- generateKeyPairSync() {
198
- const a = _a.uniformPoly();
199
- const s = _a.smallPoly();
200
- const e = _a.smallPoly();
201
- const as = _a.multiply(a, s);
202
- const b = new Array(_a.N);
203
- for (let i = 0; i < _a.N; i++)
204
- b[i] = (as[i] + e[i]) % _a.Q;
205
- const pub = utils_1.QuarkDashUtils.concatBytes(_a.serializePoly(a), _a.serializePoly(b));
206
- const priv = _a.serializePoly(s);
207
- return { publicKey: pub, privateKey: priv };
208
- }
209
- /**
210
- * Encapsulate async
211
- * @param publicKey {Uint8Array} Public key buffer
212
- * @returns {Promise<ICryptoEncapsulated>} Encapsulated data
213
- * TODO: GPU Calculations
214
- */
215
- async encapsulate(publicKey) {
216
- return this.encapsulateSync(publicKey);
217
- }
218
- /**
219
- * Encapsulate sync
220
- * @param publicKey {Uint8Array} Public key buffer
221
- * @returns {ICryptoEncapsulated} Encapsulated data
222
- */
223
- encapsulateSync(publicKey) {
224
- const aBytes = publicKey.slice(0, _a.N * 2);
225
- const bBytes = publicKey.slice(_a.N * 2);
226
- const a = _a.deserializePoly(aBytes);
227
- const b = _a.deserializePoly(bBytes);
228
- const sp = _a.smallPoly();
229
- const ep = _a.smallPoly();
230
- const uArr = _a.multiply(a, sp);
231
- for (let i = 0; i < _a.N; i++)
232
- uArr[i] = (uArr[i] + ep[i]) % _a.Q;
233
- const w = _a.multiply(b, sp);
234
- const rawSecret = _a.roundToBits(w);
235
- const ciphertext = _a.serializePoly(uArr);
236
- const sharedSecret = this.hashSharedSecret(rawSecret, publicKey, ciphertext);
237
- return { ciphertext, sharedSecret };
238
- }
239
- /**
240
- * Decapsulate async
241
- * @param privateKey {Uint8Array} Private key buffer
242
- * @param peerPublicKey {Uint8Array} Peer public key
243
- * @param ciphertext {Uint8Array} Cipher text buffer
244
- * @returns {Promise<Uint8Array>} Buffer data
245
- * TODO: GPU Calculations
246
- */
247
- async decapsulate(privateKey, peerPublicKey, ciphertext) {
248
- return this.decapsulateSync(privateKey, peerPublicKey, ciphertext);
249
- }
250
- /**
251
- * Decapsulate sync
252
- * @param privateKey {Uint8Array} Private key buffer
253
- * @param peerPublicKey{Uint8Array} Peer public key buffer
254
- * @param ciphertext {Uint8Array} Cipher text buffer
255
- * @returns {Uint8Array} Buffer data
256
- */
257
- decapsulateSync(privateKey, peerPublicKey, ciphertext) {
258
- const s = _a.deserializePoly(privateKey);
259
- const u = _a.deserializePoly(ciphertext);
260
- const w = _a.multiply(u, s);
261
- const rawSecret = _a.roundToBits(w);
262
- return this.hashSharedSecret(rawSecret, peerPublicKey, ciphertext);
263
- }
264
298
  /**
265
299
  * Hash shared secret
266
300
  * @param ss {Uint8Array} Shared secret buffer
@@ -269,7 +303,7 @@ class QuarkDashKeyExchange {
269
303
  * @returns {Uint8Array} Shared secret hash
270
304
  * @private
271
305
  */
272
- hashSharedSecret(ss, publicKey, ciphertext) {
306
+ static hashSharedSecret(ss, publicKey, ciphertext) {
273
307
  const data = utils_1.QuarkDashUtils.concatBytes(ss, publicKey, ciphertext);
274
308
  return sha_1.SHA256.hash(data, true);
275
309
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ringlwe.js","sourceRoot":"","sources":["../../src/ringlwe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ringlwe.js","sourceRoot":"","sources":["../../src/ringlwe.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,87 @@ import { SHA256 } from "./sha";
5
5
  * Ring-LWE based key exchange implementation
6
6
  */
7
7
  export class QuarkDashKeyExchange {
8
+ /**
9
+ * Generate crypto key pair async
10
+ * @returns {ICryptoKeyPair} Crypto key pair
11
+ * TODO: GPU Calculations
12
+ */
13
+ async generateKeyPair() {
14
+ return this.generateKeyPairSync();
15
+ }
16
+ /**
17
+ * Generate crypto key pair sync
18
+ * @returns {ICryptoKeyPair} Crypto key pair
19
+ */
20
+ generateKeyPairSync() {
21
+ const a = _a.uniformPoly();
22
+ const s = _a.smallPoly();
23
+ const e = _a.errorPoly();
24
+ const as = _a.multiply(a, s);
25
+ const b = new Array(_a.N);
26
+ for (let i = 0; i < _a.N; i++) {
27
+ b[i] = (as[i] + e[i]) % _a.Q;
28
+ }
29
+ const publicKey = QuarkDashUtils.concatBytes(_a.serializePoly(a), _a.serializePoly(b));
30
+ const privateKey = _a.serializePoly(s);
31
+ return { publicKey, privateKey };
32
+ }
33
+ /**
34
+ * Encapsulate async
35
+ * @param publicKey {Uint8Array} Public key buffer
36
+ * @returns {Promise<ICryptoEncapsulated>} Encapsulated data
37
+ * TODO: GPU Calculations
38
+ */
39
+ async encapsulate(publicKey) {
40
+ return this.encapsulateSync(publicKey);
41
+ }
42
+ /**
43
+ * Encapsulate sync
44
+ * @param publicKey {Uint8Array} Public key buffer
45
+ * @returns {ICryptoEncapsulated} Encapsulated data
46
+ */
47
+ encapsulateSync(publicKey) {
48
+ const aBytes = publicKey.slice(0, _a.N * 2);
49
+ const bBytes = publicKey.slice(_a.N * 2);
50
+ const a = _a.deserializePoly(aBytes);
51
+ const b = _a.deserializePoly(bBytes);
52
+ const sp = _a.smallPoly();
53
+ const ep = _a.errorPoly();
54
+ const uArr = _a.multiply(a, sp);
55
+ for (let i = 0; i < _a.N; i++) {
56
+ uArr[i] = (uArr[i] + ep[i]) % _a.Q;
57
+ }
58
+ const w = _a.multiply(b, sp);
59
+ const rawSecret = _a.roundToBits(w);
60
+ const ciphertext = _a.serializePoly(uArr);
61
+ const sharedSecret = _a.hashSharedSecret(rawSecret, publicKey, ciphertext);
62
+ return { ciphertext, sharedSecret };
63
+ }
64
+ /**
65
+ * Decapsulate async
66
+ * @param privateKey {Uint8Array} Private key buffer
67
+ * @param peerPublicKey {Uint8Array} Peer public key
68
+ * @param ciphertext {Uint8Array} Cipher text buffer
69
+ * @returns {Promise<Uint8Array>} Buffer data
70
+ * TODO: GPU Calculations
71
+ */
72
+ async decapsulate(privateKey, peerPublicKey, ciphertext) {
73
+ return this.decapsulateSync(privateKey, peerPublicKey, ciphertext);
74
+ }
75
+ /**
76
+ * Decapsulate sync
77
+ * @param privateKey {Uint8Array} Private key buffer
78
+ * @param peerPublicKey{Uint8Array} Peer public key buffer
79
+ * @param ciphertext {Uint8Array} Cipher text buffer
80
+ * @returns {Uint8Array} Buffer data
81
+ */
82
+ decapsulateSync(privateKey, peerPublicKey, ciphertext) {
83
+ const s = _a.deserializePoly(privateKey);
84
+ const u = _a.deserializePoly(ciphertext);
85
+ const w = _a.multiply(u, s);
86
+ const rawSecret = _a.roundToBits(w);
87
+ return _a.hashSharedSecret(rawSecret, peerPublicKey, ciphertext);
88
+ }
8
89
  /**
9
90
  * Get small polygon
10
91
  * @returns {bigint[]} Small polygon
@@ -12,14 +93,21 @@ export class QuarkDashKeyExchange {
12
93
  */
13
94
  static smallPoly() {
14
95
  const poly = new Array(this.N);
96
+ const bytesNeeded = Math.ceil(this.N * 2 / 8);
97
+ const randomBytes = QuarkDashUtils.randomBytes(bytesNeeded);
15
98
  for (let i = 0; i < this.N; i++) {
16
- const r = Math.random();
17
- if (r < 0.33)
99
+ const byteIdx = Math.floor(i * 2 / 8);
100
+ const bitShift = (i * 2) % 8;
101
+ const val = (randomBytes[byteIdx] >> bitShift) & 0x03; // 0..3
102
+ if (val === 0)
18
103
  poly[i] = -1n;
19
- else if (r < 0.66)
104
+ else if (val === 1)
20
105
  poly[i] = 0n;
21
- else
106
+ else if (val === 2)
107
+ poly[i] = 1n;
108
+ else {
22
109
  poly[i] = 1n;
110
+ }
23
111
  }
24
112
  return poly;
25
113
  }
@@ -37,6 +125,26 @@ export class QuarkDashKeyExchange {
37
125
  }
38
126
  return poly;
39
127
  }
128
+ /**
129
+ * Error polygon
130
+ * @private
131
+ */
132
+ static errorPoly() {
133
+ const poly = new Array(this.N);
134
+ const SIGMA = 3.19;
135
+ for (let i = 0; i < this.N; i++) {
136
+ let sum = 0;
137
+ const randBytes = QuarkDashUtils.randomBytes(12);
138
+ for (let j = 0; j < 12; j++) {
139
+ sum += randBytes[j];
140
+ }
141
+ // Центрируем и масштабируем к [-6,6]
142
+ const centered = (sum / 255) - 6;
143
+ const error = Math.floor(centered * SIGMA);
144
+ poly[i] = BigInt(Math.max(-Number(this.Q), Math.min(Number(this.Q) - 1, error)));
145
+ }
146
+ return poly;
147
+ }
40
148
  /**
41
149
  * NTT Operation
42
150
  * @param poly {bigint[]} Polygon
@@ -83,8 +191,9 @@ export class QuarkDashKeyExchange {
83
191
  }
84
192
  len >>= 1;
85
193
  }
86
- for (let i = 0; i < this.N; i++)
194
+ for (let i = 0; i < this.N; i++) {
87
195
  res[i] = (res[i] * this.INV_N) % this.Q;
196
+ }
88
197
  return res;
89
198
  }
90
199
  /**
@@ -97,8 +206,9 @@ export class QuarkDashKeyExchange {
97
206
  const aNTT = this.ntt(a);
98
207
  const bNTT = this.ntt(b);
99
208
  const prod = new Array(this.N);
100
- for (let i = 0; i < this.N; i++)
209
+ for (let i = 0; i < this.N; i++) {
101
210
  prod[i] = (aNTT[i] * bNTT[i]) % this.Q;
211
+ }
102
212
  return this.invNTT(prod);
103
213
  }
104
214
  /**
@@ -154,7 +264,9 @@ export class QuarkDashKeyExchange {
154
264
  * @private
155
265
  */
156
266
  static powMod(base, exp, mod) {
157
- let result = 1n, b = base % mod, e = exp;
267
+ let result = 1n;
268
+ let b = base % mod;
269
+ let e = exp;
158
270
  while (e > 0n) {
159
271
  if (e & 1n)
160
272
  result = (result * b) % mod;
@@ -171,7 +283,8 @@ export class QuarkDashKeyExchange {
171
283
  * @private
172
284
  */
173
285
  static modInverse(a, m) {
174
- let [old_r, r] = [a, m], [old_s, s] = [1n, 0n];
286
+ let [old_r, r] = [a, m];
287
+ let [old_s, s] = [1n, 0n];
175
288
  while (r !== 0n) {
176
289
  const q = old_r / r;
177
290
  [old_r, r] = [r, old_r - q * r];
@@ -179,85 +292,6 @@ export class QuarkDashKeyExchange {
179
292
  }
180
293
  return (old_s % m + m) % m;
181
294
  }
182
- /**
183
- * Generate crypto key pair async
184
- * @returns {ICryptoKeyPair} Crypto key pair
185
- * TODO: GPU Calculations
186
- */
187
- async generateKeyPair() {
188
- return this.generateKeyPairSync();
189
- }
190
- /**
191
- * Generate crypto key pair sync
192
- * @returns {ICryptoKeyPair} Crypto key pair
193
- */
194
- generateKeyPairSync() {
195
- const a = _a.uniformPoly();
196
- const s = _a.smallPoly();
197
- const e = _a.smallPoly();
198
- const as = _a.multiply(a, s);
199
- const b = new Array(_a.N);
200
- for (let i = 0; i < _a.N; i++)
201
- b[i] = (as[i] + e[i]) % _a.Q;
202
- const pub = QuarkDashUtils.concatBytes(_a.serializePoly(a), _a.serializePoly(b));
203
- const priv = _a.serializePoly(s);
204
- return { publicKey: pub, privateKey: priv };
205
- }
206
- /**
207
- * Encapsulate async
208
- * @param publicKey {Uint8Array} Public key buffer
209
- * @returns {Promise<ICryptoEncapsulated>} Encapsulated data
210
- * TODO: GPU Calculations
211
- */
212
- async encapsulate(publicKey) {
213
- return this.encapsulateSync(publicKey);
214
- }
215
- /**
216
- * Encapsulate sync
217
- * @param publicKey {Uint8Array} Public key buffer
218
- * @returns {ICryptoEncapsulated} Encapsulated data
219
- */
220
- encapsulateSync(publicKey) {
221
- const aBytes = publicKey.slice(0, _a.N * 2);
222
- const bBytes = publicKey.slice(_a.N * 2);
223
- const a = _a.deserializePoly(aBytes);
224
- const b = _a.deserializePoly(bBytes);
225
- const sp = _a.smallPoly();
226
- const ep = _a.smallPoly();
227
- const uArr = _a.multiply(a, sp);
228
- for (let i = 0; i < _a.N; i++)
229
- uArr[i] = (uArr[i] + ep[i]) % _a.Q;
230
- const w = _a.multiply(b, sp);
231
- const rawSecret = _a.roundToBits(w);
232
- const ciphertext = _a.serializePoly(uArr);
233
- const sharedSecret = this.hashSharedSecret(rawSecret, publicKey, ciphertext);
234
- return { ciphertext, sharedSecret };
235
- }
236
- /**
237
- * Decapsulate async
238
- * @param privateKey {Uint8Array} Private key buffer
239
- * @param peerPublicKey {Uint8Array} Peer public key
240
- * @param ciphertext {Uint8Array} Cipher text buffer
241
- * @returns {Promise<Uint8Array>} Buffer data
242
- * TODO: GPU Calculations
243
- */
244
- async decapsulate(privateKey, peerPublicKey, ciphertext) {
245
- return this.decapsulateSync(privateKey, peerPublicKey, ciphertext);
246
- }
247
- /**
248
- * Decapsulate sync
249
- * @param privateKey {Uint8Array} Private key buffer
250
- * @param peerPublicKey{Uint8Array} Peer public key buffer
251
- * @param ciphertext {Uint8Array} Cipher text buffer
252
- * @returns {Uint8Array} Buffer data
253
- */
254
- decapsulateSync(privateKey, peerPublicKey, ciphertext) {
255
- const s = _a.deserializePoly(privateKey);
256
- const u = _a.deserializePoly(ciphertext);
257
- const w = _a.multiply(u, s);
258
- const rawSecret = _a.roundToBits(w);
259
- return this.hashSharedSecret(rawSecret, peerPublicKey, ciphertext);
260
- }
261
295
  /**
262
296
  * Hash shared secret
263
297
  * @param ss {Uint8Array} Shared secret buffer
@@ -266,7 +300,7 @@ export class QuarkDashKeyExchange {
266
300
  * @returns {Uint8Array} Shared secret hash
267
301
  * @private
268
302
  */
269
- hashSharedSecret(ss, publicKey, ciphertext) {
303
+ static hashSharedSecret(ss, publicKey, ciphertext) {
270
304
  const data = QuarkDashUtils.concatBytes(ss, publicKey, ciphertext);
271
305
  return SHA256.hash(data, true);
272
306
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ringlwe.js","sourceRoot":"","sources":["../../src/ringlwe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ringlwe.js","sourceRoot":"","sources":["../../src/ringlwe.ts"],"names":[],"mappings":"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"}