ecc: Add Curve448.
* cipher/ecc-curves.c (curve_aliases): Add Curve448. (domain_parms): Add domain parameter for Curve448. * cipher/ecc-ecdh.c (_gcry_ecc_mul_point): Support Curve448. * mpi/ec.c (ec_addm_448, ec_subm_448, ec_mulm_448): New. (ec_mul2_448, ec_pow2_448): New. (field_table): Add field specific routines for Curve448. (curve25519_bad_points): It's constants. (curve448_bad_points): New. (bad_points_table): New. (ec_p_init): Initialize by bad_points_table. * tests/Makefile.am (t-cv448): New. * tests/t-cv448.c: New. * tests/curves.c (N_CURVES): Increment.
This change is to add "Curve448". In libgcrypt and GnuPG, we have an
interface with a curve name, which was introduced before X25519/X448
function.
While OID 1.3.101.111 is for X448 function on the curve, we use it
to refer the curve itself.
- Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>