2 * Copyright (C) 2008-2012 Free Software Foundation, Inc.
4 * Author: Nikos Mavrogiannopoulos
6 * This file is part of GnuTLS.
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.
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.
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/>
23 /* Typedefs for more compatibility with older GnuTLS. */
25 #ifndef _GNUTLS_COMPAT_H
26 #define _GNUTLS_COMPAT_H
36 #define _GNUTLS_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
38 #if !defined GNUTLS_INTERNAL_BUILD
39 #if _GNUTLS_GCC_VERSION >= 30100
40 #define _GNUTLS_GCC_ATTR_DEPRECATED __attribute__ ((__deprecated__))
46 #ifndef _GNUTLS_GCC_ATTR_DEPRECATED
47 #define _GNUTLS_GCC_ATTR_DEPRECATED
50 /* gnutls_connection_end_t was made redundant in 2.99.0 */
51 typedef unsigned int gnutls_connection_end_t _GNUTLS_GCC_ATTR_DEPRECATED
;
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
;
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
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
143 /* OpenPGP stuff renamed in 2.3.x. */
144 #define gnutls_openpgp_crt_get_id gnutls_openpgp_crt_get_key_id
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
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
160 /* The gnutls_retr_st was deprecated by gnutls_certificate_retrieve_function()
161 * and gnutls_retr2_st.
163 typedef struct gnutls_retr_st
{
164 gnutls_certificate_type_t type
;
166 gnutls_x509_crt_t
*x509
;
167 gnutls_openpgp_crt_t pgp
;
169 unsigned int ncerts
; /* one for pgp keys */
172 gnutls_x509_privkey_t x509
;
173 gnutls_openpgp_privkey_t pgp
;
176 unsigned int deinit_all
; /* if non zero all keys will be deinited */
180 gnutls_certificate_client_retrieve_function(gnutls_session_t
,
185 gnutls_pk_algorithm_t
190 gnutls_certificate_server_retrieve_function(gnutls_session_t
,
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
;
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
;
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
,
207 gnutls_certificate_type_t
209 const gnutls_datum_t
* cert
,
210 const gnutls_datum_t
* hash
,
211 gnutls_datum_t
* signature
);
214 gnutls_sign_callback_set(gnutls_session_t session
,
215 gnutls_sign_func sign_func
,
216 void *userdata
) _GNUTLS_GCC_ATTR_DEPRECATED
;
218 gnutls_sign_callback_get(gnutls_session_t session
,
219 void **userdata
) _GNUTLS_GCC_ATTR_DEPRECATED
;
221 /* This is a very dangerous and error-prone function.
222 * Use gnutls_privkey_sign_hash() instead.
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
;
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
;
234 /* we support the gnutls_privkey_sign_data() instead.
236 int gnutls_x509_privkey_sign_data(gnutls_x509_privkey_t key
,
237 gnutls_digest_algorithm_t digest
,
239 const gnutls_datum_t
* data
,
241 size_t * signature_size
)
242 _GNUTLS_GCC_ATTR_DEPRECATED
;
244 /* gnutls_pubkey_verify_data() */
245 int gnutls_x509_crt_verify_data(gnutls_x509_crt_t crt
,
247 const gnutls_datum_t
* data
,
248 const gnutls_datum_t
* signature
)
249 _GNUTLS_GCC_ATTR_DEPRECATED
;
252 /* gnutls_pubkey_verify_hash() */
253 int gnutls_x509_crt_verify_hash(gnutls_x509_crt_t crt
,
255 const gnutls_datum_t
* hash
,
256 const gnutls_datum_t
* signature
)
257 _GNUTLS_GCC_ATTR_DEPRECATED
;
259 /* gnutls_pubkey_get_verify_algorithm() */
260 int gnutls_x509_crt_get_verify_algorithm(gnutls_x509_crt_t crt
,
261 const gnutls_datum_t
*
263 gnutls_digest_algorithm_t
265 _GNUTLS_GCC_ATTR_DEPRECATED
;
267 /* gnutls_pubkey_get_preferred_hash_algorithm() */
268 int gnutls_x509_crt_get_preferred_hash_algorithm(gnutls_x509_crt_t
270 gnutls_digest_algorithm_t
273 _GNUTLS_GCC_ATTR_DEPRECATED
;
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
;
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
;
288 /* functions to set priority of cipher suites
290 int gnutls_cipher_set_priority(gnutls_session_t session
,
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
,
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
,
302 _GNUTLS_GCC_ATTR_DEPRECATED
;
303 int gnutls_certificate_type_set_priority(gnutls_session_t session
,
305 _GNUTLS_GCC_ATTR_DEPRECATED
;
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
,
325 _GNUTLS_GCC_ATTR_DEPRECATED
;
326 int gnutls_rsa_params_export_raw(gnutls_rsa_params_t rsa
,
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
,
340 _GNUTLS_GCC_ATTR_DEPRECATED
;
341 int gnutls_rsa_params_import_pkcs1(gnutls_rsa_params_t params
,
342 const gnutls_datum_t
*
344 gnutls_x509_crt_fmt_t format
)
345 _GNUTLS_GCC_ATTR_DEPRECATED
;
347 int gnutls_rsa_export_get_pubkey(gnutls_session_t session
,
348 gnutls_datum_t
* exponent
,
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
;
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
;
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
,
363 const gnutls_datum_t
* data
,
365 signature
) _GNUTLS_GCC_ATTR_DEPRECATED
;
367 #ifdef _ISOC99_SOURCE
368 /* we provide older functions for compatibility as inline functions that
369 * depend on gnutls_session_get_random. */
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
)
378 gnutls_session_get_random(session
, NULL
, &rnd
); /*doc-skip */
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
)
389 gnutls_session_get_random(session
, &rnd
, NULL
); /*doc-skip */
401 #endif /* _GNUTLS_COMPAT_H */