]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
convert gnutls versions to TLS major-minor in a single function.
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Wed, 27 Mar 2013 17:08:26 +0000 (18:08 +0100)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Wed, 27 Mar 2013 17:39:54 +0000 (18:39 +0100)
lib/algorithms.h
lib/algorithms/protocols.c
lib/auth/rsa.c
lib/gnutls_cipher.c
lib/gnutls_handshake.c
lib/gnutls_record.c

index 9034adc3bc6bbb43b636b04075b750ec45ec0788..e37d23ccef30558fbd7d3e83cae786f434f3e12a 100644 (file)
@@ -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);
index 34b6d4599a7f20d47192a149a900550785735d28..93db6c18336ee1822ce8efc5a228885dcb93f3a3 100644 (file)
@@ -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 */
index f2b9d5e850327eff0ef3747c6cc745757da423c3..f6a654234cb09004f89c58e2fba94f3df98a9a6c 100644 (file)
@@ -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 */
index 48f3cefa110e36bc019f77fd59dad2c40958c16c..8aca3259b41d27746f93c475ed64b1563fb7dfd6 100644 (file)
@@ -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);
 
index 39b67ee8e9d95386de36c76fddd1d7905bac2902..a37bc6d00d3c029760c11ff7d2cbf621ff8d7611 100644 (file)
@@ -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
index d1b242749ddec9d603c19fbe9d9e4b80043c6ff5..eea9372f5e62e4a9254cd39550214768883cacd6 100644 (file)
@@ -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
     {