<html 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=utf-8"><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;}
@font-face
        {font-family:"Cascadia Mono";
        panose-1:2 11 6 9 2 0 0 2 0 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:blue;
        text-decoration:underline;}
span.EmailStyle19
        {mso-style-type:personal-compose;
        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></head><body lang=EN-US link=blue vlink=purple style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal>Kory,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks for your response. I want to preserve the rest of the EC public key params. I did this. I haven’t test yet.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'>OSSL_PARAM* extracted_params = </span><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:#6F008A'>NULL</span><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'>;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:blue'>char</span><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'> curve_name[64];<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'>OSSL_PARAM* param_ecgroup = </span><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:#6F008A'>NULL</span><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'>;<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'>// sigkey is the EVP_PKEY ECDSA public key<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:blue'>if</span><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'> (EVP_PKEY_todata(sigkey, EVP_PKEY_PUBLIC_KEY, &extracted_params) == 0)<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'>{<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'>       // error <o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'>}<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'>curve_name = OSSL_EC_curve_nid2name(nid));<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:blue'>if</span><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'> (curve_name == </span><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:#6F008A'>NULL</span><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'>)<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'>{<o:p></o:p></span></p><p class=MsoNormal style='text-indent:.5in;text-autospace:none'><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'>// error<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'>}<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:blue'>if</span><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'> ((param_ecgroup = OSSL_PARAM_locate(params, </span><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:#A31515'>"group"</span><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'>)) != </span><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:#6F008A'>NULL</span><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'>)<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'>{<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'>       OSSL_PARAM_set_utf8_string(param_ecgroup, curve_name);<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'>}<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:blue'>else</span><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'>{<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'>       // error<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.5pt;font-family:"Cascadia Mono";color:black'>}</span><o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Martin<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> Kory Hamzeh <kory@avatarci.com> <br><b>Sent:</b> Monday, October 24, 2022 7:22 PM<br><b>To:</b> amartin@xtec.com<br><b>Cc:</b> openssl-users@openssl.org<br><b>Subject:</b> Re: Setting a group to an existing EVP_PKEY in OpenSSL 3<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I haven’t done exactly what you are trying, but something similar.<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal> See EVP_PKEY_set_params:<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><a href="https://www.openssl.org/docs/man3.0/man3/EVP_PKEY_set_params.html">https://www.openssl.org/docs/man3.0/man3/EVP_PKEY_set_params.html</a><o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>The specific parm to set the group could be set like this:<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><div><p class=MsoNormal> OSSL_PARAM_BLD_push_utf8_string(param_bld, "group",                      <o:p></o:p></p></div><div><p class=MsoNormal>                                            curve, 0;<o:p></o:p></p></div></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Please note that that I have not tested the above code as my code uses key-from-data. But I think it should work.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal><br><br><o:p></o:p></p><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><div><p class=MsoNormal>On Oct 24, 2022, at 2:31 PM, Martin via openssl-users <<a href="mailto:openssl-users@openssl.org">openssl-users@openssl.org</a>> wrote:<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal><span style='font-size:9.5pt;font-family:"Cascadia Mono"'>Hi,</span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:9.5pt;font-family:"Cascadia Mono"'> </span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:9.5pt;font-family:"Cascadia Mono"'>How can I set a GROUP to an existing EC type EVP_PKEY in OpenSSL 3?</span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:9.5pt;font-family:"Cascadia Mono"'> </span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:9.5pt;font-family:"Cascadia Mono"'>In 1.0.2 I was using this code having the EC_KEY:</span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:9.5pt;font-family:"Cascadia Mono"'> </span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:9.5pt;font-family:"Cascadia Mono"'>EC_KEY_set_group(eckey, EC_GROUP_new_by_curve_name(nid));</span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:9.5pt;font-family:"Cascadia Mono"'> </span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:9.5pt;font-family:"Cascadia Mono"'>In OpenSSL 3 still EC_GROUP_new_by_curve_name(nid) can be used, but I don’t know how to go from that to set it on the existing key.</span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:9.5pt;font-family:"Cascadia Mono"'> </span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:9.5pt;font-family:"Cascadia Mono"'> </span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:9.5pt;font-family:"Cascadia Mono"'>Thanks,</span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:9.5pt;font-family:"Cascadia Mono"'> </span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:9.5pt;font-family:"Cascadia Mono"'>Martin</span><o:p></o:p></p></div></div></blockquote></div><p class=MsoNormal><o:p> </o:p></p></div></div></div></body></html>