From: Chris Duncan Date: Mon, 4 Aug 2025 21:58:34 +0000 (-0700) Subject: Reorder nacl functions. X-Git-Tag: v0.10.5~46^2~5 X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=c089b2977bf926f52850048975300c14bf2b0952;p=libnemo.git Reorder nacl functions. --- diff --git a/src/lib/nano-nacl.ts b/src/lib/nano-nacl.ts index c0c283c..21f8c95 100644 --- a/src/lib/nano-nacl.ts +++ b/src/lib/nano-nacl.ts @@ -42,6 +42,18 @@ export class NanoNaCl { return this.vn(x, xi, y, yi, 32) } + static pow2523 (o: Float64Array, i: Float64Array): void { + const c: Float64Array = new Float64Array(16) + c.set(i.subarray(0, 16), 0) + for (let a = 250; a >= 0; a--) { + this.Square(c, c) + if (a !== 1) { + this.Multiply(c, c, i) + } + } + o.set(c, 0) + } + static car25519 (o: Float64Array): void { let v, c = 1 for (let i = 0; i < 16; i++) { @@ -52,14 +64,24 @@ export class NanoNaCl { o[0] += 38 * (c - 1) } - static sel25519 (p: Float64Array, q: Float64Array, b: number): void { - let t - const c = ~(b - 1) - for (let i = 0; i < 16; i++) { - t = c & (p[i] ^ q[i]) - p[i] ^= t - q[i] ^= t + static inv25519 (o: Float64Array, i: Float64Array): void { + const c: Float64Array = new Float64Array(16) + c.set(i.subarray(0, 16), 0) + for (let a = 253; a >= 0; a--) { + this.Square(c, c) + if (a !== 2 && a !== 4) { + this.Multiply(c, c, i) + } } + o.set(c, 0) + } + + static neq25519 (a: Float64Array, b: Float64Array): number { + const c = new Uint8Array(32) + const d = new Uint8Array(32) + this.pack25519(c, a) + this.pack25519(d, b) + return this.crypto_verify_32(c, 0, d, 0) } static pack25519 (o: Uint8Array, n: Float64Array): void { @@ -87,20 +109,22 @@ export class NanoNaCl { } } - static neq25519 (a: Float64Array, b: Float64Array): number { - const c = new Uint8Array(32) - const d = new Uint8Array(32) - this.pack25519(c, a) - this.pack25519(d, b) - return this.crypto_verify_32(c, 0, d, 0) - } - static par25519 (a: Float64Array): number { const d = new Uint8Array(32) this.pack25519(d, a) return d[0] & 1 } + static sel25519 (p: Float64Array, q: Float64Array, b: number): void { + let t + const c = ~(b - 1) + for (let i = 0; i < 16; i++) { + t = c & (p[i] ^ q[i]) + p[i] ^= t + q[i] ^= t + } + } + static unpack25519 (o: Float64Array, n: Uint8Array): void { for (let i = 0; i < 16; i++) { o[i] = n[2 * i] + (n[2 * i + 1] << 8) @@ -202,30 +226,6 @@ export class NanoNaCl { o.set(t.slice(0, 16), 0) } - static inv25519 (o: Float64Array, i: Float64Array): void { - const c: Float64Array = new Float64Array(16) - c.set(i.subarray(0, 16), 0) - for (let a = 253; a >= 0; a--) { - this.Square(c, c) - if (a !== 2 && a !== 4) { - this.Multiply(c, c, i) - } - } - o.set(c, 0) - } - - static pow2523 (o: Float64Array, i: Float64Array): void { - const c: Float64Array = new Float64Array(16) - c.set(i.subarray(0, 16), 0) - for (let a = 250; a >= 0; a--) { - this.Square(c, c) - if (a !== 1) { - this.Multiply(c, c, i) - } - } - o.set(c, 0) - } - static add (p: Float64Array[], q: Float64Array[]): void { const a: Float64Array = new Float64Array(16) const b: Float64Array = new Float64Array(16)