sync code with last fixes and improvements from OpenBSD
This commit is contained in:
parent
371ae113c6
commit
454dab66ed
95 changed files with 1784 additions and 2042 deletions
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: rsa_ameth.c,v 1.30 2023/07/07 06:59:18 tb Exp $ */
|
||||
/* $OpenBSD: rsa_ameth.c,v 1.32 2023/08/10 15:05:28 tb Exp $ */
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 2006.
|
||||
*/
|
||||
|
@ -136,21 +136,28 @@ rsa_param_decode(RSA *rsa, const X509_ALGOR *alg)
|
|||
static int
|
||||
rsa_pub_encode(X509_PUBKEY *pk, const EVP_PKEY *pkey)
|
||||
{
|
||||
unsigned char *penc = NULL;
|
||||
int penclen;
|
||||
ASN1_STRING *str;
|
||||
ASN1_STRING *str = NULL;
|
||||
int strtype;
|
||||
unsigned char *penc = NULL;
|
||||
int penclen = 0;
|
||||
ASN1_OBJECT *aobj;
|
||||
|
||||
if (!rsa_param_encode(pkey, &str, &strtype))
|
||||
return 0;
|
||||
penclen = i2d_RSAPublicKey(pkey->pkey.rsa, &penc);
|
||||
if (penclen <= 0)
|
||||
return 0;
|
||||
if (X509_PUBKEY_set0_param(pk, OBJ_nid2obj(pkey->ameth->pkey_id),
|
||||
strtype, str, penc, penclen))
|
||||
return 1;
|
||||
goto err;
|
||||
if ((penclen = i2d_RSAPublicKey(pkey->pkey.rsa, &penc)) <= 0) {
|
||||
penclen = 0;
|
||||
goto err;
|
||||
}
|
||||
if ((aobj = OBJ_nid2obj(pkey->ameth->pkey_id)) == NULL)
|
||||
goto err;
|
||||
if (!X509_PUBKEY_set0_param(pk, aobj, strtype, str, penc, penclen))
|
||||
goto err;
|
||||
|
||||
free(penc);
|
||||
return 1;
|
||||
|
||||
err:
|
||||
ASN1_STRING_free(str);
|
||||
freezero(penc, penclen);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -212,29 +219,33 @@ old_rsa_priv_encode(const EVP_PKEY *pkey, unsigned char **pder)
|
|||
static int
|
||||
rsa_priv_encode(PKCS8_PRIV_KEY_INFO *p8, const EVP_PKEY *pkey)
|
||||
{
|
||||
unsigned char *rk = NULL;
|
||||
int rklen;
|
||||
ASN1_STRING *str;
|
||||
ASN1_STRING *str = NULL;
|
||||
ASN1_OBJECT *aobj;
|
||||
int strtype;
|
||||
unsigned char *rk = NULL;
|
||||
int rklen = 0;
|
||||
|
||||
if (!rsa_param_encode(pkey, &str, &strtype))
|
||||
return 0;
|
||||
|
||||
rklen = i2d_RSAPrivateKey(pkey->pkey.rsa, &rk);
|
||||
if (rklen <= 0) {
|
||||
goto err;
|
||||
if ((rklen = i2d_RSAPrivateKey(pkey->pkey.rsa, &rk)) <= 0) {
|
||||
RSAerror(ERR_R_MALLOC_FAILURE);
|
||||
ASN1_STRING_free(str);
|
||||
return 0;
|
||||
rklen = 0;
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (!PKCS8_pkey_set0(p8, OBJ_nid2obj(pkey->ameth->pkey_id), 0,
|
||||
strtype, str, rk, rklen)) {
|
||||
if ((aobj = OBJ_nid2obj(pkey->ameth->pkey_id)) == NULL)
|
||||
goto err;
|
||||
if (!PKCS8_pkey_set0(p8, aobj, 0, strtype, str, rk, rklen)) {
|
||||
RSAerror(ERR_R_MALLOC_FAILURE);
|
||||
ASN1_STRING_free(str);
|
||||
return 0;
|
||||
goto err;
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
||||
err:
|
||||
ASN1_STRING_free(str);
|
||||
freezero(rk, rklen);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue