Remove Ed25519 exports for now

Old exports used masking which isn't supported anymore.
This commit is contained in:
Miguel Oliveira 2022-03-01 20:34:04 -03:00
parent 03f8835eb2
commit 7fa854c06b
No known key found for this signature in database
GPG key ID: 2C2BE789E1377025

View file

@ -228,67 +228,4 @@ local function mul(P, bits)
return R
end
local function publicKey(sk)
expect(1, sk, "string")
assert(#sk == 32, "secret key length must be 32")
-- FIXME SHA512 isn't constant-time.
local h = sha512.digest(sk):sub(1, 32)
local kBits, xkInvBits = blinding.decodeBlinded(h)
local Y0 = mulG(xkInvBits)
local Y1 = mul(Y0, kBits)
return encode(scale(Y1))
end
local function sign(sk, pk, msg)
expect(1, sk, "string")
assert(#sk == 32, "secret key length must be 32")
expect(2, pk, "string")
assert(#pk == 32, "public key length must be 32")
expect(3, msg, "string")
-- Decode cwords and clamp with a mask.
local h = sha512.digest(sk):sub(1, 32)
local xm, m = fq.maskedDecode(h, random.random(32))
-- Commitment.
local k = fq.decodeWide(random.random(64))
local kBits = fq.bits(k)
local R = mulG(kBits)
-- Challenge.
local rStr = encode(scale(R))
local e = fq.decodeWide(sha512.digest(rStr .. pk .. msg))
-- Response.
local exm = fq.mul(e, xm)
local em = fq.mul(e, m)
local s = fq.add(fq.sub(k, exm), em)
local sStr = fq.encode(s)
return rStr .. sStr
end
local function verify(pk, msg, sig)
expect(1, pk, "string")
assert(#pk == 32, "public key length must be 32")
expect(2, msg, "string")
expect(3, sig, "string")
assert(#sig == 64, "public key length must be 32")
local rStr = sig:sub(1, 32)
local sStr = sig:sub(33)
local Y = decode(pk)
local ev = fq.decodeWide(sha512.digest(rStr .. pk .. msg))
local evBits = fq.bits(ev)
local sBits = util.rebaseLE({sStr:byte(1, -1)}, 256, 2)
local Rv = add(mulG(sBits), mul(Y, evBits))
return encode(scale(Rv)) == rStr
end
return {
publicKey = publicKey,
sign = sign,
verify = verify,
}
error("TODO")