1=pod
2
3=head1 NAME
4
5EVP_PKEY_missing_parameters, EVP_PKEY_copy_parameters, EVP_PKEY_parameters_eq,
6EVP_PKEY_cmp_parameters, EVP_PKEY_eq,
7EVP_PKEY_cmp - public key parameter and comparison functions
8
9=head1 SYNOPSIS
10
11 #include <openssl/evp.h>
12
13 int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey);
14 int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from);
15
16 int EVP_PKEY_parameters_eq(const EVP_PKEY *a, const EVP_PKEY *b);
17 int EVP_PKEY_eq(const EVP_PKEY *a, const EVP_PKEY *b);
18
19Deprecated since OpenSSL 3.0, can be hidden entirely by defining
20B<OPENSSL_API_COMPAT> with a suitable version value, see
21L<openssl_user_macros(7)>:
22
23 int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b);
24 int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b);
25
26=head1 DESCRIPTION
27
28The function EVP_PKEY_missing_parameters() returns 1 if the public key
29parameters of B<pkey> are missing and 0 if they are present or the algorithm
30doesn't use parameters.
31
32The function EVP_PKEY_copy_parameters() copies the parameters from key
33B<from> to key B<to>. An error is returned if the parameters are missing in
34B<from> or present in both B<from> and B<to> and mismatch. If the parameters
35in B<from> and B<to> are both present and match this function has no effect.
36
37The function EVP_PKEY_parameters_eq() checks the parameters of keys
38B<a> and B<b> for equality.
39
40The function EVP_PKEY_eq() checks the public key components and parameters
41(if present) of keys B<a> and B<b> for equality.
42
43=head1 NOTES
44
45The main purpose of the functions EVP_PKEY_missing_parameters() and
46EVP_PKEY_copy_parameters() is to handle public keys in certificates where the
47parameters are sometimes omitted from a public key if they are inherited from
48the CA that signed it.
49
50Since OpenSSL private keys contain public key components too the function
51EVP_PKEY_eq() can also be used to determine if a private key matches
52a public key.
53
54The deprecated functions EVP_PKEY_cmp() and EVP_PKEY_cmp_parameters() differ in
55their return values  compared to other _cmp() functions. They are aliases for
56EVP_PKEY_eq() and EVP_PKEY_parameters_eq().
57
58=head1 RETURN VALUES
59
60The function EVP_PKEY_missing_parameters() returns 1 if the public key
61parameters of B<pkey> are missing and 0 if they are present or the algorithm
62doesn't use parameters.
63
64These functions EVP_PKEY_copy_parameters() returns 1 for success and 0 for
65failure.
66
67The functions EVP_PKEY_cmp_parameters(), EVP_PKEY_parameters_eq(),
68EVP_PKEY_cmp() and EVP_PKEY_eq() return 1 if their
69inputs match, 0 if they don't match, -1 if the key types are different and
70-2 if the operation is not supported.
71
72=head1 SEE ALSO
73
74L<EVP_PKEY_CTX_new(3)>,
75L<EVP_PKEY_keygen(3)>
76
77=head1 HISTORY
78
79The EVP_PKEY_cmp() and EVP_PKEY_cmp_parameters() functions were deprecated in
80OpenSSL 3.0.
81
82The EVP_PKEY_eq() and EVP_PKEY_parameters_eq() were added in OpenSSL 3.0 to
83replace EVP_PKEY_cmp() and EVP_PKEY_cmp_parameters().
84
85=head1 COPYRIGHT
86
87Copyright 2006-2021 The OpenSSL Project Authors. All Rights Reserved.
88
89Licensed under the Apache License 2.0 (the "License").  You may not use
90this file except in compliance with the License.  You can obtain a copy
91in the file LICENSE in the source distribution or at
92L<https://www.openssl.org/source/license.html>.
93
94=cut
95