Tizen 2.0 Release
[external/libgnutls26.git] / libextra / includes / gnutls / extra.h
1 /*
2  * Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free
3  * Software Foundation, Inc.
4  *
5  * Author: Nikos Mavrogiannopoulos
6  *
7  * This file is part of GnuTLS-EXTRA.
8  *
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.
13  *
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.
18  *
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
22  * 02110-1301, USA.
23  *
24  */
25
26 /* Note the libgnutls-extra is not a standalone library. It requires
27  * to link also against libgnutls.
28  */
29
30 #ifndef GNUTLS_EXTRA_H
31 #define GNUTLS_EXTRA_H
32
33 #include <gnutls/gnutls.h>
34
35 #ifdef __cplusplus
36 extern "C"
37 {
38 #endif
39
40 #define GNUTLS_EXTRA_VERSION GNUTLS_VERSION
41
42   /* TLS/IA stuff
43    */
44
45   /**
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.
50    *
51    * Enumeration of different certificate encoding formats.
52    */
53   typedef enum
54   {
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;
59
60   /* TLS/IA credential
61    */
62
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);
66
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;
71
72   /* Allocate and free TLS/IA credentials. */
73   extern void
74     gnutls_ia_free_client_credentials (gnutls_ia_client_credentials_t sc) 
75     _GNUTLS_GCC_ATTR_DEPRECATED;
76   extern int
77     gnutls_ia_allocate_client_credentials (gnutls_ia_client_credentials_t *
78                                            sc)
79                                            _GNUTLS_GCC_ATTR_DEPRECATED;
80
81   extern void
82     gnutls_ia_free_server_credentials (gnutls_ia_server_credentials_t sc)
83     _GNUTLS_GCC_ATTR_DEPRECATED;
84   extern int
85     gnutls_ia_allocate_server_credentials (gnutls_ia_server_credentials_t *
86                                            sc)
87                                            _GNUTLS_GCC_ATTR_DEPRECATED;
88
89   /* Client TLS/IA credential functions. */
90   extern void
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;
94   extern void
95     gnutls_ia_set_client_avp_ptr (gnutls_ia_client_credentials_t cred,
96                                   void *ptr)
97                                   _GNUTLS_GCC_ATTR_DEPRECATED;
98   extern void *gnutls_ia_get_client_avp_ptr (gnutls_ia_client_credentials_t
99                                              cred)
100                                              _GNUTLS_GCC_ATTR_DEPRECATED;
101
102   /* Server TLS/IA credential functions. */
103   extern void
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;
107   extern void
108     gnutls_ia_set_server_avp_ptr (gnutls_ia_server_credentials_t cred,
109                                   void *ptr)
110                                   _GNUTLS_GCC_ATTR_DEPRECATED;
111   extern void *gnutls_ia_get_server_avp_ptr (gnutls_ia_server_credentials_t
112                                              cred)
113                                              _GNUTLS_GCC_ATTR_DEPRECATED;
114
115   /* TLS/IA handshake. */
116   extern int gnutls_ia_handshake_p (gnutls_session_t session)
117   _GNUTLS_GCC_ATTR_DEPRECATED;
118
119   extern int gnutls_ia_handshake (gnutls_session_t session)
120   _GNUTLS_GCC_ATTR_DEPRECATED;
121
122   /* TLS/IA low level interface. */
123   extern int
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);
129
130   extern int gnutls_ia_verify_endphase (gnutls_session_t session,
131                                         const char *checksum);
132
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);
137
138   /* Utility stuff. */
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,
143                                               char *buffer)
144                                               _GNUTLS_GCC_ATTR_DEPRECATED;
145
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;
150
151   int gnutls_global_init_extra (void);
152
153   /* Use internal (HMAC-)MD5 code, typically for use if libgcrypt is
154      in FIPS mode. */
155   int gnutls_register_md5_handler (void);
156
157 /* returns libgnutls-extra version (call it with a NULL argument) 
158  */
159   const char *gnutls_extra_check_version (const char *req_version);
160
161 #ifdef __cplusplus
162 }
163 #endif
164 #endif