2 * Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free
3 * Software Foundation, Inc.
5 * Author: Nikos Mavrogiannopoulos
7 * This file is part of GnuTLS-EXTRA.
9 * GnuTLS-extra is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License as
11 * published by the Free Software Foundation; either version 3 of the
12 * License, or (at your option) any later version.
14 * GnuTLS-extra is distributed in the hope that it will be useful, but
15 * WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * General Public License for more details.
19 * You should have received a copy of the GNU General Public License
20 * along with GnuTLS-EXTRA; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
26 /* Note the libgnutls-extra is not a standalone library. It requires
27 * to link also against libgnutls.
30 #ifndef GNUTLS_EXTRA_H
31 #define GNUTLS_EXTRA_H
33 #include <gnutls/gnutls.h>
40 #define GNUTLS_EXTRA_VERSION GNUTLS_VERSION
46 * gnutls_ia_apptype_t:
47 * @GNUTLS_IA_APPLICATION_PAYLOAD: TLS/IA application payload.
48 * @GNUTLS_IA_INTERMEDIATE_PHASE_FINISHED: TLS/IA intermediate phase finished.
49 * @GNUTLS_IA_FINAL_PHASE_FINISHED: TLS/IA final phase finished.
51 * Enumeration of different certificate encoding formats.
55 GNUTLS_IA_APPLICATION_PAYLOAD = 0,
56 GNUTLS_IA_INTERMEDIATE_PHASE_FINISHED = 1,
57 GNUTLS_IA_FINAL_PHASE_FINISHED = 2
58 } gnutls_ia_apptype_t;
63 typedef int (*gnutls_ia_avp_func) (gnutls_session_t session, void *ptr,
64 const char *last, size_t lastlen,
65 char **next, size_t * nextlen);
67 typedef struct gnutls_ia_server_credentials_st
68 *gnutls_ia_server_credentials_t;
69 typedef struct gnutls_ia_client_credentials_st
70 *gnutls_ia_client_credentials_t;
72 /* Allocate and free TLS/IA credentials. */
74 gnutls_ia_free_client_credentials (gnutls_ia_client_credentials_t sc)
75 _GNUTLS_GCC_ATTR_DEPRECATED;
77 gnutls_ia_allocate_client_credentials (gnutls_ia_client_credentials_t *
79 _GNUTLS_GCC_ATTR_DEPRECATED;
82 gnutls_ia_free_server_credentials (gnutls_ia_server_credentials_t sc)
83 _GNUTLS_GCC_ATTR_DEPRECATED;
85 gnutls_ia_allocate_server_credentials (gnutls_ia_server_credentials_t *
87 _GNUTLS_GCC_ATTR_DEPRECATED;
89 /* Client TLS/IA credential functions. */
91 gnutls_ia_set_client_avp_function (gnutls_ia_client_credentials_t cred,
92 gnutls_ia_avp_func avp_func)
93 _GNUTLS_GCC_ATTR_DEPRECATED;
95 gnutls_ia_set_client_avp_ptr (gnutls_ia_client_credentials_t cred,
97 _GNUTLS_GCC_ATTR_DEPRECATED;
98 extern void *gnutls_ia_get_client_avp_ptr (gnutls_ia_client_credentials_t
100 _GNUTLS_GCC_ATTR_DEPRECATED;
102 /* Server TLS/IA credential functions. */
104 gnutls_ia_set_server_avp_function (gnutls_ia_server_credentials_t cred,
105 gnutls_ia_avp_func avp_func)
106 _GNUTLS_GCC_ATTR_DEPRECATED;
108 gnutls_ia_set_server_avp_ptr (gnutls_ia_server_credentials_t cred,
110 _GNUTLS_GCC_ATTR_DEPRECATED;
111 extern void *gnutls_ia_get_server_avp_ptr (gnutls_ia_server_credentials_t
113 _GNUTLS_GCC_ATTR_DEPRECATED;
115 /* TLS/IA handshake. */
116 extern int gnutls_ia_handshake_p (gnutls_session_t session)
117 _GNUTLS_GCC_ATTR_DEPRECATED;
119 extern int gnutls_ia_handshake (gnutls_session_t session)
120 _GNUTLS_GCC_ATTR_DEPRECATED;
122 /* TLS/IA low level interface. */
124 gnutls_ia_permute_inner_secret (gnutls_session_t session,
125 size_t session_keys_size,
126 const char *session_keys)
127 _GNUTLS_GCC_ATTR_DEPRECATED;
128 extern int gnutls_ia_endphase_send (gnutls_session_t session, int final_p);
130 extern int gnutls_ia_verify_endphase (gnutls_session_t session,
131 const char *checksum);
133 extern ssize_t gnutls_ia_send (gnutls_session_t session,
134 const char *data, size_t sizeofdata);
135 extern ssize_t gnutls_ia_recv (gnutls_session_t session,
136 char *data, size_t sizeofdata);
139 extern int gnutls_ia_generate_challenge (gnutls_session_t session,
140 size_t buffer_size, char *buffer)
141 _GNUTLS_GCC_ATTR_DEPRECATED;
142 extern void gnutls_ia_extract_inner_secret (gnutls_session_t session,
144 _GNUTLS_GCC_ATTR_DEPRECATED;
146 /* Define whether inner phases are wanted. */
147 extern void gnutls_ia_enable (gnutls_session_t session,
148 int allow_skip_on_resume)
149 _GNUTLS_GCC_ATTR_DEPRECATED;
151 int gnutls_global_init_extra (void);
153 /* Use internal (HMAC-)MD5 code, typically for use if libgcrypt is
155 int gnutls_register_md5_handler (void);
157 /* returns libgnutls-extra version (call it with a NULL argument)
159 const char *gnutls_extra_check_version (const char *req_version);