From: Chris Duncan Date: Sun, 3 Aug 2025 22:08:05 +0000 (-0700) Subject: Reorder functions. X-Git-Tag: v0.10.5~46^2~22 X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=1a4812a64adbe7e850254348eccdc35583dd6cda;p=libnemo.git Reorder functions. --- diff --git a/src/lib/nano-nacl.ts b/src/lib/nano-nacl.ts index f0aec93..c0c283c 100644 --- a/src/lib/nano-nacl.ts +++ b/src/lib/nano-nacl.ts @@ -339,37 +339,6 @@ export class NanoNaCl { this.modL(r, x) } - static crypto_sign (sm: Uint8Array, m: Uint8Array, n: number, sk: Uint8Array, pk: Uint8Array): void { - const p: Float64Array[] = [new Float64Array(16), new Float64Array(16), new Float64Array(16), new Float64Array(16)] - - const d = new Blake2b(64).update(sk).digest() - d[0] &= 248 - d[31] &= 127 - d[31] |= 64 - - sm.set(m.subarray(0, n), 64) - sm.set(d.subarray(32, 64), 32) - - const r = new Blake2b(64).update(sm.subarray(32)).digest() - this.reduce(r) - this.scalarbase(p, r) - this.pack(sm, p) - - sm.set(pk, 32) - const h = new Blake2b(64).update(sm).digest() - this.reduce(h) - - const x = new Float64Array(64) - x.set(r.subarray(0, 32)) - for (let i = 0; i < 32; i++) { - for (let j = 0; j < 32; j++) { - x[i + j] += h[i] * d[j] - } - } - - this.modL(sm.subarray(32), x) - } - static unpackneg (r: Float64Array[], p: Uint8Array): -1 | 0 { const t: Float64Array = new Float64Array(16) const chk: Float64Array = new Float64Array(16) @@ -414,6 +383,37 @@ export class NanoNaCl { return 0 } + static crypto_sign (sm: Uint8Array, m: Uint8Array, n: number, sk: Uint8Array, pk: Uint8Array): void { + const p: Float64Array[] = [new Float64Array(16), new Float64Array(16), new Float64Array(16), new Float64Array(16)] + + const d = new Blake2b(64).update(sk).digest() + d[0] &= 248 + d[31] &= 127 + d[31] |= 64 + + sm.set(m.subarray(0, n), 64) + sm.set(d.subarray(32, 64), 32) + + const r = new Blake2b(64).update(sm.subarray(32)).digest() + this.reduce(r) + this.scalarbase(p, r) + this.pack(sm, p) + + sm.set(pk, 32) + const h = new Blake2b(64).update(sm).digest() + this.reduce(h) + + const x = new Float64Array(64) + x.set(r.subarray(0, 32)) + for (let i = 0; i < 32; i++) { + for (let j = 0; j < 32; j++) { + x[i + j] += h[i] * d[j] + } + } + + this.modL(sm.subarray(32), x) + } + static crypto_sign_open (m: Uint8Array, sm: Uint8Array, n: number, pk: Uint8Array): number { const t = new Uint8Array(32) const p: Float64Array[] = [new Float64Array(16), new Float64Array(16), new Float64Array(16), new Float64Array(16)]