diff options
author | Tom Vrancken <email@tomvrancken.nl> | 2017-08-26 14:22:44 +0200 |
---|---|---|
committer | Tom Vrancken <dev@tomvrancken.nl> | 2018-12-15 19:05:03 +0100 |
commit | 565efaeac828e89d2c1bac7a88c27303d1b62547 (patch) | |
tree | 5cc0e7c43c4933b743d2ba5889bad13f86e98323 /lib/gnutls_int.h | |
parent | 71276d301a602926e44df818259ba1d99264a179 (diff) | |
download | gnutls-565efaeac828e89d2c1bac7a88c27303d1b62547.tar.gz |
Implemented support for raw public-key functionality (RFC7250).
Signed-off-by: Tom Vrancken <dev@tomvrancken.nl>
Diffstat (limited to 'lib/gnutls_int.h')
-rw-r--r-- | lib/gnutls_int.h | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/lib/gnutls_int.h b/lib/gnutls_int.h index cccc3d1a97..8baa8815e7 100644 --- a/lib/gnutls_int.h +++ b/lib/gnutls_int.h @@ -1561,9 +1561,39 @@ inline static size_t max_user_send_size(gnutls_session_t session, return max; } -inline static bool _gnutls_has_negotiate_ctypes(gnutls_session_t session) +/* Returns the during the handshake negotiated certificate type(s). + * See state.c for the full function documentation. + * + * This function is made static inline for optimization reasons. + */ +static inline gnutls_certificate_type_t +get_certificate_type(gnutls_session_t session, + gnutls_ctype_target_t target) { - return session->internals.flags & GNUTLS_ENABLE_CERT_TYPE_NEG; + switch (target) { + case GNUTLS_CTYPE_CLIENT: + return session->security_parameters.client_ctype; + break; + case GNUTLS_CTYPE_SERVER: + return session->security_parameters.server_ctype; + break; + case GNUTLS_CTYPE_OURS: + if (IS_SERVER(session)) { + return session->security_parameters.server_ctype; + } else { + return session->security_parameters.client_ctype; + } + break; + case GNUTLS_CTYPE_PEERS: + if (IS_SERVER(session)) { + return session->security_parameters.client_ctype; + } else { + return session->security_parameters.server_ctype; + } + break; + default: // Illegal parameter passed + return GNUTLS_CRT_UNKNOWN; + } } /* Macros to aide constant time/mem checks */ |