diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libcrypto/rsa/rsa_ameth.c | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/src/lib/libcrypto/rsa/rsa_ameth.c b/src/lib/libcrypto/rsa/rsa_ameth.c index 737bba7366..46837881ed 100644 --- a/src/lib/libcrypto/rsa/rsa_ameth.c +++ b/src/lib/libcrypto/rsa/rsa_ameth.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: rsa_ameth.c,v 1.31 2023/08/10 09:36:37 tb Exp $ */ | 1 | /* $OpenBSD: rsa_ameth.c,v 1.32 2023/08/10 15:05:28 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 | */ |
| @@ -136,21 +136,28 @@ rsa_param_decode(RSA *rsa, const X509_ALGOR *alg) | |||
| 136 | static int | 136 | static int |
| 137 | rsa_pub_encode(X509_PUBKEY *pk, const EVP_PKEY *pkey) | 137 | rsa_pub_encode(X509_PUBKEY *pk, const EVP_PKEY *pkey) |
| 138 | { | 138 | { |
| 139 | unsigned char *penc = NULL; | 139 | ASN1_STRING *str = NULL; |
| 140 | int penclen; | ||
| 141 | ASN1_STRING *str; | ||
| 142 | int strtype; | 140 | int strtype; |
| 141 | unsigned char *penc = NULL; | ||
| 142 | int penclen = 0; | ||
| 143 | ASN1_OBJECT *aobj; | ||
| 143 | 144 | ||
| 144 | if (!rsa_param_encode(pkey, &str, &strtype)) | 145 | if (!rsa_param_encode(pkey, &str, &strtype)) |
| 145 | return 0; | 146 | goto err; |
| 146 | penclen = i2d_RSAPublicKey(pkey->pkey.rsa, &penc); | 147 | if ((penclen = i2d_RSAPublicKey(pkey->pkey.rsa, &penc)) <= 0) { |
| 147 | if (penclen <= 0) | 148 | penclen = 0; |
| 148 | return 0; | 149 | goto err; |
| 149 | if (X509_PUBKEY_set0_param(pk, OBJ_nid2obj(pkey->ameth->pkey_id), | 150 | } |
| 150 | strtype, str, penc, penclen)) | 151 | if ((aobj = OBJ_nid2obj(pkey->ameth->pkey_id)) == NULL) |
| 151 | return 1; | 152 | goto err; |
| 153 | if (!X509_PUBKEY_set0_param(pk, aobj, strtype, str, penc, penclen)) | ||
| 154 | goto err; | ||
| 152 | 155 | ||
| 153 | free(penc); | 156 | return 1; |
| 157 | |||
| 158 | err: | ||
| 159 | ASN1_STRING_free(str); | ||
| 160 | freezero(penc, penclen); | ||
| 154 | 161 | ||
| 155 | return 0; | 162 | return 0; |
| 156 | } | 163 | } |
