+2020-11-13 Niels Möller <nisse@lysator.liu.se>
+
+ * ecc-internal.h (ECC_J_TO_A_ITCH): Generalize, and take invert
+ itch as an argument, similarly to ECC_EH_TO_A_ITCH. Updated all
+ secp and gost curve definitions to use it.
+
2020-10-21 Niels Möller <nisse@lysator.liu.se>
* ecc-secp384r1.c (ecc_secp384r1_inv): New function, modular
ECC_DUP_JJ_ITCH (ECC_LIMB_SIZE),
ECC_MUL_A_ITCH (ECC_LIMB_SIZE),
ECC_MUL_G_ITCH (ECC_LIMB_SIZE),
- ECC_J_TO_A_ITCH (ECC_LIMB_SIZE),
+ ECC_J_TO_A_ITCH (ECC_LIMB_SIZE, ECC_MOD_INV_ITCH(ECC_LIMB_SIZE)),
ecc_add_jja,
ecc_add_jjj,
ECC_DUP_JJ_ITCH (ECC_LIMB_SIZE),
ECC_MUL_A_ITCH (ECC_LIMB_SIZE),
ECC_MUL_G_ITCH (ECC_LIMB_SIZE),
- ECC_J_TO_A_ITCH (ECC_LIMB_SIZE),
+ ECC_J_TO_A_ITCH (ECC_LIMB_SIZE, ECC_MOD_INV_ITCH(ECC_LIMB_SIZE)),
ecc_add_jja,
ecc_add_jjj,
/* Current scratch needs: */
#define ECC_MOD_INV_ITCH(size) (2*(size))
-/* Only valid when using the general ecc_mod_inv ! */
-#define ECC_J_TO_A_ITCH(size) (4*(size))
+#define ECC_J_TO_A_ITCH(size, inv) (2*(size)+(inv))
#define ECC_EH_TO_A_ITCH(size, inv) (2*(size)+(inv))
#define ECC_DUP_JJ_ITCH(size) (4*(size))
#define ECC_DUP_EH_ITCH(size) (3*(size))
ECC_DUP_JJ_ITCH (ECC_LIMB_SIZE),
ECC_MUL_A_ITCH (ECC_LIMB_SIZE),
ECC_MUL_G_ITCH (ECC_LIMB_SIZE),
- 2*ECC_LIMB_SIZE + ECC_SECP192R1_INV_ITCH,
+ ECC_J_TO_A_ITCH(ECC_LIMB_SIZE, ECC_SECP192R1_INV_ITCH),
ecc_add_jja,
ecc_add_jjj,
ECC_DUP_JJ_ITCH (ECC_LIMB_SIZE),
ECC_MUL_A_ITCH (ECC_LIMB_SIZE),
ECC_MUL_G_ITCH (ECC_LIMB_SIZE),
- 2*ECC_LIMB_SIZE + ECC_SECP224R1_INV_ITCH,
+ ECC_J_TO_A_ITCH(ECC_LIMB_SIZE, ECC_SECP224R1_INV_ITCH),
ecc_add_jja,
ecc_add_jjj,
ECC_DUP_JJ_ITCH (ECC_LIMB_SIZE),
ECC_MUL_A_ITCH (ECC_LIMB_SIZE),
ECC_MUL_G_ITCH (ECC_LIMB_SIZE),
- 2*ECC_LIMB_SIZE + ECC_SECP256R1_INV_ITCH,
+ ECC_J_TO_A_ITCH(ECC_LIMB_SIZE, ECC_SECP256R1_INV_ITCH),
ecc_add_jja,
ecc_add_jjj,
ECC_DUP_JJ_ITCH (ECC_LIMB_SIZE),
ECC_MUL_A_ITCH (ECC_LIMB_SIZE),
ECC_MUL_G_ITCH (ECC_LIMB_SIZE),
- 2*ECC_LIMB_SIZE + ECC_SECP384R1_INV_ITCH,
+ ECC_J_TO_A_ITCH(ECC_LIMB_SIZE, ECC_SECP384R1_INV_ITCH),
ecc_add_jja,
ecc_add_jjj,
ECC_DUP_JJ_ITCH (ECC_LIMB_SIZE),
ECC_MUL_A_ITCH (ECC_LIMB_SIZE),
ECC_MUL_G_ITCH (ECC_LIMB_SIZE),
- 2*ECC_LIMB_SIZE + ECC_SECP521R1_INV_ITCH,
+ ECC_J_TO_A_ITCH(ECC_LIMB_SIZE, ECC_SECP521R1_INV_ITCH),
ecc_add_jja,
ecc_add_jjj,