[英]error: cannot convert ‘std::string’ to ‘X509*’ for argument ‘1’ to ‘EVP_PKEY* X509_get_pubkey(X509*)’
I want to verify if the certificate is valid in its format, so i wrote this code but it seems that there is an error 我想验证证书的格式是否有效,因此我编写了此代码,但似乎有错误
if (validConfigFile()) {
INIReader reader(CONFIG_FILE);
string certFile= reader.Get("Server", "cert-file", "None");
if (certFile == "None") {
syslog(LOG_ERR, "cert-file in configuration file is not properly adjusted");
exit(EXIT_FAILURE); }
else {
std::string fileName(certFile);
ifstream fin(fileName.c_str());
if(fin.fail()) {
syslog(LOG_ERR, "cert-file not found in its file path");
exit(EXIT_FAILURE); }
else {
OpenSSL_add_all_digests();
SSL_CTX *sslctx = SSL_CTX_new(SSLv23_server_method());
SSL_CTX_use_certificate_file(sslctx, certFile, SSL_FILETYPE_PEM);
SSL *ssl = SSL_new(sslctx);
X509 *CERT = SSL_get_certificate(ssl);
if (X509_verify(CERT,X509_get_pubkey(CERT)) == -1) {
syslog(LOG_ERR, "cert-file not valid");
exit(EXIT_FAILURE); }
}
}
}
when compiling i get this error 编译时出现此错误
/main.cpp:68: error: cannot convert ‘std::string’ to ‘const char*’ for argument ‘2’ to ‘int SSL_CTX_use_certificate_file(SSL_CTX*, const char*, int)’
and also 并且
main.cpp:70: error: expected unqualified-id before ‘char’ for that line : X509 *CERT = SSL_get_certificate(ssl);
std :: string没有隐式转换为char *(C风格的字符串),因此请使用方法c_str()
代替:
SSL_CTX_use_certificate_file(sslctx, certFile.c_str(), SSL_FILETYPE_PEM);
Change 更改
SSL_CTX_use_certificate_file(sslctx, certFile, SSL_FILETYPE_PEM);
into 成
SSL_CTX_use_certificate_file(sslctx, certFile.c_str(), SSL_FILETYPE_PEM);
Try using c_str()
尝试使用
c_str()
SSL_CTX_use_certificate_file(sslctx, certFile.c_str(), SSL_FILETYPE_PEM);
^
^
instead to get a char*
from the string
而是从
string
获取char*
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.