summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/ec/ec_ameth.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/ec/ec_ameth.c')
-rw-r--r--src/lib/libcrypto/ec/ec_ameth.c44
1 files changed, 22 insertions, 22 deletions
diff --git a/src/lib/libcrypto/ec/ec_ameth.c b/src/lib/libcrypto/ec/ec_ameth.c
index 0dab68d5fe..8d0cdb733b 100644
--- a/src/lib/libcrypto/ec/ec_ameth.c
+++ b/src/lib/libcrypto/ec/ec_ameth.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ec_ameth.c,v 1.17 2016/10/19 16:49:11 jsing Exp $ */ 1/* $OpenBSD: ec_ameth.c,v 1.18 2017/01/29 17:49:23 beck Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2006. 3 * project 2006.
4 */ 4 */
@@ -74,7 +74,7 @@ eckey_param2type(int *pptype, void **ppval, EC_KEY * ec_key)
74 const EC_GROUP *group; 74 const EC_GROUP *group;
75 int nid; 75 int nid;
76 if (ec_key == NULL || (group = EC_KEY_get0_group(ec_key)) == NULL) { 76 if (ec_key == NULL || (group = EC_KEY_get0_group(ec_key)) == NULL) {
77 ECerr(EC_F_ECKEY_PARAM2TYPE, EC_R_MISSING_PARAMETERS); 77 ECerror(EC_R_MISSING_PARAMETERS);
78 return 0; 78 return 0;
79 } 79 }
80 if (EC_GROUP_get_asn1_flag(group) && 80 if (EC_GROUP_get_asn1_flag(group) &&
@@ -91,7 +91,7 @@ eckey_param2type(int *pptype, void **ppval, EC_KEY * ec_key)
91 pstr->length = i2d_ECParameters(ec_key, &pstr->data); 91 pstr->length = i2d_ECParameters(ec_key, &pstr->data);
92 if (pstr->length <= 0) { 92 if (pstr->length <= 0) {
93 ASN1_STRING_free(pstr); 93 ASN1_STRING_free(pstr);
94 ECerr(EC_F_ECKEY_PARAM2TYPE, ERR_R_EC_LIB); 94 ECerror(ERR_R_EC_LIB);
95 return 0; 95 return 0;
96 } 96 }
97 *ppval = pstr; 97 *ppval = pstr;
@@ -110,7 +110,7 @@ eckey_pub_encode(X509_PUBKEY * pk, const EVP_PKEY * pkey)
110 int penclen; 110 int penclen;
111 111
112 if (!eckey_param2type(&ptype, &pval, ec_key)) { 112 if (!eckey_param2type(&ptype, &pval, ec_key)) {
113 ECerr(EC_F_ECKEY_PUB_ENCODE, ERR_R_EC_LIB); 113 ECerror(ERR_R_EC_LIB);
114 return 0; 114 return 0;
115 } 115 }
116 penclen = i2o_ECPublicKey(ec_key, NULL); 116 penclen = i2o_ECPublicKey(ec_key, NULL);
@@ -148,7 +148,7 @@ eckey_type2param(int ptype, void *pval)
148 pm = pstr->data; 148 pm = pstr->data;
149 pmlen = pstr->length; 149 pmlen = pstr->length;
150 if (!(eckey = d2i_ECParameters(NULL, &pm, pmlen))) { 150 if (!(eckey = d2i_ECParameters(NULL, &pm, pmlen))) {
151 ECerr(EC_F_ECKEY_TYPE2PARAM, EC_R_DECODE_ERROR); 151 ECerror(EC_R_DECODE_ERROR);
152 goto ecerr; 152 goto ecerr;
153 } 153 }
154 } else if (ptype == V_ASN1_OBJECT) { 154 } else if (ptype == V_ASN1_OBJECT) {
@@ -160,7 +160,7 @@ eckey_type2param(int ptype, void *pval)
160 * asn1 OID 160 * asn1 OID
161 */ 161 */
162 if ((eckey = EC_KEY_new()) == NULL) { 162 if ((eckey = EC_KEY_new()) == NULL) {
163 ECerr(EC_F_ECKEY_TYPE2PARAM, ERR_R_MALLOC_FAILURE); 163 ECerror(ERR_R_MALLOC_FAILURE);
164 goto ecerr; 164 goto ecerr;
165 } 165 }
166 group = EC_GROUP_new_by_curve_name(OBJ_obj2nid(poid)); 166 group = EC_GROUP_new_by_curve_name(OBJ_obj2nid(poid));
@@ -171,7 +171,7 @@ eckey_type2param(int ptype, void *pval)
171 goto ecerr; 171 goto ecerr;
172 EC_GROUP_free(group); 172 EC_GROUP_free(group);
173 } else { 173 } else {
174 ECerr(EC_F_ECKEY_TYPE2PARAM, EC_R_DECODE_ERROR); 174 ECerror(EC_R_DECODE_ERROR);
175 goto ecerr; 175 goto ecerr;
176 } 176 }
177 177
@@ -199,12 +199,12 @@ eckey_pub_decode(EVP_PKEY * pkey, X509_PUBKEY * pubkey)
199 eckey = eckey_type2param(ptype, pval); 199 eckey = eckey_type2param(ptype, pval);
200 200
201 if (!eckey) { 201 if (!eckey) {
202 ECerr(EC_F_ECKEY_PUB_DECODE, ERR_R_EC_LIB); 202 ECerror(ERR_R_EC_LIB);
203 return 0; 203 return 0;
204 } 204 }
205 /* We have parameters now set public key */ 205 /* We have parameters now set public key */
206 if (!o2i_ECPublicKey(&eckey, &p, pklen)) { 206 if (!o2i_ECPublicKey(&eckey, &p, pklen)) {
207 ECerr(EC_F_ECKEY_PUB_DECODE, EC_R_DECODE_ERROR); 207 ECerror(EC_R_DECODE_ERROR);
208 goto ecerr; 208 goto ecerr;
209 } 209 }
210 EVP_PKEY_assign_EC_KEY(pkey, eckey); 210 EVP_PKEY_assign_EC_KEY(pkey, eckey);
@@ -251,7 +251,7 @@ eckey_priv_decode(EVP_PKEY * pkey, PKCS8_PRIV_KEY_INFO * p8)
251 251
252 /* We have parameters now set private key */ 252 /* We have parameters now set private key */
253 if (!d2i_ECPrivateKey(&eckey, &p, pklen)) { 253 if (!d2i_ECPrivateKey(&eckey, &p, pklen)) {
254 ECerr(EC_F_ECKEY_PRIV_DECODE, EC_R_DECODE_ERROR); 254 ECerror(EC_R_DECODE_ERROR);
255 goto ecerr; 255 goto ecerr;
256 } 256 }
257 /* calculate public key (if necessary) */ 257 /* calculate public key (if necessary) */
@@ -266,23 +266,23 @@ eckey_priv_decode(EVP_PKEY * pkey, PKCS8_PRIV_KEY_INFO * p8)
266 group = EC_KEY_get0_group(eckey); 266 group = EC_KEY_get0_group(eckey);
267 pub_key = EC_POINT_new(group); 267 pub_key = EC_POINT_new(group);
268 if (pub_key == NULL) { 268 if (pub_key == NULL) {
269 ECerr(EC_F_ECKEY_PRIV_DECODE, ERR_R_EC_LIB); 269 ECerror(ERR_R_EC_LIB);
270 goto ecliberr; 270 goto ecliberr;
271 } 271 }
272 if (!EC_POINT_copy(pub_key, EC_GROUP_get0_generator(group))) { 272 if (!EC_POINT_copy(pub_key, EC_GROUP_get0_generator(group))) {
273 EC_POINT_free(pub_key); 273 EC_POINT_free(pub_key);
274 ECerr(EC_F_ECKEY_PRIV_DECODE, ERR_R_EC_LIB); 274 ECerror(ERR_R_EC_LIB);
275 goto ecliberr; 275 goto ecliberr;
276 } 276 }
277 priv_key = EC_KEY_get0_private_key(eckey); 277 priv_key = EC_KEY_get0_private_key(eckey);
278 if (!EC_POINT_mul(group, pub_key, priv_key, NULL, NULL, NULL)) { 278 if (!EC_POINT_mul(group, pub_key, priv_key, NULL, NULL, NULL)) {
279 EC_POINT_free(pub_key); 279 EC_POINT_free(pub_key);
280 ECerr(EC_F_ECKEY_PRIV_DECODE, ERR_R_EC_LIB); 280 ECerror(ERR_R_EC_LIB);
281 goto ecliberr; 281 goto ecliberr;
282 } 282 }
283 if (EC_KEY_set_public_key(eckey, pub_key) == 0) { 283 if (EC_KEY_set_public_key(eckey, pub_key) == 0) {
284 EC_POINT_free(pub_key); 284 EC_POINT_free(pub_key);
285 ECerr(EC_F_ECKEY_PRIV_DECODE, ERR_R_EC_LIB); 285 ECerror(ERR_R_EC_LIB);
286 goto ecliberr; 286 goto ecliberr;
287 } 287 }
288 EC_POINT_free(pub_key); 288 EC_POINT_free(pub_key);
@@ -291,7 +291,7 @@ eckey_priv_decode(EVP_PKEY * pkey, PKCS8_PRIV_KEY_INFO * p8)
291 return 1; 291 return 1;
292 292
293ecliberr: 293ecliberr:
294 ECerr(EC_F_ECKEY_PRIV_DECODE, ERR_R_EC_LIB); 294 ECerror(ERR_R_EC_LIB);
295ecerr: 295ecerr:
296 if (eckey) 296 if (eckey)
297 EC_KEY_free(eckey); 297 EC_KEY_free(eckey);
@@ -310,7 +310,7 @@ eckey_priv_encode(PKCS8_PRIV_KEY_INFO * p8, const EVP_PKEY * pkey)
310 ec_key = pkey->pkey.ec; 310 ec_key = pkey->pkey.ec;
311 311
312 if (!eckey_param2type(&ptype, &pval, ec_key)) { 312 if (!eckey_param2type(&ptype, &pval, ec_key)) {
313 ECerr(EC_F_ECKEY_PRIV_ENCODE, EC_R_DECODE_ERROR); 313 ECerror(EC_R_DECODE_ERROR);
314 return 0; 314 return 0;
315 } 315 }
316 /* set the private key */ 316 /* set the private key */
@@ -325,20 +325,20 @@ eckey_priv_encode(PKCS8_PRIV_KEY_INFO * p8, const EVP_PKEY * pkey)
325 eplen = i2d_ECPrivateKey(ec_key, NULL); 325 eplen = i2d_ECPrivateKey(ec_key, NULL);
326 if (!eplen) { 326 if (!eplen) {
327 EC_KEY_set_enc_flags(ec_key, old_flags); 327 EC_KEY_set_enc_flags(ec_key, old_flags);
328 ECerr(EC_F_ECKEY_PRIV_ENCODE, ERR_R_EC_LIB); 328 ECerror(ERR_R_EC_LIB);
329 return 0; 329 return 0;
330 } 330 }
331 ep = malloc(eplen); 331 ep = malloc(eplen);
332 if (!ep) { 332 if (!ep) {
333 EC_KEY_set_enc_flags(ec_key, old_flags); 333 EC_KEY_set_enc_flags(ec_key, old_flags);
334 ECerr(EC_F_ECKEY_PRIV_ENCODE, ERR_R_MALLOC_FAILURE); 334 ECerror(ERR_R_MALLOC_FAILURE);
335 return 0; 335 return 0;
336 } 336 }
337 p = ep; 337 p = ep;
338 if (!i2d_ECPrivateKey(ec_key, &p)) { 338 if (!i2d_ECPrivateKey(ec_key, &p)) {
339 EC_KEY_set_enc_flags(ec_key, old_flags); 339 EC_KEY_set_enc_flags(ec_key, old_flags);
340 free(ep); 340 free(ep);
341 ECerr(EC_F_ECKEY_PRIV_ENCODE, ERR_R_EC_LIB); 341 ECerror(ERR_R_EC_LIB);
342 return 0; 342 return 0;
343 } 343 }
344 /* restore old encoding flags */ 344 /* restore old encoding flags */
@@ -483,7 +483,7 @@ do_EC_KEY_print(BIO * bp, const EC_KEY * x, int off, int ktype)
483 ret = 1; 483 ret = 1;
484err: 484err:
485 if (!ret) 485 if (!ret)
486 ECerr(EC_F_DO_EC_KEY_PRINT, reason); 486 ECerror(reason);
487 BN_free(pub_key); 487 BN_free(pub_key);
488 BN_free(order); 488 BN_free(order);
489 BN_CTX_free(ctx); 489 BN_CTX_free(ctx);
@@ -497,7 +497,7 @@ eckey_param_decode(EVP_PKEY * pkey,
497{ 497{
498 EC_KEY *eckey; 498 EC_KEY *eckey;
499 if (!(eckey = d2i_ECParameters(NULL, pder, derlen))) { 499 if (!(eckey = d2i_ECParameters(NULL, pder, derlen))) {
500 ECerr(EC_F_ECKEY_PARAM_DECODE, ERR_R_EC_LIB); 500 ECerror(ERR_R_EC_LIB);
501 return 0; 501 return 0;
502 } 502 }
503 EVP_PKEY_assign_EC_KEY(pkey, eckey); 503 EVP_PKEY_assign_EC_KEY(pkey, eckey);
@@ -538,7 +538,7 @@ old_ec_priv_decode(EVP_PKEY * pkey,
538{ 538{
539 EC_KEY *ec; 539 EC_KEY *ec;
540 if (!(ec = d2i_ECPrivateKey(NULL, pder, derlen))) { 540 if (!(ec = d2i_ECPrivateKey(NULL, pder, derlen))) {
541 ECerr(EC_F_OLD_EC_PRIV_DECODE, EC_R_DECODE_ERROR); 541 ECerror(EC_R_DECODE_ERROR);
542 return 0; 542 return 0;
543 } 543 }
544 EVP_PKEY_assign_EC_KEY(pkey, ec); 544 EVP_PKEY_assign_EC_KEY(pkey, ec);