Blame doc/man3/EVP_PKEY_set1_RSA.pod

Packit Service 084de1
=pod
Packit Service 084de1
Packit Service 084de1
=head1 NAME
Packit Service 084de1
Packit Service 084de1
EVP_PKEY_set1_RSA, EVP_PKEY_set1_DSA, EVP_PKEY_set1_DH, EVP_PKEY_set1_EC_KEY,
Packit Service 084de1
EVP_PKEY_get1_RSA, EVP_PKEY_get1_DSA, EVP_PKEY_get1_DH, EVP_PKEY_get1_EC_KEY,
Packit Service 084de1
EVP_PKEY_get0_RSA, EVP_PKEY_get0_DSA, EVP_PKEY_get0_DH, EVP_PKEY_get0_EC_KEY,
Packit Service 084de1
EVP_PKEY_assign_RSA, EVP_PKEY_assign_DSA, EVP_PKEY_assign_DH,
Packit Service 084de1
EVP_PKEY_assign_EC_KEY, EVP_PKEY_assign_POLY1305, EVP_PKEY_assign_SIPHASH,
Packit Service 084de1
EVP_PKEY_get0_hmac, EVP_PKEY_get0_poly1305, EVP_PKEY_get0_siphash,
Packit Service 084de1
EVP_PKEY_type, EVP_PKEY_id, EVP_PKEY_base_id, EVP_PKEY_set_alias_type,
Packit Service 084de1
EVP_PKEY_set1_engine, EVP_PKEY_get0_engine - EVP_PKEY assignment functions
Packit Service 084de1
Packit Service 084de1
=head1 SYNOPSIS
Packit Service 084de1
Packit Service 084de1
 #include <openssl/evp.h>
Packit Service 084de1
Packit Service 084de1
 int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, RSA *key);
Packit Service 084de1
 int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, DSA *key);
Packit Service 084de1
 int EVP_PKEY_set1_DH(EVP_PKEY *pkey, DH *key);
Packit Service 084de1
 int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, EC_KEY *key);
Packit Service 084de1
Packit Service 084de1
 RSA *EVP_PKEY_get1_RSA(EVP_PKEY *pkey);
Packit Service 084de1
 DSA *EVP_PKEY_get1_DSA(EVP_PKEY *pkey);
Packit Service 084de1
 DH *EVP_PKEY_get1_DH(EVP_PKEY *pkey);
Packit Service 084de1
 EC_KEY *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey);
Packit Service 084de1
Packit Service 084de1
 const unsigned char *EVP_PKEY_get0_hmac(const EVP_PKEY *pkey, size_t *len);
Packit Service 084de1
 const unsigned char *EVP_PKEY_get0_poly1305(const EVP_PKEY *pkey, size_t *len);
Packit Service 084de1
 const unsigned char *EVP_PKEY_get0_siphash(const EVP_PKEY *pkey, size_t *len);
Packit Service 084de1
 RSA *EVP_PKEY_get0_RSA(EVP_PKEY *pkey);
Packit Service 084de1
 DSA *EVP_PKEY_get0_DSA(EVP_PKEY *pkey);
Packit Service 084de1
 DH *EVP_PKEY_get0_DH(EVP_PKEY *pkey);
Packit Service 084de1
 EC_KEY *EVP_PKEY_get0_EC_KEY(EVP_PKEY *pkey);
Packit Service 084de1
Packit Service 084de1
 int EVP_PKEY_assign_RSA(EVP_PKEY *pkey, RSA *key);
Packit Service 084de1
 int EVP_PKEY_assign_DSA(EVP_PKEY *pkey, DSA *key);
Packit Service 084de1
 int EVP_PKEY_assign_DH(EVP_PKEY *pkey, DH *key);
Packit Service 084de1
 int EVP_PKEY_assign_EC_KEY(EVP_PKEY *pkey, EC_KEY *key);
Packit Service 084de1
 int EVP_PKEY_assign_POLY1305(EVP_PKEY *pkey, ASN1_OCTET_STRING *key);
Packit Service 084de1
 int EVP_PKEY_assign_SIPHASH(EVP_PKEY *pkey, ASN1_OCTET_STRING *key);
Packit Service 084de1
Packit Service 084de1
 int EVP_PKEY_id(const EVP_PKEY *pkey);
Packit Service 084de1
 int EVP_PKEY_base_id(const EVP_PKEY *pkey);
