Skip to content

Commit 5cd8ebc

Browse files
Simplify bitwise code
1 parent e323246 commit 5cd8ebc

File tree

5 files changed

+54
-58
lines changed

5 files changed

+54
-58
lines changed

docs/classes/_oprf_.oprf.html

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ <h3>constructor</h3>
136136
<aside class="tsd-sources">
137137
<p>Overrides <a href="_oprf_slim_.oprfslim.html">OPRFSlim</a>.<a href="_oprf_slim_.oprfslim.html#constructor">constructor</a></p>
138138
<ul>
139-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.ts#L14">oprf.ts:14</a></li>
139+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.ts#L14">oprf.ts:14</a></li>
140140
</ul>
141141
</aside>
142142
<h4 class="tsd-returns-title">Returns <a href="_oprf_.oprf.html" class="tsd-signature-type">OPRF</a></h4>
@@ -153,7 +153,7 @@ <h3>ready</h3>
153153
<aside class="tsd-sources">
154154
<p>Inherited from <a href="_oprf_slim_.oprfslim.html">OPRFSlim</a>.<a href="_oprf_slim_.oprfslim.html#ready">ready</a></p>
155155
<ul>
156-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L19">oprf.slim.ts:19</a></li>
156+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L19">oprf.slim.ts:19</a></li>
157157
</ul>
158158
</aside>
159159
<div class="tsd-comment tsd-typography">
@@ -175,7 +175,7 @@ <h3>sodium</h3>
175175
<aside class="tsd-sources">
176176
<p>Inherited from <a href="_oprf_slim_.oprfslim.html">OPRFSlim</a>.<a href="_oprf_slim_.oprfslim.html#sodium">sodium</a></p>
177177
<ul>
178-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L25">oprf.slim.ts:25</a></li>
178+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L25">oprf.slim.ts:25</a></li>
179179
</ul>
180180
</aside>
181181
<div class="tsd-comment tsd-typography">
@@ -203,7 +203,7 @@ <h3>decode<wbr>Point</h3>
203203
<aside class="tsd-sources">
204204
<p>Inherited from <a href="_oprf_slim_.oprfslim.html">OPRFSlim</a>.<a href="_oprf_slim_.oprfslim.html#decodepoint">decodePoint</a></p>
205205
<ul>
206-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L148">oprf.slim.ts:148</a></li>
206+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L147">oprf.slim.ts:147</a></li>
207207
</ul>
208208
</aside>
209209
<div class="tsd-comment tsd-typography">
@@ -239,7 +239,7 @@ <h3>encode<wbr>Point</h3>
239239
<aside class="tsd-sources">
240240
<p>Inherited from <a href="_oprf_slim_.oprfslim.html">OPRFSlim</a>.<a href="_oprf_slim_.oprfslim.html#encodepoint">encodePoint</a></p>
241241
<ul>
242-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L119">oprf.slim.ts:119</a></li>
242+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L119">oprf.slim.ts:119</a></li>
243243
</ul>
244244
</aside>
245245
<div class="tsd-comment tsd-typography">
@@ -275,7 +275,7 @@ <h3>generate<wbr>Random<wbr>Scalar</h3>
275275
<aside class="tsd-sources">
276276
<p>Inherited from <a href="_oprf_slim_.oprfslim.html">OPRFSlim</a>.<a href="_oprf_slim_.oprfslim.html#generaterandomscalar">generateRandomScalar</a></p>
277277
<ul>
278-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L50">oprf.slim.ts:50</a></li>
278+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L50">oprf.slim.ts:50</a></li>
279279
</ul>
280280
</aside>
281281
<div class="tsd-comment tsd-typography">
@@ -298,7 +298,7 @@ <h3>hash<wbr>ToPoint</h3>
298298
<aside class="tsd-sources">
299299
<p>Inherited from <a href="_oprf_slim_.oprfslim.html">OPRFSlim</a>.<a href="_oprf_slim_.oprfslim.html#hashtopoint">hashToPoint</a></p>
300300
<ul>
301-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L41">oprf.slim.ts:41</a></li>
301+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L41">oprf.slim.ts:41</a></li>
302302
</ul>
303303
</aside>
304304
<div class="tsd-comment tsd-typography">
@@ -328,7 +328,7 @@ <h3>is<wbr>Valid<wbr>Point</h3>
328328
<aside class="tsd-sources">
329329
<p>Inherited from <a href="_oprf_slim_.oprfslim.html">OPRFSlim</a>.<a href="_oprf_slim_.oprfslim.html#isvalidpoint">isValidPoint</a></p>
330330
<ul>
331-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L109">oprf.slim.ts:109</a></li>
331+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L109">oprf.slim.ts:109</a></li>
332332
</ul>
333333
</aside>
334334
<div class="tsd-comment tsd-typography">
@@ -358,7 +358,7 @@ <h3>mask<wbr>Input</h3>
358358
<aside class="tsd-sources">
359359
<p>Inherited from <a href="_oprf_slim_.oprfslim.html">OPRFSlim</a>.<a href="_oprf_slim_.oprfslim.html#maskinput">maskInput</a></p>
360360
<ul>
361-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L59">oprf.slim.ts:59</a></li>
361+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L59">oprf.slim.ts:59</a></li>
362362
</ul>
363363
</aside>
364364
<div class="tsd-comment tsd-typography">
@@ -388,7 +388,7 @@ <h3>mask<wbr>Point</h3>
388388
<aside class="tsd-sources">
389389
<p>Inherited from <a href="_oprf_slim_.oprfslim.html">OPRFSlim</a>.<a href="_oprf_slim_.oprfslim.html#maskpoint">maskPoint</a></p>
390390
<ul>
391-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L73">oprf.slim.ts:73</a></li>
391+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L73">oprf.slim.ts:73</a></li>
392392
</ul>
393393
</aside>
394394
<div class="tsd-comment tsd-typography">
@@ -418,7 +418,7 @@ <h3>scalar<wbr>Mult</h3>
418418
<aside class="tsd-sources">
419419
<p>Inherited from <a href="_oprf_slim_.oprfslim.html">OPRFSlim</a>.<a href="_oprf_slim_.oprfslim.html#scalarmult">scalarMult</a></p>
420420
<ul>
421-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L96">oprf.slim.ts:96</a></li>
421+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L96">oprf.slim.ts:96</a></li>
422422
</ul>
423423
</aside>
424424
<div class="tsd-comment tsd-typography">
@@ -457,7 +457,7 @@ <h3>unmask<wbr>Point</h3>
457457
<aside class="tsd-sources">
458458
<p>Inherited from <a href="_oprf_slim_.oprfslim.html">OPRFSlim</a>.<a href="_oprf_slim_.oprfslim.html#unmaskpoint">unmaskPoint</a></p>
459459
<ul>
460-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L85">oprf.slim.ts:85</a></li>
460+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L85">oprf.slim.ts:85</a></li>
461461
</ul>
462462
</aside>
463463
<div class="tsd-comment tsd-typography">

