OpenSSL从x509证书中提取encryptedKeyPackage
我对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编码包的包中提取这些数据。我能够使用以下代码将证书编码到缓冲区: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>
#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