<div dir="ltr"><div>Hi All,</div><div><br></div><div>In our project, we are currently supporting two branches of OpenSSL (1.0.1 and 1.0.2)</div><div><br></div><div>Recently we had a requirement to enable elliptic curve Diffie Hellman, we see that in</div><div>OpenSSL 1.0.2 branch, we can use the below function to enable ECDH</div><div><br></div><font color="#008000" face="Consolas" size="2"><font color="#008000" face="Consolas" size="2"><font color="#008000" face="Consolas" size="2"><p>/* Set automatic curve selection for server ssl to onoff.If onoff is 1 then </p><div>
</div><p>      the highest preference curve is automatically used for ECDH temporary keys </p><div>
</div><p>      used during key exchange. */</p></font></font></font><div><font color="#008000" face="Consolas" size="2"><font color="#008000" face="Consolas" size="2"><font color="#008000" face="Consolas" size="2">
</font></font></font><font face="Consolas" size="2"><font face="Consolas" size="2"></font></font></div><p><font face="Consolas" size="2"><font face="Consolas" size="2">      (</font></font><font color="#0000ff" face="Consolas" size="2"><font color="#0000ff" face="Consolas" size="2"><font color="#0000ff" face="Consolas" size="2">void</font></font></font><font face="Consolas" size="2"><font face="Consolas" size="2">)</font></font><font color="#6f008a" face="Consolas" size="2"><font color="#6f008a" face="Consolas" size="2"><font color="#6f008a" face="Consolas" size="2">SSL_set_ecdh_auto</font></font></font><font face="Consolas" size="2"><font face="Consolas" size="2">(ssl, 1);</font></font></p><p><br></p><div>However in OpenSSL 1.0.1 the ECDH curve name has to be explicitly set by the calling function. We researched about this and in one of the examples in OpenSSL wiki at</div><div><a href="https://wiki.openssl.org/index.php/Elliptic_Curve_Diffie_Hellman">https://wiki.openssl.org/index.php/Elliptic_Curve_Diffie_Hellman</a></div><div><br></div><div>we have found that <u>"</u><font face="Consolas" size="2"><font face="Consolas" size="2"><u>NID_X9_62_prime256v1" </u>is used.</font></font></div><div><font face="Consolas"><br></font></div><div><font face="Consolas">Hence for OpenSSL 1.0.1, we have the implementation as below</font></div><div><br clear="all"></div><p><font face="Consolas" size="2"><font face="Consolas" size="2">    sECDH = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);    </font></font><font color="#008000" face="Consolas" size="2"><font color="#008000" face="Consolas" size="2"><font color="#008000" face="Consolas" size="2">//  secp256r1 curve - referred as prime256v1</font></font></font></p><div><font color="#008000" face="Consolas" size="2"><font color="#008000" face="Consolas" size="2"><font color="#008000" face="Consolas" size="2">
</font></font></font><font face="Consolas" size="2"><font face="Consolas" size="2"></font></font></div><p><font face="Consolas" size="2"><font face="Consolas" size="2">      (</font></font><font color="#0000ff" face="Consolas" size="2"><font color="#0000ff" face="Consolas" size="2"><font color="#0000ff" face="Consolas" size="2">void</font></font></font><font face="Consolas" size="2"><font face="Consolas" size="2">)SSL_set_tmp_ecdh(ssl, sECDH);</font></font></p><p><br></p><div>However we are wondering, whether there is any recommendation for the choice of the named elliptic curve. Is any particular recommended ? Any suggestions in this regard is much appreciated.</div><div><br>-- <br></div><div class="gmail_signature">Regards,<br>Sreekanth<br></div>
</div>