Update sage files for new formulae

- formula_secp256k1_gej_double_var
- formula_secp256k1_gej_add_ge
This commit is contained in:
Peter Dettman 2021-12-27 14:02:13 +07:00
parent d64bb5d4f3
commit e848c3799c

View File

@ -8,25 +8,20 @@ load("weierstrass_prover.sage")
def formula_secp256k1_gej_double_var(a): def formula_secp256k1_gej_double_var(a):
"""libsecp256k1's secp256k1_gej_double_var, used by various addition functions""" """libsecp256k1's secp256k1_gej_double_var, used by various addition functions"""
rz = a.Z * a.Y rz = a.Z * a.Y
rz = rz * 2 s = a.Y^2
t1 = a.X^2 l = a.X^2
t1 = t1 * 3 l = l * 3
t2 = t1^2 l = l / 2
t3 = a.Y^2 t = -s
t3 = t3 * 2 t = t * a.X
t4 = t3^2 rx = l^2
t4 = t4 * 2 rx = rx + t
t3 = t3 * a.X rx = rx + t
rx = t3 s = s^2
rx = rx * 4 t = t + rx
rx = -rx ry = t * l
rx = rx + t2 ry = ry + s
t2 = -t2 ry = -ry
t3 = t3 * 6
t3 = t3 + t2
ry = t1 * t3
t2 = -t4
ry = ry + t2
return jacobianpoint(rx, ry, rz) return jacobianpoint(rx, ry, rz)
def formula_secp256k1_gej_add_var(branch, a, b): def formula_secp256k1_gej_add_var(branch, a, b):
@ -197,7 +192,8 @@ def formula_secp256k1_gej_add_ge(branch, a, b):
rr_alt = rr rr_alt = rr
m_alt = m m_alt = m
n = m_alt^2 n = m_alt^2
q = n * t q = -t
q = q * n
n = n^2 n = n^2
if degenerate: if degenerate:
n = m n = m
@ -210,8 +206,6 @@ def formula_secp256k1_gej_add_ge(branch, a, b):
zeroes.update({rz : 'r.z=0'}) zeroes.update({rz : 'r.z=0'})
else: else:
nonzeroes.update({rz : 'r.z!=0'}) nonzeroes.update({rz : 'r.z!=0'})
rz = rz * 2
q = -q
t = t + q t = t + q
rx = t rx = t
t = t * 2 t = t * 2
@ -219,8 +213,7 @@ def formula_secp256k1_gej_add_ge(branch, a, b):
t = t * rr_alt t = t * rr_alt
t = t + n t = t + n
ry = -t ry = -t
rx = rx * 4 ry = ry / 2
ry = ry * 4
if a_infinity: if a_infinity:
rx = b.X rx = b.X
ry = b.Y ry = b.Y