<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Here are my notes from when we did this project a couple of years ago. It does not match your code exactly, but maybe it helps.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">-Tom<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">### ALL ###<o:p></o:p></p>
<p class="MsoNormal">Follow the porting instructions here: <a href="https://wiki.tizen.org/Security/Tizen_5.X_Migration_from_OpenSSL_1.0.2_to_OpenSSL_1.1.1_guide">
https://wiki.tizen.org/Security/Tizen_5.X_Migration_from_OpenSSL_1.0.2_to_OpenSSL_1.1.1_guide</a><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Especially the section "EVP_CIPHER_CTX became opaque". The changes here will match changes for most classes in OpenSSL.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Most notable:<o:p></o:p></p>
<p class="MsoNormal">Declaration:<o:p></o:p></p>
<p class="MsoNormal">                -              EVP_CIPHER_CTX  evp;<o:p></o:p></p>
<p class="MsoNormal">                +             EVP_CIPHER_CTX  *evp;<o:p></o:p></p>
<p class="MsoNormal">Initialization & cleanup:<o:p></o:p></p>
<p class="MsoNormal">                -              EVP_CIPHER_CTX_init(&evp);<o:p></o:p></p>
<p class="MsoNormal">                +             evp = EVP_CIPHER_CTX_new();<o:p></o:p></p>
<p class="MsoNormal">                +             EVP_CIPHER_CTX_free(evp);      /* do not forget to free after usage or error */<o:p></o:p></p>
<p class="MsoNormal">Function calling:<o:p></o:p></p>
<p class="MsoNormal">                -              EVP_CipherInit(&evp, EVP_des_cbc(), k1, NULL, enc);<o:p></o:p></p>
<p class="MsoNormal">                +             EVP_CipherInit(evp, EVP_des_cbc(), k1, NULL, enc);<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Note the change to using a pointer instead of directly.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">For encoding/decoding, the init() step is still needed.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">-    EVP_EncodeInit(&m_evpCtx);<o:p></o:p></p>
<p class="MsoNormal">+    m_evpCtx = EVP_ENCODE_CTX_new();<o:p></o:p></p>
<p class="MsoNormal">+    EVP_EncodeInit(m_evpCtx);<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">More changes:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">                                X509_EXTENSION *ext = X509_get_ext(peer, i);<o:p></o:p></p>
<p class="MsoNormal">                                const unsigned char *data;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">                -              data = ext->value->data;<o:p></o:p></p>
<p class="MsoNormal">                +             data = ASN1_STRING_get0_data(X509_EXTENSION_get_data(ext));<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">                -              ext_data = meth->d2i(NULL, &data, ext->value->length);<o:p></o:p></p>
<p class="MsoNormal">                +             ext_data = meth->d2i(NULL, &data, ASN1_STRING_length(X509_EXTENSION_get_data(ext)));<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">xmlsec.h(99): warning C4005: 'XMLSEC_CRYPTO': macro redefinition<o:p></o:p></p>
<p class="MsoNormal">/**<o:p></o:p></p>
<p class="MsoNormal">* XMLSEC_CRYPTO:<o:p></o:p></p>
<p class="MsoNormal">*<o:p></o:p></p>
<p class="MsoNormal">* Macro. Deprecated. Defined for backward compatibility only. Do not use<o:p></o:p></p>
<p class="MsoNormal">* in your code and use xmlSecGetDefaultCrypto() function instead.<o:p></o:p></p>
<p class="MsoNormal">*<o:p></o:p></p>
<p class="MsoNormal">* Returns the default crypto engine.<o:p></o:p></p>
<p class="MsoNormal">*/<o:p></o:p></p>
<p class="MsoNormal">#define XMLSEC_CRYPTO                          (xmlSecGetDefaultCrypto())<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">### WINDOWS ###<o:p></o:p></p>
<p class="MsoNormal">ws2_32.lib will need to replace wsock32.lib when linking, or be added to link if not there.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">ZLIB_WINAPI may be defined with some OSS (like curl), this causes link errors and should be removed.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">### LINUX ###<o:p></o:p></p>
<p class="MsoNormal">Linux will likely need to link with -lpthread<o:p></o:p></p>
<p class="MsoNormal">Some apps may need -lrt<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> openssl-users <openssl-users-bounces@openssl.org>
<b>On Behalf Of </b>Paramashivaiah, Sunil<br>
<b>Sent:</b> Thursday, October 21, 2021 2:49 AM<br>
<b>To:</b> openssl-users@openssl.org<br>
<b>Subject:</b> Need Help for Code Changes to Upgrade from OpenSSL 1.0.2 to 3.0<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Hi All,<o:p></o:p></p>
<p class="MsoNormal">         Please let me know how I can replace the below 1.0.2 code to 3.0<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><b>    SSL_SESSION data;<o:p></o:p></b></p>
<p class="MsoNormal"><b>    SSL_SESSION *ret=NULL;<o:p></o:p></b></p>
<p class="MsoNormal"><b><o:p> </o:p></b></p>
<p class="MsoNormal"><b>    data.ssl_version = sessVersion;<o:p></o:p></b></p>
<p class="MsoNormal"><b>    data.session_id_length= sessIdLen;<o:p></o:p></b></p>
<p class="MsoNormal"><b><o:p> </o:p></b></p>
<p class="MsoNormal"><b>    memcpy(data.session_id, sessId,  sessIdLen);<o:p></o:p></b></p>
<p class="MsoNormal"><b>    CRYPTO_r_lock(CRYPTO_LOCK_SSL_CTX);<o:p></o:p></b></p>
<p class="MsoNormal"><b><o:p> </o:p></b></p>
<p class="MsoNormal"><b>    ret= (SSL_SESSION *)lh_retrieve((_LHASH *)sslCtx->sessions, &data);<o:p></o:p></b></p>
<p class="MsoNormal"><b><o:p> </o:p></b></p>
<p class="MsoNormal"><b>    CRYPTO_r_unlock(CRYPTO_LOCK_SSL_CTX);<o:p></o:p></b></p>
<p class="MsoNormal"><b><o:p> </o:p></b></p>
<p class="MsoNormal"><b>Thanks and Regards,<o:p></o:p></b></p>
<p class="MsoNormal"><b>Sunil<o:p></o:p></b></p>
<p class="MsoNormal"><br>
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.<o:p></o:p></p>
</div>
</body>
</html>