[EXTERNAL] Re: Need Replacement for Deprecated function.
Matt Caswell
matt at openssl.org
Wed Dec 1 13:58:12 UTC 2021
On 01/12/2021 13:11, Shivakumar Poojari wrote:
> Hi Matt,
> your suggestion was very helpful, with your help I moved little forward
> and blocked again.
>
> Below code snippet I'm working on,
> PEM_read_bio_DHparams and PEM_read_bio_DSAparams reading DH params and
> DSA params separately, how do I read separately
> with PEM_read_bio_Parameters_ex.
>
> or
>
> Can I modify the code to read bio in one Strech using
> PEM_read_bio_Parameters_ex and update SSL_set_tmp_dh directly.
PEM_read_bio_Parameters_ex() should able to read either DH or DSA
parameters. It will detect which one it is and give you back an EVP_PKEY
object.
Internally the EVP_PKEY_object will either contain DH or DSA parameters.
You can test which one you have using:
EVP_PKEY_is_a(pkey, "DH")
or
EVP_PKEY_is_a(pkey, "DSA")
Having read the parameters into an EVP_PKEY object you can simply pass
that to SSL_set0_tmp_dh_pkey(). However this will only work if
`EVP_PKEY_is_a(pkey, "DH") returns true. If you actually have DSA
parameters then you would need to convert them using something like the
workaround I linked to. But I would question whether you really want to
continue to support this.
Matt
>
> Please let me know your views.
>
> Thanks,
> Shivakumar
>
> ////////////////////////////////////////////////////////////////
> #ifdef OPENSSL_NO_DH
> if (dh_file == NULL)
> return 0;
> wpa_printf(MSG_ERROR, "TLS: openssl does not include DH support, but "
> "dh_file specified");
> return -1;
> #else /* OPENSSL_NO_DH */
> DH *dh;
> BIO *bio;
>
> /* TODO: add support for dh_blob */
> if (dh_file == NULL)
> return 0;
> if (conn == NULL)
> return -1;
>
> bio = BIO_new_file(dh_file, "r");
> if (bio == NULL) {
> wpa_printf(MSG_INFO, "TLS: Failed to open DH file '%s': %s",
> dh_file, ERR_error_string(ERR_get_error(), NULL));
> return -1;
> }
> dh = PEM_read_bio_DHparams(bio, NULL, NULL, NULL);
> BIO_free(bio);
> #ifndef OPENSSL_NO_DSA
> while (dh == NULL) {
> DSA *dsa;
> wpa_printf(MSG_DEBUG, "TLS: Failed to parse DH file '%s': %s -"
> " trying to parse as DSA params", dh_file,
> ERR_error_string(ERR_get_error(), NULL));
> bio = BIO_new_file(dh_file, "r");
> if (bio == NULL)
> break;
> dsa = PEM_read_bio_DSAparams(bio, NULL, NULL, NULL);
> BIO_free(bio);
> if (!dsa) {
> wpa_printf(MSG_DEBUG, "TLS: Failed to parse DSA file "
> "'%s': %s", dh_file,
> ERR_error_string(ERR_get_error(), NULL));
> break;
> }
>
> wpa_printf(MSG_DEBUG, "TLS: DH file in DSA param format");
> dh = DSA_dup_DH(dsa);
> DSA_free(dsa);
> if (dh == NULL) {
> wpa_printf(MSG_INFO, "TLS: Failed to convert DSA "
> "params into DH params");
> break;
> }
> break;
> }
> #endif /* !OPENSSL_NO_DSA */
> if (dh == NULL) {
> wpa_printf(MSG_INFO, "TLS: Failed to read/parse DH/DSA file "
> "'%s'", dh_file);
> return -1;
> ////////////////////////////////////////////////////////////////
> ------------------------------------------------------------------------
> *From:* openssl-users <openssl-users-bounces at openssl.org> on behalf of
> Matt Caswell <matt at openssl.org>
> *Sent:* Monday, November 29, 2021 8:40 PM
> *To:* openssl-users at openssl.org <openssl-users at openssl.org>
> *Subject:* [EXTERNAL] Re: Need Replacement for Deprecated function.
>
>
> On 29/11/2021 12:35, Shivakumar Poojari wrote:
>> Hi All,
>>
>> We are upgrading our code to openssl 3.0.
>>
>> Need Replacement for below Deprecated function.
>>
>> SSL_use_RSAPrivateKey_ASN1();
>
> Use SSL_use_PrivateKey_ASN1();
>
>
>> PEM_read_bio_DHparams();
>> PEM_read_bio_DSAparams();
>
> Use PEM_read_bio_Parameters_ex() for these two.
>
>> DSA_dup_DH();
>
> There is no replacement for this. Why do you need it? Generally this is
> a bad idea.
>
> If you really need to do it there is a workaround:
>
> https://clicktime.symantec.com/3RFqPpzm8EUTsqiRi1524Xo6H2?u=https%3A%2F%2Fgithub.com%2Fopenssl%2Fopenssl%2Fblob%2Fbc42cf51c8b2a22282bb3cdf6303e230dc7b7873%2Fapps%2Fdhparam.c%23L352-L400
> <https://clicktime.symantec.com/3RFqPpzm8EUTsqiRi1524Xo6H2?u=https%3A%2F%2Fgithub.com%2Fopenssl%2Fopenssl%2Fblob%2Fbc42cf51c8b2a22282bb3cdf6303e230dc7b7873%2Fapps%2Fdhparam.c%23L352-L400>
>
>
>> DSA_free();
>
> You shouldn't need to call this anymore because you shouldn't have any
> DSA objects anymore. Instead you should only be using EVP_PKEY objects.
> To free those you use EVP_PKEY_free();
>
>
>> SSL_set_tmp_dh();
>
> SSL_set0_tmp_dh_pkey(). Although you might be able to just remove it
> completely. These functions set the DH parameters to a specific set of
> values. Mostly you can instead just use the default built-in ones.
>
>> DH_free();
>
> As per DSA_free();
>
>> SSL_CTX_set_tmp_dh();
>
> SSL_CTX_set0_tmp_dh_pkey() - but same comments as for SSL_set_tmp_dh()
> apply.
>
>
> Matt
>
>>
>> I'm not able to find proper replacement, Please help me out
>>
>> Thanks,
>> Shiva Kumar
>>
>>
>>
>>
>> Notice: This e-mail together with any attachments may contain
>> information of Ribbon Communications Inc. and its Affiliates that is
>> confidential and/or proprietary for the sole use of the intended
>> recipient. Any review, disclosure, reliance or distribution by others or
>> forwarding without express permission is strictly prohibited. If you are
>> not the intended recipient, please notify the sender immediately and
>> then delete all copies, including any attachments.
>
> Notice: This e-mail together with any attachments may contain
> information of Ribbon Communications Inc. and its Affiliates that is
> confidential and/or proprietary for the sole use of the intended
> recipient. Any review, disclosure, reliance or distribution by others or
> forwarding without express permission is strictly prohibited. If you are
> not the intended recipient, please notify the sender immediately and
> then delete all copies, including any attachments.
More information about the openssl-users
mailing list