<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif">Hi,<br></div><div class="gmail_quote"><div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">This is regarding an issue reported here in this link - <a href="https://github.com/openssl/openssl/issues/8872" style="font-family:Arial,Helvetica,sans-serif" target="_blank">https://github.com/openssl/openssl/issues/8872</a>  - This is blocking my development progress.</div><div class="gmail_default" style="font-family:verdana,sans-serif">I'm seeing this issue - capi_rsa_priv_enc() - capi engine: function not supported, when I tried to upgrade my application from using OpenSSL version 1.0.2r to 1.1.1b.</div><div class="gmail_default" style="font-family:verdana,sans-serif">This is causing TLS handshake to fail.</div><div class="gmail_default" style="font-family:verdana,sans-serif">In my case, I'm creating a self signed certificate that is used by Server application loading CAPI engine.</div><div class="gmail_default" style="font-family:verdana,sans-serif">Certificate is created by calling CertCreateSelfSignCertificate(--) - wincrypt.h - using szOID_RSA_SHA256RSA  signature algorithm and "Microsoft Enhanced RSA and AES Cryptographic Provider".</div><div><br></div><div><div class="gmail_default" style="font-family:verdana,sans-serif">This failure doesn't look like it's because of TLS1.3 as turning off TLS1.3 while configure with "no-tls1_3" also caused the same problem.</div><div class="gmail_default" style="font-family:verdana,sans-serif">Here is the call stack that is causing the reported problem when SSL_accept() is called.</div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div class="gmail_default" style="font-family:verdana,sans-serif"> capi.dll!capi_rsa_priv_enc(int flen, const unsigned char * from, unsigned char * to, rsa_st * rsa, int padding)</div></div><div><div class="gmail_default" style="font-family:verdana,sans-serif">       libcrypto-1_1.dll!RSA_private_encrypt(int flen, const unsigned char * from, unsigned char * to, rsa_st * rsa, int padding)      </div></div><div><div class="gmail_default" style="font-family:verdana,sans-serif"> libcrypto-1_1.dll!pkey_rsa_sign(evp_pkey_ctx_st * ctx, unsigned char * sig, unsigned int * siglen, const unsigned char * tbs, unsigned int tbslen)      </div></div><div><div class="gmail_default" style="font-family:verdana,sans-serif"> libcrypto-1_1.dll!EVP_PKEY_sign(evp_pkey_ctx_st * ctx, unsigned char * sig, unsigned int * siglen, const unsigned char * tbs, unsigned int tbslen)      </div></div><div><div class="gmail_default" style="font-family:verdana,sans-serif"> libcrypto-1_1.dll!EVP_DigestSignFinal(evp_md_ctx_st * ctx, unsigned char * sigret, unsigned int * siglen)       </div></div><div><div class="gmail_default" style="font-family:verdana,sans-serif"> libcrypto-1_1.dll!EVP_DigestSign(evp_md_ctx_st * ctx, unsigned char * sigret, unsigned int * siglen, const unsigned char * tbs, unsigned int tbslen)</div></div><div><div class="gmail_default" style="font-family:verdana,sans-serif">     libssl-1_1.dll!tls_construct_cert_verify(ssl_st * s, wpacket_st * pkt)</div></div><div><div class="gmail_default" style="font-family:verdana,sans-serif">   libssl-1_1.dll!write_state_machine(ssl_st * s)</div></div><div><div class="gmail_default" style="font-family:verdana,sans-serif">   libssl-1_1.dll!state_machine(ssl_st * s, int server)</div></div><div><div class="gmail_default" style="font-family:verdana,sans-serif">     libssl-1_1.dll!ossl_statem_accept(ssl_st * s)</div></div><div><div class="gmail_default" style="font-family:verdana,sans-serif">    libssl-1_1.dll!SSL_do_handshake(ssl_st * s)</div></div><div><div class="gmail_default" style="font-family:verdana,sans-serif">      libssl-1_1.dll!SSL_accept(ssl_st * s)</div></div></blockquote><div><br></div><div><br></div><div><div class="gmail_default" style="font-family:verdana,sans-serif">Is there a solution for this? Or</div><div class="gmail_default" style="font-family:verdana,sans-serif">Do I need to switch to some other Signature algorithm like ECDSA? Can I use this or anything else instead of RSA?</div><div class="gmail_default" style="font-family:verdana,sans-serif">If I should switch to ECDSA, should I use "szOID_ECDSA_SHA256" (wincrypt.h) as signature algorithm, use "PROV_EC_ECDSA_SIG" while calling <span class="m_-1137137019359216725gmail-" style="box-sizing:inherit;color:rgb(0,0,0);font-family:"Segoe UI",SegoeUI,"Segoe WP","Helvetica Neue",Helvetica,Tahoma,Arial,sans-serif">CryptAcquireContext</span><span class="m_-1137137019359216725gmail-" style="box-sizing:inherit;color:rgb(0,0,0);font-family:"Segoe UI",SegoeUI,"Segoe WP","Helvetica Neue",Helvetica,Tahoma,Arial,sans-serif">() and</span><span class="m_-1137137019359216725gmail-" style="box-sizing:inherit;font-weight:bolder;color:rgb(0,0,0);font-family:"Segoe UI",SegoeUI,"Segoe WP","Helvetica Neue",Helvetica,Tahoma,Arial,sans-serif;font-size:16px"> </span>call ENGINE_set_default() with ENGINE_METHOD_EC to support ECDSA using capi.dll?</div><br></div><div><div class="gmail_default" style="font-family:verdana,sans-serif">Thank you in advance.</div><br></div>-- <br><div dir="ltr" class="m_-1137137019359216725gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><span style="font-family:verdana,sans-serif">Regards,<br>Sandeep<br><br></span></div></div></div></div></div>