如何将ASN1_TIME转换为标准::字符串

How to convert ASN1_TIME to std::string

本文关键字:标准 转换 字符串 TIME ASN1      更新时间:2023-10-16

我正在以这种方式将ASN1_TIME转换为std::string:

std::string timeString;
BIO *bmem = BIO_new(BIO_s_mem());
if (ASN1_TIME_print(bmem, asn1Time)) {
    BUF_MEM * bptr;
    BIO_get_mem_ptr(bmem, &bptr);
    timeString.assign(std::string(bptr->data, bptr->length));
}
else { // Log error
}
BIO_free_all(bmem);

BUF_MEM使用有什么问题?我在 bptr->长度中得到非常大的数字,导致 std::string 构造异常。

有问题的代码很好。问题是由于标头不匹配造成的。正在使用系统中的早期标头,因此一切都很好。由于(很可能(El-Capitan,OSX不再包含标头,并且不鼓励依赖OSX进行SSL,以避免由于版本不兼容而导致的问题。

见 http://lists.apple.com/archives/macnetworkprog/2015/Jun/msg00025.html

这正是正在发生的事情 - 代码与操作系统上的库链接,但使用的标头来自不同的版本,因为它们是从openssl最新源代码下载的。