diff --git a/ccryptolib/ed25519.lua b/ccryptolib/ed25519.lua index b282eea..01b2036 100644 --- a/ccryptolib/ed25519.lua +++ b/ccryptolib/ed25519.lua @@ -11,11 +11,6 @@ local random = require "ccryptolib.random" local mod = {} ---- Converts a signing key to an equivalent exchange key. -function mod.exchangeKey(sk) - return sha512.digest(sk):sub(1, 32) -end - --- Computes a public key from a secret key. -- -- @tparam string sk A random 32-byte secret key. @@ -59,7 +54,7 @@ function mod.sign(sk, pk, msg) -- Response. local m = fq.decodeWide(random.random(64)) - local s = fq.add(fq.add(k, fq.mul(fq.add(x, m), e)), fq.mul(m, e)) + local s = fq.sub(fq.add(k, fq.mul(fq.add(x, m), e)), fq.mul(m, e)) local sStr = fq.encode(s) return rStr .. sStr diff --git a/ccryptolib/internal/edwards25519.lua b/ccryptolib/internal/edwards25519.lua index c61d0a7..898920b 100644 --- a/ccryptolib/internal/edwards25519.lua +++ b/ccryptolib/internal/edwards25519.lua @@ -276,6 +276,7 @@ return { add = add, sub = sub, niels = niels, + scale = scale, encode = encode, decode = decode, mulG = mulG, diff --git a/ccryptolib/internal/fq.lua b/ccryptolib/internal/fq.lua index 205a7bc..64693c3 100644 --- a/ccryptolib/internal/fq.lua +++ b/ccryptolib/internal/fq.lua @@ -20,7 +20,7 @@ local ufq = packing.compileUnpack(fmtfq) local ufql, fmtfql = packing.compileUnpack("