docs/classes/_oprf_slim_.oprfslim.html

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ <h3>constructor</h3>
137137
<li class="tsd-description">
138138
<aside class="tsd-sources">
139139
<ul>
140-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L25">oprf.slim.ts:25</a></li>
140+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L25">oprf.slim.ts:25</a></li>
141141
</ul>
142142
</aside>
143143
<div class="tsd-comment tsd-typography">
@@ -169,7 +169,7 @@ <h3>ready</h3>
169169
<div class="tsd-signature tsd-kind-icon">ready<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol"> = null</span></div>
170170
<aside class="tsd-sources">
171171
<ul>
172-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L19">oprf.slim.ts:19</a></li>
172+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L19">oprf.slim.ts:19</a></li>
173173
</ul>
174174
</aside>
175175
<div class="tsd-comment tsd-typography">
@@ -190,7 +190,7 @@ <h3>sodium</h3>
190190
<div class="tsd-signature tsd-kind-icon">sodium<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol"> = null</span></div>
191191
<aside class="tsd-sources">
192192
<ul>
193-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L25">oprf.slim.ts:25</a></li>
193+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L25">oprf.slim.ts:25</a></li>
194194
</ul>
195195
</aside>
196196
<div class="tsd-comment tsd-typography">
@@ -217,7 +217,7 @@ <h3>decode<wbr>Point</h3>
217217
<li class="tsd-description">
218218
<aside class="tsd-sources">
219219
<ul>
220-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L148">oprf.slim.ts:148</a></li>
220+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L147">oprf.slim.ts:147</a></li>
221221
</ul>
222222
</aside>
223223
<div class="tsd-comment tsd-typography">
@@ -252,7 +252,7 @@ <h3>encode<wbr>Point</h3>
252252
<li class="tsd-description">
253253
<aside class="tsd-sources">
254254
<ul>
255-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L119">oprf.slim.ts:119</a></li>
255+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L119">oprf.slim.ts:119</a></li>
256256
</ul>
257257
</aside>
258258
<div class="tsd-comment tsd-typography">
@@ -287,7 +287,7 @@ <h3>generate<wbr>Random<wbr>Scalar</h3>
287287
<li class="tsd-description">
288288
<aside class="tsd-sources">
289289
<ul>
290-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L50">oprf.slim.ts:50</a></li>
290+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L50">oprf.slim.ts:50</a></li>
291291
</ul>
292292
</aside>
293293
<div class="tsd-comment tsd-typography">
@@ -309,7 +309,7 @@ <h3>hash<wbr>ToPoint</h3>
309309
<li class="tsd-description">
310310
<aside class="tsd-sources">
311311
<ul>
312-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L41">oprf.slim.ts:41</a></li>
312+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L41">oprf.slim.ts:41</a></li>
313313
</ul>
314314
</aside>
315315
<div class="tsd-comment tsd-typography">
@@ -338,7 +338,7 @@ <h3>is<wbr>Valid<wbr>Point</h3>
338338
<li class="tsd-description">
339339
<aside class="tsd-sources">
340340
<ul>
341-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L109">oprf.slim.ts:109</a></li>
341+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L109">oprf.slim.ts:109</a></li>
342342
</ul>
343343
</aside>
344344
<div class="tsd-comment tsd-typography">
@@ -367,7 +367,7 @@ <h3>mask<wbr>Input</h3>
367367
<li class="tsd-description">
368368
<aside class="tsd-sources">
369369
<ul>
370-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L59">oprf.slim.ts:59</a></li>
370+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L59">oprf.slim.ts:59</a></li>
371371
</ul>
372372
</aside>
373373
<div class="tsd-comment tsd-typography">
@@ -396,7 +396,7 @@ <h3>mask<wbr>Point</h3>
396396
<li class="tsd-description">
397397
<aside class="tsd-sources">
398398
<ul>
399-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L73">oprf.slim.ts:73</a></li>
399+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L73">oprf.slim.ts:73</a></li>
400400
</ul>
401401
</aside>
402402
<div class="tsd-comment tsd-typography">
@@ -425,7 +425,7 @@ <h3>scalar<wbr>Mult</h3>
425425
<li class="tsd-description">
426426
<aside class="tsd-sources">
427427
<ul>
428-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L96">oprf.slim.ts:96</a></li>
428+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L96">oprf.slim.ts:96</a></li>
429429
</ul>
430430
</aside>
431431
<div class="tsd-comment tsd-typography">
@@ -463,7 +463,7 @@ <h3>unmask<wbr>Point</h3>
463463
<li class="tsd-description">
464464
<aside class="tsd-sources">
465465
<ul>
466-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L85">oprf.slim.ts:85</a></li>
466+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L85">oprf.slim.ts:85</a></li>
467467
</ul>
468468
</aside>
469469
<div class="tsd-comment tsd-typography">

