]>
Commit | Line | Data |
---|---|---|
fbaedfdd MC |
1 | =pod |
2 | ||
3 | =head1 NAME | |
4 | ||
a517f7fc MC |
5 | DSA_meth_new, DSA_meth_free, DSA_meth_dup, DSA_meth_get0_name, |
6 | DSA_meth_set1_name, DSA_meth_get_flags, DSA_meth_set_flags, | |
aa05e7ca | 7 | DSA_meth_get0_app_data, DSA_meth_set0_app_data, DSA_meth_get_sign, |
a517f7fc MC |
8 | DSA_meth_set_sign, DSA_meth_get_sign_setup, DSA_meth_set_sign_setup, |
9 | DSA_meth_get_verify, DSA_meth_set_verify, DSA_meth_get_mod_exp, | |
10 | DSA_meth_set_mod_exp, DSA_meth_get_bn_mod_exp, DSA_meth_set_bn_mod_exp, | |
11 | DSA_meth_get_init, DSA_meth_set_init, DSA_meth_get_finish, DSA_meth_set_finish, | |
fbaedfdd | 12 | DSA_meth_get_paramgen, DSA_meth_set_paramgen, DSA_meth_get_keygen, |
2bcb232e | 13 | DSA_meth_set_keygen - Routines to build up DSA methods |
fbaedfdd MC |
14 | |
15 | =head1 SYNOPSIS | |
16 | ||
a517f7fc | 17 | #include <openssl/dsa.h> |
fbaedfdd MC |
18 | |
19 | DSA_METHOD *DSA_meth_new(const char *name, int flags); | |
e9b77246 | 20 | |
fbaedfdd | 21 | void DSA_meth_free(DSA_METHOD *dsam); |
e9b77246 | 22 | |
fbaedfdd | 23 | DSA_METHOD *DSA_meth_dup(const DSA_METHOD *meth); |
e9b77246 | 24 | |
a517f7fc MC |
25 | const char *DSA_meth_get0_name(const DSA_METHOD *dsam); |
26 | int DSA_meth_set1_name(DSA_METHOD *dsam, const char *name); | |
e9b77246 | 27 | |
693be9a2 | 28 | int DSA_meth_get_flags(const DSA_METHOD *dsam); |
fbaedfdd | 29 | int DSA_meth_set_flags(DSA_METHOD *dsam, int flags); |
e9b77246 | 30 | |
aa05e7ca MC |
31 | void *DSA_meth_get0_app_data(const DSA_METHOD *dsam); |
32 | int DSA_meth_set0_app_data(DSA_METHOD *dsam, void *app_data); | |
e9b77246 BB |
33 | |
34 | DSA_SIG *(*DSA_meth_get_sign(const DSA_METHOD *dsam))(const unsigned char *, | |
35 | int, DSA *); | |
36 | int DSA_meth_set_sign(DSA_METHOD *dsam, DSA_SIG *(*sign)(const unsigned char *, | |
37 | int, DSA *)); | |
38 | ||
39 | int (*DSA_meth_get_sign_setup(const DSA_METHOD *dsam))(DSA *, BN_CTX *,$ | |
40 | BIGNUM **, BIGNUM **); | |
41 | int DSA_meth_set_sign_setup(DSA_METHOD *dsam, int (*sign_setup)(DSA *, BN_CTX *, | |
42 | BIGNUM **, BIGNUM **)); | |
43 | ||
44 | int (*DSA_meth_get_verify(const DSA_METHOD *dsam))(const unsigned char *, | |
45 | int, DSA_SIG *, DSA *); | |
46 | int DSA_meth_set_verify(DSA_METHOD *dsam, int (*verify)(const unsigned char *, | |
47 | int, DSA_SIG *, DSA *)); | |
48 | ||
49 | int (*DSA_meth_get_mod_exp(const DSA_METHOD *dsam))(DSA *dsa, BIGNUM *rr, BIGNUM *a1, | |
50 | BIGNUM *p1, BIGNUM *a2, BIGNUM *p2, | |
51 | BIGNUM *m, BN_CTX *ctx, | |
52 | BN_MONT_CTX *in_mont); | |
53 | int DSA_meth_set_mod_exp(DSA_METHOD *dsam, int (*mod_exp)(DSA *dsa, BIGNUM *rr, | |
54 | BIGNUM *a1, BIGNUM *p1, | |
55 | BIGNUM *a2, BIGNUM *p2, | |
56 | BIGNUM *m, BN_CTX *ctx, | |
57 | BN_MONT_CTX *mont)); | |
58 | ||
59 | int (*DSA_meth_get_bn_mod_exp(const DSA_METHOD *dsam))(DSA *dsa, BIGNUM *r, BIGNUM *a, | |
60 | const BIGNUM *p, const BIGNUM *m, | |
61 | BN_CTX *ctx, BN_MONT_CTX *mont); | |
62 | int DSA_meth_set_bn_mod_exp(DSA_METHOD *dsam, int (*bn_mod_exp)(DSA *dsa, | |
63 | BIGNUM *r, | |
64 | BIGNUM *a, | |
65 | const BIGNUM *p, | |
66 | const BIGNUM *m, | |
67 | BN_CTX *ctx, | |
68 | BN_MONT_CTX *mont)); | |
69 | ||
fbaedfdd MC |
70 | int (*DSA_meth_get_init(const DSA_METHOD *dsam))(DSA *); |
71 | int DSA_meth_set_init(DSA_METHOD *dsam, int (*init)(DSA *)); | |
e9b77246 BB |
72 | |
73 | int (*DSA_meth_get_finish(const DSA_METHOD *dsam))(DSA *); | |
74 | int DSA_meth_set_finish(DSA_METHOD *dsam, int (*finish)(DSA *)); | |
75 | ||
76 | int (*DSA_meth_get_paramgen(const DSA_METHOD *dsam))(DSA *, int, | |
77 | const unsigned char *, | |
78 | int, int *, unsigned long *, | |
79 | BN_GENCB *); | |
fbaedfdd | 80 | int DSA_meth_set_paramgen(DSA_METHOD *dsam, |
e9b77246 BB |
81 | int (*paramgen)(DSA *, int, const unsigned char *, |
82 | int, int *, unsigned long *, BN_GENCB *)); | |
83 | ||
84 | int (*DSA_meth_get_keygen(const DSA_METHOD *dsam))(DSA *); | |
85 | int DSA_meth_set_keygen(DSA_METHOD *dsam, int (*keygen)(DSA *)); | |
fbaedfdd MC |
86 | |
87 | =head1 DESCRIPTION | |
88 | ||
89 | The B<DSA_METHOD> type is a structure used for the provision of custom DSA | |
a970b14f | 90 | implementations. It provides a set of functions used by OpenSSL for the |
fbaedfdd MC |
91 | implementation of the various DSA capabilities. See the L<dsa> page for more |
92 | information. | |
93 | ||
94 | DSA_meth_new() creates a new B<DSA_METHOD> structure. It should be given a | |
95 | unique B<name> and a set of B<flags>. The B<name> should be a NULL terminated | |
96 | string, which will be duplicated and stored in the B<DSA_METHOD> object. It is | |
97 | the callers responsibility to free the original string. The flags will be used | |
98 | during the construction of a new B<DSA> object based on this B<DSA_METHOD>. Any | |
99 | new B<DSA> object will have those flags set by default. | |
100 | ||
101 | DSA_meth_dup() creates a duplicate copy of the B<DSA_METHOD> object passed as a | |
102 | parameter. This might be useful for creating a new B<DSA_METHOD> based on an | |
103 | existing one, but with some differences. | |
104 | ||
105 | DSA_meth_free() destroys a B<DSA_METHOD> structure and frees up any memory | |
106 | associated with it. | |
107 | ||
a517f7fc MC |
108 | DSA_meth_get0_name() will return a pointer to the name of this DSA_METHOD. This |
109 | is a pointer to the internal name string and so should not be freed by the | |
110 | caller. DSA_meth_set1_name() sets the name of the DSA_METHOD to B<name>. The | |
111 | string is duplicated and the copy is stored in the DSA_METHOD structure, so the | |
112 | caller remains responsible for freeing the memory associated with the name. | |
113 | ||
fbaedfdd MC |
114 | DSA_meth_get_flags() returns the current value of the flags associated with this |
115 | DSA_METHOD. DSA_meth_set_flags() provides the ability to set these flags. | |
116 | ||
aa05e7ca | 117 | The functions DSA_meth_get0_app_data() and DSA_meth_set0_app_data() provide the |
fbaedfdd MC |
118 | ability to associate implementation specific data with the DSA_METHOD. It is |
119 | the application's responsibility to free this data before the DSA_METHOD is | |
120 | freed via a call to DSA_meth_free(). | |
121 | ||
122 | DSA_meth_get_sign() and DSA_meth_set_sign() get and set the function used for | |
123 | creating a DSA signature respectively. This function will be | |
124 | called in response to the application calling DSA_do_sign() (or DSA_sign()). The | |
125 | parameters for the function have the same meaning as for DSA_do_sign(). | |
126 | ||
127 | DSA_meth_get_sign_setup() and DSA_meth_set_sign_setup() get and set the function | |
128 | used for precalculating the DSA signature values B<k^-1> and B<r>. This function | |
129 | will be called in response to the application calling DSA_sign_setup(). The | |
130 | parameters for the function have the same meaning as for DSA_sign_setup(). | |
131 | ||
132 | DSA_meth_get_verify() and DSA_meth_set_verify() get and set the function used | |
133 | for verifying a DSA signature respectively. This function will be called in | |
134 | response to the application calling DSA_do_verify() (or DSA_verify()). The | |
135 | parameters for the function have the same meaning as for DSA_do_verify(). | |
136 | ||
137 | DSA_meth_get_mod_exp() and DSA_meth_set_mod_exp() get and set the function used | |
138 | for computing the following value: | |
139 | ||
140 | rr = a1^p1 * a2^p2 mod m | |
141 | ||
142 | This function will be called by the default OpenSSL method during verification | |
143 | of a DSA signature. The result is stored in the B<rr> parameter. This function | |
144 | may be NULL. | |
145 | ||
146 | DSA_meth_get_bn_mod_exp() and DSA_meth_set_bn_mod_exp() get and set the function | |
147 | used for computing the following value: | |
148 | ||
149 | r = a ^ p mod m | |
150 | ||
151 | This function will be called by the default OpenSSL function for | |
152 | DSA_sign_setup(). The result is stored in the B<r> parameter. This function | |
153 | may be NULL. | |
154 | ||
155 | DSA_meth_get_init() and DSA_meth_set_init() get and set the function used | |
156 | for creating a new DSA instance respectively. This function will be | |
157 | called in response to the application calling DSA_new() (if the current default | |
158 | DSA_METHOD is this one) or DSA_new_method(). The DSA_new() and DSA_new_method() | |
159 | functions will allocate the memory for the new DSA object, and a pointer to this | |
160 | newly allocated structure will be passed as a parameter to the function. This | |
161 | function may be NULL. | |
162 | ||
163 | DSA_meth_get_finish() and DSA_meth_set_finish() get and set the function used | |
164 | for destroying an instance of a DSA object respectively. This function will be | |
165 | called in response to the application calling DSA_free(). A pointer to the DSA | |
166 | to be destroyed is passed as a parameter. The destroy function should be used | |
167 | for DSA implementation specific clean up. The memory for the DSA itself should | |
168 | not be freed by this function. This function may be NULL. | |
169 | ||
170 | DSA_meth_get_paramgen() and DSA_meth_set_paramgen() get and set the function | |
171 | used for generating DSA parameters respectively. This function will be called in | |
172 | response to the application calling DSA_generate_parameters_ex() (or | |
173 | DSA_generate_parameters()). The parameters for the function have the same | |
174 | meaning as for DSA_generate_parameters_ex(). | |
175 | ||
176 | DSA_meth_get_keygen() and DSA_meth_set_keygen() get and set the function | |
177 | used for generating a new DSA key pair respectively. This function will be | |
178 | called in response to the application calling DSA_generate_key(). The parameter | |
179 | for the function has the same meaning as for DSA_generate_key(). | |
180 | ||
181 | =head1 RETURN VALUES | |
182 | ||
183 | DSA_meth_new() and DSA_meth_dup() return the newly allocated DSA_METHOD object | |
184 | or NULL on failure. | |
185 | ||
a517f7fc | 186 | DSA_meth_get0_name() and DSA_meth_get_flags() return the name and flags |
fbaedfdd MC |
187 | associated with the DSA_METHOD respectively. |
188 | ||
189 | All other DSA_meth_get_*() functions return the appropriate function pointer | |
190 | that has been set in the DSA_METHOD, or NULL if no such pointer has yet been | |
191 | set. | |
192 | ||
a517f7fc MC |
193 | DSA_meth_set1_name() and all DSA_meth_set_*() functions return 1 on success or |
194 | 0 on failure. | |
fbaedfdd MC |
195 | |
196 | =head1 SEE ALSO | |
197 | ||
b97fdb57 | 198 | L<DSA_new(3)>, L<DSA_new(3)>, L<DSA_generate_parameters(3)>, L<DSA_generate_key(3)>, |
ecba1fb3 | 199 | L<DSA_dup_DH(3)>, L<DSA_do_sign(3)>, L<DSA_set_method(3)>, L<DSA_SIG_new(3)>, |
a517f7fc | 200 | L<DSA_sign(3)>, L<DSA_size(3)>, L<DSA_get0_pqg(3)> |
fbaedfdd MC |
201 | |
202 | =head1 HISTORY | |
203 | ||
e90fc053 | 204 | The functions described here were added in OpenSSL 1.1.0. |
fbaedfdd | 205 | |
e2f92610 RS |
206 | =head1 COPYRIGHT |
207 | ||
c4d3c19b | 208 | Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. |
e2f92610 | 209 | |
4746f25a | 210 | Licensed under the Apache License 2.0 (the "License"). You may not use |
e2f92610 RS |
211 | this file except in compliance with the License. You can obtain a copy |
212 | in the file LICENSE in the source distribution or at | |
213 | L<https://www.openssl.org/source/license.html>. | |
214 | ||
215 | =cut |