diff options
Diffstat (limited to 'src/lib/libcrypto/dsa/dsa_ameth.c')
-rw-r--r-- | src/lib/libcrypto/dsa/dsa_ameth.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/lib/libcrypto/dsa/dsa_ameth.c b/src/lib/libcrypto/dsa/dsa_ameth.c index 3c7644d251..5fff2890a2 100644 --- a/src/lib/libcrypto/dsa/dsa_ameth.c +++ b/src/lib/libcrypto/dsa/dsa_ameth.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: dsa_ameth.c,v 1.30 2022/01/07 09:35:36 tb Exp $ */ | 1 | /* $OpenBSD: dsa_ameth.c,v 1.31 2022/01/14 08:29:06 tb 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 | */ |
@@ -133,6 +133,7 @@ static int | |||
133 | dsa_pub_encode(X509_PUBKEY *pk, const EVP_PKEY *pkey) | 133 | dsa_pub_encode(X509_PUBKEY *pk, const EVP_PKEY *pkey) |
134 | { | 134 | { |
135 | DSA *dsa; | 135 | DSA *dsa; |
136 | ASN1_INTEGER *pubint = NULL; | ||
136 | void *pval = NULL; | 137 | void *pval = NULL; |
137 | int ptype; | 138 | int ptype; |
138 | unsigned char *penc = NULL; | 139 | unsigned char *penc = NULL; |
@@ -158,9 +159,14 @@ dsa_pub_encode(X509_PUBKEY *pk, const EVP_PKEY *pkey) | |||
158 | } else | 159 | } else |
159 | ptype = V_ASN1_UNDEF; | 160 | ptype = V_ASN1_UNDEF; |
160 | 161 | ||
161 | dsa->write_params = 0; | ||
162 | 162 | ||
163 | penclen = i2d_DSAPublicKey(dsa, &penc); | 163 | if ((pubint = BN_to_ASN1_INTEGER(dsa->pub_key, NULL)) == NULL) { |
164 | DSAerror(ERR_R_MALLOC_FAILURE); | ||
165 | goto err; | ||
166 | } | ||
167 | |||
168 | penclen = i2d_ASN1_INTEGER(pubint, &penc); | ||
169 | ASN1_INTEGER_free(pubint); | ||
164 | 170 | ||
165 | if (penclen <= 0) { | 171 | if (penclen <= 0) { |
166 | DSAerror(ERR_R_MALLOC_FAILURE); | 172 | DSAerror(ERR_R_MALLOC_FAILURE); |