EVP_PKEY_asn1_get_count,
    EVP_PKEY_asn1_get0,
    EVP_PKEY_get0_asn1,
    EVP_PKEY_asn1_find,
    EVP_PKEY_asn1_find_str,
    EVP_PKEY_asn1_get0_info —
    enumerate public key ASN.1 methods
#include
    <openssl/evp.h>
int
  
  EVP_PKEY_asn1_get_count(void);
const EVP_PKEY_ASN1_METHOD *
  
  EVP_PKEY_asn1_get0(int idx);
const EVP_PKEY_ASN1_METHOD *
  
  EVP_PKEY_get0_asn1(const EVP_PKEY
    *pkey);
const EVP_PKEY_ASN1_METHOD *
  
  EVP_PKEY_asn1_find(ENGINE
    **engine, int type);
const EVP_PKEY_ASN1_METHOD *
  
  EVP_PKEY_asn1_find_str(ENGINE
    **engine, const char *str, int
    len);
int
  
  EVP_PKEY_asn1_get0_info(int
    *ppkey_id, int *pkey_base_id,
    int *ppkey_flags, const char
    **pinfo, const char **ppem_str,
    const EVP_PKEY_ASN1_METHOD *ameth);
EVP_PKEY_asn1_get_count()
    returns the number of public key ASN.1 methods available.
EVP_PKEY_asn1_get0()
    returns the public key ASN.1 method idx. The value of
    idx must be in the range from zero to
    EVP_PKEY_asn1_get_count() - 1.
EVP_PKEY_asn1_find()
    looks up the method with NID type, which can be any of
    the values that
    EVP_PKEY_base_id(3)
    and
    EVP_PKEY_id(3)
    may return. If engine is not
    NULL, *engine is set to
    NULL.
EVP_PKEY_asn1_find_str()
    looks up the method with the PEM type string given by the first
    len bytes of str. If
    len is -1, the
    strlen(3)
    of str is used instead. The PEM type strings supported
    by default are listed in the
    EVP_PKEY_base_id(3)
    manual page. Just like EVP_PKEY_asn1_find(), if
    engine is not NULL,
    *engine is set to NULL.
EVP_PKEY_asn1_get0_info()
    retrieves the public key ID as returned by
    EVP_PKEY_id(3),
    the base public key ID as returned by
    EVP_PKEY_base_id(3)
    (both NIDs), any flags, and internal pointers owned by
    ameth pointing to its method description string and
    its PEM type string.
The following flags bits can occur, OR'ed together in
    *ppkey_flags:
  ASN1_PKEY_ALIAS 
  - This ameth object serves as an alias for another
      EVP_PKEY_ASN1_METHOD object and will never be
      returned from
      
EVP_PKEY_asn1_find()
      or EVP_PKEY_asn1_find_str(). 
  ASN1_PKEY_DYNAMIC 
  - This flag is unused. It could formerly be used to mark an
      ameth object as dynamically allocated.
 
  ASN1_PKEY_SIGPARAM_NULL 
  - If the signing ctx uses an
      EVP_PKEY private key associated with this
      ameth, instruct
      ASN1_item_sign_ctx(3)
      to use a parameter type of 
V_ASN1_NULL instead of
      the default V_ASN1_UNDEF when encoding the ASN.1
      AlgorithmIdentifier objects with
      X509_ALGOR_set0(3).
      In particular, this is used for EVP_PKEY_RSA. 
EVP_PKEY_asn1_get_count() returns the
    number of available public key methods.
EVP_PKEY_asn1_get0() returns a public key
    method or NULL if idx is out
    of range.
EVP_PKEY_get0_asn1() returns the public
    key method used by pkey.
EVP_PKEY_asn1_find() and
    EVP_PKEY_asn1_find_str() return a matching public
    key method or NULL if no match is found.
EVP_PKEY_asn1_get0_info() returns 1 on
    success or 0 on failure.
These functions first appeared in OpenSSL 1.0.0 and have been
    available since OpenBSD 4.9.