相关疑难解决方法(0)

openssl获取证书扩展

我正在使用openssl来解析X509证书.我设法获得扩展,但我不知道如何提取扩展值.

我使用的代码是:

  X509_EXTENSION *extension =  sk_X509_EXTENSION_pop(exts);
  int critical =  X509_EXTENSION_get_critical(extension);

  ASN1_OBJECT *obj = extension-> object;
  ln = OBJ_nid2ln(OBJ_obj2nid(obj));
  if( !ln ) ln = "";
  OBJ_obj2txt(objbuf,sizeof(objbuf),obj,1);
  int nid = OBJ_txt2nid(ln);  
Run Code Online (Sandbox Code Playgroud)

这段代码告诉我扩展是否关键,并告诉我扩展的nid.

我想通过以下方式可以获得价值:

ASN1_OCTET_STRING*data = X509_EXTENSION_get_data(extension);

但我不知道如何处理检索到的data对象.数据对象应该是der编码的.有关如何获取扩展数据的任何想法?

编辑:正如这里建议的那样,我试图这样做:

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);
Run Code Online (Sandbox Code Playgroud)

但我解码后得到的字符串与之前相同 - 例如:4Á˃◊∫NsΣäP∂W≠%£A

c openssl

5
推荐指数
1
解决办法
6106
查看次数

如何阅读X509 V3证书的关键词?

我想阅读证书中的密钥用法字段.在openssl中是否有API可用?

openssl digital-certificate x509

4
推荐指数
2
解决办法
8916
查看次数

标签 统计

openssl ×2

c ×1

digital-certificate ×1

x509 ×1