[英]Any way to get length of printable version of a X509 certificate (that is printed by X509_print* openssl function)?
我想获取将由 Openssl@1.1.1(cg) X509_print
function 打印的文本大小。 我需要这个来为 memory BIO 分配适当的 memory 缓冲区并将 BIO 发送到X509_print
function。
我知道我可以为此使用足够大的缓冲区,但是有没有办法获得确切的大小而无需像X509_print
* 函数那样显式解析 X509 证书?
关于 PEM_write_X509 打印的数据大小,我有同样的问题。
最后:
BIO 结构有一个字段num_write
。 它是 BIO 中数据的字节表示长度。 但是,此字段通常是隐藏的。 但是我们可以通过 <openssl/bio.h> 中的 function BIO_number_written
获得它。
注意:对于 char 字符串,它可能不计算终止字节。
下面是示例代码(需要添加 NULL 和失败检查):
X509 *x509 = NULL;
BIO *bio = NULL;
char *str = NULL;
...
bio = BIO_new(BIO_s_mem());
X509_print(bio, x509);
ptr = malloc(BIO_number_written(bio) + 1);
ptr[BIO_number_written(bio)] = 0;
BIO_read(bio, ptr, BIO_number_written(bio));
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.