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

error code -207 during import of certificate using GnuTLS

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

我开始 gnutls_global_init()

我的程序收到一个 FILE 类型的对象,using fopen and fread

我将包含证书和 FILE 类型长度的文件类型对象保存到 gnutls_datum_t-type 对象中 (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 Certificate Information:

Version: 1

error: get_serial: ASN1 parser: Value was not found.

Issuer:

Validity:

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

Subject:

error: get_signature_algorithm: ASN1 parser: Value was not found.

warning: signed using a broken signature algorithm that can be forged.

error: get_signature: ASN1 parser: Value was not found.

Other Information:

error: get_fingerprint: ASN1 parser: Value was not found.

error: get_key_id: ASN1 parser: Value was not found.


我要导入的证书是用 certtool 创建的自签名证书。

我的导入链出了什么问题?

今天我得到了同样的错误代码。 在我的例子中,我使用了错误的缓冲区并尝试加载私钥而不是使用 gnutls_x509_crt_import 的证书。 错误代码 -207 似乎是 "I didn't find any license".

的通用错误代码

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