OpenSSL 3.0.8: How to decode a public key that has a non-standard OID?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

 

I am looking at porting an application that handles Card Verifiable Certificate (CVC) requests from OpenSSL 1.1.1 to 3.0.8.

 

The requests are basic PKCS#10 but the public key algorithm uses different OIDs.  To deal with this the application creates new objects and registers a new EVP_PKEY_ASN1_METHOD for each, copied from an existing.  This is sufficient for X509_REQ_get_pubkey() to work with OpenSSL 1.1.1.  These are the main function calls minus error handling:

 

OBJ_create("1.3.36.3.5.3.1", "ecc-with-sha256", "ecc-with-sha256");

meth_default = EVP_PKEY_asn1_find(NULL, NID_X9_62_id_ecPublicKey);

meth_new = EVP_PKEY_asn1_new(OBJ_txt2nid("ecc-with-sha256"), 0, "EC", "G2 ECC with SHA256");

EVP_PKEY_asn1_copy(meth_new, meth_default);

EVP_PKEY_asn1_add0(meth_new);

...

req = PEM_read_bio_X509_REQ(in, NULL, NULL, NULL);

pubkey = X509_REQ_get_pubkey(req);

 

The same code using 3.0.8 gets a decode error from X509_PUBKEY_get0.  I assume this has to do with the introduction of providers and decoders in OpenSSL 3.  What are my options for treating these CVC public keys like a regular ecPublicKey?  Can I simply add the alternate OIDs to an existing decoder?  Do I need to create my own duplicate of an existing decoder?

 

Regards,

Andrew.

 


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux