Fix curve mulgen iterate/derive

This commit is contained in:
Giovanni Petrantoni 2020-02-14 12:16:21 +09:00 committed by Dmitriy Ryajov
parent 8dec368878
commit f47fb628f0
1 changed files with 14 additions and 12 deletions

View File

@ -58,18 +58,20 @@ proc mul*(_: type[Curve25519], dst: var Curve25519Key, scalar: Curve25519Key, po
assert res == 1
proc mulgen*(_: type[Curve25519], dst: var Curve25519Key, scalar: Curve25519Key) =
while true:
let
size = defaultBrEc.mulgen(
cast[pcuchar](addr dst[0]),
cast[pcuchar](unsafeAddr scalar[0]),
Curve25519KeySize,
EC_curve25519.cint)
assert size == Curve25519KeySize
for forbid in ForbiddenCurveValues:
if dst == forbid:
continue
break
block iterate:
while true:
block derive:
let
size = defaultBrEc.mulgen(
cast[pcuchar](addr dst[0]),
cast[pcuchar](unsafeAddr scalar[0]),
Curve25519KeySize,
EC_curve25519.cint)
assert size == Curve25519KeySize
for forbid in ForbiddenCurveValues:
if dst == forbid:
break derive
break iterate
when isMainModule:
var