Re: [EXTERNAL] Re: Replacement for CRYPTO_thread_id() & ERR_get_error_line_data() for openssl3.0

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 06/09/2021 12:02, Shivakumar Poojari wrote:
Hi

In the below C file, I'm trying to update eay_sterror(line:1352) function to 3.0, In eay_sterror function deprecated functions are used

CRYPTO_thread_id()

ERR_get_error_line_data()


That function is only used for printing information.

Like I said in my previous answer the ERR_get_error_line_data() call is easy to replace with ERR_get_error_all():

diff --git a/iked/crypto_openssl.c b/iked/crypto_openssl.c
index eede826..e562296 100644
--- a/iked/crypto_openssl.c
+++ b/iked/crypto_openssl.c
@@ -1365,7 +1365,7 @@ eay_strerror(void)

        es = CRYPTO_thread_id();

- while ((l = ERR_get_error_line_data(&file, &line, &data, &flags)) != 0) { + while ((l = ERR_get_error_all(&file, &line, NULL, &data, &flags)) != 0) {
                n = snprintf(ebuf + len, sizeof(ebuf) - len,
                             "%lu:%s:%s:%d:%s ",
                             es, ERR_error_string(l, buf), file, line,



The CRYPTO_thread_id() call is a bit trickier. It's just a function to get hold of the current thread id. In 1.0.2 the implementation of that function looked like this:

unsigned long CRYPTO_thread_id(void)
{
    unsigned long ret = 0;

    if (id_callback == NULL) {
# ifdef OPENSSL_SYS_WIN16
        ret = (unsigned long)GetCurrentTask();
# elif defined(OPENSSL_SYS_WIN32)
        ret = (unsigned long)GetCurrentThreadId();
# elif defined(GETPID_IS_MEANINGLESS)
        ret = 1L;
# elif defined(OPENSSL_SYS_BEOS)
        ret = (unsigned long)find_thread(NULL);
# else
        ret = (unsigned long)getpid();
# endif
    } else
        ret = id_callback();
    return (ret);
}


So, it calls the user set callback "id_callback", which is set via a call to CRYPTO_set_id_callback(). I don't see any evidence of that actually being called anywhere in the racoon2 code which (if that is the case) means it falls back to "getpid()" on Linux/unix or GetCurrentThreadId() on windows. You can simply replace it with direct calls to those functions to get the equivalent functionality.

Whether getpid() actually gives *useful* output in this context is another question...but that's the case for the old code too.


Matt






https://github.com/zoulasc/racoon2/blob/master/iked/crypto_openssl.c <https://github.com/zoulasc/racoon2/blob/master/iked/crypto_openssl.c>
<https://github.com/zoulasc/racoon2/blob/master/iked/crypto_openssl.c>




	
racoon2/crypto_openssl.c at master · zoulasc/racoon2 <https://github.com/zoulasc/racoon2/blob/master/iked/crypto_openssl.c> The Racoon2 project is a joint effort which provides an implementation of key management system for IPsec. The implementation is called Racoon2, a successor of Racoon, which was developed by the KA...
github.com


please suggest the replacement,

thanks,
shiva kumar
------------------------------------------------------------------------
*From:* Matt Caswell <matt@xxxxxxxxxxx>
*Sent:* Friday, September 3, 2021 1:25 PM
*To:* Shivakumar Poojari <Shivakumar.Poojari@xxxxxxxx>; openssl-users@xxxxxxxxxxx <openssl-users@xxxxxxxxxxx> *Cc:* Paramashivaiah, Sunil <Sunil.Paramashivaiah@xxxxxxxx>; Bhattacharjee, Debapriyo (c) <dbhattacharjee@xxxxxxxx> *Subject:* [EXTERNAL] Re: Replacement for CRYPTO_thread_id() & ERR_get_error_line_data() for openssl3.0


On 03/09/2021 05:58, Shivakumar Poojari wrote:
Hi All,

We are upgrading our code to openssl 3.0. the below function we trying to replace, searched in the openssl man pages not found proper information.

CRYPTO_thread_id()

The deprecated implementation of this is a no-op (always returns 0).
What do you need this for? This used to be useful when locking callbacks
existed. But they were removed in 1.1.0.


ERR_get_error_line_data()

You can call ERR_get_error_all() as a replacement (passing a NULL value
for the "func" parameter).


Matt



please suggest.
thanks,
shivakumar.


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.



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux