如何获得整个X509证书的大小

时间:2013-04-29 10:06:18

标签: c openssl certificate x509

我正在阅读使用openSSL生成的.crt证书。我在X509文件中的C程序中有证书。我想知道我刚读过的整个证书的大小。这怎么可能?是否有返回证书大小的特定函数?

由于 最诚挚的问候

1 个答案:

答案 0 :(得分:9)

要通过网络发送证书,我建议使用DER格式。原因是PEM是Base64编码的DER加上一些额外的文本(前缀/后缀)。

要估计大小,您实际上需要对证书进行编码(这是DER):

size_t get_length(X509 *cer)
{
    int len;

    len = i2d_X509(cer, NULL);
    return len > 0 ? len : 0;
}

对于PEM来说,它更棘手:

unsigned char *data;
BIO *bio = BIO_new(BIO_s_mem());
PEM_write_bio_X509(bio, cer);
len = BIO_get_mem_data(bio, &data);
// here - data is a pointer to encoded data, len - length of data.

BIO_free(bio); // free _after_ you no longer need data