C++ GnuTLS:导入证书时出错

C++ GnuTLS:导入证书时出错,c++,x509certificate,x509,pem,gnutls,C++,X509certificate,X509,Pem,Gnutls,使用GnuTLS库导入证书时遇到问题。我生成了一个自我签名的证书,我想导入到我的C++代码中,以便进一步处理它。我使用fopen阅读证书。我将其保存到gnutls\u datum\u t-type,它似乎是文件类型和文件类型长度的元组。为什么我的代码抛出错误值:-207,这意味着Base64意外的头错误 当我查找证书类型时,它告诉我是pkix-cert+pem,但我也尝试了x-x509-cert。所有这些都是使用certtool生成的 当我更改输入的预期格式时,错误值更改为-73,这意味着ASN

使用GnuTLS库导入证书时遇到问题。我生成了一个自我签名的证书,我想导入到我的C++代码中,以便进一步处理它。我使用
fopen
阅读证书。我将其保存到
gnutls\u datum\u t-type
,它似乎是
文件类型
和文件类型长度的元组。为什么我的代码抛出
错误值:-207
,这意味着
Base64意外的头错误

当我查找证书类型时,它告诉我是
pkix-cert+pem
,但我也尝试了
x-x509-cert
。所有这些都是使用certtool生成的

当我更改输入的预期格式时,错误值更改为-73,这意味着ASN1解析器:标记中的错误

当我打印文件类型时,我可以看到通常的证书结构


我的错是什么?

gnutls\u datum\u t
是一个缓冲区,它的长度

如果有一些文本
certPem
,这可能会初始化它:

gnutls_datum_t certDat;
certDat.data = (unsigned char *)certPem;
certDat.size = strlen(certPem) + 1;

可能您的证书不是
PEM
格式(即base64编码数据),而
GNUTLS\u X509\u FMT\u DER
将完成此工作?@frymode这将问题更改为-73:ASN1解析器:标记中的错误