EVP_PKEY_ASN1_GET_COUNT(3) | Library Functions Manual | EVP_PKEY_ASN1_GET_COUNT(3)

# NAME

`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

# SYNOPSIS

library “libcrypto”
`#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);

# DESCRIPTION

`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`.

# RETURN VALUES

`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.

# SEE ALSO

EVP_PKEY_base_id(3), EVP_PKEY_new(3)

# HISTORY

These functions first appeared in OpenSSL 1.0.0 and have been available since OpenBSD 4.9.

June 8, 2025 | Debian