Line data Source code
1 : /* 2 : * Copyright (C) 2000-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 <https://www.gnu.org/licenses/> 20 : * 21 : */ 22 : 23 : #ifndef GNUTLS_LIB_AUTH_H 24 : #define GNUTLS_LIB_AUTH_H 25 : 26 : #include "str.h" 27 : 28 : typedef struct mod_auth_st_int { 29 : const char *name; /* null terminated */ 30 : int (*gnutls_generate_server_certificate) (gnutls_session_t, 31 : gnutls_buffer_st *); 32 : int (*gnutls_generate_client_certificate) (gnutls_session_t, 33 : gnutls_buffer_st *); 34 : int (*gnutls_generate_server_kx) (gnutls_session_t, 35 : gnutls_buffer_st *); 36 : int (*gnutls_generate_client_kx) (gnutls_session_t, gnutls_buffer_st *); /* used in SRP */ 37 : int (*gnutls_generate_client_crt_vrfy) (gnutls_session_t, 38 : gnutls_buffer_st *); 39 : int (*gnutls_generate_server_crt_request) (gnutls_session_t, 40 : gnutls_buffer_st *); 41 : 42 : int (*gnutls_process_server_certificate) (gnutls_session_t, 43 : uint8_t *, size_t); 44 : int (*gnutls_process_client_certificate) (gnutls_session_t, 45 : uint8_t *, size_t); 46 : int (*gnutls_process_server_kx) (gnutls_session_t, uint8_t *, 47 : size_t); 48 : int (*gnutls_process_client_kx) (gnutls_session_t, uint8_t *, 49 : size_t); 50 : int (*gnutls_process_client_crt_vrfy) (gnutls_session_t, uint8_t *, 51 : size_t); 52 : int (*gnutls_process_server_crt_request) (gnutls_session_t, 53 : uint8_t *, size_t); 54 : } mod_auth_st; 55 : 56 : const void *_gnutls_get_cred(gnutls_session_t session, 57 : gnutls_credentials_type_t type); 58 : const void *_gnutls_get_kx_cred(gnutls_session_t session, 59 : gnutls_kx_algorithm_t algo); 60 : int _gnutls_auth_info_init(gnutls_session_t session, 61 : gnutls_credentials_type_t type, int size, 62 : int allow_change); 63 : 64 : /*- 65 : * _gnutls_get_auth_info - Returns a pointer to authentication information. 66 : * @session: is a #gnutls_session_t structure. 67 : * 68 : * This function must be called after a successful gnutls_handshake(). 69 : * Returns a pointer to authentication information. That information 70 : * is data obtained by the handshake protocol, the key exchange algorithm, 71 : * and the TLS extensions messages. 72 : * 73 : * In case of GNUTLS_CRD_ANON returns a type of &anon_(server/client)_auth_info_t; 74 : * In case of GNUTLS_CRD_CERTIFICATE returns a type of &cert_auth_info_t; 75 : * In case of GNUTLS_CRD_SRP returns a type of &srp_(server/client)_auth_info_t; 76 : -*/ 77 : inline static 78 89280 : void *_gnutls_get_auth_info(gnutls_session_t session, gnutls_credentials_type_t type) 79 : { 80 89280 : if (type == session->key.auth_info_type) 81 62858 : return session->key.auth_info; 82 : else 83 : return NULL; 84 : } 85 : 86 : #endif /* GNUTLS_LIB_AUTH_H */