X-Git-Url: https://git.openssl.org/?a=blobdiff_plain;f=crypto%2Fx509%2Fx_pubkey.c;fp=crypto%2Fx509%2Fx_pubkey.c;h=6c554bc030f60d13a3c83e439792fb3076894a0a;hb=9df71587f1897c3b282b3fe1b47c01656b58531e;hp=ee8e01b894ea25314c631bc68a7700ad3718ef4a;hpb=af801ec89205aaf6ebf8522d510d0b1fc29e3233;p=openssl.git diff --git a/crypto/x509/x_pubkey.c b/crypto/x509/x_pubkey.c index ee8e01b894..6c554bc030 100644 --- a/crypto/x509/x_pubkey.c +++ b/crypto/x509/x_pubkey.c @@ -977,20 +977,25 @@ int ossl_i2d_X448_PUBKEY(const ECX_KEY *a, unsigned char **pp) #endif +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen) +{ + OPENSSL_free(pub->public_key->data); + pub->public_key->data = penc; + pub->public_key->length = penclen; + /* Set number of unused bits to zero */ + pub->public_key->flags &= ~(ASN1_STRING_FLAG_BITS_LEFT | 0x07); + pub->public_key->flags |= ASN1_STRING_FLAG_BITS_LEFT; +} + int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen) { if (!X509_ALGOR_set0(pub->algor, aobj, ptype, pval)) return 0; - if (penc) { - OPENSSL_free(pub->public_key->data); - pub->public_key->data = penc; - pub->public_key->length = penclen; - /* Set number of unused bits to zero */ - pub->public_key->flags &= ~(ASN1_STRING_FLAG_BITS_LEFT | 0x07); - pub->public_key->flags |= ASN1_STRING_FLAG_BITS_LEFT; - } + if (penc != NULL) + X509_PUBKEY_set0_public_key(pub, penc, penclen); return 1; }