How to decode ASN1 blob using Windows wincrypt api?

191 views Asked by At

I'm trying to extract attributes from a certificate on Windows and have been using Wincrypt api's for that.

When I encouter the SUBJECT_ALT_NAME certificate extension (szOID_SUBJECT_ALT_NAME "2.5.29.7") with the "OTHER_NAME" option - I get the CERT_OTHER_NAME struct which I cant find the correct API to decode it a char string.

Thanks!

I can see the value in it's CRYPT_OBJID_BLOB member is ASN1 decoded (UTF8 string) however CertNameToStrW fails to decode it when passing as the blob.

Any appropriate way to decode this structure (without manually decoding it)

1

There are 1 answers

0
YNWA On

as @RbMm suggested.

Call CryptDecodeObjectEx() with X509_NAME_VALUE, it returns a CERT_NAME_VALUE that can be passed to CertRDNValueToStrW() to decode:

CertRDNValueToStrW(CertNameValue->dwValueType, &CertNameValue->Value, NULL, 0);