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 assert res == 1
proc mulgen*(_: type[Curve25519], dst: var Curve25519Key, scalar: Curve25519Key) = proc mulgen*(_: type[Curve25519], dst: var Curve25519Key, scalar: Curve25519Key) =
while true: block iterate:
let while true:
size = defaultBrEc.mulgen( block derive:
cast[pcuchar](addr dst[0]), let
cast[pcuchar](unsafeAddr scalar[0]), size = defaultBrEc.mulgen(
Curve25519KeySize, cast[pcuchar](addr dst[0]),
EC_curve25519.cint) cast[pcuchar](unsafeAddr scalar[0]),
assert size == Curve25519KeySize Curve25519KeySize,
for forbid in ForbiddenCurveValues: EC_curve25519.cint)
if dst == forbid: assert size == Curve25519KeySize
continue for forbid in ForbiddenCurveValues:
break if dst == forbid:
break derive
break iterate
when isMainModule: when isMainModule:
var var