错误:无法将参数“1”的“std::string”转换为“X509*”,将其转换为“EVP_PKEY*X509_get_
error: cannot convert ‘std::string’ to ‘X509*’ for argument ‘1’ to ‘EVP_PKEY* X509_get_pubkey(X509*)’
我想验证证书的格式是否有效,所以我写了这段代码,但似乎有错误
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); }
}
}
}
编译时,我得到这个错误
/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)’
以及
main.cpp:70: error: expected unqualified-id before ‘char’ for that line : X509 *CERT = SSL_get_certificate(ssl);
std::string没有到char*(C样式字符串)的implizit转换,因此使用方法c_str()
:
SSL_CTX_use_certificate_file(sslctx, certFile.c_str(), SSL_FILETYPE_PEM);
更改
SSL_CTX_use_certificate_file(sslctx, certFile, SSL_FILETYPE_PEM);
进入
SSL_CTX_use_certificate_file(sslctx, certFile.c_str(), SSL_FILETYPE_PEM);
尝试使用c_str()
SSL_CTX_use_certificate_file(sslctx, certFile.c_str(), SSL_FILETYPE_PEM);
^
^
而是从string
中获取char*
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中使用nlohmann从类到json的转换
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 如何在 C++ 中将 X509 证书转换为公钥字符串
- OpenSSL - 通过内存将 X509* x509 转换为 file-BIO*
- 将DER编码的X509证书缓冲区转换为Windows cert_context结构
- 错误:无法将参数“1”的“std::string”转换为“X509*”,将其转换为“EVP_PKEY*X509_get_
- 如何在 openSSL 中将 DER 编码字符串的向量转换为 x509
- 如何将X509结构转换为字符串
- 如何将证书字符串转换为X509结构