docs/interfaces/_oprf_slim_.imaskeddata.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ <h3>mask</h3>
9999
<div class="tsd-signature tsd-kind-icon">mask<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Uint8Array</span></div>
100100
<aside class="tsd-sources">
101101
<ul>
102-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L3">oprf.slim.ts:3</a></li>
102+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L3">oprf.slim.ts:3</a></li>
103103
</ul>
104104
</aside>
105105
</section>
@@ -109,7 +109,7 @@ <h3>point</h3>
109109
<div class="tsd-signature tsd-kind-icon">point<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Uint8Array</span></div>
110110
<aside class="tsd-sources">
111111
<ul>
112-
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/16a3b32/src/oprf.slim.ts#L2">oprf.slim.ts:2</a></li>
112+
<li>Defined in <a href="https://github.com/multiparty/oprf/blob/e323246/src/oprf.slim.ts#L2">oprf.slim.ts:2</a></li>
113113
</ul>
114114
</aside>
115115
</section>

package-lock.json

Lines changed: 13 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/oprf.slim.ts

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ export class OPRFSlim {
6767

6868
/**
6969
* Masks a point with a random mask and returns both masked point and mask
70-
* @param {Uint8Array} input
70+
* @param {Uint8Array} point
7171
* @returns {IMaskedData} a masked point and the mask
7272
*/
7373
public maskPoint(point: Uint8Array): IMaskedData {
@@ -117,21 +117,20 @@ export class OPRFSlim {
117117
* @returns {string} a compact string representing the point
118118
*/
119119
public encodePoint(point: Uint8Array, encoding: string): string {
120-
const offsets = [0x1];
121-
if (encoding !== 'ASCII') {
122-
offsets.push(0x100);
123-
}
120+
const offset = encoding === 'ASCII' ? 1 : 2;
124121

125-
if (point.length % offsets.length !== 0) {
122+
if (point.length % offset !== 0) {
126123
// this should never happen currently as libsodium's ristretto implementation uses even size byte arrays
127124
throw new Error('point size does not align with encoding unit size, please use ASCII encoding!');
128125
}
129126

130127
const code = [];
131-
for (let i = 0; i < point.length; i += offsets.length) {
132-
code[i] = 0;
133-
for (let j = 0; j < offsets.length; j++) {
134-
code[i] += offsets[j] * point[i + j];
128+
for (let i = 0; i < point.length; i += offset) {
129+
if (encoding === 'ASCII') {
130+
code[i] = point[i];
131+
} else {
132+
// UTF-8 (or rather USC-2) has 2 bytes per character, so combine 2 Uint8 values into one, shifting one a byte
133+
code[i] = point[i] | (point[i + 1] << 8);
135134
}
136135
code[i] = String.fromCharCode(code[i]);
137136
}
@@ -146,19 +145,16 @@ export class OPRFSlim {
146145
* @returns {Uint8Array} the point
147146
*/
148147
public decodePoint(code: string, encoding: string): Uint8Array {
149-
const masks = [0xFF];
150-
const shifts = [0x1];
151-
if (encoding !== 'ASCII') {
152-
masks.push(0xFF00);
153-
shifts.push(0x100);
154-
}
155-
156148
const decode = [];
157149
for (let i = 0; i < code.length; i ++) {
158150
const character = code.charCodeAt(i);
159151
const decodeChar = [];
160-
for (let j = 0; j < masks.length; j++) {
161-
decodeChar.push((character & masks[j]) / shifts[j]);
152+
153+
// Mask is not required for ASCII, but UTF-8 has second point encoded at 0xFF00
154+
decodeChar.push(character & 0xFF);
155+
if (encoding !== 'ASCII') {
156+
// 2-byte characters, get second point
157+
decodeChar.push(character >> 8);
162158
}
163159

164160
decode.push.apply(decode, decodeChar);

0 commit comments

Comments
 (0)