<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hi Marc,</p>
    <p>I just came across your below message of March, which arrived in
      a bit weird form (I removed duplicate text sections in the below
      quote) and appears unanswered - sorry for that.<br>
      <br>
      It has been a while since I last used engines, but the following
      variant<br>
      <br>
      <tt>   -newkey org.openssl.engine:pkcs11:<keyid></tt><br>
    </p>
    <p> should work, rather than <br>
      <br>
            <tt>-engine pkcs11 -keyform engine</tt> <br>
      <br>
      because the latter pertains to all key options used, including <tt>-key</tt>,
      which is not what you want.</p>
    <p>HTH,<br>
    </p>
    <p>    David</p>
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 25.03.21 18:56, mbalembo wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:24f54f69-276f-2727-94b9-3d9304df8571@csgroup.eu">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <br>
      Hello all,<br>
      <br>
      <br>
      I'm trying to do a CMP request using openssl with a private key
      inside a pkcs11 device (on linux).<br>
      So i'm using opsenssl 3.0.0 alpha 13.<br>
      <br>
      I did compile fine (./config --prefix=/opt/openssl
      enable-deprecated --openssldir=/usr/local/ssl
      -Wl,-rpath=/opt/openssl/lib),<br>
      but i ran into trouble when compiling libp11 to get my pkcs11
      engine.<br>
      (i had a similar issue while trying to use tpm2-tss-engine)<br>
      I can't find a way to build openssl with ERR_put_error() symbol.<br>
      I know it's deprecated so i changed the code in libp11 to use
      ERR_raise() instead, but again the symbol is also missing.<br>
      I ended up removing the function call in the engine as a dirty
      fix, but i'd like to have a better solution.<br>
      <br>
      <br>
      So, with everything compiled, I tried to use the engine only and
      create a CSR first.<br>
      <blockquote># /opt/openssl/bin/openssl req -new -engine pkcs11
        -keyform engine -key
"pkcs11:model=SLB9670;manufacturer=Infineon;serial=0000000000000000;token=tpm2-token;id=%c1%b2%36%b2%eb%53%f0%4f%ea%24%1a%4d%01%ac%d1%9e%fe%11%19%6d;object=test;type=private;pin-value=000000"
        -subj "<my subject>" -out testpkcs11.csr<br>
      </blockquote>
      <br>
      and, everything works so far !<br>
      <br>
      but i get errors when trying to do a CMP request with the engine,
      thing is, i'm not so sure of the command.<br>
      <br>
      <blockquote># /opt/openssl/bin/openssl cmp -cmd ir -engine pkcs11
        -server <my server>:8080 -path
        ejbca/publicweb/cmp/WKS-RA-Bootstrap_auth -cert <path to my
        cert> -key file:<path to key file> -keypass
        file:<password for the file> -keyform engine -newkey
"pkcs11:model=SLB9670;manufacturer=Infineon;serial=0000000000000000;token=tpm2-token;id=%c1%b2%36%b2%eb%53%f0%4f%ea%24%1a%4d%01%ac%d1%9e%fe%11%19%6d;object=test;type=private;pin-value=000000"
        -subject '<my subject>' -certout testcmppkcs11.pem
        -trusted <> my root CA> -reqexts san -config
        /opt/conf/openssl_reqext.cnf<br>
      </blockquote>
      <br>
      i get the following error :<br>
      <blockquote><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
          lang="EN-US">cmp_main:apps/cmp.c:2728:CMP info: using
          section(s) 'cmp' of OpenSSL configuration file
          '/opt/conf/openssl_reqext.cnf'</span><br>
        <span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
          lang="EN-US">cmp_main:apps/cmp.c:2737:CMP info: no [cmp]
          section found in config file '/opt/conf/openssl_reqext.cnf';
          will thus use just </span><br>
        <span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
          lang="EN-US">[default] and unnamed section if
          present                                            
                                                          </span><br>
        <span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Engine
          "pkcs11"
set.                                                                                                                </span><br>
        <span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
          lang="EN-US">Format not
          recognized!                                                  
                                                                      </span><br>
        <span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
          lang="EN-US">The key ID is not a valid PKCS#11
URI                                                                                               </span><br>
        <span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
          lang="EN-US">The PKCS#11 URI format is defined by
          RFC7512                
                                                                                
        </span><br>
        <span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
          lang="EN-US"></span><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
          lang="EN-US">The legacy ENGINE_pkcs11 ID format is also still
          accepted for
          now                                                                 
        </span><br>
        <span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
          lang="EN-US"></span><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
          lang="EN-US">Format not recognized!                        
                                                                                  
        </span><br>
        <span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
          lang="EN-US"></span><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
          lang="EN-US">The key ID is not a valid PKCS#11
URI                                                                                 
        </span><br>
        <span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
          lang="EN-US"></span><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
          lang="EN-US">The PKCS#11 URI format is defined by
RFC7512                                                                           
        </span><br>
        <span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
          lang="EN-US"></span><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
          lang="EN-US">The legacy ENGINE_pkcs11 ID format is also still
          accepted for now                                            </span><br>
        <span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
          lang="EN-US"></span><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
          lang="EN-US">PKCS11_get_private_key returned
NULL                                                                                                </span><br>
        <span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
          lang="EN-US">Could not read private key for CMP client
          certificate from org.openssl.engine:pkcs11:<a
            class="moz-txt-link-freetext" moz-do-not-send="true">file:/foo/usine.boot.key.pem</a>   
        </span><br>
        <span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
          lang="EN-US">00E01783A47F0000:error:13000080:engine
          routines:ENGINE_load_private_key:failed loading private
          key:crypto/engine/eng_pkey.c:78:      </span><br>
        <span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"
          lang="EN-US">cmp_main:apps/cmp.c:2879:CMP error: cannot set up
          CMP context  </span><br>
      </blockquote>
      <br>
      I'm quite confuse about the PKCS11 error since i know from the req
      command that openssl rsa show that the passphrase for the CMP
      client certificate is good.<br>
      my URI is good and openssl rsa show that the passphrase for the
      CMP client certificate is good.<br>
      <br>
      I've tried various modification of the command, mostly removing
      the "keyform engine" and using just 'newkey "pkcs11:(...)" ' with
      no succes.<br>
      <br>
      Maybe openssl is mixing engine format for everything and not just
      for the newkey ?<br>
      <br>
      <br>
      Thanks,<br>
      Marc <br>
    </blockquote>
  </body>
</html>