From: Nikos Mavrogiannopoulos Date: Wed, 27 Mar 2013 17:08:26 +0000 (+0100) Subject: convert gnutls versions to TLS major-minor in a single function. X-Git-Tag: gnutls_3_2_0~92 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=854ebc232ee77a5410e6ce1dab6647372b02767e;p=thirdparty%2Fgnutls.git convert gnutls versions to TLS major-minor in a single function. --- diff --git a/lib/algorithms.h b/lib/algorithms.h index 9034adc3bc..e37d23ccef 100644 --- a/lib/algorithms.h +++ b/lib/algorithms.h @@ -38,9 +38,8 @@ int _gnutls_version_priority (gnutls_session_t session, gnutls_protocol_t version); int _gnutls_version_is_supported (gnutls_session_t session, const gnutls_protocol_t version); -int _gnutls_version_get_major (gnutls_protocol_t ver); -int _gnutls_version_get_minor (gnutls_protocol_t ver); -gnutls_protocol_t _gnutls_version_get (int major, int minor); +void _gnutls_version_to_tls (gnutls_protocol_t ver, uint8_t* major, uint8_t* minor); +gnutls_protocol_t _gnutls_version_get (uint8_t major, uint8_t minor); /* Functions for feature checks */ int _gnutls_version_has_selectable_prf (gnutls_protocol_t version); diff --git a/lib/algorithms/protocols.c b/lib/algorithms/protocols.c index 34b6d4599a..93db6c1833 100644 --- a/lib/algorithms/protocols.c +++ b/lib/algorithms/protocols.c @@ -32,10 +32,10 @@ typedef struct { const char *name; gnutls_protocol_t id; /* gnutls internal version number */ - int major; /* defined by the protocol */ - int minor; /* defined by the protocol */ + uint8_t major; /* defined by the protocol */ + uint8_t minor; /* defined by the protocol */ transport_t transport; /* Type of transport, stream or datagram */ - int supported; /* 0 not supported, > 0 is supported */ + unsigned int supported:1; /* 0 not supported, > 0 is supported */ } gnutls_version_entry; static const gnutls_version_entry sup_versions[] = { @@ -185,19 +185,10 @@ static gnutls_protocol_t supported_protocols[MAX_ALGOS] = {0}; return supported_protocols; } -int -_gnutls_version_get_minor (gnutls_protocol_t version) -{ - int ret = -1; - - GNUTLS_VERSION_ALG_LOOP (ret = p->minor); - return ret; -} - /* Returns a version number given the major and minor numbers. */ gnutls_protocol_t -_gnutls_version_get (int major, int minor) +_gnutls_version_get (uint8_t major, uint8_t minor) { int ret = -1; @@ -206,13 +197,10 @@ _gnutls_version_get (int major, int minor) return ret; } -int -_gnutls_version_get_major (gnutls_protocol_t version) +void +_gnutls_version_to_tls (gnutls_protocol_t version, uint8_t* major, uint8_t *minor) { - int ret = -1; - - GNUTLS_VERSION_ALG_LOOP (ret = p->major); - return ret; + GNUTLS_VERSION_ALG_LOOP (*major = p->major; *minor = p->minor); } /* Version Functions */ diff --git a/lib/auth/rsa.c b/lib/auth/rsa.c index f2b9d5e850..f6a654234c 100644 --- a/lib/auth/rsa.c +++ b/lib/auth/rsa.c @@ -289,8 +289,8 @@ _gnutls_gen_rsa_client_kx (gnutls_session_t session, gnutls_buffer_st* data) if (session->internals.rsa_pms_version[0] == 0) { - session->key.key.data[0] = _gnutls_version_get_major (ver); - session->key.key.data[1] = _gnutls_version_get_minor (ver); + _gnutls_version_to_tls(ver, &session->key.key.data[0], + &session->key.key.data[1]); } else { /* use the version provided */ diff --git a/lib/gnutls_cipher.c b/lib/gnutls_cipher.c index 48f3cefa11..8aca3259b4 100644 --- a/lib/gnutls_cipher.c +++ b/lib/gnutls_cipher.c @@ -271,12 +271,13 @@ calc_enc_length_stream (gnutls_session_t session, int data_size, */ static inline int make_preamble (uint8_t * uint64_data, uint8_t type, unsigned int length, - uint8_t ver, uint8_t * preamble) + gnutls_protocol_t ver, uint8_t * preamble) { - uint8_t minor = _gnutls_version_get_minor (ver); - uint8_t major = _gnutls_version_get_major (ver); + uint8_t minor, major; uint8_t *p = preamble; uint16_t c_length; + + _gnutls_version_to_tls(ver, &major, &minor); c_length = _gnutls_conv_uint16 (length); diff --git a/lib/gnutls_handshake.c b/lib/gnutls_handshake.c index 39b67ee8e9..a37bc6d00d 100644 --- a/lib/gnutls_handshake.c +++ b/lib/gnutls_handshake.c @@ -1881,8 +1881,8 @@ _gnutls_send_client_hello (gnutls_session_t session, int again) return GNUTLS_E_INTERNAL_ERROR; } - data[pos++] = _gnutls_version_get_major (hver); - data[pos++] = _gnutls_version_get_minor (hver); + _gnutls_version_to_tls(hver, &data[pos], &data[pos+1]); + pos+=2; /* Set the version we advertized as maximum * (RSA uses it). @@ -2057,10 +2057,9 @@ _gnutls_send_server_hello (gnutls_session_t session, int again) } data = _mbuffer_get_udata_ptr (bufel); - data[pos++] = - _gnutls_version_get_major (session->security_parameters.version); - data[pos++] = - _gnutls_version_get_minor (session->security_parameters.version); + _gnutls_version_to_tls(session->security_parameters.version, + &data[pos], &data[pos+1]); + pos += 2; memcpy (&data[pos], session->security_parameters.server_random, GNUTLS_RANDOM_SIZE); @@ -3424,8 +3423,10 @@ gnutls_handshake_set_max_packet_length (gnutls_session_t session, size_t max) void _gnutls_set_adv_version (gnutls_session_t session, gnutls_protocol_t ver) { - set_adv_version (session, _gnutls_version_get_major (ver), - _gnutls_version_get_minor (ver)); +uint8_t major, minor; + + _gnutls_version_to_tls(ver, &major, &minor); + set_adv_version (session, major, minor); } gnutls_protocol_t diff --git a/lib/gnutls_record.c b/lib/gnutls_record.c index d1b242749d..eea9372f5e 100644 --- a/lib/gnutls_record.c +++ b/lib/gnutls_record.c @@ -391,8 +391,7 @@ copy_record_version (gnutls_session_t session, { lver = gnutls_protocol_get_version (session); - version[0] = _gnutls_version_get_major (lver); - version[1] = _gnutls_version_get_minor (lver); + _gnutls_version_to_tls(lver, &version[0], &version[1]); } else {