summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/dsa/dsa_ameth.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/dsa/dsa_ameth.c')
-rw-r--r--src/lib/libcrypto/dsa/dsa_ameth.c12
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
133dsa_pub_encode(X509_PUBKEY *pk, const EVP_PKEY *pkey) 133dsa_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);