]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/man3/DH_get0_pqg.pod
Deprecate the low level Diffie-Hellman functions.
[thirdparty/openssl.git] / doc / man3 / DH_get0_pqg.pod
CommitLineData
0263b992
MC
1=pod
2
3=head1 NAME
4
6db7fadf
DMSP
5DH_get0_pqg, DH_set0_pqg, DH_get0_key, DH_set0_key,
6DH_get0_p, DH_get0_q, DH_get0_g,
7DH_get0_priv_key, DH_get0_pub_key,
8DH_clear_flags, DH_test_flags, DH_set_flags, DH_get0_engine,
9DH_get_length, DH_set_length - Routines for getting and setting data in a DH object
0263b992
MC
10
11=head1 SYNOPSIS
12
13 #include <openssl/dh.h>
14
fd809cfd
RL
15 void DH_get0_pqg(const DH *dh,
16 const BIGNUM **p, const BIGNUM **q, const BIGNUM **g);
0263b992 17 int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g);
fd809cfd
RL
18 void DH_get0_key(const DH *dh,
19 const BIGNUM **pub_key, const BIGNUM **priv_key);
0263b992 20 int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key);
6db7fadf
DMSP
21 const BIGNUM *DH_get0_p(const DH *dh);
22 const BIGNUM *DH_get0_q(const DH *dh);
23 const BIGNUM *DH_get0_g(const DH *dh);
24 const BIGNUM *DH_get0_priv_key(const DH *dh);
25 const BIGNUM *DH_get0_pub_key(const DH *dh);
0263b992
MC
26 void DH_clear_flags(DH *dh, int flags);
27 int DH_test_flags(const DH *dh, int flags);
28 void DH_set_flags(DH *dh, int flags);
ada66e78
P
29
30Deprecated since OpenSSL 3.0, can be hidden entirely by defining
31B<OPENSSL_API_COMPAT> with a suitable version value, see
32L<openssl_user_macros(7)>:
33
0263b992
MC
34 ENGINE *DH_get0_engine(DH *d);
35 long DH_get_length(const DH *dh);
36 int DH_set_length(DH *dh, long length);
37
38=head1 DESCRIPTION
39
40A DH object contains the parameters B<p>, B<q> and B<g>. Note that the B<q>
41parameter is optional. It also contains a public key (B<pub_key>) and
42(optionally) a private key (B<priv_key>).
43
44The B<p>, B<q> and B<g> parameters can be obtained by calling DH_get0_pqg().
45If the parameters have not yet been set then B<*p>, B<*q> and B<*g> will be set
46to NULL. Otherwise they are set to pointers to their respective values. These
47point directly to the internal representations of the values and therefore
48should not be freed directly.
5777254b
DMSP
49Any of the out parameters B<p>, B<q>, and B<g> can be NULL, in which case no
50value will be returned for that parameter.
0263b992
MC
51
52The B<p>, B<q> and B<g> values can be set by calling DH_set0_pqg() and passing
53the new values for B<p>, B<q> and B<g> as parameters to the function. Calling
54this function transfers the memory management of the values to the DH object,
55and therefore the values that have been passed in should not be freed directly
56after this function has been called. The B<q> parameter may be NULL.
57
58To get the public and private key values use the DH_get0_key() function. A
59pointer to the public key will be stored in B<*pub_key>, and a pointer to the
60private key will be stored in B<*priv_key>. Either may be NULL if they have not
61been set yet, although if the private key has been set then the public key must
62be. The values point to the internal representation of the public key and
63private key values. This memory should not be freed directly.
5777254b
DMSP
64Any of the out parameters B<pub_key> and B<priv_key> can be NULL, in which case
65no value will be returned for that parameter.
0263b992 66
7966101e
DB
67The public and private key values can be set using DH_set0_key(). Either
68parameter may be NULL, which means the corresponding DH field is left
69untouched. As with DH_set0_pqg() this function transfers the memory management
70of the key values to the DH object, and therefore they should not be freed
71directly after this function has been called.
0263b992 72
6db7fadf
DMSP
73Any of the values B<p>, B<q>, B<g>, B<priv_key>, and B<pub_key> can also be
74retrieved separately by the corresponding function DH_get0_p(), DH_get0_q(),
75DH_get0_g(), DH_get0_priv_key(), and DH_get0_pub_key(), respectively.
76
0263b992
MC
77DH_set_flags() sets the flags in the B<flags> parameter on the DH object.
78Multiple flags can be passed in one go (bitwise ORed together). Any flags that
79are already set are left set. DH_test_flags() tests to see whether the flags
80passed in the B<flags> parameter are currently set in the DH object. Multiple
81flags can be tested in one go. All flags that are currently set are returned, or
82zero if none of the flags are set. DH_clear_flags() clears the specified flags
83within the DH object.
84
85DH_get0_engine() returns a handle to the ENGINE that has been set for this DH
ada66e78 86object, or NULL if no such ENGINE has been set. This function is deprecated.
0263b992
MC
87
88The DH_get_length() and DH_set_length() functions get and set the optional
9c0586d5 89length parameter associated with this DH object. If the length is nonzero then
0263b992 90it is used, otherwise it is ignored. The B<length> parameter indicates the
ada66e78
P
91length of the secret exponent (private key) in bits. These functions are
92deprecated.
0263b992 93
4c5e6b2c
RL
94=head1 NOTES
95
96Values retrieved with DH_get0_key() are owned by the DH object used
97in the call and may therefore I<not> be passed to DH_set0_key(). If
98needed, duplicate the received value using BN_dup() and pass the
99duplicate. The same applies to DH_get0_pqg() and DH_set0_pqg().
100
0263b992
MC
101=head1 RETURN VALUES
102
103DH_set0_pqg() and DH_set0_key() return 1 on success or 0 on failure.
104
6db7fadf 105DH_get0_p(), DH_get0_q(), DH_get0_g(), DH_get0_priv_key(), and DH_get0_pub_key()
5777254b 106return the respective value, or NULL if it is unset.
6db7fadf 107
0263b992
MC
108DH_test_flags() returns the current state of the flags in the DH object.
109
110DH_get0_engine() returns the ENGINE set for the DH object or NULL if no ENGINE
111has been set.
112
113DH_get_length() returns the length of the secret exponent (private key) in bits,
114or zero if no such length has been explicitly set.
115
116=head1 SEE ALSO
117
b97fdb57 118L<DH_new(3)>, L<DH_new(3)>, L<DH_generate_parameters(3)>, L<DH_generate_key(3)>,
0263b992
MC
119L<DH_set_method(3)>, L<DH_size(3)>, L<DH_meth_new(3)>
120
121=head1 HISTORY
122
ada66e78
P
123The DH_get0_engine(), DH_get_length() and DH_set_length() functions were
124deprecated in OpenSSL 3.0.
125
e90fc053 126The functions described here were added in OpenSSL 1.1.0.
0263b992 127
e2f92610
RS
128=head1 COPYRIGHT
129
83cf7abf 130Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved.
e2f92610 131
4746f25a 132Licensed under the Apache License 2.0 (the "License"). You may not use
e2f92610
RS
133this file except in compliance with the License. You can obtain a copy
134in the file LICENSE in the source distribution or at
135L<https://www.openssl.org/source/license.html>.
136
137=cut