summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsing <>2020-06-05 17:17:22 +0000
committerjsing <>2020-06-05 17:17:22 +0000
commitfc68871937ae2da84df8afcbc02e35636622e17b (patch)
treec83cb2455a589c5a9e0e13a2365eb46924d16f6f
parente585be4c55b72daa23e61f04e8ffb6de705bfe00 (diff)
downloadopenbsd-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.c22
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 */