gpt4 book ai didi

openssl - 使用 OpenSSL 解码 ASN.1 DER OCTET STRING

转载 作者:行者123 更新时间:2023-12-04 07:58:10 25 4
gpt4 key购买 nike

使用 OpenSSL API,我从 X.509v3 证书中提取了一个自定义扩展:

X509_EXTENSION* ex = X509_get_ext(x509, 4);

X509_EXTENSION 对象包含一个值(ex->value),它是一个 ASN.1 OCTET STRING。 OCTET STRING 包含一个 DER 编码的 UTF-8 字符串。我正在尝试解码 OCTET STRING 以获得纯 UTF-8 字符串。

我尝试了一些事情,例如:

ASN1_STRING_to_UTF8(&buf, ex->value);



M_ASN1_OCTET_STRING_print(bio, ex->value);
int len = BIO_read(bio, buf, buf_size);
buf[len] = '\0';

这些都给了我 DER 编码的字符串。如何获得纯 UTF-8 字符串?

最佳答案

@Francois 将我指向 ASN1_get_object() 函数。该函数适用于证书扩展仅包含单个值的情况。

ASN1_get_object() 接受一个指向包含 DER 编码对象的 C 缓冲区的指针的指针。它返回数据本身(通过调整指针)、数据长度、ASN.1 标签值和 ASN.1 对象类。

ASN1_OCTET_STRING* octet_str = X509_EXTENSION_get_data(extension);
const unsigned char* octet_str_data = octet_str->data;
long xlen;
int tag, xclass;
int ret = ASN1_get_object(&octet_str_data, &xlen, &tag, &xclass, octet_str->length);
printf("value: %s\n", octet_str_data);

关于openssl - 使用 OpenSSL 解码 ASN.1 DER OCTET STRING,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7329390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com