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_STATE_H
24 #define GNUTLS_LIB_STATE_H
25
26 #include "gnutls_int.h"
27
28 void _gnutls_session_client_cert_type_set(gnutls_session_t session,
29 gnutls_certificate_type_t);
30 void _gnutls_session_server_cert_type_set(gnutls_session_t session,
31 gnutls_certificate_type_t);
32
33 inline static const gnutls_group_entry_st *
get_group(gnutls_session_t session)34 get_group(gnutls_session_t session)
35 {
36 return session->security_parameters.grp;
37 }
38
39 int _gnutls_session_is_ecc(gnutls_session_t session);
40
41 inline static void
_gnutls_session_group_set(gnutls_session_t session,const gnutls_group_entry_st * e)42 _gnutls_session_group_set(gnutls_session_t session,
43 const gnutls_group_entry_st *e)
44 {
45 _gnutls_handshake_log("HSK[%p]: Selected group %s (%d)\n",
46 session, e->name, e->id);
47 session->security_parameters.grp = e;
48 }
49
50 inline static
set_default_version(gnutls_session_t session,const version_entry_st * ver)51 void set_default_version(gnutls_session_t session, const version_entry_st *ver)
52 {
53 if (ver->tls13_sem) {
54 session->internals.default_record_version[0] = 3;
55 session->internals.default_record_version[1] = 1;
56 } else {
57 session->internals.default_record_version[0] = ver->major;
58 session->internals.default_record_version[1] = ver->minor;
59 }
60 }
61
62 void
63 _gnutls_record_set_default_version(gnutls_session_t session,
64 unsigned char major,
65 unsigned char minor);
66
67 void
68 _gnutls_hello_set_default_version(gnutls_session_t session,
69 unsigned char major,
70 unsigned char minor);
71
72 #include <auth.h>
73
74 #define CHECK_AUTH_TYPE(auth, ret) if (gnutls_auth_get_type(session) != auth) { \
75 gnutls_assert(); \
76 return ret; \
77 }
78
79
80 int _gnutls_session_cert_type_supported(gnutls_session_t session,
81 gnutls_certificate_type_t cert_type,
82 bool check_credentials,
83 gnutls_ctype_target_t target);
84 int _gnutls_dh_set_secret_bits(gnutls_session_t session, unsigned bits);
85
86 int _gnutls_dh_set_peer_public(gnutls_session_t session, bigint_t public);
87 int _gnutls_dh_save_group(gnutls_session_t session, bigint_t gen,
88 bigint_t prime);
89
_gnutls_dh_get_min_prime_bits(gnutls_session_t session)90 static inline int _gnutls_dh_get_min_prime_bits(gnutls_session_t session)
91 {
92 if (session->internals.dh_prime_bits != 0)
93 return session->internals.dh_prime_bits;
94 else
95 return gnutls_sec_param_to_pk_bits(GNUTLS_PK_DH,
96 session->internals.
97 priorities->level);
98 }
99
100 void _gnutls_handshake_internal_state_clear(gnutls_session_t);
101
102 int _gnutls_session_is_resumable(gnutls_session_t session);
103
104 int _gnutls_session_is_psk(gnutls_session_t session);
105
106 int _gnutls_openpgp_send_fingerprint(gnutls_session_t session);
107
108 void reset_binders(gnutls_session_t session);
109
110 inline static int
_gnutls_PRF(gnutls_session_t session,const uint8_t * secret,unsigned int secret_size,const char * label,int label_size,const uint8_t * seed,int seed_size,int total_bytes,void * ret)111 _gnutls_PRF(gnutls_session_t session,
112 const uint8_t * secret, unsigned int secret_size,
113 const char *label, int label_size, const uint8_t * seed,
114 int seed_size, int total_bytes, void *ret)
115 {
116 return _gnutls_prf_raw(session->security_parameters.prf->id,
117 secret_size, secret,
118 label_size, label,
119 seed_size, seed,
120 total_bytes, ret);
121 }
122
123 #define DEFAULT_CERT_TYPE GNUTLS_CRT_X509
124
125 #endif /* GNUTLS_LIB_STATE_H */
126