使用OpenSSL API,我从X.509v3证书中提取了一个自定义扩展,其中包括:
X509_EXTENSION* ex = X509_get_ext(x509, 4);
Run Code Online (Sandbox Code Playgroud)
X509_EXTENSION对象包含一个值(ex-> value),它是ASN.1 OCTET STRING.OCTET STRING包含DER编码的UTF-8字符串.我正在尝试解码OCTET STRING以获得普通的UTF-8字符串.
我尝试过一些东西,比如:
ASN1_STRING_to_UTF8(&buf, ex->value);
Run Code Online (Sandbox Code Playgroud)
和
M_ASN1_OCTET_STRING_print(bio, ex->value);
int len = BIO_read(bio, buf, buf_size);
buf[len] = '\0';
Run Code Online (Sandbox Code Playgroud)
这些都给我DER编码的字符串.如何获得普通的UTF-8字符串?
我正在尝试在C(OpenSSL)中创建X509代理证书请求(ProxyCertInfo扩展RFC3820),但我无法弄清楚应该如何定义ProxyCertInfo的数据结构.RFC定义ASN.1语言如下:
PKIXproxy88 { iso(1) identified-organization(3) dod(6)
internet(1) security(5) mechanisms(5) pkix(7) id-mod(0)
proxy-cert-extns(25) }
DEFINITIONS EXPLICIT TAGS ::=
BEGIN
-- EXPORTS ALL --
-- IMPORTS NONE --
-- PKIX specific OIDs
id-pkix OBJECT IDENTIFIER ::=
{ iso(1) identified-organization(3)
dod(6) internet(1) security(5) mechanisms(5) pkix(7) }
-- private certificate extensions
id-pe OBJECT IDENTIFIER ::= { id-pkix 1 }
-- Locally defined OIDs
-- The proxy certificate extension
id-pe-proxyCertInfo OBJECT IDENTIFIER ::= { id-pe 14 }
-- Proxy certificate policy languages
id-ppl …Run Code Online (Sandbox Code Playgroud) 我想从X509结构化证书中检索密钥使用值,我尝试了以下代码
X509* lcert=NULL;
lCert=PEM_read(filename); // function will return the certificate in X509
unsigned long lKeyusage= lCert->ex_kusage;
Run Code Online (Sandbox Code Playgroud)
当我打印lKeyusage值...有时我得到128 ...有时我得到0相同的证书..谁能告诉我什么是错误.?如果我做错了请给我一些示例代码或正确的API ..