diff options
author | jsing <> | 2020-06-05 17:17:22 +0000 |
---|---|---|
committer | jsing <> | 2020-06-05 17:17:22 +0000 |
commit | fc68871937ae2da84df8afcbc02e35636622e17b (patch) | |
tree | c83cb2455a589c5a9e0e13a2365eb46924d16f6f | |
parent | e585be4c55b72daa23e61f04e8ffb6de705bfe00 (diff) | |
download | openbsd-fc68871937ae2da84df8afcbc02e35636622e17b.tar.gz openbsd-fc68871937ae2da84df8afcbc02e35636622e17b.tar.bz2 openbsd-fc68871937ae2da84df8afcbc02e35636622e17b.zip |
Add a few more errors to help debugging.
Diff from Dmitry Baryshkov <dbaryshkov@gmail.com>
Sponsored by ROSA Linux.
ok inoguchi@ tb@
-rw-r--r-- | src/lib/libcrypto/gost/gostr341001_ameth.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/lib/libcrypto/gost/gostr341001_ameth.c b/src/lib/libcrypto/gost/gostr341001_ameth.c index 16295996dc..27a95f2069 100644 --- a/src/lib/libcrypto/gost/gostr341001_ameth.c +++ b/src/lib/libcrypto/gost/gostr341001_ameth.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: gostr341001_ameth.c,v 1.15 2018/08/24 20:22:15 tb Exp $ */ | 1 | /* $OpenBSD: gostr341001_ameth.c,v 1.16 2020/06/05 17:17:22 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> | 3 | * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> |
4 | * Copyright (c) 2005-2006 Cryptocom LTD | 4 | * Copyright (c) 2005-2006 Cryptocom LTD |
@@ -96,15 +96,19 @@ decode_gost01_algor_params(EVP_PKEY *pkey, const unsigned char **p, int len) | |||
96 | ec = pkey->pkey.gost; | 96 | ec = pkey->pkey.gost; |
97 | if (ec == NULL) { | 97 | if (ec == NULL) { |
98 | ec = GOST_KEY_new(); | 98 | ec = GOST_KEY_new(); |
99 | if (ec == NULL) | 99 | if (ec == NULL) { |
100 | GOSTerror(ERR_R_MALLOC_FAILURE); | ||
100 | return 0; | 101 | return 0; |
102 | } | ||
101 | if (EVP_PKEY_assign_GOST(pkey, ec) == 0) | 103 | if (EVP_PKEY_assign_GOST(pkey, ec) == 0) |
102 | return 0; | 104 | return 0; |
103 | } | 105 | } |
104 | 106 | ||
105 | group = EC_GROUP_new_by_curve_name(param_nid); | 107 | group = EC_GROUP_new_by_curve_name(param_nid); |
106 | if (group == NULL) | 108 | if (group == NULL) { |
109 | GOSTerror(EC_R_EC_GROUP_NEW_BY_NAME_FAILURE); | ||
107 | return 0; | 110 | return 0; |
111 | } | ||
108 | EC_GROUP_set_asn1_flag(group, OPENSSL_EC_NAMED_CURVE); | 112 | EC_GROUP_set_asn1_flag(group, OPENSSL_EC_NAMED_CURVE); |
109 | if (GOST_KEY_set_group(ec, group) == 0) { | 113 | if (GOST_KEY_set_group(ec, group) == 0) { |
110 | EC_GROUP_free(group); | 114 | EC_GROUP_free(group); |
@@ -207,8 +211,10 @@ pub_decode_gost01(EVP_PKEY *pk, X509_PUBKEY *pub) | |||
207 | return 0; | 211 | return 0; |
208 | } | 212 | } |
209 | p = pval->data; | 213 | p = pval->data; |
210 | if (decode_gost01_algor_params(pk, &p, pval->length) == 0) | 214 | if (decode_gost01_algor_params(pk, &p, pval->length) == 0) { |
215 | GOSTerror(GOST_R_BAD_KEY_PARAMETERS_FORMAT); | ||
211 | return 0; | 216 | return 0; |
217 | } | ||
212 | 218 | ||
213 | octet = d2i_ASN1_OCTET_STRING(NULL, &pubkey_buf, pub_len); | 219 | octet = d2i_ASN1_OCTET_STRING(NULL, &pubkey_buf, pub_len); |
214 | if (octet == NULL) { | 220 | if (octet == NULL) { |
@@ -407,8 +413,10 @@ priv_decode_gost01(EVP_PKEY *pk, const PKCS8_PRIV_KEY_INFO *p8inf) | |||
407 | int ptype = V_ASN1_UNDEF; | 413 | int ptype = V_ASN1_UNDEF; |
408 | ASN1_STRING *pval = NULL; | 414 | ASN1_STRING *pval = NULL; |
409 | 415 | ||
410 | if (PKCS8_pkey_get0(&palg_obj, &pkey_buf, &priv_len, &palg, p8inf) == 0) | 416 | if (PKCS8_pkey_get0(&palg_obj, &pkey_buf, &priv_len, &palg, p8inf) == 0) { |
417 | GOSTerror(GOST_R_BAD_KEY_PARAMETERS_FORMAT); | ||
411 | return 0; | 418 | return 0; |
419 | } | ||
412 | (void)EVP_PKEY_assign_GOST(pk, NULL); | 420 | (void)EVP_PKEY_assign_GOST(pk, NULL); |
413 | X509_ALGOR_get0(NULL, &ptype, (const void **)&pval, palg); | 421 | X509_ALGOR_get0(NULL, &ptype, (const void **)&pval, palg); |
414 | if (ptype != V_ASN1_SEQUENCE) { | 422 | if (ptype != V_ASN1_SEQUENCE) { |
@@ -416,8 +424,10 @@ priv_decode_gost01(EVP_PKEY *pk, const PKCS8_PRIV_KEY_INFO *p8inf) | |||
416 | return 0; | 424 | return 0; |
417 | } | 425 | } |
418 | p = pval->data; | 426 | p = pval->data; |
419 | if (decode_gost01_algor_params(pk, &p, pval->length) == 0) | 427 | if (decode_gost01_algor_params(pk, &p, pval->length) == 0) { |
428 | GOSTerror(GOST_R_BAD_KEY_PARAMETERS_FORMAT); | ||
420 | return 0; | 429 | return 0; |
430 | } | ||
421 | p = pkey_buf; | 431 | p = pkey_buf; |
422 | if (V_ASN1_OCTET_STRING == *p) { | 432 | if (V_ASN1_OCTET_STRING == *p) { |
423 | /* New format - Little endian octet string */ | 433 | /* New format - Little endian octet string */ |