summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/ec
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/ec')
-rw-r--r--src/lib/libcrypto/ec/ec2_smpl.c79
-rw-r--r--src/lib/libcrypto/ec/ec_ameth.c64
-rw-r--r--src/lib/libcrypto/ec/ec_pmeth.c41
-rw-r--r--src/lib/libcrypto/ec/ecp_mont.c82
-rw-r--r--src/lib/libcrypto/ec/ecp_nist.c79
-rw-r--r--src/lib/libcrypto/ec/ecp_nistp224.c84
-rw-r--r--src/lib/libcrypto/ec/ecp_nistp256.c84
-rw-r--r--src/lib/libcrypto/ec/ecp_nistp521.c84
-rw-r--r--src/lib/libcrypto/ec/ecp_smpl.c79
9 files changed, 329 insertions, 347 deletions
diff --git a/src/lib/libcrypto/ec/ec2_smpl.c b/src/lib/libcrypto/ec/ec2_smpl.c
index 0cf681fa9d..5682bfab37 100644
--- a/src/lib/libcrypto/ec/ec2_smpl.c
+++ b/src/lib/libcrypto/ec/ec2_smpl.c
@@ -73,52 +73,51 @@
73 73
74#ifndef OPENSSL_NO_EC2M 74#ifndef OPENSSL_NO_EC2M
75 75
76const EC_METHOD *EC_GF2m_simple_method(void) 76const EC_METHOD *
77 { 77EC_GF2m_simple_method(void)
78{
78 static const EC_METHOD ret = { 79 static const EC_METHOD ret = {
79 EC_FLAGS_DEFAULT_OCT, 80 .flags = EC_FLAGS_DEFAULT_OCT,
80 NID_X9_62_characteristic_two_field, 81 .field_type = NID_X9_62_characteristic_two_field,
81 ec_GF2m_simple_group_init, 82 .group_init = ec_GF2m_simple_group_init,
82 ec_GF2m_simple_group_finish, 83 .group_finish = ec_GF2m_simple_group_finish,
83 ec_GF2m_simple_group_clear_finish, 84 .group_clear_finish = ec_GF2m_simple_group_clear_finish,
84 ec_GF2m_simple_group_copy, 85 .group_copy = ec_GF2m_simple_group_copy,
85 ec_GF2m_simple_group_set_curve, 86 .group_set_curve = ec_GF2m_simple_group_set_curve,
86 ec_GF2m_simple_group_get_curve, 87 .group_get_curve = ec_GF2m_simple_group_get_curve,
87 ec_GF2m_simple_group_get_degree, 88 .group_get_degree = ec_GF2m_simple_group_get_degree,
88 ec_GF2m_simple_group_check_discriminant, 89 .group_check_discriminant =
89 ec_GF2m_simple_point_init, 90 ec_GF2m_simple_group_check_discriminant,
90 ec_GF2m_simple_point_finish, 91 .point_init = ec_GF2m_simple_point_init,
91 ec_GF2m_simple_point_clear_finish, 92 .point_finish = ec_GF2m_simple_point_finish,
92 ec_GF2m_simple_point_copy, 93 .point_clear_finish = ec_GF2m_simple_point_clear_finish,
93 ec_GF2m_simple_point_set_to_infinity, 94 .point_copy = ec_GF2m_simple_point_copy,
94 0 /* set_Jprojective_coordinates_GFp */, 95 .point_set_to_infinity = ec_GF2m_simple_point_set_to_infinity,
95 0 /* get_Jprojective_coordinates_GFp */, 96 .point_set_affine_coordinates =
96 ec_GF2m_simple_point_set_affine_coordinates, 97 ec_GF2m_simple_point_set_affine_coordinates,
97 ec_GF2m_simple_point_get_affine_coordinates, 98 .point_get_affine_coordinates =
98 0,0,0, 99 ec_GF2m_simple_point_get_affine_coordinates,
99 ec_GF2m_simple_add, 100 .add = ec_GF2m_simple_add,
100 ec_GF2m_simple_dbl, 101 .dbl = ec_GF2m_simple_dbl,
101 ec_GF2m_simple_invert, 102 .invert = ec_GF2m_simple_invert,
102 ec_GF2m_simple_is_at_infinity, 103 .is_at_infinity = ec_GF2m_simple_is_at_infinity,
103 ec_GF2m_simple_is_on_curve, 104 .is_on_curve = ec_GF2m_simple_is_on_curve,
104 ec_GF2m_simple_cmp, 105 .point_cmp = ec_GF2m_simple_cmp,
105 ec_GF2m_simple_make_affine, 106 .make_affine = ec_GF2m_simple_make_affine,
106 ec_GF2m_simple_points_make_affine, 107 .points_make_affine = ec_GF2m_simple_points_make_affine,
107 108
108 /* the following three method functions are defined in ec2_mult.c */ 109 /* the following three method functions are defined in ec2_mult.c */
109 ec_GF2m_simple_mul, 110 .mul = ec_GF2m_simple_mul,
110 ec_GF2m_precompute_mult, 111 .precompute_mult = ec_GF2m_precompute_mult,
111 ec_GF2m_have_precompute_mult, 112 .have_precompute_mult = ec_GF2m_have_precompute_mult,
112 113
113 ec_GF2m_simple_field_mul, 114 .field_mul = ec_GF2m_simple_field_mul,
114 ec_GF2m_simple_field_sqr, 115 .field_sqr = ec_GF2m_simple_field_sqr,
115 ec_GF2m_simple_field_div, 116 .field_div = ec_GF2m_simple_field_div,
116 0 /* field_encode */, 117 };
117 0 /* field_decode */,
118 0 /* field_set_to_one */ };
119 118
120 return &ret; 119 return &ret;
121 } 120}
122 121
123 122
124/* Initialize a GF(2^m)-based EC_GROUP structure. 123/* Initialize a GF(2^m)-based EC_GROUP structure.
diff --git a/src/lib/libcrypto/ec/ec_ameth.c b/src/lib/libcrypto/ec/ec_ameth.c
index 79dd11083e..0e6381f543 100644
--- a/src/lib/libcrypto/ec/ec_ameth.c
+++ b/src/lib/libcrypto/ec/ec_ameth.c
@@ -626,36 +626,34 @@ static int ec_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2)
626 626
627 } 627 }
628 628
629const EVP_PKEY_ASN1_METHOD eckey_asn1_meth = 629const EVP_PKEY_ASN1_METHOD eckey_asn1_meth = {
630 { 630 .pkey_id = EVP_PKEY_EC,
631 EVP_PKEY_EC, 631 .pkey_base_id = EVP_PKEY_EC,
632 EVP_PKEY_EC, 632
633 0, 633 .pem_str = "EC",
634 "EC", 634 .info = "OpenSSL EC algorithm",
635 "OpenSSL EC algorithm", 635
636 636 .pub_decode = eckey_pub_decode,
637 eckey_pub_decode, 637 .pub_encode = eckey_pub_encode,
638 eckey_pub_encode, 638 .pub_cmp = eckey_pub_cmp,
639 eckey_pub_cmp, 639 .pub_print = eckey_pub_print,
640 eckey_pub_print, 640
641 641 .priv_decode = eckey_priv_decode,
642 eckey_priv_decode, 642 .priv_encode = eckey_priv_encode,
643 eckey_priv_encode, 643 .priv_print = eckey_priv_print,
644 eckey_priv_print, 644
645 645 .pkey_size = int_ec_size,
646 int_ec_size, 646 .pkey_bits = ec_bits,
647 ec_bits, 647
648 648 .param_decode = eckey_param_decode,
649 eckey_param_decode, 649 .param_encode = eckey_param_encode,
650 eckey_param_encode, 650 .param_missing = ec_missing_parameters,
651 ec_missing_parameters, 651 .param_copy = ec_copy_parameters,
652 ec_copy_parameters, 652 .param_cmp = ec_cmp_parameters,
653 ec_cmp_parameters, 653 .param_print = eckey_param_print,
654 eckey_param_print, 654
655 0, 655 .pkey_free = int_ec_free,
656 656 .pkey_ctrl = ec_pkey_ctrl,
657 int_ec_free, 657 .old_priv_decode = old_ec_priv_decode,
658 ec_pkey_ctrl, 658 .old_priv_encode = old_ec_priv_encode
659 old_ec_priv_decode, 659};
660 old_ec_priv_encode
661 };
diff --git a/src/lib/libcrypto/ec/ec_pmeth.c b/src/lib/libcrypto/ec/ec_pmeth.c
index dfc8ace27b..c970d8c9ca 100644
--- a/src/lib/libcrypto/ec/ec_pmeth.c
+++ b/src/lib/libcrypto/ec/ec_pmeth.c
@@ -304,38 +304,23 @@ static int pkey_ec_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
304 return EC_KEY_generate_key(pkey->pkey.ec); 304 return EC_KEY_generate_key(pkey->pkey.ec);
305 } 305 }
306 306
307const EVP_PKEY_METHOD ec_pkey_meth = 307const EVP_PKEY_METHOD ec_pkey_meth = {
308 { 308 .pkey_id = EVP_PKEY_EC,
309 EVP_PKEY_EC,
310 0,
311 pkey_ec_init,
312 pkey_ec_copy,
313 pkey_ec_cleanup,
314
315 0,
316 pkey_ec_paramgen,
317
318 0,
319 pkey_ec_keygen,
320
321 0,
322 pkey_ec_sign,
323
324 0,
325 pkey_ec_verify,
326 309
327 0,0, 310 .init = pkey_ec_init,
311 .copy = pkey_ec_copy,
312 .cleanup = pkey_ec_cleanup,
328 313
329 0,0,0,0, 314 .paramgen = pkey_ec_paramgen,
330 315
331 0,0, 316 .keygen = pkey_ec_keygen,
332 317
333 0,0, 318 .sign = pkey_ec_sign,
334 319
335 0, 320 .verify = pkey_ec_verify,
336 pkey_ec_derive,
337 321
338 pkey_ec_ctrl, 322 .derive = pkey_ec_derive,
339 pkey_ec_ctrl_str
340 323
341 }; 324 .ctrl = pkey_ec_ctrl,
325 .ctrl_str = pkey_ec_ctrl_str
326};
diff --git a/src/lib/libcrypto/ec/ecp_mont.c b/src/lib/libcrypto/ec/ecp_mont.c
index cee0fee12a..6b5b856344 100644
--- a/src/lib/libcrypto/ec/ecp_mont.c
+++ b/src/lib/libcrypto/ec/ecp_mont.c
@@ -66,49 +66,51 @@
66#include "ec_lcl.h" 66#include "ec_lcl.h"
67 67
68 68
69const EC_METHOD *EC_GFp_mont_method(void) 69const EC_METHOD *
70 { 70EC_GFp_mont_method(void)
71{
71 static const EC_METHOD ret = { 72 static const EC_METHOD ret = {
72 EC_FLAGS_DEFAULT_OCT, 73 .flags = EC_FLAGS_DEFAULT_OCT,
73 NID_X9_62_prime_field, 74 .field_type = NID_X9_62_prime_field,
74 ec_GFp_mont_group_init, 75 .group_init = ec_GFp_mont_group_init,
75 ec_GFp_mont_group_finish, 76 .group_finish = ec_GFp_mont_group_finish,
76 ec_GFp_mont_group_clear_finish, 77 .group_clear_finish = ec_GFp_mont_group_clear_finish,
77 ec_GFp_mont_group_copy, 78 .group_copy = ec_GFp_mont_group_copy,
78 ec_GFp_mont_group_set_curve, 79 .group_set_curve = ec_GFp_mont_group_set_curve,
79 ec_GFp_simple_group_get_curve, 80 .group_get_curve = ec_GFp_simple_group_get_curve,
80 ec_GFp_simple_group_get_degree, 81 .group_get_degree = ec_GFp_simple_group_get_degree,
81 ec_GFp_simple_group_check_discriminant, 82 .group_check_discriminant =
82 ec_GFp_simple_point_init, 83 ec_GFp_simple_group_check_discriminant,
83 ec_GFp_simple_point_finish, 84 .point_init = ec_GFp_simple_point_init,
84 ec_GFp_simple_point_clear_finish, 85 .point_finish = ec_GFp_simple_point_finish,
85 ec_GFp_simple_point_copy, 86 .point_clear_finish = ec_GFp_simple_point_clear_finish,
86 ec_GFp_simple_point_set_to_infinity, 87 .point_copy = ec_GFp_simple_point_copy,
87 ec_GFp_simple_set_Jprojective_coordinates_GFp, 88 .point_set_to_infinity = ec_GFp_simple_point_set_to_infinity,
88 ec_GFp_simple_get_Jprojective_coordinates_GFp, 89 .point_set_Jprojective_coordinates_GFp =
89 ec_GFp_simple_point_set_affine_coordinates, 90 ec_GFp_simple_set_Jprojective_coordinates_GFp,
90 ec_GFp_simple_point_get_affine_coordinates, 91 .point_get_Jprojective_coordinates_GFp =
91 0,0,0, 92 ec_GFp_simple_get_Jprojective_coordinates_GFp,
92 ec_GFp_simple_add, 93 .point_set_affine_coordinates =
93 ec_GFp_simple_dbl, 94 ec_GFp_simple_point_set_affine_coordinates,
94 ec_GFp_simple_invert, 95 .point_get_affine_coordinates =
95 ec_GFp_simple_is_at_infinity, 96 ec_GFp_simple_point_get_affine_coordinates,
96 ec_GFp_simple_is_on_curve, 97 .add = ec_GFp_simple_add,
97 ec_GFp_simple_cmp, 98 .dbl = ec_GFp_simple_dbl,
98 ec_GFp_simple_make_affine, 99 .invert = ec_GFp_simple_invert,
99 ec_GFp_simple_points_make_affine, 100 .is_at_infinity = ec_GFp_simple_is_at_infinity,
100 0 /* mul */, 101 .is_on_curve = ec_GFp_simple_is_on_curve,
101 0 /* precompute_mult */, 102 .point_cmp = ec_GFp_simple_cmp,
102 0 /* have_precompute_mult */, 103 .make_affine = ec_GFp_simple_make_affine,
103 ec_GFp_mont_field_mul, 104 .points_make_affine = ec_GFp_simple_points_make_affine,
104 ec_GFp_mont_field_sqr, 105 .field_mul = ec_GFp_mont_field_mul,
105 0 /* field_div */, 106 .field_sqr = ec_GFp_mont_field_sqr,
106 ec_GFp_mont_field_encode, 107 .field_encode = ec_GFp_mont_field_encode,
107 ec_GFp_mont_field_decode, 108 .field_decode = ec_GFp_mont_field_decode,
108 ec_GFp_mont_field_set_to_one }; 109 .field_set_to_one = ec_GFp_mont_field_set_to_one
110 };
109 111
110 return &ret; 112 return &ret;
111 } 113}
112 114
113 115
114int ec_GFp_mont_group_init(EC_GROUP *group) 116int ec_GFp_mont_group_init(EC_GROUP *group)
diff --git a/src/lib/libcrypto/ec/ecp_nist.c b/src/lib/libcrypto/ec/ecp_nist.c
index ac5b814238..479cff8fc9 100644
--- a/src/lib/libcrypto/ec/ecp_nist.c
+++ b/src/lib/libcrypto/ec/ecp_nist.c
@@ -67,49 +67,48 @@
67#include <openssl/obj_mac.h> 67#include <openssl/obj_mac.h>
68#include "ec_lcl.h" 68#include "ec_lcl.h"
69 69
70const EC_METHOD *EC_GFp_nist_method(void) 70const EC_METHOD *
71 { 71EC_GFp_nist_method(void)
72{
72 static const EC_METHOD ret = { 73 static const EC_METHOD ret = {
73 EC_FLAGS_DEFAULT_OCT, 74 .flags = EC_FLAGS_DEFAULT_OCT,
74 NID_X9_62_prime_field, 75 .field_type = NID_X9_62_prime_field,
75 ec_GFp_simple_group_init, 76 .group_init = ec_GFp_simple_group_init,
76 ec_GFp_simple_group_finish, 77 .group_finish = ec_GFp_simple_group_finish,
77 ec_GFp_simple_group_clear_finish, 78 .group_clear_finish = ec_GFp_simple_group_clear_finish,
78 ec_GFp_nist_group_copy, 79 .group_copy = ec_GFp_nist_group_copy,
79 ec_GFp_nist_group_set_curve, 80 .group_set_curve = ec_GFp_nist_group_set_curve,
80 ec_GFp_simple_group_get_curve, 81 .group_get_curve = ec_GFp_simple_group_get_curve,
81 ec_GFp_simple_group_get_degree, 82 .group_get_degree = ec_GFp_simple_group_get_degree,
82 ec_GFp_simple_group_check_discriminant, 83 .group_check_discriminant =
83 ec_GFp_simple_point_init, 84 ec_GFp_simple_group_check_discriminant,
84 ec_GFp_simple_point_finish, 85 .point_init = ec_GFp_simple_point_init,
85 ec_GFp_simple_point_clear_finish, 86 .point_finish = ec_GFp_simple_point_finish,
86 ec_GFp_simple_point_copy, 87 .point_clear_finish = ec_GFp_simple_point_clear_finish,
87 ec_GFp_simple_point_set_to_infinity, 88 .point_copy = ec_GFp_simple_point_copy,
88 ec_GFp_simple_set_Jprojective_coordinates_GFp, 89 .point_set_to_infinity = ec_GFp_simple_point_set_to_infinity,
89 ec_GFp_simple_get_Jprojective_coordinates_GFp, 90 .point_set_Jprojective_coordinates_GFp =
90 ec_GFp_simple_point_set_affine_coordinates, 91 ec_GFp_simple_set_Jprojective_coordinates_GFp,
91 ec_GFp_simple_point_get_affine_coordinates, 92 .point_get_Jprojective_coordinates_GFp =
92 0,0,0, 93 ec_GFp_simple_get_Jprojective_coordinates_GFp,
93 ec_GFp_simple_add, 94 .point_set_affine_coordinates =
94 ec_GFp_simple_dbl, 95 ec_GFp_simple_point_set_affine_coordinates,
95 ec_GFp_simple_invert, 96 .point_get_affine_coordinates =
96 ec_GFp_simple_is_at_infinity, 97 ec_GFp_simple_point_get_affine_coordinates,
97 ec_GFp_simple_is_on_curve, 98 .add = ec_GFp_simple_add,
98 ec_GFp_simple_cmp, 99 .dbl = ec_GFp_simple_dbl,
99 ec_GFp_simple_make_affine, 100 .invert = ec_GFp_simple_invert,
100 ec_GFp_simple_points_make_affine, 101 .is_at_infinity = ec_GFp_simple_is_at_infinity,
101 0 /* mul */, 102 .is_on_curve = ec_GFp_simple_is_on_curve,
102 0 /* precompute_mult */, 103 .point_cmp = ec_GFp_simple_cmp,
103 0 /* have_precompute_mult */, 104 .make_affine = ec_GFp_simple_make_affine,
104 ec_GFp_nist_field_mul, 105 .points_make_affine = ec_GFp_simple_points_make_affine,
105 ec_GFp_nist_field_sqr, 106 .field_mul = ec_GFp_nist_field_mul,
106 0 /* field_div */, 107 .field_sqr = ec_GFp_nist_field_sqr
107 0 /* field_encode */, 108 };
108 0 /* field_decode */,
109 0 /* field_set_to_one */ };
110 109
111 return &ret; 110 return &ret;
112 } 111}
113 112
114int ec_GFp_nist_group_copy(EC_GROUP *dest, const EC_GROUP *src) 113int ec_GFp_nist_group_copy(EC_GROUP *dest, const EC_GROUP *src)
115 { 114 {
diff --git a/src/lib/libcrypto/ec/ecp_nistp224.c b/src/lib/libcrypto/ec/ecp_nistp224.c
index 03f2d9c1d7..696024a549 100644
--- a/src/lib/libcrypto/ec/ecp_nistp224.c
+++ b/src/lib/libcrypto/ec/ecp_nistp224.c
@@ -233,51 +233,51 @@ typedef struct {
233 int references; 233 int references;
234} NISTP224_PRE_COMP; 234} NISTP224_PRE_COMP;
235 235
236const EC_METHOD *EC_GFp_nistp224_method(void) 236const EC_METHOD *
237 { 237EC_GFp_nistp224_method(void)
238{
238 static const EC_METHOD ret = { 239 static const EC_METHOD ret = {
239 EC_FLAGS_DEFAULT_OCT, 240 .flags = EC_FLAGS_DEFAULT_OCT,
240 NID_X9_62_prime_field, 241 .field_type = NID_X9_62_prime_field,
241 ec_GFp_nistp224_group_init, 242 .group_init = ec_GFp_nistp224_group_init,
242 ec_GFp_simple_group_finish, 243 .group_finish = ec_GFp_simple_group_finish,
243 ec_GFp_simple_group_clear_finish, 244 .group_clear_finish = ec_GFp_simple_group_clear_finish,
244 ec_GFp_nist_group_copy, 245 .group_copy = ec_GFp_nist_group_copy,
245 ec_GFp_nistp224_group_set_curve, 246 .group_set_curve = ec_GFp_nistp224_group_set_curve,
246 ec_GFp_simple_group_get_curve, 247 .group_get_curve = ec_GFp_simple_group_get_curve,
247 ec_GFp_simple_group_get_degree, 248 .group_get_degree = ec_GFp_simple_group_get_degree,
248 ec_GFp_simple_group_check_discriminant, 249 .group_check_discriminant =
249 ec_GFp_simple_point_init, 250 ec_GFp_simple_group_check_discriminant,
250 ec_GFp_simple_point_finish, 251 .point_init = ec_GFp_simple_point_init,
251 ec_GFp_simple_point_clear_finish, 252 .point_finish = ec_GFp_simple_point_finish,
252 ec_GFp_simple_point_copy, 253 .point_clear_finish = ec_GFp_simple_point_clear_finish,
253 ec_GFp_simple_point_set_to_infinity, 254 .point_copy = ec_GFp_simple_point_copy,
254 ec_GFp_simple_set_Jprojective_coordinates_GFp, 255 .point_set_to_infinity = ec_GFp_simple_point_set_to_infinity,
255 ec_GFp_simple_get_Jprojective_coordinates_GFp, 256 .point_set_Jprojective_coordinates_GFp =
256 ec_GFp_simple_point_set_affine_coordinates, 257 ec_GFp_simple_set_Jprojective_coordinates_GFp,
257 ec_GFp_nistp224_point_get_affine_coordinates, 258 .point_get_Jprojective_coordinates_GFp =
258 0 /* point_set_compressed_coordinates */, 259 ec_GFp_simple_get_Jprojective_coordinates_GFp,
259 0 /* point2oct */, 260 .point_set_affine_coordinates =
260 0 /* oct2point */, 261 ec_GFp_simple_point_set_affine_coordinates,
261 ec_GFp_simple_add, 262 .point_get_affine_coordinates =
262 ec_GFp_simple_dbl, 263 ec_GFp_nistp224_point_get_affine_coordinates,
263 ec_GFp_simple_invert, 264 .add = ec_GFp_simple_add,
264 ec_GFp_simple_is_at_infinity, 265 .dbl = ec_GFp_simple_dbl,
265 ec_GFp_simple_is_on_curve, 266 .invert = ec_GFp_simple_invert,
266 ec_GFp_simple_cmp, 267 .is_at_infinity = ec_GFp_simple_is_at_infinity,
267 ec_GFp_simple_make_affine, 268 .is_on_curve = ec_GFp_simple_is_on_curve,
268 ec_GFp_simple_points_make_affine, 269 .point_cmp = ec_GFp_simple_cmp,
269 ec_GFp_nistp224_points_mul, 270 .make_affine = ec_GFp_simple_make_affine,
270 ec_GFp_nistp224_precompute_mult, 271 .points_make_affine = ec_GFp_simple_points_make_affine,
271 ec_GFp_nistp224_have_precompute_mult, 272 .mul = ec_GFp_nistp224_points_mul,
272 ec_GFp_nist_field_mul, 273 .precompute_mult = ec_GFp_nistp224_precompute_mult,
273 ec_GFp_nist_field_sqr, 274 .have_precompute_mult = ec_GFp_nistp224_have_precompute_mult,
274 0 /* field_div */, 275 .field_mul = ec_GFp_nist_field_mul,
275 0 /* field_encode */, 276 .field_sqr = ec_GFp_nist_field_sqr
276 0 /* field_decode */, 277 };
277 0 /* field_set_to_one */ };
278 278
279 return &ret; 279 return &ret;
280 } 280}
281 281
282/* Helper functions to convert field elements to/from internal representation */ 282/* Helper functions to convert field elements to/from internal representation */
283static void bin28_to_felem(felem out, const u8 in[28]) 283static void bin28_to_felem(felem out, const u8 in[28])
diff --git a/src/lib/libcrypto/ec/ecp_nistp256.c b/src/lib/libcrypto/ec/ecp_nistp256.c
index 947fb7eee0..132ca0d250 100644
--- a/src/lib/libcrypto/ec/ecp_nistp256.c
+++ b/src/lib/libcrypto/ec/ecp_nistp256.c
@@ -1613,51 +1613,51 @@ typedef struct {
1613 int references; 1613 int references;
1614} NISTP256_PRE_COMP; 1614} NISTP256_PRE_COMP;
1615 1615
1616const EC_METHOD *EC_GFp_nistp256_method(void) 1616const EC_METHOD *
1617 { 1617EC_GFp_nistp256_method(void)
1618{
1618 static const EC_METHOD ret = { 1619 static const EC_METHOD ret = {
1619 EC_FLAGS_DEFAULT_OCT, 1620 .flags = EC_FLAGS_DEFAULT_OCT,
1620 NID_X9_62_prime_field, 1621 .field_type = NID_X9_62_prime_field,
1621 ec_GFp_nistp256_group_init, 1622 .group_init = ec_GFp_nistp256_group_init,
1622 ec_GFp_simple_group_finish, 1623 .group_finish = ec_GFp_simple_group_finish,
1623 ec_GFp_simple_group_clear_finish, 1624 .group_clear_finish = ec_GFp_simple_group_clear_finish,
1624 ec_GFp_nist_group_copy, 1625 .group_copy = ec_GFp_nist_group_copy,
1625 ec_GFp_nistp256_group_set_curve, 1626 .group_set_curve = ec_GFp_nistp256_group_set_curve,
1626 ec_GFp_simple_group_get_curve, 1627 .group_get_curve = ec_GFp_simple_group_get_curve,
1627 ec_GFp_simple_group_get_degree, 1628 .group_get_degree = ec_GFp_simple_group_get_degree,
1628 ec_GFp_simple_group_check_discriminant, 1629 .group_check_discriminant =
1629 ec_GFp_simple_point_init, 1630 ec_GFp_simple_group_check_discriminant,
1630 ec_GFp_simple_point_finish, 1631 .point_init = ec_GFp_simple_point_init,
1631 ec_GFp_simple_point_clear_finish, 1632 .point_finish = ec_GFp_simple_point_finish,
1632 ec_GFp_simple_point_copy, 1633 .point_clear_finish = ec_GFp_simple_point_clear_finish,
1633 ec_GFp_simple_point_set_to_infinity, 1634 .point_copy = ec_GFp_simple_point_copy,
1634 ec_GFp_simple_set_Jprojective_coordinates_GFp, 1635 .point_set_to_infinity = ec_GFp_simple_point_set_to_infinity,
1635 ec_GFp_simple_get_Jprojective_coordinates_GFp, 1636 .point_set_Jprojective_coordinates_GFp =
1636 ec_GFp_simple_point_set_affine_coordinates, 1637 ec_GFp_simple_set_Jprojective_coordinates_GFp,
1637 ec_GFp_nistp256_point_get_affine_coordinates, 1638 .point_get_Jprojective_coordinates_GFp =
1638 0 /* point_set_compressed_coordinates */, 1639 ec_GFp_simple_get_Jprojective_coordinates_GFp,
1639 0 /* point2oct */, 1640 .point_set_affine_coordinates =
1640 0 /* oct2point */, 1641 ec_GFp_simple_point_set_affine_coordinates,
1641 ec_GFp_simple_add, 1642 .point_get_affine_coordinates =
1642 ec_GFp_simple_dbl, 1643 ec_GFp_nistp256_point_get_affine_coordinates,
1643 ec_GFp_simple_invert, 1644 .add = ec_GFp_simple_add,
1644 ec_GFp_simple_is_at_infinity, 1645 .dbl = ec_GFp_simple_dbl,
1645 ec_GFp_simple_is_on_curve, 1646 .invert = ec_GFp_simple_invert,
1646 ec_GFp_simple_cmp, 1647 .is_at_infinity = ec_GFp_simple_is_at_infinity,
1647 ec_GFp_simple_make_affine, 1648 .is_on_curve = ec_GFp_simple_is_on_curve,
1648 ec_GFp_simple_points_make_affine, 1649 .point_cmp = ec_GFp_simple_cmp,
1649 ec_GFp_nistp256_points_mul, 1650 .make_affine = ec_GFp_simple_make_affine,
1650 ec_GFp_nistp256_precompute_mult, 1651 .points_make_affine = ec_GFp_simple_points_make_affine,
1651 ec_GFp_nistp256_have_precompute_mult, 1652 .mul = ec_GFp_nistp256_points_mul,
1652 ec_GFp_nist_field_mul, 1653 .precompute_mult = ec_GFp_nistp256_precompute_mult,
1653 ec_GFp_nist_field_sqr, 1654 .have_precompute_mult = ec_GFp_nistp256_have_precompute_mult,
1654 0 /* field_div */, 1655 .field_mul = ec_GFp_nist_field_mul,
1655 0 /* field_encode */, 1656 .field_sqr = ec_GFp_nist_field_sqr
1656 0 /* field_decode */, 1657 };
1657 0 /* field_set_to_one */ };
1658 1658
1659 return &ret; 1659 return &ret;
1660 } 1660}
1661 1661
1662/******************************************************************************/ 1662/******************************************************************************/
1663/* FUNCTIONS TO MANAGE PRECOMPUTATION 1663/* FUNCTIONS TO MANAGE PRECOMPUTATION
diff --git a/src/lib/libcrypto/ec/ecp_nistp521.c b/src/lib/libcrypto/ec/ecp_nistp521.c
index 24eb032951..c34c38b7e8 100644
--- a/src/lib/libcrypto/ec/ecp_nistp521.c
+++ b/src/lib/libcrypto/ec/ecp_nistp521.c
@@ -1479,51 +1479,51 @@ typedef struct {
1479 int references; 1479 int references;
1480} NISTP521_PRE_COMP; 1480} NISTP521_PRE_COMP;
1481 1481
1482const EC_METHOD *EC_GFp_nistp521_method(void) 1482const EC_METHOD *
1483 { 1483EC_GFp_nistp521_method(void)
1484{
1484 static const EC_METHOD ret = { 1485 static const EC_METHOD ret = {
1485 EC_FLAGS_DEFAULT_OCT, 1486 .flags = EC_FLAGS_DEFAULT_OCT,
1486 NID_X9_62_prime_field, 1487 .field_type = NID_X9_62_prime_field,
1487 ec_GFp_nistp521_group_init, 1488 .group_init = ec_GFp_nistp521_group_init,
1488 ec_GFp_simple_group_finish, 1489 .group_finish = ec_GFp_simple_group_finish,
1489 ec_GFp_simple_group_clear_finish, 1490 .group_clear_finish = ec_GFp_simple_group_clear_finish,
1490 ec_GFp_nist_group_copy, 1491 .group_copy = ec_GFp_nist_group_copy,
1491 ec_GFp_nistp521_group_set_curve, 1492 .group_set_curve = ec_GFp_nistp521_group_set_curve,
1492 ec_GFp_simple_group_get_curve, 1493 .group_get_curve = ec_GFp_simple_group_get_curve,
1493 ec_GFp_simple_group_get_degree, 1494 .group_get_degree = ec_GFp_simple_group_get_degree,
1494 ec_GFp_simple_group_check_discriminant, 1495 .group_check_discriminant =
1495 ec_GFp_simple_point_init, 1496 ec_GFp_simple_group_check_discriminant,
1496 ec_GFp_simple_point_finish, 1497 .point_init = ec_GFp_simple_point_init,
1497 ec_GFp_simple_point_clear_finish, 1498 .point_finish = ec_GFp_simple_point_finish,
1498 ec_GFp_simple_point_copy, 1499 .point_clear_finish = ec_GFp_simple_point_clear_finish,
1499 ec_GFp_simple_point_set_to_infinity, 1500 .point_copy = ec_GFp_simple_point_copy,
1500 ec_GFp_simple_set_Jprojective_coordinates_GFp, 1501 .point_set_to_infinity = ec_GFp_simple_point_set_to_infinity,
1501 ec_GFp_simple_get_Jprojective_coordinates_GFp, 1502 .point_set_Jprojective_coordinates_GFp =
1502 ec_GFp_simple_point_set_affine_coordinates, 1503 ec_GFp_simple_set_Jprojective_coordinates_GFp,
1503 ec_GFp_nistp521_point_get_affine_coordinates, 1504 .point_get_Jprojective_coordinates_GFp =
1504 0 /* point_set_compressed_coordinates */, 1505 ec_GFp_simple_get_Jprojective_coordinates_GFp,
1505 0 /* point2oct */, 1506 .point_set_affine_coordinates =
1506 0 /* oct2point */, 1507 ec_GFp_simple_point_set_affine_coordinates,
1507 ec_GFp_simple_add, 1508 .point_get_affine_coordinates =
1508 ec_GFp_simple_dbl, 1509 ec_GFp_nistp521_point_get_affine_coordinates,
1509 ec_GFp_simple_invert, 1510 .add = ec_GFp_simple_add,
1510 ec_GFp_simple_is_at_infinity, 1511 .dbl = ec_GFp_simple_dbl,
1511 ec_GFp_simple_is_on_curve, 1512 .invert = ec_GFp_simple_invert,
1512 ec_GFp_simple_cmp, 1513 .is_at_infinity = ec_GFp_simple_is_at_infinity,
1513 ec_GFp_simple_make_affine, 1514 .is_on_curve = ec_GFp_simple_is_on_curve,
1514 ec_GFp_simple_points_make_affine, 1515 .point_cmp = ec_GFp_simple_cmp,
1515 ec_GFp_nistp521_points_mul, 1516 .make_affine = ec_GFp_simple_make_affine,
1516 ec_GFp_nistp521_precompute_mult, 1517 .points_make_affine = ec_GFp_simple_points_make_affine,
1517 ec_GFp_nistp521_have_precompute_mult, 1518 .mul = ec_GFp_nistp521_points_mul,
1518 ec_GFp_nist_field_mul, 1519 .precompute_mult = ec_GFp_nistp521_precompute_mult,
1519 ec_GFp_nist_field_sqr, 1520 .have_precompulte_mult = ec_GFp_nistp521_have_precompute_mult,
1520 0 /* field_div */, 1521 .field_mul = ec_GFp_nist_field_mul,
1521 0 /* field_encode */, 1522 .field_sqr = ec_GFp_nist_field_sqr
1522 0 /* field_decode */, 1523 };
1523 0 /* field_set_to_one */ };
1524 1524
1525 return &ret; 1525 return &ret;
1526 } 1526}
1527 1527
1528 1528
1529/******************************************************************************/ 1529/******************************************************************************/
diff --git a/src/lib/libcrypto/ec/ecp_smpl.c b/src/lib/libcrypto/ec/ecp_smpl.c
index a146752817..c99348f08f 100644
--- a/src/lib/libcrypto/ec/ecp_smpl.c
+++ b/src/lib/libcrypto/ec/ecp_smpl.c
@@ -66,49 +66,48 @@
66 66
67#include "ec_lcl.h" 67#include "ec_lcl.h"
68 68
69const EC_METHOD *EC_GFp_simple_method(void) 69const EC_METHOD *
70 { 70EC_GFp_simple_method(void)
71{
71 static const EC_METHOD ret = { 72 static const EC_METHOD ret = {
72 EC_FLAGS_DEFAULT_OCT, 73 .flags = EC_FLAGS_DEFAULT_OCT,
73 NID_X9_62_prime_field, 74 .field_type = NID_X9_62_prime_field,
74 ec_GFp_simple_group_init, 75 .group_init = ec_GFp_simple_group_init,
75 ec_GFp_simple_group_finish, 76 .group_finish = ec_GFp_simple_group_finish,
76 ec_GFp_simple_group_clear_finish, 77 .group_clear_finish = ec_GFp_simple_group_clear_finish,
77 ec_GFp_simple_group_copy, 78 .group_copy = ec_GFp_simple_group_copy,
78 ec_GFp_simple_group_set_curve, 79 .group_set_curve = ec_GFp_simple_group_set_curve,
79 ec_GFp_simple_group_get_curve, 80 .group_get_curve = ec_GFp_simple_group_get_curve,
80 ec_GFp_simple_group_get_degree, 81 .group_get_degree = ec_GFp_simple_group_get_degree,
81 ec_GFp_simple_group_check_discriminant, 82 .group_check_discriminant =
82 ec_GFp_simple_point_init, 83 ec_GFp_simple_group_check_discriminant,
83 ec_GFp_simple_point_finish, 84 .point_init = ec_GFp_simple_point_init,
84 ec_GFp_simple_point_clear_finish, 85 .point_finish = ec_GFp_simple_point_finish,
85 ec_GFp_simple_point_copy, 86 .point_clear_finish = ec_GFp_simple_point_clear_finish,
86 ec_GFp_simple_point_set_to_infinity, 87 .point_copy = ec_GFp_simple_point_copy,
87 ec_GFp_simple_set_Jprojective_coordinates_GFp, 88 .point_set_to_infinity = ec_GFp_simple_point_set_to_infinity,
88 ec_GFp_simple_get_Jprojective_coordinates_GFp, 89 .point_set_Jprojective_coordinates_GFp =
89 ec_GFp_simple_point_set_affine_coordinates, 90 ec_GFp_simple_set_Jprojective_coordinates_GFp,
90 ec_GFp_simple_point_get_affine_coordinates, 91 .point_get_Jprojective_coordinates_GFp =
91 0,0,0, 92 ec_GFp_simple_get_Jprojective_coordinates_GFp,
92 ec_GFp_simple_add, 93 .point_set_affine_coordinates =
93 ec_GFp_simple_dbl, 94 ec_GFp_simple_point_set_affine_coordinates,
94 ec_GFp_simple_invert, 95 .point_get_affine_coordinates =
95 ec_GFp_simple_is_at_infinity, 96 ec_GFp_simple_point_get_affine_coordinates,
96 ec_GFp_simple_is_on_curve, 97 .add = ec_GFp_simple_add,
97 ec_GFp_simple_cmp, 98 .dbl = ec_GFp_simple_dbl,
98 ec_GFp_simple_make_affine, 99 .invert = ec_GFp_simple_invert,
99 ec_GFp_simple_points_make_affine, 100 .is_at_infinity = ec_GFp_simple_is_at_infinity,
100 0 /* mul */, 101 .is_on_curve = ec_GFp_simple_is_on_curve,
101 0 /* precompute_mult */, 102 .point_cmp = ec_GFp_simple_cmp,
102 0 /* have_precompute_mult */, 103 .make_affine = ec_GFp_simple_make_affine,
103 ec_GFp_simple_field_mul, 104 .points_make_affine = ec_GFp_simple_points_make_affine,
104 ec_GFp_simple_field_sqr, 105 .field_mul = ec_GFp_simple_field_mul,
105 0 /* field_div */, 106 .field_sqr = ec_GFp_simple_field_sqr
106 0 /* field_encode */, 107 };
107 0 /* field_decode */,
108 0 /* field_set_to_one */ };
109 108
110 return &ret; 109 return &ret;
111 } 110}
112 111
113 112
114/* Most method functions in this file are designed to work with 113/* Most method functions in this file are designed to work with