return this.vn(x, xi, y, yi, 32)\r
}\r
\r
+ static pow2523 (o: Float64Array, i: Float64Array): void {\r
+ const c: Float64Array = new Float64Array(16)\r
+ c.set(i.subarray(0, 16), 0)\r
+ for (let a = 250; a >= 0; a--) {\r
+ this.Square(c, c)\r
+ if (a !== 1) {\r
+ this.Multiply(c, c, i)\r
+ }\r
+ }\r
+ o.set(c, 0)\r
+ }\r
+\r
static car25519 (o: Float64Array): void {\r
let v, c = 1\r
for (let i = 0; i < 16; i++) {\r
o[0] += 38 * (c - 1)\r
}\r
\r
- static sel25519 (p: Float64Array, q: Float64Array, b: number): void {\r
- let t\r
- const c = ~(b - 1)\r
- for (let i = 0; i < 16; i++) {\r
- t = c & (p[i] ^ q[i])\r
- p[i] ^= t\r
- q[i] ^= t\r
+ static inv25519 (o: Float64Array, i: Float64Array): void {\r
+ const c: Float64Array = new Float64Array(16)\r
+ c.set(i.subarray(0, 16), 0)\r
+ for (let a = 253; a >= 0; a--) {\r
+ this.Square(c, c)\r
+ if (a !== 2 && a !== 4) {\r
+ this.Multiply(c, c, i)\r
+ }\r
}\r
+ o.set(c, 0)\r
+ }\r
+\r
+ static neq25519 (a: Float64Array, b: Float64Array): number {\r
+ const c = new Uint8Array(32)\r
+ const d = new Uint8Array(32)\r
+ this.pack25519(c, a)\r
+ this.pack25519(d, b)\r
+ return this.crypto_verify_32(c, 0, d, 0)\r
}\r
\r
static pack25519 (o: Uint8Array, n: Float64Array): void {\r
}\r
}\r
\r
- static neq25519 (a: Float64Array, b: Float64Array): number {\r
- const c = new Uint8Array(32)\r
- const d = new Uint8Array(32)\r
- this.pack25519(c, a)\r
- this.pack25519(d, b)\r
- return this.crypto_verify_32(c, 0, d, 0)\r
- }\r
-\r
static par25519 (a: Float64Array): number {\r
const d = new Uint8Array(32)\r
this.pack25519(d, a)\r
return d[0] & 1\r
}\r
\r
+ static sel25519 (p: Float64Array, q: Float64Array, b: number): void {\r
+ let t\r
+ const c = ~(b - 1)\r
+ for (let i = 0; i < 16; i++) {\r
+ t = c & (p[i] ^ q[i])\r
+ p[i] ^= t\r
+ q[i] ^= t\r
+ }\r
+ }\r
+\r
static unpack25519 (o: Float64Array, n: Uint8Array): void {\r
for (let i = 0; i < 16; i++) {\r
o[i] = n[2 * i] + (n[2 * i + 1] << 8)\r
o.set(t.slice(0, 16), 0)\r
}\r
\r
- static inv25519 (o: Float64Array, i: Float64Array): void {\r
- const c: Float64Array = new Float64Array(16)\r
- c.set(i.subarray(0, 16), 0)\r
- for (let a = 253; a >= 0; a--) {\r
- this.Square(c, c)\r
- if (a !== 2 && a !== 4) {\r
- this.Multiply(c, c, i)\r
- }\r
- }\r
- o.set(c, 0)\r
- }\r
-\r
- static pow2523 (o: Float64Array, i: Float64Array): void {\r
- const c: Float64Array = new Float64Array(16)\r
- c.set(i.subarray(0, 16), 0)\r
- for (let a = 250; a >= 0; a--) {\r
- this.Square(c, c)\r
- if (a !== 1) {\r
- this.Multiply(c, c, i)\r
- }\r
- }\r
- o.set(c, 0)\r
- }\r
-\r
static add (p: Float64Array[], q: Float64Array[]): void {\r
const a: Float64Array = new Float64Array(16)\r
const b: Float64Array = new Float64Array(16)\r