c - 如何获取整个X509证书的大小

标签 c openssl certificate x509

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

谢谢 最好的问候

最佳答案

要通过网络发送证书,我建议使用 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

关于c - 如何获取整个X509证书的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16275991/

相关文章:

c - recvfrom 的延迟随它被调用的频率而变化

c - 为什么我无法检查 C 中结构体的大小? (未声明的错误)

c++ - linux底层如何拦截键盘输入?

交叉编译 OpenSSL - 无法执行 openssl 二进制文件

c++ - 如何只为两个函数编译openssl

ssl - 使用 letsencrypt 为本地服务器签署 SSL 证书

c - 在二维数组中以之字形顺序打印数字

linux - Openssl 使用公钥解密

ssl - 如何共享多级证书

ios - Appcenter iOS安装错误 "this app cannot be installed because its integrity could not be verified"