quarkdash 1.0.5 → 1.0.7

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.
@@ -1,949 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for ringlwe.ts</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="prettify.css" />
9
- <link rel="stylesheet" href="base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="index.html">All files</a> ringlwe.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">100% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>138/138</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>8/8</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>17/17</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">100% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>108/108</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line high'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
355
- <span class="cline-any cline-neutral">&nbsp;</span>
356
- <span class="cline-any cline-neutral">&nbsp;</span>
357
- <span class="cline-any cline-neutral">&nbsp;</span>
358
- <span class="cline-any cline-neutral">&nbsp;</span>
359
- <span class="cline-any cline-neutral">&nbsp;</span>
360
- <span class="cline-any cline-neutral">&nbsp;</span>
361
- <span class="cline-any cline-neutral">&nbsp;</span>
362
- <span class="cline-any cline-neutral">&nbsp;</span>
363
- <span class="cline-any cline-neutral">&nbsp;</span>
364
- <span class="cline-any cline-neutral">&nbsp;</span>
365
- <span class="cline-any cline-yes">1x</span>
366
- <span class="cline-any cline-yes">1x</span>
367
- <span class="cline-any cline-neutral">&nbsp;</span>
368
- <span class="cline-any cline-neutral">&nbsp;</span>
369
- <span class="cline-any cline-neutral">&nbsp;</span>
370
- <span class="cline-any cline-neutral">&nbsp;</span>
371
- <span class="cline-any cline-yes">1x</span>
372
- <span class="cline-any cline-neutral">&nbsp;</span>
373
- <span class="cline-any cline-yes">1x</span>
374
- <span class="cline-any cline-yes">1x</span>
375
- <span class="cline-any cline-yes">1x</span>
376
- <span class="cline-any cline-yes">1x</span>
377
- <span class="cline-any cline-neutral">&nbsp;</span>
378
- <span class="cline-any cline-neutral">&nbsp;</span>
379
- <span class="cline-any cline-neutral">&nbsp;</span>
380
- <span class="cline-any cline-neutral">&nbsp;</span>
381
- <span class="cline-any cline-neutral">&nbsp;</span>
382
- <span class="cline-any cline-neutral">&nbsp;</span>
383
- <span class="cline-any cline-neutral">&nbsp;</span>
384
- <span class="cline-any cline-yes">42x</span>
385
- <span class="cline-any cline-yes">42x</span>
386
- <span class="cline-any cline-yes">10752x</span>
387
- <span class="cline-any cline-yes">10752x</span>
388
- <span class="cline-any cline-yes">7195x</span>
389
- <span class="cline-any cline-yes">3627x</span>
390
- <span class="cline-any cline-neutral">&nbsp;</span>
391
- <span class="cline-any cline-yes">42x</span>
392
- <span class="cline-any cline-neutral">&nbsp;</span>
393
- <span class="cline-any cline-neutral">&nbsp;</span>
394
- <span class="cline-any cline-neutral">&nbsp;</span>
395
- <span class="cline-any cline-neutral">&nbsp;</span>
396
- <span class="cline-any cline-neutral">&nbsp;</span>
397
- <span class="cline-any cline-neutral">&nbsp;</span>
398
- <span class="cline-any cline-neutral">&nbsp;</span>
399
- <span class="cline-any cline-neutral">&nbsp;</span>
400
- <span class="cline-any cline-yes">14x</span>
401
- <span class="cline-any cline-yes">14x</span>
402
- <span class="cline-any cline-yes">14x</span>
403
- <span class="cline-any cline-yes">3584x</span>
404
- <span class="cline-any cline-yes">3584x</span>
405
- <span class="cline-any cline-neutral">&nbsp;</span>
406
- <span class="cline-any cline-yes">14x</span>
407
- <span class="cline-any cline-neutral">&nbsp;</span>
408
- <span class="cline-any cline-neutral">&nbsp;</span>
409
- <span class="cline-any cline-neutral">&nbsp;</span>
410
- <span class="cline-any cline-neutral">&nbsp;</span>
411
- <span class="cline-any cline-neutral">&nbsp;</span>
412
- <span class="cline-any cline-neutral">&nbsp;</span>
413
- <span class="cline-any cline-neutral">&nbsp;</span>
414
- <span class="cline-any cline-neutral">&nbsp;</span>
415
- <span class="cline-any cline-yes">70x</span>
416
- <span class="cline-any cline-yes">70x</span>
417
- <span class="cline-any cline-yes">70x</span>
418
- <span class="cline-any cline-yes">560x</span>
419
- <span class="cline-any cline-yes">560x</span>
420
- <span class="cline-any cline-yes">17850x</span>
421
- <span class="cline-any cline-yes">17850x</span>
422
- <span class="cline-any cline-yes">71680x</span>
423
- <span class="cline-any cline-yes">71680x</span>
424
- <span class="cline-any cline-yes">71680x</span>
425
- <span class="cline-any cline-yes">71680x</span>
426
- <span class="cline-any cline-yes">71680x</span>
427
- <span class="cline-any cline-neutral">&nbsp;</span>
428
- <span class="cline-any cline-neutral">&nbsp;</span>
429
- <span class="cline-any cline-yes">560x</span>
430
- <span class="cline-any cline-neutral">&nbsp;</span>
431
- <span class="cline-any cline-yes">70x</span>
432
- <span class="cline-any cline-neutral">&nbsp;</span>
433
- <span class="cline-any cline-neutral">&nbsp;</span>
434
- <span class="cline-any cline-neutral">&nbsp;</span>
435
- <span class="cline-any cline-neutral">&nbsp;</span>
436
- <span class="cline-any cline-neutral">&nbsp;</span>
437
- <span class="cline-any cline-neutral">&nbsp;</span>
438
- <span class="cline-any cline-neutral">&nbsp;</span>
439
- <span class="cline-any cline-neutral">&nbsp;</span>
440
- <span class="cline-any cline-yes">35x</span>
441
- <span class="cline-any cline-yes">35x</span>
442
- <span class="cline-any cline-yes">35x</span>
443
- <span class="cline-any cline-yes">280x</span>
444
- <span class="cline-any cline-yes">280x</span>
445
- <span class="cline-any cline-yes">8925x</span>
446
- <span class="cline-any cline-yes">8925x</span>
447
- <span class="cline-any cline-yes">35840x</span>
448
- <span class="cline-any cline-yes">35840x</span>
449
- <span class="cline-any cline-yes">35840x</span>
450
- <span class="cline-any cline-yes">35840x</span>
451
- <span class="cline-any cline-yes">35840x</span>
452
- <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-neutral">&nbsp;</span>
454
- <span class="cline-any cline-yes">280x</span>
455
- <span class="cline-any cline-neutral">&nbsp;</span>
456
- <span class="cline-any cline-yes">8960x</span>
457
- <span class="cline-any cline-yes">35x</span>
458
- <span class="cline-any cline-neutral">&nbsp;</span>
459
- <span class="cline-any cline-neutral">&nbsp;</span>
460
- <span class="cline-any cline-neutral">&nbsp;</span>
461
- <span class="cline-any cline-neutral">&nbsp;</span>
462
- <span class="cline-any cline-neutral">&nbsp;</span>
463
- <span class="cline-any cline-neutral">&nbsp;</span>
464
- <span class="cline-any cline-neutral">&nbsp;</span>
465
- <span class="cline-any cline-neutral">&nbsp;</span>
466
- <span class="cline-any cline-neutral">&nbsp;</span>
467
- <span class="cline-any cline-yes">35x</span>
468
- <span class="cline-any cline-yes">35x</span>
469
- <span class="cline-any cline-yes">35x</span>
470
- <span class="cline-any cline-yes">8960x</span>
471
- <span class="cline-any cline-yes">35x</span>
472
- <span class="cline-any cline-neutral">&nbsp;</span>
473
- <span class="cline-any cline-neutral">&nbsp;</span>
474
- <span class="cline-any cline-neutral">&nbsp;</span>
475
- <span class="cline-any cline-neutral">&nbsp;</span>
476
- <span class="cline-any cline-neutral">&nbsp;</span>
477
- <span class="cline-any cline-neutral">&nbsp;</span>
478
- <span class="cline-any cline-neutral">&nbsp;</span>
479
- <span class="cline-any cline-neutral">&nbsp;</span>
480
- <span class="cline-any cline-neutral">&nbsp;</span>
481
- <span class="cline-any cline-yes">49x</span>
482
- <span class="cline-any cline-yes">49x</span>
483
- <span class="cline-any cline-yes">12544x</span>
484
- <span class="cline-any cline-yes">12544x</span>
485
- <span class="cline-any cline-yes">12544x</span>
486
- <span class="cline-any cline-neutral">&nbsp;</span>
487
- <span class="cline-any cline-yes">49x</span>
488
- <span class="cline-any cline-neutral">&nbsp;</span>
489
- <span class="cline-any cline-neutral">&nbsp;</span>
490
- <span class="cline-any cline-neutral">&nbsp;</span>
491
- <span class="cline-any cline-neutral">&nbsp;</span>
492
- <span class="cline-any cline-neutral">&nbsp;</span>
493
- <span class="cline-any cline-neutral">&nbsp;</span>
494
- <span class="cline-any cline-neutral">&nbsp;</span>
495
- <span class="cline-any cline-neutral">&nbsp;</span>
496
- <span class="cline-any cline-neutral">&nbsp;</span>
497
- <span class="cline-any cline-yes">28x</span>
498
- <span class="cline-any cline-yes">28x</span>
499
- <span class="cline-any cline-yes">7168x</span>
500
- <span class="cline-any cline-yes">7168x</span>
501
- <span class="cline-any cline-neutral">&nbsp;</span>
502
- <span class="cline-any cline-yes">28x</span>
503
- <span class="cline-any cline-neutral">&nbsp;</span>
504
- <span class="cline-any cline-neutral">&nbsp;</span>
505
- <span class="cline-any cline-neutral">&nbsp;</span>
506
- <span class="cline-any cline-neutral">&nbsp;</span>
507
- <span class="cline-any cline-neutral">&nbsp;</span>
508
- <span class="cline-any cline-neutral">&nbsp;</span>
509
- <span class="cline-any cline-neutral">&nbsp;</span>
510
- <span class="cline-any cline-neutral">&nbsp;</span>
511
- <span class="cline-any cline-neutral">&nbsp;</span>
512
- <span class="cline-any cline-yes">14x</span>
513
- <span class="cline-any cline-yes">14x</span>
514
- <span class="cline-any cline-yes">3584x</span>
515
- <span class="cline-any cline-yes">3584x</span>
516
- <span class="cline-any cline-neutral">&nbsp;</span>
517
- <span class="cline-any cline-yes">14x</span>
518
- <span class="cline-any cline-neutral">&nbsp;</span>
519
- <span class="cline-any cline-neutral">&nbsp;</span>
520
- <span class="cline-any cline-neutral">&nbsp;</span>
521
- <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-neutral">&nbsp;</span>
523
- <span class="cline-any cline-neutral">&nbsp;</span>
524
- <span class="cline-any cline-neutral">&nbsp;</span>
525
- <span class="cline-any cline-neutral">&nbsp;</span>
526
- <span class="cline-any cline-neutral">&nbsp;</span>
527
- <span class="cline-any cline-neutral">&nbsp;</span>
528
- <span class="cline-any cline-neutral">&nbsp;</span>
529
- <span class="cline-any cline-yes">840x</span>
530
- <span class="cline-any cline-yes">3780x</span>
531
- <span class="cline-any cline-yes">840x</span>
532
- <span class="cline-any cline-neutral">&nbsp;</span>
533
- <span class="cline-any cline-neutral">&nbsp;</span>
534
- <span class="cline-any cline-neutral">&nbsp;</span>
535
- <span class="cline-any cline-neutral">&nbsp;</span>
536
- <span class="cline-any cline-neutral">&nbsp;</span>
537
- <span class="cline-any cline-neutral">&nbsp;</span>
538
- <span class="cline-any cline-neutral">&nbsp;</span>
539
- <span class="cline-any cline-neutral">&nbsp;</span>
540
- <span class="cline-any cline-neutral">&nbsp;</span>
541
- <span class="cline-any cline-neutral">&nbsp;</span>
542
- <span class="cline-any cline-yes">1x</span>
543
- <span class="cline-any cline-yes">3x</span>
544
- <span class="cline-any cline-yes">1x</span>
545
- <span class="cline-any cline-neutral">&nbsp;</span>
546
- <span class="cline-any cline-neutral">&nbsp;</span>
547
- <span class="cline-any cline-neutral">&nbsp;</span>
548
- <span class="cline-any cline-neutral">&nbsp;</span>
549
- <span class="cline-any cline-neutral">&nbsp;</span>
550
- <span class="cline-any cline-neutral">&nbsp;</span>
551
- <span class="cline-any cline-neutral">&nbsp;</span>
552
- <span class="cline-any cline-neutral">&nbsp;</span>
553
- <span class="cline-any cline-yes">14x</span>
554
- <span class="cline-any cline-neutral">&nbsp;</span>
555
- <span class="cline-any cline-neutral">&nbsp;</span>
556
- <span class="cline-any cline-neutral">&nbsp;</span>
557
- <span class="cline-any cline-neutral">&nbsp;</span>
558
- <span class="cline-any cline-neutral">&nbsp;</span>
559
- <span class="cline-any cline-neutral">&nbsp;</span>
560
- <span class="cline-any cline-neutral">&nbsp;</span>
561
- <span class="cline-any cline-yes">14x</span>
562
- <span class="cline-any cline-yes">14x</span>
563
- <span class="cline-any cline-yes">14x</span>
564
- <span class="cline-any cline-yes">14x</span>
565
- <span class="cline-any cline-yes">14x</span>
566
- <span class="cline-any cline-yes">3584x</span>
567
- <span class="cline-any cline-yes">14x</span>
568
- <span class="cline-any cline-yes">14x</span>
569
- <span class="cline-any cline-yes">14x</span>
570
- <span class="cline-any cline-neutral">&nbsp;</span>
571
- <span class="cline-any cline-neutral">&nbsp;</span>
572
- <span class="cline-any cline-neutral">&nbsp;</span>
573
- <span class="cline-any cline-neutral">&nbsp;</span>
574
- <span class="cline-any cline-neutral">&nbsp;</span>
575
- <span class="cline-any cline-neutral">&nbsp;</span>
576
- <span class="cline-any cline-neutral">&nbsp;</span>
577
- <span class="cline-any cline-neutral">&nbsp;</span>
578
- <span class="cline-any cline-neutral">&nbsp;</span>
579
- <span class="cline-any cline-yes">7x</span>
580
- <span class="cline-any cline-neutral">&nbsp;</span>
581
- <span class="cline-any cline-neutral">&nbsp;</span>
582
- <span class="cline-any cline-neutral">&nbsp;</span>
583
- <span class="cline-any cline-neutral">&nbsp;</span>
584
- <span class="cline-any cline-neutral">&nbsp;</span>
585
- <span class="cline-any cline-neutral">&nbsp;</span>
586
- <span class="cline-any cline-neutral">&nbsp;</span>
587
- <span class="cline-any cline-neutral">&nbsp;</span>
588
- <span class="cline-any cline-yes">7x</span>
589
- <span class="cline-any cline-yes">7x</span>
590
- <span class="cline-any cline-yes">7x</span>
591
- <span class="cline-any cline-yes">7x</span>
592
- <span class="cline-any cline-yes">7x</span>
593
- <span class="cline-any cline-yes">7x</span>
594
- <span class="cline-any cline-yes">7x</span>
595
- <span class="cline-any cline-yes">1792x</span>
596
- <span class="cline-any cline-yes">7x</span>
597
- <span class="cline-any cline-yes">7x</span>
598
- <span class="cline-any cline-yes">7x</span>
599
- <span class="cline-any cline-yes">7x</span>
600
- <span class="cline-any cline-yes">7x</span>
601
- <span class="cline-any cline-neutral">&nbsp;</span>
602
- <span class="cline-any cline-neutral">&nbsp;</span>
603
- <span class="cline-any cline-neutral">&nbsp;</span>
604
- <span class="cline-any cline-neutral">&nbsp;</span>
605
- <span class="cline-any cline-neutral">&nbsp;</span>
606
- <span class="cline-any cline-neutral">&nbsp;</span>
607
- <span class="cline-any cline-neutral">&nbsp;</span>
608
- <span class="cline-any cline-neutral">&nbsp;</span>
609
- <span class="cline-any cline-neutral">&nbsp;</span>
610
- <span class="cline-any cline-neutral">&nbsp;</span>
611
- <span class="cline-any cline-neutral">&nbsp;</span>
612
- <span class="cline-any cline-yes">7x</span>
613
- <span class="cline-any cline-neutral">&nbsp;</span>
614
- <span class="cline-any cline-neutral">&nbsp;</span>
615
- <span class="cline-any cline-neutral">&nbsp;</span>
616
- <span class="cline-any cline-neutral">&nbsp;</span>
617
- <span class="cline-any cline-neutral">&nbsp;</span>
618
- <span class="cline-any cline-neutral">&nbsp;</span>
619
- <span class="cline-any cline-neutral">&nbsp;</span>
620
- <span class="cline-any cline-neutral">&nbsp;</span>
621
- <span class="cline-any cline-neutral">&nbsp;</span>
622
- <span class="cline-any cline-neutral">&nbsp;</span>
623
- <span class="cline-any cline-yes">7x</span>
624
- <span class="cline-any cline-yes">7x</span>
625
- <span class="cline-any cline-yes">7x</span>
626
- <span class="cline-any cline-yes">7x</span>
627
- <span class="cline-any cline-yes">7x</span>
628
- <span class="cline-any cline-neutral">&nbsp;</span>
629
- <span class="cline-any cline-neutral">&nbsp;</span>
630
- <span class="cline-any cline-neutral">&nbsp;</span>
631
- <span class="cline-any cline-neutral">&nbsp;</span>
632
- <span class="cline-any cline-neutral">&nbsp;</span>
633
- <span class="cline-any cline-neutral">&nbsp;</span>
634
- <span class="cline-any cline-neutral">&nbsp;</span>
635
- <span class="cline-any cline-neutral">&nbsp;</span>
636
- <span class="cline-any cline-neutral">&nbsp;</span>
637
- <span class="cline-any cline-neutral">&nbsp;</span>
638
- <span class="cline-any cline-neutral">&nbsp;</span>
639
- <span class="cline-any cline-yes">14x</span>
640
- <span class="cline-any cline-yes">14x</span>
641
- <span class="cline-any cline-neutral">&nbsp;</span>
642
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/**
643
- * QuarkDash Ring-LWE Implementation
644
- *
645
- * @git https://github.com/devsdaddy/quarkdash
646
- * @version 1.0.0
647
- * @author Elijah Rastorguev
648
- * @build 1000
649
- * @website https://dev.to/devsdaddy
650
- */
651
- /* Import Required Modules */
652
- import {ICryptoEncapsulated, ICryptoKeyPair, IKeyExchange} from "./types";
653
- import {QuarkDashUtils} from "./utils";
654
- import {SHA256} from "./sha";
655
- &nbsp;
656
- /**
657
- * Ring-LWE based key exchange implementation
658
- */
659
- export class QuarkDashKeyExchange implements IKeyExchange {
660
- // Ring-LWE Constants
661
- private static readonly N = 256;
662
- private static readonly Q = 7681n;
663
- private static readonly ROOT = 7n;
664
- private static readonly INV_N = this.modInverse(BigInt(this.N), this.Q);
665
- &nbsp;
666
- /**
667
- * Get small polygon
668
- * @returns {bigint[]} Small polygon
669
- * @private
670
- */
671
- private static smallPoly(): bigint[] {
672
- const poly = new Array&lt;bigint&gt;(this.N);
673
- for (let i=0;i&lt;this.N;i++) {
674
- const r = Math.random();
675
- if (r&lt;0.33) poly[i] = -1n;
676
- else if (r&lt;0.66) poly[i] = 0n;
677
- else poly[i] = 1n;
678
- }
679
- return poly;
680
- }
681
- &nbsp;
682
- /**
683
- * Uniform polygon
684
- * @returns {bigint[]}
685
- * @private
686
- */
687
- private static uniformPoly(): bigint[] {
688
- const poly = new Array&lt;bigint&gt;(this.N);
689
- const bytes = QuarkDashUtils.randomBytes(this.N*2);
690
- for(let i=0;i&lt;this.N;i++) {
691
- const val = (bytes[2*i] | (bytes[2*i+1]&lt;&lt;8)) % Number(this.Q);
692
- poly[i] = BigInt(val);
693
- }
694
- return poly;
695
- }
696
- &nbsp;
697
- /**
698
- * NTT Operation
699
- * @param poly {bigint[]} Polygon
700
- * @private
701
- */
702
- private static ntt(poly: bigint[]): bigint[] {
703
- const res = [...poly];
704
- let len = 2;
705
- while(len &lt;= this.N) {
706
- const wlen = this.powMod(this.ROOT, BigInt(this.N/len), this.Q);
707
- for(let i=0;i&lt;this.N;i+=len){
708
- let w=1n;
709
- for(let j=0;j&lt;len/2;j++){
710
- const u=res[i+j];
711
- const v=(res[i+j+len/2]*w)%this.Q;
712
- res[i+j]=(u+v)%this.Q;
713
- res[i+j+len/2]=(u-v+this.Q)%this.Q;
714
- w=(w*wlen)%this.Q;
715
- }
716
- }
717
- len&lt;&lt;=1;
718
- }
719
- return res;
720
- }
721
- &nbsp;
722
- /**
723
- * Inverse NTT
724
- * @param poly {bigint[]} Polygon
725
- * @private
726
- */
727
- private static invNTT(poly: bigint[]): bigint[] {
728
- const res = [...poly];
729
- let len = this.N;
730
- while(len &gt;= 2){
731
- const wlen = this.powMod(this.ROOT, BigInt(this.N/len), this.Q);
732
- for(let i=0;i&lt;this.N;i+=len){
733
- let w=1n;
734
- for(let j=0;j&lt;len/2;j++){
735
- const u=res[i+j];
736
- const v=res[i+j+len/2];
737
- res[i+j]=(u+v)%this.Q;
738
- res[i+j+len/2]=((u-v+this.Q)*w)%this.Q;
739
- w=(w*wlen)%this.Q;
740
- }
741
- }
742
- len&gt;&gt;=1;
743
- }
744
- for(let i=0;i&lt;this.N;i++) res[i]=(res[i]*this.INV_N)%this.Q;
745
- return res;
746
- }
747
- &nbsp;
748
- /**
749
- * Multiply
750
- * @param a {bigint[]} Polygon
751
- * @param b {bigint[]} Polygon
752
- * @returns {bigint[]} Multiplied polygons
753
- */
754
- public static multiply(a: bigint[], b: bigint[]): bigint[] {
755
- const aNTT = this.ntt(a);
756
- const bNTT = this.ntt(b);
757
- const prod = new Array&lt;bigint&gt;(this.N);
758
- for(let i=0;i&lt;this.N;i++) prod[i]=(aNTT[i]*bNTT[i])%this.Q;
759
- return this.invNTT(prod);
760
- }
761
- &nbsp;
762
- /**
763
- * Serialize polygon
764
- * @param poly {bigint[]} Polygon
765
- * @returns {Uint8Array} Polygon buffer
766
- * @private
767
- */
768
- private static serializePoly(poly: bigint[]): Uint8Array {
769
- const bytes = new Uint8Array(this.N*2);
770
- for(let i=0;i&lt;this.N;i++) {
771
- const val = Number(poly[i]);
772
- bytes[2*i]=val&amp;0xFF;
773
- bytes[2*i+1]=(val&gt;&gt;8)&amp;0xFF;
774
- }
775
- return bytes;
776
- }
777
- &nbsp;
778
- /**
779
- * Deserialize Polygon
780
- * @param bytes {Uint8Array} Polygon buffer
781
- * @returns {bigint[]} Polygon
782
- * @private
783
- */
784
- private static deserializePoly(bytes: Uint8Array): bigint[] {
785
- const poly = new Array&lt;bigint&gt;(this.N);
786
- for(let i=0;i&lt;this.N;i++) {
787
- const val = bytes[2*i] | (bytes[2*i+1]&lt;&lt;8);
788
- poly[i]=BigInt(val);
789
- }
790
- return poly;
791
- }
792
- &nbsp;
793
- /**
794
- * Round to bits
795
- * @param poly {bigint[]} Polygon
796
- * @returns {Uint8Array} rounded buffer
797
- * @private
798
- */
799
- private static roundToBits(poly: bigint[]): Uint8Array {
800
- const result = new Uint8Array(32);
801
- for(let i=0;i&lt;this.N;i++) {
802
- const bit = (Number(poly[i]) &gt; Number(this.Q)/2) ? 1 : 0;
803
- if(bit) result[i&gt;&gt;3] |= (1&lt;&lt;(i&amp;7));
804
- }
805
- return result;
806
- }
807
- &nbsp;
808
- /**
809
- * Modular exponentiation
810
- * @param base {bigint} Base
811
- * @param exp {bigint} exponential
812
- * @param mod {bigint} module
813
- * @returns {bigint} Result of modular exponentiation
814
- * @private
815
- */
816
- private static powMod(base: bigint, exp: bigint, mod: bigint): bigint {
817
- let result=1n, b=base%mod, e=exp;
818
- while(e&gt;0n){ if(e&amp;1n) result=(result*b)%mod; b=(b*b)%mod; e&gt;&gt;=1n; }
819
- return result;
820
- }
821
- &nbsp;
822
- /**
823
- * Modular inverse
824
- * @param a {bigint}
825
- * @param m {bigint}
826
- * @returns {bigint} Inversion result
827
- * @private
828
- */
829
- private static modInverse(a: bigint, m: bigint): bigint {
830
- let [old_r,r]=[a,m], [old_s,s]=[1n,0n];
831
- while(r!==0n){ const q=old_r/r; [old_r,r]=[r,old_r-q*r]; [old_s,s]=[s,old_s-q*s]; }
832
- return (old_s%m+m)%m;
833
- }
834
- &nbsp;
835
- /**
836
- * Generate crypto key pair async
837
- * @returns {ICryptoKeyPair} Crypto key pair
838
- * TODO: GPU Calculations
839
- */
840
- public async generateKeyPair(): Promise&lt;ICryptoKeyPair&gt; {
841
- return this.generateKeyPairSync();
842
- }
843
- &nbsp;
844
- /**
845
- * Generate crypto key pair sync
846
- * @returns {ICryptoKeyPair} Crypto key pair
847
- */
848
- public generateKeyPairSync(): ICryptoKeyPair {
849
- const a = QuarkDashKeyExchange.uniformPoly();
850
- const s = QuarkDashKeyExchange.smallPoly();
851
- const e = QuarkDashKeyExchange.smallPoly();
852
- const as = QuarkDashKeyExchange.multiply(a,s);
853
- const b = new Array&lt;bigint&gt;(QuarkDashKeyExchange.N);
854
- for(let i=0; i&lt;QuarkDashKeyExchange.N; i++) b[i] = (as[i]+e[i]) % QuarkDashKeyExchange.Q;
855
- const pub = QuarkDashUtils.concatBytes(QuarkDashKeyExchange.serializePoly(a), QuarkDashKeyExchange.serializePoly(b));
856
- const priv = QuarkDashKeyExchange.serializePoly(s);
857
- return { publicKey: pub, privateKey: priv };
858
- }
859
- &nbsp;
860
- /**
861
- * Encapsulate async
862
- * @param publicKey {Uint8Array} Public key buffer
863
- * @returns {Promise&lt;ICryptoEncapsulated&gt;} Encapsulated data
864
- * TODO: GPU Calculations
865
- */
866
- public async encapsulate(publicKey: Uint8Array): Promise&lt;ICryptoEncapsulated&gt; {
867
- return this.encapsulateSync(publicKey);
868
- }
869
- &nbsp;
870
- /**
871
- * Encapsulate sync
872
- * @param publicKey {Uint8Array} Public key buffer
873
- * @returns {ICryptoEncapsulated} Encapsulated data
874
- */
875
- public encapsulateSync(publicKey: Uint8Array): ICryptoEncapsulated {
876
- const aBytes = publicKey.slice(0, QuarkDashKeyExchange.N * 2);
877
- const bBytes = publicKey.slice(QuarkDashKeyExchange.N * 2);
878
- const a = QuarkDashKeyExchange.deserializePoly(aBytes);
879
- const b = QuarkDashKeyExchange.deserializePoly(bBytes);
880
- const sp = QuarkDashKeyExchange.smallPoly();
881
- const ep = QuarkDashKeyExchange.smallPoly();
882
- const uArr = QuarkDashKeyExchange.multiply(a, sp);
883
- for (let i = 0; i &lt; QuarkDashKeyExchange.N; i++) uArr[i] = (uArr[i] + ep[i]) % QuarkDashKeyExchange.Q;
884
- const w = QuarkDashKeyExchange.multiply(b, sp);
885
- const rawSecret = QuarkDashKeyExchange.roundToBits(w);
886
- const ciphertext = QuarkDashKeyExchange.serializePoly(uArr);
887
- const sharedSecret = this.hashSharedSecret(rawSecret, publicKey, ciphertext);
888
- return { ciphertext, sharedSecret };
889
- }
890
- &nbsp;
891
- /**
892
- * Decapsulate async
893
- * @param privateKey {Uint8Array} Private key buffer
894
- * @param peerPublicKey {Uint8Array} Peer public key
895
- * @param ciphertext {Uint8Array} Cipher text buffer
896
- * @returns {Promise&lt;Uint8Array&gt;} Buffer data
897
- * TODO: GPU Calculations
898
- */
899
- public async decapsulate(privateKey: Uint8Array, peerPublicKey: Uint8Array, ciphertext: Uint8Array): Promise&lt;Uint8Array&gt; {
900
- return this.decapsulateSync(privateKey, peerPublicKey, ciphertext);
901
- }
902
- &nbsp;
903
- /**
904
- * Decapsulate sync
905
- * @param privateKey {Uint8Array} Private key buffer
906
- * @param peerPublicKey{Uint8Array} Peer public key buffer
907
- * @param ciphertext {Uint8Array} Cipher text buffer
908
- * @returns {Uint8Array} Buffer data
909
- */
910
- public decapsulateSync(privateKey: Uint8Array, peerPublicKey: Uint8Array, ciphertext: Uint8Array): Uint8Array {
911
- const s = QuarkDashKeyExchange.deserializePoly(privateKey);
912
- const u = QuarkDashKeyExchange.deserializePoly(ciphertext);
913
- const w = QuarkDashKeyExchange.multiply(u, s);
914
- const rawSecret = QuarkDashKeyExchange.roundToBits(w);
915
- return this.hashSharedSecret(rawSecret, peerPublicKey, ciphertext);
916
- }
917
- &nbsp;
918
- /**
919
- * Hash shared secret
920
- * @param ss {Uint8Array} Shared secret buffer
921
- * @param publicKey {Uint8Array} Public key buffer
922
- * @param ciphertext {Uint8Array} Cipher text buffer
923
- * @returns {Uint8Array} Shared secret hash
924
- * @private
925
- */
926
- private hashSharedSecret(ss: Uint8Array, publicKey: Uint8Array, ciphertext: Uint8Array): Uint8Array {
927
- const data = QuarkDashUtils.concatBytes(ss, publicKey, ciphertext);
928
- return SHA256.hash(data, true) as Uint8Array;
929
- }
930
- }</pre></td></tr></table></pre>
931
-
932
- <div class='push'></div><!-- for sticky footer -->
933
- </div><!-- /wrapper -->
934
- <div class='footer quiet pad2 space-top1 center small'>
935
- Code coverage generated by
936
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
937
- at 2026-04-07T10:15:46.746Z
938
- </div>
939
- <script src="prettify.js"></script>
940
- <script>
941
- window.onload = function () {
942
- prettyPrint();
943
- };
944
- </script>
945
- <script src="sorter.js"></script>
946
- <script src="block-navigation.js"></script>
947
- </body>
948
- </html>
949
-