跨越不同体系结构的OpenSSL PEM_read_bio_X509()函数

时间:2016-08-04 12:30:07

标签: c++ ssl arm cross-platform

我有证书,我正在使用 PEM_read_bio_X509()功能解析此证书并使用其他一些功能(例如: X509_get_pubkey )从证书中提取所需信息。

您可以在下面找到我正在使用的代码块。该代码块在x86_64架构上运行良好,但是相同的代码会生成错误而不会运行。看起来不同架构存在问题,但我找不到合适的解决方案。

ARM体系结构生成的错误字符串如下:

ErrorMessage: error:0906D064:lib(9):func(109):reason(100)

查看 pem.h 文件,错误代码的等效项如下:

func(109):
# define PEM_F_PEM_READ_BIO                               109
reason(100):
# define PEM_R_BAD_BASE64_DECODE                          100

我使用以下代码片段从缓冲区读取并提取指向X509结构的指针:

BIO * bio = BIO_new(BIO_s_mem());
BIO_write(bio, createdMemory, buffSize);
X509 * certificate = PEM_read_bio_X509(bio,NULL,0,NULL) ;
unsigned long errCode = ERR_peek_last_error();
char errBuffer[16384];
ERR_error_string_n(errCode, errBuffer, 16384);
std::string errBufferStr(errBuffer);
std::cout << "ErrorMessage: " << errBufferStr << std::endl;

此处createdMemory是一个char数组,其中包含证书内容,如:

-----BEGIN CERTIFICATE-----
Certificate content encoded with base64
-----END CERTIFICATE-----

系统配置: ARM方面: 3.14.38-6UL_ga + ge4944a5#1 SMP PREEMPT Tue Jun 14 15:05:40 EEST 2016 armv7l GNU / Linux 这是一个imx6评估工具包,交叉工具链,文件系统是使用Yocto生成的。

x86_64方: 3.13.0-88-generic#135-Ubuntu SMP Wed Jun 8 21:10:42 UTC 2016 x86_64 x86_64 x86_64 GNU / Linux

任何帮助将不胜感激。 问候。

0 个答案:

没有答案