EVP_PKEY_GET_DEFAULT_DIGEST_NID(3) | Library Functions Manual | EVP_PKEY_GET_DEFAULT_DIGEST_NID(3)

# NAME

`EVP_PKEY_get_default_digest_nid` — get default signature digest

# SYNOPSIS

library “libcrypto”
`#include <openssl/evp.h>`

int
`EVP_PKEY_get_default_digest_nid`(EVP_PKEY *pkey, int *pnid);

# DESCRIPTION

The `EVP_PKEY_get_default_digest_nid`() function sets *pnid to the default message digest NID for the public key signature operations associated with pkey.

Some signature algorithms, for example `EVP_PKEY_ED25519`, do not use a digest during signing. In this case, *pnid is set to `NID_undef`.

Support for the following public key algorithms is built into the library:

EVP_PKEY_base_id(3) | *pnid | return value
`EVP_PKEY_DSA` | `NID_sha1` | mandatory
`EVP_PKEY_EC` | `NID_sha1` | mandatory
`EVP_PKEY_ED25519` | `NID_undef` | mandatory
`EVP_PKEY_HMAC` | `NID_sha1` | advisory
`EVP_PKEY_RSA` | `NID_sha256` | advisory

# RETURN VALUES

The `EVP_PKEY_get_default_digest_nid`() function returns 1 if the message digest is advisory (that is other digests can be used) and 2 if it is mandatory (other digests cannot be used). It returns 0 or a negative value for failure. In particular, a return value of -2 indicates the operation is not supported by the public key algorithm.

# SEE ALSO

EVP_PKEY_CTX_ctrl(3), EVP_PKEY_CTX_new(3), EVP_PKEY_new(3), EVP_PKEY_sign(3), EVP_PKEY_verify(3), EVP_PKEY_verify_recover(3)

# HISTORY

`EVP_PKEY_get_default_digest_nid`() first appeared in OpenSSL 1.0.0 and has been available since OpenBSD 4.9.

June 8, 2025 | Debian