我有证书,我正在使用 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
任何帮助将不胜感激。 问候。