我尝试导入证书,以便在我的C ++代码中处理它。我究竟做错了什么?以下是我在代码中执行的步骤:
我以gnutls_global_init()
我在我的程序using fopen and fread
我将包含证书的FILE类型obejct和FILE类型的长度保存到gnutls_datum_t类型的对象(loaded_file)
我使用gnutls_x509_crt_init(&cert)
我使用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创建的自签名证书。
我的进口链出了什么问题?
答案 0 :(得分:1)
今天,我得到了相同的错误代码。 就我而言,我使用了错误的缓冲区,并尝试使用gnutls_x509_crt_import加载私钥而不是证书。 错误代码-207似乎是“我没有找到任何许可证”的通用代码。
因此,如果发生此错误,则应始终检查输入缓冲区中的数据是否正确。