Sync with trunk revision 64099.
[reactos.git] / include / reactos / libs / gnutls / gnutls / compat.h
1 /*
2 * Copyright (C) 2008-2012 Free Software Foundation, Inc.
3 *
4 * Author: Nikos Mavrogiannopoulos
5 *
6 * This file is part of GnuTLS.
7 *
8 * The GnuTLS is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public License
10 * as published by the Free Software Foundation; either version 2.1 of
11 * the License, or (at your option) any later version.
12 *
13 * This library is distributed in the hope that it will be useful, but
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public License
19 * along with this program. If not, see <http://www.gnu.org/licenses/>
20 *
21 */
22
23 /* Typedefs for more compatibility with older GnuTLS. */
24
25 #ifndef _GNUTLS_COMPAT_H
26 #define _GNUTLS_COMPAT_H
27
28 /* *INDENT-OFF* */
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32 /* *INDENT-ON* */
33
34 #ifdef __GNUC__
35
36 #define _GNUTLS_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
37
38 #if !defined GNUTLS_INTERNAL_BUILD
39 #if _GNUTLS_GCC_VERSION >= 30100
40 #define _GNUTLS_GCC_ATTR_DEPRECATED __attribute__ ((__deprecated__))
41 #endif
42 #endif
43
44 #endif /* __GNUC__ */
45
46 #ifndef _GNUTLS_GCC_ATTR_DEPRECATED
47 #define _GNUTLS_GCC_ATTR_DEPRECATED
48 #endif
49
50 /* gnutls_connection_end_t was made redundant in 2.99.0 */
51 typedef unsigned int gnutls_connection_end_t _GNUTLS_GCC_ATTR_DEPRECATED;
52
53 /* Stuff deprected in 2.x */
54 typedef gnutls_cipher_algorithm_t gnutls_cipher_algorithm
55 _GNUTLS_GCC_ATTR_DEPRECATED;
56 typedef gnutls_kx_algorithm_t gnutls_kx_algorithm
57 _GNUTLS_GCC_ATTR_DEPRECATED;
58 typedef gnutls_mac_algorithm_t gnutls_mac_algorithm
59 _GNUTLS_GCC_ATTR_DEPRECATED;
60 typedef gnutls_digest_algorithm_t gnutls_digest_algorithm
61 _GNUTLS_GCC_ATTR_DEPRECATED;
62 typedef gnutls_compression_method_t gnutls_compression_method
63 _GNUTLS_GCC_ATTR_DEPRECATED;
64 typedef gnutls_connection_end_t gnutls_connection_end
65 _GNUTLS_GCC_ATTR_DEPRECATED;
66 typedef gnutls_x509_crt_fmt_t gnutls_x509_crt_fmt
67 _GNUTLS_GCC_ATTR_DEPRECATED;
68 typedef gnutls_pk_algorithm_t gnutls_pk_algorithm
69 _GNUTLS_GCC_ATTR_DEPRECATED;
70 typedef gnutls_sign_algorithm_t gnutls_sign_algorithm
71 _GNUTLS_GCC_ATTR_DEPRECATED;
72 typedef gnutls_close_request_t gnutls_close_request
73 _GNUTLS_GCC_ATTR_DEPRECATED;
74 typedef gnutls_certificate_request_t gnutls_certificate_request
75 _GNUTLS_GCC_ATTR_DEPRECATED;
76 typedef gnutls_certificate_status_t gnutls_certificate_status
77 _GNUTLS_GCC_ATTR_DEPRECATED;
78 typedef gnutls_session_t gnutls_session _GNUTLS_GCC_ATTR_DEPRECATED;
79 typedef gnutls_alert_level_t gnutls_alert_level
80 _GNUTLS_GCC_ATTR_DEPRECATED;
81 typedef gnutls_alert_description_t gnutls_alert_description
82 _GNUTLS_GCC_ATTR_DEPRECATED;
83 typedef gnutls_x509_subject_alt_name_t gnutls_x509_subject_alt_name
84 _GNUTLS_GCC_ATTR_DEPRECATED;
85 typedef gnutls_openpgp_privkey_t gnutls_openpgp_privkey
86 _GNUTLS_GCC_ATTR_DEPRECATED;
87 typedef gnutls_openpgp_keyring_t gnutls_openpgp_keyring
88 _GNUTLS_GCC_ATTR_DEPRECATED;
89 typedef gnutls_x509_crt_t gnutls_x509_crt _GNUTLS_GCC_ATTR_DEPRECATED;
90 typedef gnutls_x509_privkey_t gnutls_x509_privkey
91 _GNUTLS_GCC_ATTR_DEPRECATED;
92 typedef gnutls_x509_crl_t gnutls_x509_crl _GNUTLS_GCC_ATTR_DEPRECATED;
93 typedef gnutls_x509_crq_t gnutls_x509_crq _GNUTLS_GCC_ATTR_DEPRECATED;
94 typedef gnutls_certificate_credentials_t
95 gnutls_certificate_credentials _GNUTLS_GCC_ATTR_DEPRECATED;
96 typedef gnutls_anon_server_credentials_t
97 gnutls_anon_server_credentials _GNUTLS_GCC_ATTR_DEPRECATED;
98 typedef gnutls_anon_client_credentials_t
99 gnutls_anon_client_credentials _GNUTLS_GCC_ATTR_DEPRECATED;
100 typedef gnutls_srp_client_credentials_t
101 gnutls_srp_client_credentials _GNUTLS_GCC_ATTR_DEPRECATED;
102 typedef gnutls_srp_server_credentials_t
103 gnutls_srp_server_credentials _GNUTLS_GCC_ATTR_DEPRECATED;
104 typedef gnutls_dh_params_t gnutls_dh_params _GNUTLS_GCC_ATTR_DEPRECATED;
105 typedef gnutls_rsa_params_t gnutls_rsa_params _GNUTLS_GCC_ATTR_DEPRECATED;
106 typedef gnutls_params_type_t gnutls_params_type
107 _GNUTLS_GCC_ATTR_DEPRECATED;
108 typedef gnutls_credentials_type_t gnutls_credentials_type
109 _GNUTLS_GCC_ATTR_DEPRECATED;
110 typedef gnutls_certificate_type_t gnutls_certificate_type
111 _GNUTLS_GCC_ATTR_DEPRECATED;
112 typedef gnutls_datum_t gnutls_datum _GNUTLS_GCC_ATTR_DEPRECATED;
113 typedef gnutls_transport_ptr_t gnutls_transport_ptr
114 _GNUTLS_GCC_ATTR_DEPRECATED;
115
116 /* Old SRP alerts removed in 2.1.x because the TLS-SRP RFC was
117 modified to use the PSK alert. */
118 #define GNUTLS_A_MISSING_SRP_USERNAME GNUTLS_A_UNKNOWN_PSK_IDENTITY
119 #define GNUTLS_A_UNKNOWN_SRP_USERNAME GNUTLS_A_UNKNOWN_PSK_IDENTITY
120
121 /* OpenPGP stuff renamed in 2.1.x. */
122 #define GNUTLS_OPENPGP_KEY GNUTLS_OPENPGP_CERT
123 #define GNUTLS_OPENPGP_KEY_FINGERPRINT GNUTLS_OPENPGP_CERT_FINGERPRINT
124 #define gnutls_openpgp_send_key gnutls_openpgp_send_cert
125 typedef gnutls_openpgp_crt_status_t gnutls_openpgp_key_status_t
126 _GNUTLS_GCC_ATTR_DEPRECATED;
127 typedef gnutls_openpgp_crt_t gnutls_openpgp_key_t
128 _GNUTLS_GCC_ATTR_DEPRECATED;
129 #define gnutls_openpgp_key_init gnutls_openpgp_crt_init
130 #define gnutls_openpgp_key_deinit gnutls_openpgp_crt_deinit
131 #define gnutls_openpgp_key_import gnutls_openpgp_crt_import
132 #define gnutls_openpgp_key_export gnutls_openpgp_crt_export
133 #define gnutls_openpgp_key_get_key_usage gnutls_openpgp_crt_get_key_usage
134 #define gnutls_openpgp_key_get_fingerprint gnutls_openpgp_crt_get_fingerprint
135 #define gnutls_openpgp_key_get_pk_algorithm gnutls_openpgp_crt_get_pk_algorithm
136 #define gnutls_openpgp_key_get_name gnutls_openpgp_crt_get_name
137 #define gnutls_openpgp_key_get_version gnutls_openpgp_crt_get_version
138 #define gnutls_openpgp_key_get_creation_time gnutls_openpgp_crt_get_creation_time
139 #define gnutls_openpgp_key_get_expiration_time gnutls_openpgp_crt_get_expiration_time
140 #define gnutls_openpgp_key_get_id gnutls_openpgp_crt_get_id
141 #define gnutls_openpgp_key_check_hostname gnutls_openpgp_crt_check_hostname
142
143 /* OpenPGP stuff renamed in 2.3.x. */
144 #define gnutls_openpgp_crt_get_id gnutls_openpgp_crt_get_key_id
145
146 /* New better names renamed in 2.3.x, add these for backwards
147 compatibility with old poor names.*/
148 #define GNUTLS_X509_CRT_FULL GNUTLS_CRT_PRINT_FULL
149 #define GNUTLS_X509_CRT_ONELINE GNUTLS_CRT_PRINT_ONELINE
150 #define GNUTLS_X509_CRT_UNSIGNED_FULL GNUTLS_CRT_PRINT_UNSIGNED_FULL
151
152 /* Namespace problems. */
153 #define LIBGNUTLS_VERSION GNUTLS_VERSION
154 #define LIBGNUTLS_VERSION_MAJOR GNUTLS_VERSION_MAJOR
155 #define LIBGNUTLS_VERSION_MINOR GNUTLS_VERSION_MINOR
156 #define LIBGNUTLS_VERSION_PATCH GNUTLS_VERSION_PATCH
157 #define LIBGNUTLS_VERSION_NUMBER GNUTLS_VERSION_NUMBER
158 #define LIBGNUTLS_EXTRA_VERSION GNUTLS_VERSION
159
160 /* The gnutls_retr_st was deprecated by gnutls_certificate_retrieve_function()
161 * and gnutls_retr2_st.
162 */
163 typedef struct gnutls_retr_st {
164 gnutls_certificate_type_t type;
165 union {
166 gnutls_x509_crt_t *x509;
167 gnutls_openpgp_crt_t pgp;
168 } cert;
169 unsigned int ncerts; /* one for pgp keys */
170
171 union {
172 gnutls_x509_privkey_t x509;
173 gnutls_openpgp_privkey_t pgp;
174 } key;
175
176 unsigned int deinit_all; /* if non zero all keys will be deinited */
177 } gnutls_retr_st;
178
179 typedef int
180 gnutls_certificate_client_retrieve_function(gnutls_session_t,
181 const
182 gnutls_datum_t *
183 req_ca_rdn,
184 int nreqs, const
185 gnutls_pk_algorithm_t
186 * pk_algos, int
187 pk_algos_length,
188 gnutls_retr_st *);
189 typedef int
190 gnutls_certificate_server_retrieve_function(gnutls_session_t,
191 gnutls_retr_st *);
192
193 void gnutls_certificate_client_set_retrieve_function
194 (gnutls_certificate_credentials_t cred,
195 gnutls_certificate_client_retrieve_function *
196 func) _GNUTLS_GCC_ATTR_DEPRECATED;
197 void
198 gnutls_certificate_server_set_retrieve_function
199 (gnutls_certificate_credentials_t cred,
200 gnutls_certificate_server_retrieve_function *
201 func) _GNUTLS_GCC_ATTR_DEPRECATED;
202
203 /* External signing callback. No longer supported because it
204 * was deprecated by the PKCS #11 API or gnutls_privkey_import_ext. */
205 typedef int (*gnutls_sign_func) (gnutls_session_t session,
206 void *userdata,
207 gnutls_certificate_type_t
208 cert_type,
209 const gnutls_datum_t * cert,
210 const gnutls_datum_t * hash,
211 gnutls_datum_t * signature);
212
213 void
214 gnutls_sign_callback_set(gnutls_session_t session,
215 gnutls_sign_func sign_func,
216 void *userdata) _GNUTLS_GCC_ATTR_DEPRECATED;
217 gnutls_sign_func
218 gnutls_sign_callback_get(gnutls_session_t session,
219 void **userdata) _GNUTLS_GCC_ATTR_DEPRECATED;
220
221 /* This is a very dangerous and error-prone function.
222 * Use gnutls_privkey_sign_hash() instead.
223 */
224 int gnutls_x509_privkey_sign_hash(gnutls_x509_privkey_t key,
225 const gnutls_datum_t * hash,
226 gnutls_datum_t * signature)
227 _GNUTLS_GCC_ATTR_DEPRECATED;
228
229 int gnutls_openpgp_privkey_sign_hash(gnutls_openpgp_privkey_t key,
230 const gnutls_datum_t * hash,
231 gnutls_datum_t * signature)
232 _GNUTLS_GCC_ATTR_DEPRECATED;
233
234 /* we support the gnutls_privkey_sign_data() instead.
235 */
236 int gnutls_x509_privkey_sign_data(gnutls_x509_privkey_t key,
237 gnutls_digest_algorithm_t digest,
238 unsigned int flags,
239 const gnutls_datum_t * data,
240 void *signature,
241 size_t * signature_size)
242 _GNUTLS_GCC_ATTR_DEPRECATED;
243
244 /* gnutls_pubkey_verify_data() */
245 int gnutls_x509_crt_verify_data(gnutls_x509_crt_t crt,
246 unsigned int flags,
247 const gnutls_datum_t * data,
248 const gnutls_datum_t * signature)
249 _GNUTLS_GCC_ATTR_DEPRECATED;
250
251
252 /* gnutls_pubkey_verify_hash() */
253 int gnutls_x509_crt_verify_hash(gnutls_x509_crt_t crt,
254 unsigned int flags,
255 const gnutls_datum_t * hash,
256 const gnutls_datum_t * signature)
257 _GNUTLS_GCC_ATTR_DEPRECATED;
258
259 /* gnutls_pubkey_get_verify_algorithm() */
260 int gnutls_x509_crt_get_verify_algorithm(gnutls_x509_crt_t crt,
261 const gnutls_datum_t *
262 signature,
263 gnutls_digest_algorithm_t
264 * hash)
265 _GNUTLS_GCC_ATTR_DEPRECATED;
266
267 /* gnutls_pubkey_get_preferred_hash_algorithm() */
268 int gnutls_x509_crt_get_preferred_hash_algorithm(gnutls_x509_crt_t
269 crt,
270 gnutls_digest_algorithm_t
271 * hash, unsigned int
272 *mand)
273 _GNUTLS_GCC_ATTR_DEPRECATED;
274
275 /* gnutls_x509_crq_privkey_sign() */
276 int gnutls_x509_crq_sign(gnutls_x509_crq_t crq,
277 gnutls_x509_privkey_t key)
278 _GNUTLS_GCC_ATTR_DEPRECATED;
279
280
281
282 /* gnutls_x509_crl_privkey_sign */
283 int gnutls_x509_crl_sign(gnutls_x509_crl_t crl,
284 gnutls_x509_crt_t issuer,
285 gnutls_x509_privkey_t issuer_key)
286 _GNUTLS_GCC_ATTR_DEPRECATED;
287
288 /* functions to set priority of cipher suites
289 */
290 int gnutls_cipher_set_priority(gnutls_session_t session,
291 const int *list)
292 _GNUTLS_GCC_ATTR_DEPRECATED;
293 int gnutls_mac_set_priority(gnutls_session_t session,
294 const int *list) _GNUTLS_GCC_ATTR_DEPRECATED;
295 int gnutls_compression_set_priority(gnutls_session_t session,
296 const int *list)
297 _GNUTLS_GCC_ATTR_DEPRECATED;
298 int gnutls_kx_set_priority(gnutls_session_t session,
299 const int *list) _GNUTLS_GCC_ATTR_DEPRECATED;
300 int gnutls_protocol_set_priority(gnutls_session_t session,
301 const int *list)
302 _GNUTLS_GCC_ATTR_DEPRECATED;
303 int gnutls_certificate_type_set_priority(gnutls_session_t session,
304 const int *list)
305 _GNUTLS_GCC_ATTR_DEPRECATED;
306
307 /* RSA params
308 */
309 int gnutls_rsa_params_init(gnutls_rsa_params_t *
310 rsa_params) _GNUTLS_GCC_ATTR_DEPRECATED;
311 void gnutls_rsa_params_deinit(gnutls_rsa_params_t rsa_params)
312 _GNUTLS_GCC_ATTR_DEPRECATED;
313 int gnutls_rsa_params_cpy(gnutls_rsa_params_t dst,
314 gnutls_rsa_params_t src)
315 _GNUTLS_GCC_ATTR_DEPRECATED;
316 int gnutls_rsa_params_import_raw(gnutls_rsa_params_t rsa_params,
317 const gnutls_datum_t * m,
318 const gnutls_datum_t * e,
319 const gnutls_datum_t * d,
320 const gnutls_datum_t * p,
321 const gnutls_datum_t * q,
322 const gnutls_datum_t * u);
323 int gnutls_rsa_params_generate2(gnutls_rsa_params_t params,
324 unsigned int bits)
325 _GNUTLS_GCC_ATTR_DEPRECATED;
326 int gnutls_rsa_params_export_raw(gnutls_rsa_params_t rsa,
327 gnutls_datum_t * m,
328 gnutls_datum_t * e,
329 gnutls_datum_t * d,
330 gnutls_datum_t * p,
331 gnutls_datum_t * q,
332 gnutls_datum_t * u,
333 unsigned int *bits)
334 _GNUTLS_GCC_ATTR_DEPRECATED;
335 int gnutls_rsa_params_export_pkcs1(gnutls_rsa_params_t params,
336 gnutls_x509_crt_fmt_t format,
337 unsigned char *params_data,
338 size_t *
339 params_data_size)
340 _GNUTLS_GCC_ATTR_DEPRECATED;
341 int gnutls_rsa_params_import_pkcs1(gnutls_rsa_params_t params,
342 const gnutls_datum_t *
343 pkcs1_params,
344 gnutls_x509_crt_fmt_t format)
345 _GNUTLS_GCC_ATTR_DEPRECATED;
346
347 int gnutls_rsa_export_get_pubkey(gnutls_session_t session,
348 gnutls_datum_t * exponent,
349 gnutls_datum_t *
350 modulus) _GNUTLS_GCC_ATTR_DEPRECATED;
351 int gnutls_rsa_export_get_modulus_bits(gnutls_session_t session)
352 _GNUTLS_GCC_ATTR_DEPRECATED;
353 int gnutls_set_default_export_priority(gnutls_session_t session)
354 _GNUTLS_GCC_ATTR_DEPRECATED;
355
356 void gnutls_certificate_set_rsa_export_params
357 (gnutls_certificate_credentials_t res,
358 gnutls_rsa_params_t rsa_params) _GNUTLS_GCC_ATTR_DEPRECATED;
359
360 /* use gnutls_privkey_sign_hash() with the GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA flag */
361 int gnutls_privkey_sign_raw_data(gnutls_privkey_t key,
362 unsigned flags,
363 const gnutls_datum_t * data,
364 gnutls_datum_t *
365 signature) _GNUTLS_GCC_ATTR_DEPRECATED;
366
367 #ifdef _ISOC99_SOURCE
368 /* we provide older functions for compatibility as inline functions that
369 * depend on gnutls_session_get_random. */
370
371 static inline const void
372 *gnutls_session_get_server_random(gnutls_session_t session)
373 _GNUTLS_GCC_ATTR_DEPRECATED;
374 static inline const void
375 *gnutls_session_get_server_random(gnutls_session_t session)
376 {
377 gnutls_datum_t rnd;
378 gnutls_session_get_random(session, NULL, &rnd); /*doc-skip */
379 return rnd.data;
380 }
381
382 static inline const void
383 *gnutls_session_get_client_random(gnutls_session_t session)
384 _GNUTLS_GCC_ATTR_DEPRECATED;
385 static inline const void
386 *gnutls_session_get_client_random(gnutls_session_t session)
387 {
388 gnutls_datum_t rnd;
389 gnutls_session_get_random(session, &rnd, NULL); /*doc-skip */
390 return rnd.data;
391 }
392 #endif
393
394
395 /* *INDENT-OFF* */
396 #ifdef __cplusplus
397 }
398 #endif
399 /* *INDENT-ON* */
400
401 #endif /* _GNUTLS_COMPAT_H */