second-round version of SQIsign
Co-authored-by: Marius A. Aardal <marius.andre.aardal@gmail.com> Co-authored-by: Gora Adj <gora.adj@tii.ae> Co-authored-by: Diego F. Aranha <dfaranha@cs.au.dk> Co-authored-by: Andrea Basso <sqisign@andreabasso.com> Co-authored-by: Isaac Andrés Canales Martínez <icanalesm0500@gmail.com> Co-authored-by: Jorge Chávez-Saab <jorgechavezsaab@gmail.com> Co-authored-by: Maria Corte-Real Santos <mariascrsantos98@gmail.com> Co-authored-by: Luca De Feo <github@defeo.lu> Co-authored-by: Max Duparc <max.duparc@epfl.ch> Co-authored-by: Jonathan Komada Eriksen <jonathan.eriksen97@gmail.com> Co-authored-by: Décio Luiz Gazzoni Filho <decio@decpp.net> Co-authored-by: Basil Hess <bhe@zurich.ibm.com> Co-authored-by: Antonin Leroux <antonin.leroux@polytechnique.org> Co-authored-by: Patrick Longa <plonga@microsoft.com> Co-authored-by: Luciano Maino <mainoluciano.96@gmail.com> Co-authored-by: Michael Meyer <michael@random-oracles.org> Co-authored-by: Hiroshi Onuki <onuki@mist.i.u-tokyo.ac.jp> Co-authored-by: Lorenz Panny <lorenz@yx7.cc> Co-authored-by: Giacomo Pope <giacomopope@gmail.com> Co-authored-by: Krijn Reijnders <reijnderskrijn@gmail.com> Co-authored-by: Damien Robert <damien.robert@inria.fr> Co-authored-by: Francisco Rodríguez-Henriquez <francisco.rodriguez@tii.ae> Co-authored-by: Sina Schaeffler <sschaeffle@student.ethz.ch> Co-authored-by: Benjamin Wesolowski <benjamin.wesolowski@ens-lyon.fr>
This commit is contained in:
committed by
Lorenz Panny
parent
ff34a8cd18
commit
91e9e464fe
38
scripts/precomp/precompute_E0_basis.sage
Executable file
38
scripts/precomp/precompute_E0_basis.sage
Executable file
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env sage
|
||||
proof.all(False) # faster
|
||||
|
||||
################################################################
|
||||
|
||||
from parameters import p, f
|
||||
|
||||
if p % 4 != 3:
|
||||
raise NotImplementedError('requires p ≡ 3 (mod 4)')
|
||||
|
||||
assert (1 << f).divides(p + 1)
|
||||
Fp2.<i> = GF((p,2), modulus=[1,0,1])
|
||||
E0 = EllipticCurve(Fp2, [1, 0])
|
||||
|
||||
from torsion_basis import even_torsion_basis_E0
|
||||
P, Q = even_torsion_basis_E0(E0, f)
|
||||
|
||||
################################################################
|
||||
|
||||
from cformat import FpEl, Object, ObjectFormatter
|
||||
|
||||
def Fp2_to_list(el):
|
||||
return [FpEl(int(c), p, True) for c in Fp2(el)]
|
||||
|
||||
objs = ObjectFormatter([
|
||||
Object('fp2_t', 'BASIS_E0_PX', Fp2_to_list(P.x())),
|
||||
Object('fp2_t', 'BASIS_E0_QX', Fp2_to_list(Q.x())),
|
||||
])
|
||||
|
||||
################################################################
|
||||
|
||||
with open('include/e0_basis.h','w') as hfile:
|
||||
with open('e0_basis.c','w') as cfile:
|
||||
print(f'#include <fp2.h>', file=hfile)
|
||||
print(f'#include <e0_basis.h>', file=cfile)
|
||||
|
||||
objs.header(file=hfile)
|
||||
objs.implementation(file=cfile)
|
||||
Reference in New Issue
Block a user