<html><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:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
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-IN" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi ,<o:p></o:p></p>
<p class="MsoNormal" style="text-indent:36.0pt">While migrating from 1.0.2 to 3.0, we found that DH_compute_key () has be deprecated.
<o:p></o:p></p>
<p class="MsoNormal">In the current  we are using the compute API as below<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">    dh->priv_key = BN_bin2bn(privateKey, octet_len, NULL);<o:p></o:p></p>
<p class="MsoNormal">    bn_publicKey = BN_bin2bn(publicKey, octet_len, NULL);<o:p></o:p></p>
<p class="MsoNormal">    rv = DH_compute_key(sharedSecret, bn_publicKey, dh); <o:p>
</o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">to exactly replace this we are generating “<b><span style="background:yellow;mso-highlight:yellow">pubparam_key</span>/<span style="background:aqua;mso-highlight:aqua">priparam_key</span></b>”  using   bn_publicKey/dh->priv_key  as below<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">OSSL_PARAM_BLD *pubparamsbld = NULL, priparamsbld = NULL;<o:p></o:p></p>
<p class="MsoNormal">OSSL_PARAM *pubparams = NULL, priparams = NULL;<o:p></o:p></p>
<p class="MsoNormal">EVP_PKEY *pubparam_key = NULL, *priparam_key = NULL;<o:p></o:p></p>
<p class="MsoNormal">EVP_PKEY_CTX *pubctx = NULL, *prictx = NULL;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">pubparamsbld = OSSL_PARAM_BLD_new()<o:p></o:p></p>
<p class="MsoNormal">priparamsbld = OSSL_PARAM_BLD_new()<o:p></o:p></p>
<p class="MsoNormal">                <o:p></o:p></p>
<p class="MsoNormal">OSSL_PARAM_BLD_push_BN(pubparamsbld, OSSL_PKEY_PARAM_PUB_KEY, bn_publicKey)<o:p></o:p></p>
<p class="MsoNormal">OSSL_PARAM_BLD_push_BN(priparamsbld, OSSL_PKEY_PARAM_PRIV_KEY,bn_privateKey)<o:p></o:p></p>
<p class="MsoNormal">   <o:p></o:p></p>
<p class="MsoNormal">//build context<o:p></o:p></p>
<p class="MsoNormal">pubctx = EVP_PKEY_CTX_new_from_name(NULL, "DH", NULL);<o:p></o:p></p>
<p class="MsoNormal">prictx = EVP_PKEY_CTX_new_from_name(NULL, "DH", NULL);<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">EVP_PKEY_key_fromdata_init(pubctx)<o:p></o:p></p>
<p class="MsoNormal">EVP_PKEY_key_fromdata_init(prictx)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">pubparams = OSSL_PARAM_BLD_to_param(pubparamsbld);<o:p></o:p></p>
<p class="MsoNormal">EVP_PKEY_fromdata(pubctx, &<span style="background:yellow;mso-highlight:yellow">pubparam_key</span>, pubparams))<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">priparams = OSSL_PARAM_BLD_to_param(priparamsbld);<o:p></o:p></p>
<p class="MsoNormal">EVP_PKEY_fromdata(prictx, &<span style="background:aqua;mso-highlight:aqua">priparam_key</span>, priparams))<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">From there, we are planning to use EVP_PKEY_derive_init, EVP_PKEY_derive_set_peer, and EVP_PKEY_derive to get shared secret
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Please suggest if any step is invalid or not necessary<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Regards,<o:p></o:p></p>
<p class="MsoNormal">Sunil<o:p></o:p></p>
</div>


<br><br><span style="font-family:Arial; Font-size:8.0pt"> <hr> Notice: This e-mail together with any attachments may contain information of Ribbon Communications Inc. 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.<hr> </span></body></html>