Packit Service 084de1
 int EVP_PKEY_type(int type);
Packit Service 084de1
 int EVP_PKEY_set_alias_type(EVP_PKEY *pkey, int type);
Packit Service 084de1
Packit Service 084de1
 ENGINE *EVP_PKEY_get0_engine(const EVP_PKEY *pkey);
Packit Service 084de1
 int EVP_PKEY_set1_engine(EVP_PKEY *pkey, ENGINE *engine);
Packit Service 084de1
Packit Service 084de1
=head1 DESCRIPTION
Packit Service 084de1
Packit Service 084de1
EVP_PKEY_set1_RSA(), EVP_PKEY_set1_DSA(), EVP_PKEY_set1_DH() and
Packit Service 084de1
EVP_PKEY_set1_EC_KEY() set the key referenced by B<pkey> to B<key>.
Packit Service 084de1
Packit Service 084de1
EVP_PKEY_get1_RSA(), EVP_PKEY_get1_DSA(), EVP_PKEY_get1_DH() and
Packit Service 084de1
EVP_PKEY_get1_EC_KEY() return the referenced key in B<pkey> or
Packit Service 084de1
B<NULL> if the key is not of the correct type.
Packit Service 084de1
Packit Service 084de1
EVP_PKEY_get0_hmac(), EVP_PKEY_get0_poly1305(), EVP_PKEY_get0_siphash(),
Packit Service 084de1
EVP_PKEY_get0_RSA(), EVP_PKEY_get0_DSA(), EVP_PKEY_get0_DH()
Packit Service 084de1
and EVP_PKEY_get0_EC_KEY() also return the referenced key in B<pkey> or B<NULL>
Packit Service 084de1
if the key is not of the correct type but the reference count of the
Packit Service 084de1
returned key is B<not> incremented and so must not be freed up after use.
Packit Service 084de1
Packit Service 084de1
EVP_PKEY_assign_RSA(), EVP_PKEY_assign_DSA(), EVP_PKEY_assign_DH(),
Packit Service 084de1
EVP_PKEY_assign_EC_KEY(), EVP_PKEY_assign_POLY1305() and
Packit Service 084de1
EVP_PKEY_assign_SIPHASH() also set the referenced key to B<key>
Packit Service 084de1
however these use the supplied B<key> internally and so B<key>
Packit Service 084de1
will be freed when the parent B<pkey> is freed.
Packit Service 084de1
Packit Service 084de1
EVP_PKEY_base_id() returns the type of B<pkey>. For example
Packit Service 084de1
an RSA key will return B<EVP_PKEY_RSA>.
Packit Service 084de1
Packit Service 084de1
EVP_PKEY_id() returns the actual OID associated with B<pkey>. Historically keys
Packit Service 084de1
using the same algorithm could use different OIDs. For example an RSA key could
Packit Service 084de1
use the OIDs corresponding to the NIDs B<NID_rsaEncryption> (equivalent to
Packit Service 084de1
B<EVP_PKEY_RSA>) or B<NID_rsa> (equivalent to B<EVP_PKEY_RSA2>). The use of
Packit Service 084de1
alternative non-standard OIDs is now rare so B<EVP_PKEY_RSA2> et al are not
Packit Service 084de1
often seen in practice.
Packit Service 084de1
Packit Service 084de1
EVP_PKEY_type() returns the underlying type of the NID B<type>. For example
Packit Service 084de1
EVP_PKEY_type(EVP_PKEY_RSA2) will return B<EVP_PKEY_RSA>.
Packit Service 084de1
Packit Service 084de1
EVP_PKEY_get0_engine() returns a reference to the ENGINE handling B<pkey>.
Packit Service 084de1
Packit Service 084de1
EVP_PKEY_set1_engine() sets the ENGINE handling B<pkey> to B<engine>. It
Packit Service 084de1
must be called after the key algorithm and components are set up.
Packit Service 084de1
If B<engine> does not include an B<EVP_PKEY_METHOD> for B<pkey> an
Packit Service 084de1
error occurs.
Packit Service 084de1
Packit Service 084de1
EVP_PKEY_set_alias_type() allows modifying a EVP_PKEY to use a
Packit Service 084de1
different set of algorithms than the default. This is currently used
Packit Service 084de1
to support SM2 keys, which use an identical encoding to ECDSA.
Packit Service 084de1
Packit Service 084de1
=head1 NOTES
Packit Service 084de1
Packit Service 084de1
In accordance with the OpenSSL naming convention the key obtained
Packit Service 084de1
from or assigned to the B<pkey> using the B<1> functions must be
Packit Service 084de1
freed as well as B<pkey>.
Packit Service 084de1
Packit Service 084de1
EVP_PKEY_assign_RSA(), EVP_PKEY_assign_DSA(), EVP_PKEY_assign_DH(),
Packit Service 084de1
EVP_PKEY_assign_EC_KEY(), EVP_PKEY_assign_POLY1305()
Packit Service 084de1
and EVP_PKEY_assign_SIPHASH() are implemented as macros.
Packit Service 084de1
Packit Service 084de1
Most applications wishing to know a key type will simply call
Packit Service 084de1
EVP_PKEY_base_id() and will not care about the actual type:
Packit Service 084de1
which will be identical in almost all cases.
Packit Service 084de1
Packit Service 084de1
Previous versions of this document suggested using EVP_PKEY_type(pkey->type)
Packit Service 084de1
to determine the type of a key. Since B<EVP_PKEY> is now opaque this
Packit Service 084de1
is no longer possible: the equivalent is EVP_PKEY_base_id(pkey).
Packit Service 084de1
Packit Service 084de1
EVP_PKEY_set1_engine() is typically used by an ENGINE returning an HSM
Packit Service 084de1
key as part of its routine to load a private key.
Packit Service 084de1
Packit Service 084de1
=head1 RETURN VALUES
Packit Service 084de1
Packit Service 084de1
EVP_PKEY_set1_RSA(), EVP_PKEY_set1_DSA(), EVP_PKEY_set1_DH() and
Packit Service 084de1
EVP_PKEY_set1_EC_KEY() return 1 for success or 0 for failure.
Packit Service 084de1
Packit Service 084de1
EVP_PKEY_get1_RSA(), EVP_PKEY_get1_DSA(), EVP_PKEY_get1_DH() and
Packit Service 084de1
EVP_PKEY_get1_EC_KEY() return the referenced key or B<NULL> if
Packit Service 084de1
an error occurred.
Packit Service 084de1
Packit Service 084de1
EVP_PKEY_assign_RSA(), EVP_PKEY_assign_DSA(), EVP_PKEY_assign_DH(),
Packit Service 084de1
EVP_PKEY_assign_EC_KEY(), EVP_PKEY_assign_POLY1305()
Packit Service 084de1
and EVP_PKEY_assign_SIPHASH() return 1 for success and 0 for failure.
Packit Service 084de1
Packit Service 084de1
EVP_PKEY_base_id(), EVP_PKEY_id() and EVP_PKEY_type() return a key
Packit Service 084de1
type or B<NID_undef> (equivalently B<EVP_PKEY_NONE>) on error.
Packit Service 084de1
Packit Service 084de1
EVP_PKEY_set1_engine() returns 1 for success and 0 for failure.
Packit Service 084de1
Packit Service 084de1
EVP_PKEY_set_alias_type() returns 1 for success and 0 for error.
Packit Service 084de1
Packit Service 084de1
=head1 EXAMPLES
Packit Service 084de1
Packit Service 084de1
After loading an ECC key, it is possible to convert it to using SM2
Packit Service 084de1
algorithms with EVP_PKEY_set_alias_type:
Packit Service 084de1
Packit Service 084de1
 EVP_PKEY_set_alias_type(pkey, EVP_PKEY_SM2);
Packit Service 084de1
Packit Service 084de1
=head1 SEE ALSO
Packit Service 084de1
Packit Service 084de1
L<EVP_PKEY_new(3)>
Packit Service 084de1
Packit Service 084de1
=head1 COPYRIGHT
Packit Service 084de1
Packit Service 084de1
Copyright 2002-2019 The OpenSSL Project Authors. All Rights Reserved.
Packit Service 084de1
Packit Service 084de1
Licensed under the OpenSSL license (the "License").  You may not use
Packit Service 084de1
this file except in compliance with the License.  You can obtain a copy
Packit Service 084de1
in the file LICENSE in the source distribution or at
Packit Service 084de1
L<https://www.openssl.org/source/license.html>.
Packit Service 084de1
Packit Service 084de1
=cut