OpenSSL从x509证书中提取encryptedKeyPackage

OpenSSL从x509证书中提取encryptedKeyPackage,c,openssl,x509,asn.1,der,C,Openssl,X509,Asn.1,Der,我对OpenSSL非常陌生(已经用了两天了)。我正在使用OpenSSL版本1.0.1,并尝试实现OpenSSL函数,以从ASN.1(DER编码)signedData包中提取特定的x509 OID(特别是,OID是2.16.840.1.101.2.1.2.78.2,id ct KP encryptedKeyPkg)。就目前而言,我只是想有一个程序,可以从给定任何ASN.1编码包的包中提取这些数据。我能够使用以下代码将证书编码到缓冲区: #include <openssl/x509.h>

我对OpenSSL非常陌生(已经用了两天了)。我正在使用OpenSSL版本1.0.1,并尝试实现OpenSSL函数,以从ASN.1(DER编码)signedData包中提取特定的x509 OID(特别是,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;
}
我已经确认数据是正确的,但正如我所提到的,我正在寻找正确的OpenSSL指令来提取特定的OID(因此,对于特定的OID,它本身与X509_get_encryptedKeyPkg()类似,而不是X509_get_version()。我该怎么做?我可以编写只在证书中搜索OID的代码,并可能解析我需要的数据,但我几乎可以肯定/希望OpenSSL已经有了这样做的工具,而且更可靠。再一次,我是一个OpenSSL noobie,所以我正在尽可能地寻找互联网上的解决方案,但也许我没有使用正确的措辞。如果你能帮我,请告诉我。谢谢

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