compat.h 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  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. /* Typedefs for more compatibility with older GnuTLS. */
  23. #ifndef _GNUTLS_COMPAT_H
  24. #define _GNUTLS_COMPAT_H
  25. /* *INDENT-OFF* */
  26. #ifdef __cplusplus
  27. extern "C" {
  28. #endif
  29. /* *INDENT-ON* */
  30. #ifdef __GNUC__
  31. #define _GNUTLS_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
  32. #if !defined GNUTLS_INTERNAL_BUILD
  33. #if _GNUTLS_GCC_VERSION >= 30100
  34. #define _GNUTLS_GCC_ATTR_DEPRECATED __attribute__ ((__deprecated__))
  35. #endif
  36. #endif
  37. #endif /* __GNUC__ */
  38. #ifndef _GNUTLS_GCC_ATTR_DEPRECATED
  39. #define _GNUTLS_GCC_ATTR_DEPRECATED
  40. #endif
  41. /* gnutls_connection_end_t was made redundant in 2.99.0 */
  42. typedef unsigned int gnutls_connection_end_t _GNUTLS_GCC_ATTR_DEPRECATED;
  43. /* Stuff deprected in 2.x */
  44. typedef gnutls_cipher_algorithm_t gnutls_cipher_algorithm
  45. _GNUTLS_GCC_ATTR_DEPRECATED;
  46. typedef gnutls_kx_algorithm_t gnutls_kx_algorithm
  47. _GNUTLS_GCC_ATTR_DEPRECATED;
  48. typedef gnutls_mac_algorithm_t gnutls_mac_algorithm
  49. _GNUTLS_GCC_ATTR_DEPRECATED;
  50. typedef gnutls_digest_algorithm_t gnutls_digest_algorithm
  51. _GNUTLS_GCC_ATTR_DEPRECATED;
  52. typedef gnutls_compression_method_t gnutls_compression_method
  53. _GNUTLS_GCC_ATTR_DEPRECATED;
  54. typedef gnutls_connection_end_t gnutls_connection_end
  55. _GNUTLS_GCC_ATTR_DEPRECATED;
  56. typedef gnutls_x509_crt_fmt_t gnutls_x509_crt_fmt
  57. _GNUTLS_GCC_ATTR_DEPRECATED;
  58. typedef gnutls_pk_algorithm_t gnutls_pk_algorithm
  59. _GNUTLS_GCC_ATTR_DEPRECATED;
  60. typedef gnutls_sign_algorithm_t gnutls_sign_algorithm
  61. _GNUTLS_GCC_ATTR_DEPRECATED;
  62. typedef gnutls_close_request_t gnutls_close_request
  63. _GNUTLS_GCC_ATTR_DEPRECATED;
  64. typedef gnutls_certificate_request_t gnutls_certificate_request
  65. _GNUTLS_GCC_ATTR_DEPRECATED;
  66. typedef gnutls_certificate_status_t gnutls_certificate_status
  67. _GNUTLS_GCC_ATTR_DEPRECATED;
  68. typedef gnutls_session_t gnutls_session _GNUTLS_GCC_ATTR_DEPRECATED;
  69. typedef gnutls_alert_level_t gnutls_alert_level
  70. _GNUTLS_GCC_ATTR_DEPRECATED;
  71. typedef gnutls_alert_description_t gnutls_alert_description
  72. _GNUTLS_GCC_ATTR_DEPRECATED;
  73. typedef gnutls_x509_subject_alt_name_t gnutls_x509_subject_alt_name
  74. _GNUTLS_GCC_ATTR_DEPRECATED;
  75. typedef gnutls_openpgp_privkey_t gnutls_openpgp_privkey
  76. _GNUTLS_GCC_ATTR_DEPRECATED;
  77. typedef gnutls_openpgp_keyring_t gnutls_openpgp_keyring
  78. _GNUTLS_GCC_ATTR_DEPRECATED;
  79. typedef gnutls_x509_crt_t gnutls_x509_crt _GNUTLS_GCC_ATTR_DEPRECATED;
  80. typedef gnutls_x509_privkey_t gnutls_x509_privkey
  81. _GNUTLS_GCC_ATTR_DEPRECATED;
  82. typedef gnutls_x509_crl_t gnutls_x509_crl _GNUTLS_GCC_ATTR_DEPRECATED;
  83. typedef gnutls_x509_crq_t gnutls_x509_crq _GNUTLS_GCC_ATTR_DEPRECATED;
  84. typedef gnutls_certificate_credentials_t
  85. gnutls_certificate_credentials _GNUTLS_GCC_ATTR_DEPRECATED;
  86. typedef gnutls_anon_server_credentials_t
  87. gnutls_anon_server_credentials _GNUTLS_GCC_ATTR_DEPRECATED;
  88. typedef gnutls_anon_client_credentials_t
  89. gnutls_anon_client_credentials _GNUTLS_GCC_ATTR_DEPRECATED;
  90. typedef gnutls_srp_client_credentials_t
  91. gnutls_srp_client_credentials _GNUTLS_GCC_ATTR_DEPRECATED;
  92. typedef gnutls_srp_server_credentials_t
  93. gnutls_srp_server_credentials _GNUTLS_GCC_ATTR_DEPRECATED;
  94. typedef gnutls_dh_params_t gnutls_dh_params _GNUTLS_GCC_ATTR_DEPRECATED;
  95. typedef gnutls_rsa_params_t gnutls_rsa_params _GNUTLS_GCC_ATTR_DEPRECATED;
  96. typedef gnutls_params_type_t gnutls_params_type
  97. _GNUTLS_GCC_ATTR_DEPRECATED;
  98. typedef gnutls_credentials_type_t gnutls_credentials_type
  99. _GNUTLS_GCC_ATTR_DEPRECATED;
  100. typedef gnutls_certificate_type_t gnutls_certificate_type
  101. _GNUTLS_GCC_ATTR_DEPRECATED;
  102. typedef gnutls_datum_t gnutls_datum _GNUTLS_GCC_ATTR_DEPRECATED;
  103. typedef gnutls_transport_ptr_t gnutls_transport_ptr
  104. _GNUTLS_GCC_ATTR_DEPRECATED;
  105. /* Old verification flags */
  106. #define GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT (0)
  107. /* Old SRP alerts removed in 2.1.x because the TLS-SRP RFC was
  108. modified to use the PSK alert. */
  109. #define GNUTLS_A_MISSING_SRP_USERNAME GNUTLS_A_UNKNOWN_PSK_IDENTITY
  110. #define GNUTLS_A_UNKNOWN_SRP_USERNAME GNUTLS_A_UNKNOWN_PSK_IDENTITY
  111. /* OpenPGP stuff renamed in 2.1.x. */
  112. #define GNUTLS_OPENPGP_KEY GNUTLS_OPENPGP_CERT
  113. #define GNUTLS_OPENPGP_KEY_FINGERPRINT GNUTLS_OPENPGP_CERT_FINGERPRINT
  114. #define gnutls_openpgp_send_key gnutls_openpgp_send_cert
  115. typedef gnutls_openpgp_crt_status_t gnutls_openpgp_key_status_t
  116. _GNUTLS_GCC_ATTR_DEPRECATED;
  117. typedef gnutls_openpgp_crt_t gnutls_openpgp_key_t
  118. _GNUTLS_GCC_ATTR_DEPRECATED;
  119. #define gnutls_openpgp_key_init gnutls_openpgp_crt_init
  120. #define gnutls_openpgp_key_deinit gnutls_openpgp_crt_deinit
  121. #define gnutls_openpgp_key_import gnutls_openpgp_crt_import
  122. #define gnutls_openpgp_key_export gnutls_openpgp_crt_export
  123. #define gnutls_openpgp_key_get_key_usage gnutls_openpgp_crt_get_key_usage
  124. #define gnutls_openpgp_key_get_fingerprint gnutls_openpgp_crt_get_fingerprint
  125. #define gnutls_openpgp_key_get_pk_algorithm gnutls_openpgp_crt_get_pk_algorithm
  126. #define gnutls_openpgp_key_get_name gnutls_openpgp_crt_get_name
  127. #define gnutls_openpgp_key_get_version gnutls_openpgp_crt_get_version
  128. #define gnutls_openpgp_key_get_creation_time gnutls_openpgp_crt_get_creation_time
  129. #define gnutls_openpgp_key_get_expiration_time gnutls_openpgp_crt_get_expiration_time
  130. #define gnutls_openpgp_key_get_id gnutls_openpgp_crt_get_id
  131. #define gnutls_openpgp_key_check_hostname gnutls_openpgp_crt_check_hostname
  132. /* OpenPGP stuff renamed in 2.3.x. */
  133. #define gnutls_openpgp_crt_get_id gnutls_openpgp_crt_get_key_id
  134. /* New better names renamed in 2.3.x, add these for backwards
  135. compatibility with old poor names.*/
  136. #define GNUTLS_X509_CRT_FULL GNUTLS_CRT_PRINT_FULL
  137. #define GNUTLS_X509_CRT_ONELINE GNUTLS_CRT_PRINT_ONELINE
  138. #define GNUTLS_X509_CRT_UNSIGNED_FULL GNUTLS_CRT_PRINT_UNSIGNED_FULL
  139. /* Namespace problems. */
  140. #define LIBGNUTLS_VERSION GNUTLS_VERSION
  141. #define LIBGNUTLS_VERSION_MAJOR GNUTLS_VERSION_MAJOR
  142. #define LIBGNUTLS_VERSION_MINOR GNUTLS_VERSION_MINOR
  143. #define LIBGNUTLS_VERSION_PATCH GNUTLS_VERSION_PATCH
  144. #define LIBGNUTLS_VERSION_NUMBER GNUTLS_VERSION_NUMBER
  145. #define LIBGNUTLS_EXTRA_VERSION GNUTLS_VERSION
  146. /* This is a very dangerous and error-prone function.
  147. * Use gnutls_privkey_sign_hash() instead.
  148. */
  149. int gnutls_x509_privkey_sign_hash(gnutls_x509_privkey_t key,
  150. const gnutls_datum_t * hash,
  151. gnutls_datum_t * signature)
  152. _GNUTLS_GCC_ATTR_DEPRECATED;
  153. int gnutls_openpgp_privkey_sign_hash(gnutls_openpgp_privkey_t key,
  154. const gnutls_datum_t * hash,
  155. gnutls_datum_t * signature)
  156. _GNUTLS_GCC_ATTR_DEPRECATED;
  157. /* gnutls_pubkey_get_preferred_hash_algorithm() */
  158. int gnutls_x509_crt_get_preferred_hash_algorithm(gnutls_x509_crt_t
  159. crt,
  160. gnutls_digest_algorithm_t
  161. * hash, unsigned int
  162. *mand)
  163. _GNUTLS_GCC_ATTR_DEPRECATED;
  164. /* gnutls_x509_crq_privkey_sign() */
  165. int gnutls_x509_crq_sign(gnutls_x509_crq_t crq,
  166. gnutls_x509_privkey_t key)
  167. _GNUTLS_GCC_ATTR_DEPRECATED;
  168. /* gnutls_x509_crl_privkey_sign */
  169. int gnutls_x509_crl_sign(gnutls_x509_crl_t crl,
  170. gnutls_x509_crt_t issuer,
  171. gnutls_x509_privkey_t issuer_key)
  172. _GNUTLS_GCC_ATTR_DEPRECATED;
  173. /* use gnutls_privkey_sign_hash() with the GNUTLS_PRIVKEY_SIGN_FLAG_TLS1_RSA flag */
  174. #ifdef _ISOC99_SOURCE
  175. /* we provide older functions for compatibility as inline functions that
  176. * depend on gnutls_session_get_random. */
  177. static inline const void
  178. *gnutls_session_get_server_random(gnutls_session_t session)
  179. _GNUTLS_GCC_ATTR_DEPRECATED;
  180. static inline const void
  181. *gnutls_session_get_server_random(gnutls_session_t session)
  182. {
  183. gnutls_datum_t rnd;
  184. gnutls_session_get_random(session, NULL, &rnd); /*doc-skip */
  185. return rnd.data;
  186. }
  187. static inline const void
  188. *gnutls_session_get_client_random(gnutls_session_t session)
  189. _GNUTLS_GCC_ATTR_DEPRECATED;
  190. static inline const void
  191. *gnutls_session_get_client_random(gnutls_session_t session)
  192. {
  193. gnutls_datum_t rnd;
  194. gnutls_session_get_random(session, &rnd, NULL); /*doc-skip */
  195. return rnd.data;
  196. }
  197. #endif
  198. void
  199. gnutls_global_set_mem_functions(gnutls_alloc_function alloc_func,
  200. gnutls_alloc_function secure_alloc_func,
  201. gnutls_is_secure_function is_secure_func,
  202. gnutls_realloc_function realloc_func,
  203. gnutls_free_function free_func) _GNUTLS_GCC_ATTR_DEPRECATED;
  204. /* defined in old headers - unused nevertheless */
  205. #define GNUTLS_SUPPLEMENTAL_USER_MAPPING_DATA 0
  206. /* old compression related functions */
  207. gnutls_compression_method_t
  208. gnutls_compression_get(gnutls_session_t session) _GNUTLS_GCC_ATTR_DEPRECATED;
  209. const char *
  210. gnutls_compression_get_name(gnutls_compression_method_t
  211. algorithm) __GNUTLS_CONST__ _GNUTLS_GCC_ATTR_DEPRECATED;
  212. gnutls_compression_method_t
  213. gnutls_compression_get_id(const char *name) __GNUTLS_CONST__ _GNUTLS_GCC_ATTR_DEPRECATED;
  214. const gnutls_compression_method_t *
  215. gnutls_compression_list(void) __GNUTLS_PURE__ _GNUTLS_GCC_ATTR_DEPRECATED;
  216. int gnutls_priority_compression_list(gnutls_priority_t pcache,
  217. const unsigned int **list) _GNUTLS_GCC_ATTR_DEPRECATED;
  218. /* *INDENT-OFF* */
  219. #ifdef __cplusplus
  220. }
  221. #endif
  222. /* *INDENT-ON* */
  223. #endif /* _GNUTLS_COMPAT_H */