Sortix
Sortix Download Manual Development News Blog More
current nightly

Sortix nightly manual

This manual documents Sortix nightly, a development build that has not been officially released. You can instead view this document in the latest official manual.

EVP_PKEY_NEW(3) Library Functions Manual EVP_PKEY_NEW(3)

NAME

EVP_PKEY_new, EVP_PKEY_up_ref, EVP_PKEY_free, EVP_PKEY_new_CMAC_key, EVP_PKEY_new_mac_key —
private key allocation functions

SYNOPSIS

#include <openssl/evp.h>
EVP_PKEY *
EVP_PKEY_new(void);
int
EVP_PKEY_up_ref(EVP_PKEY *key);
void
EVP_PKEY_free(EVP_PKEY *key);
EVP_PKEY *
EVP_PKEY_new_CMAC_key(ENGINE *e, const unsigned char *priv, size_t len, const EVP_CIPHER *cipher);
EVP_PKEY *
EVP_PKEY_new_mac_key(int type, ENGINE *e, const unsigned char *key, int keylen);

DESCRIPTION

The EVP_PKEY structure is used by various OpenSSL functions which require a general private key without reference to any particular algorithm.
The EVP_PKEY_new() function allocates an empty EVP_PKEY structure. The reference count is set to 1. To add a private or public key to it, use the functions described in EVP_PKEY_set1_RSA(3).
EVP_PKEY_up_ref() increments the reference count of key by 1.
EVP_PKEY_free() decrements the reference count of key by 1, and if the reference count reaches zero, frees it up. If key is a NULL pointer, no action occurs.
EVP_PKEY_new_CMAC_key() allocates a new EVP_PKEY for the EVP_PKEY_CMAC algorithm type. If e is non-NULL, then the new EVP_PKEY is associated with the engine e. priv points to the raw private key data of length len for this EVP_PKEY. cipher specifies a cipher algorithm to be used during creation of the CMAC. cipher should be a standard encryption only cipher. For example, AEAD and XTS ciphers should not be used.
EVP_PKEY_new_mac_key() allocates a new EVP_PKEY. If e is non-NULL, then the new EVP_PKEY structure is associated with the engine e. The type argument indicates what kind of key this is. The value should be a NID for a public key algorithm that supports raw private keys, for example EVP_PKEY_HMAC. key points to the raw private key data for this EVP_PKEY which should be of length keylen. The length should be appropriate for the type of the key. The public key data will be automatically derived from the given private key data (if appropriate for the algorithm type).

RETURN VALUES

EVP_PKEY_new(), EVP_PKEY_new_CMAC_key(), and EVP_PKEY_new_mac_key() return either the newly allocated EVP_PKEY structure or NULL if an error occurred.
EVP_PKEY_up_ref() returns 1 for success or 0 for failure.

SEE ALSO

CMAC_Init(3), d2i_PrivateKey(3), evp(3), EVP_PKCS82PKEY(3), EVP_PKEY_add1_attr(3), EVP_PKEY_asn1_new(3), EVP_PKEY_check(3), EVP_PKEY_cmp(3), EVP_PKEY_CTX_new(3), EVP_PKEY_get_default_digest_nid(3), EVP_PKEY_meth_new(3), EVP_PKEY_print_private(3), EVP_PKEY_set1_RSA(3), EVP_PKEY_size(3), X509_get_pubkey_parameters(3)

HISTORY

EVP_PKEY_new() and EVP_PKEY_free() first appeared in SSLeay 0.6.0 and have been available since OpenBSD 2.4.
EVP_PKEY_new_CMAC_key() first appeared in OpenSSL 1.1.1 and has been available since OpenBSD 6.9.
EVP_PKEY_new_mac_key() first appeared in OpenSSL 1.0.0 and has been available since OpenBSD 4.9.
EVP_PKEY_up_ref() first appeared in OpenSSL 1.1.0 and has been available since OpenBSD 6.3.
July 13, 2022 Debian
Copyright 2011-2023 Jonas 'Sortie' Termansen and contributors.
Sortix is free software under the ISC license.
#sortix on irc.sortix.org
@sortix_org