1
如何轉換X509 *
證書到STACK_OF(X509_NAME)
如何轉換`X509 *`證明書`STACK_OF(X509_NAME)`
需要將此STACK_OF(X509_NAME)
傳遞到OpenSSL的API ENGINE_load_ssl_client_cert
如何轉換X509 *
證書到STACK_OF(X509_NAME)
如何轉換`X509 *`證明書`STACK_OF(X509_NAME)`
需要將此STACK_OF(X509_NAME)
傳遞到OpenSSL的API ENGINE_load_ssl_client_cert
我需要通過
STACK_OF(X509_NAME)
到ENGINE_load_ssl_client_cert
...
你還沒有給我們太多的工作。它不清楚你的問題是什麼,所以很難說你應該做什麼改變。
開始追查<openssl src dir>/ssl/s3_clnt.c
OpenSSL的代碼:
int ssl_do_client_cert_cb(SSL *s, X509 **px509, EVP_PKEY **ppkey)
{
int i = 0;
#ifndef OPENSSL_NO_ENGINE
if (s->ctx->client_cert_engine) {
i = ENGINE_load_ssl_client_cert(s->ctx->client_cert_engine, s,
SSL_get_client_CA_list(s),
px509, ppkey, NULL, NULL, NULL);
if (i != 0)
return i;
}
#endif
if (s->ctx->client_cert_cb)
i = s->ctx->client_cert_cb(s, px509, ppkey);
return i;
}
正如你所看到的,它需要的X509
,不X509_NAME
堆棧。我從未花費大量時間處理ENGINE代碼,因此我不確定接下來會發生什麼。
您可能也有興趣在OpenSSL wiki上使用STACK API。
最後,還有一些你可能感興趣的點擊。我有點驚訝地發現有沒有點擊其中一個應用程序。
$ grep -IR ENGINE_load_ssl_client_cert *
crypto/engine/eng_err.c: "ENGINE_load_ssl_client_cert"},
crypto/engine/eng_pkey.c:int ENGINE_load_ssl_client_cert(ENGINE *e, SSL *s,
crypto/engine/engine.h:int ENGINE_load_ssl_client_cert(ENGINE *e, SSL *s,
ssl/s3_clnt.c: i = ENGINE_load_ssl_client_cert(s->ctx->client_cert_engine, s,
util/libeay.num:ENGINE_load_ssl_client_cert 4046 EXIST::FUNCTION:ENGINE
[你嘗試過什麼?](http://mattgemmell.com/what-have-you-tried/) – JSantos
我已經試了很多的OpenSSL的API但沒有它的工作。 – User1234