OpenSSL Извлечь encryptedKeyPackage из сертификата x509

Я очень новичок в OpenSSL (использую его буквально два дня). Я использую OpenSSL версии 1.0.1 и пытаюсь реализовать функции OpenSSL для извлечения определенного OID x509 из пакета подписанных данных ASN.1 (в кодировке DER) (в частности, OID - 2.16.840.1.101.2).1.2.78.2, id-ct-KP-encryptedKeyPkg). На данный момент я только пытаюсь получить программу, которая может извлечь эти данные из пакета для любого пакета в кодировке ASN.1. Я могу закодировать сертификат в буфер, используя следующий код:

#include <openssl/x509.h>

int main()
{
    /* for brevity, please assume "encrypted" points to a DER-encoded buffer */
    char* encrypted = malloc( 3000 ); 
    int sizeOfEncrypted = 3000;       // assume this number is correct

    BIO* bp = BIO_new( BIO_s_mem() );
    ASN1_parse( bp, (unsigned char*) encrypted, (long) encryptedSize, 4 );

    BUF_MEM *bptr;
    BIO_get_mem_ptr( bp, &bptr );
    BIO_set_close( bp, BIO_NOCLOSE );
    BIO_free( bp );

    return 0;
}

Если я записываю байты буфера, на который указывает "bptr", в файл, я получаю все поля закодированных данных, аналогично выводу:

 $ openssl asn1parse -inform DER -in my_pkg.dat -i

Я подтвердил, что данные верны, но теперь, как я уже упоминал, я ищу правильные инструкции OpenSSL для извлечения определенного OID (поэтому вместо X509_get_version() это будет что-то вроде X509_get_encryptedKeyPkg(), по сути, для конкретный OID). Как я могу это сделать? Я могу написать код, который просто ищет OID в сертификате и потенциально может анализировать данные, которые мне нужны, но я почти уверен / надеюсь, что OpenSSL уже имеет инструменты для этого и более надежно. Еще раз, я новичок в OpenSSL, поэтому я стараюсь как можно лучше найти решение в Интернете, но, возможно, я не использую правильную формулировку. Пожалуйста, дайте мне знать, если вы можете мне помочь. Спасибо!

0 ответов

Другие вопросы по тегам