使用GnuTLS导入证书时出现错误代码-207

时间:2015-06-11 09:02:29

标签: certificate x509 c++ error-handling

我尝试导入证书,以便在我的C ++代码中处理它。我究竟做错了什么?以下是我在代码中执行的步骤:

我以gnutls_global_init()

开始

我在我的程序using fopen and fread

中得到一个FILE类型的对象

我将包含证书的FILE类型obejct和FILE类型的长度保存到gnutls_datum_t类型的对象(loaded_file)

我使用gnutls_x509_crt_init(&cert)

初始化gnutls证书

我使用gnutls_x509_crt_import(cert, &loaded_file, GNUTLS_X509_FMT_PEM)

我收到错误代码-207: Base64 unexpected header error ......这是什么意思? 当我想使用gnutls_x509_crt_print()打印证书信息时,我得到以下信息:

证书[1424]:

  

X.509证书信息:

     

版本:1

     

错误:get_serial:ASN1解析器:找不到值。

     

发行人:

     

有效期:

   Not Before: Wed Dec 31 23:59:59 UTC 1969
    Not After: Wed Dec 31 23:59:59 UTC 1969
     

主题:

     

错误:get_signature_algorithm:ASN1解析器:找不到值。

     

警告:使用可伪造的破损签名算法进行签名。

     

错误:get_signature:ASN1解析器:未找到值。

     

其他信息:

     

错误:get_fingerprint:ASN1解析器:未找到值。

     

错误:get_key_id:ASN1解析器:未找到值。

我尝试导入的证书是使用certtool创建的自签名证书。

我的进口链出了什么问题?

1 个答案:

答案 0 :(得分:1)

今天,我得到了相同的错误代码。 就我而言,我使用了错误的缓冲区,并尝试使用gnutls_x509_crt_import加载私钥而不是证书。 错误代码-207似乎是“我没有找到任何许可证”的通用代码。

因此,如果发生此错误,则应始终检查输入缓冲区中的数据是否正确。