Decodificando um ASN.1 DER OCTET STRING com OpenSSL

Usando a API OpenSSL, extraí uma extensão personalizada de um certificado X.509v3 com:

X509_EXTENSION* ex = X509_get_ext(x509, 4);

O objeto X509_EXTENSION contém um valor (ex-> value) que é um ASN.1 OCTET STRING. O OCTET STRING contém uma sequência UTF-8 codificada por DER. Estou tentando decodificar a OCTET STRING para obter a string UTF-8 simple

Tentei algumas coisas, como:

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';

Esses dois me fornecem a string codificada pelo DER. Como obtenho a string UTF-8 simple

questionAnswers(1)

yourAnswerToTheQuestion