Tizen 2.0 Release
[external/libgnutls26.git] / lib / auth_psk.h
1 /*
2  * Copyright (C) 2005, 2007, 2008, 2010 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
19  * License along with this library; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
21  * USA
22  *
23  */
24
25 #ifndef AUTH_PSK_H
26 #define AUTH_PSK_H
27
28 #include <gnutls_auth.h>
29 #include <auth_dh_common.h>
30
31 typedef struct gnutls_psk_client_credentials_st
32 {
33   gnutls_datum_t username;
34   gnutls_datum_t key;
35   gnutls_psk_client_credentials_function *get_function;
36 } psk_client_credentials_st;
37
38 typedef struct gnutls_psk_server_credentials_st
39 {
40   char *password_file;
41   /* callback function, instead of reading the
42    * password files.
43    */
44   gnutls_psk_server_credentials_function *pwd_callback;
45
46   /* For DHE_PSK */
47   gnutls_dh_params_t dh_params;
48   /* this callback is used to retrieve the DH or RSA
49    * parameters.
50    */
51   gnutls_params_function *params_func;
52
53   /* Identity hint. */
54   char *hint;
55 } psk_server_cred_st;
56
57 /* these structures should not use allocated data */
58 typedef struct psk_auth_info_st
59 {
60   char username[MAX_USERNAME_SIZE + 1];
61   dh_info_st dh;
62   char hint[MAX_USERNAME_SIZE + 1];
63 } *psk_auth_info_t;
64
65
66 #ifdef ENABLE_PSK
67
68 typedef struct psk_auth_info_st psk_auth_info_st;
69
70 int
71 _gnutls_set_psk_session_key (gnutls_session_t session, gnutls_datum_t* key, gnutls_datum_t * psk2);
72
73 int _gnutls_find_psk_key( gnutls_session_t session, gnutls_psk_client_credentials_t cred, 
74   gnutls_datum_t * username, gnutls_datum* key, int* free);
75
76 #else
77 #define _gnutls_set_psk_session_key(x,y) GNUTLS_E_INTERNAL_ERROR
78 #endif /* ENABLE_PSK */
79
80 #endif