]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
cleanup the priority functionality
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Sat, 24 Nov 2007 09:58:46 +0000 (11:58 +0200)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Sat, 24 Nov 2007 09:58:46 +0000 (11:58 +0200)
lib/ext_cert_type.c
lib/gnutls_algorithms.c
lib/gnutls_int.h
lib/gnutls_priority.c
lib/gnutls_record.c
lib/gnutls_state.c

index f89c4c6dfc732b05591d42ea34bc3d74f3f94b6b..0ddc19d23301a98541f915229af41297ef042022 100644 (file)
@@ -150,13 +150,13 @@ _gnutls_cert_type_send_params (gnutls_session_t session, opaque * data,
   if (session->security_parameters.entity == GNUTLS_CLIENT)
     {
 
-      if (session->internals.cert_type_priority.algorithms > 0)
+      if (session->internals.priorities.cert_type.algorithms > 0)
        {
 
-         len = session->internals.cert_type_priority.algorithms;
+         len = session->internals.priorities.cert_type.algorithms;
 
          if (len == 1 &&
-             session->internals.cert_type_priority.priority[0] ==
+             session->internals.priorities.cert_type.priority[0] ==
              GNUTLS_CRT_X509)
            {
              /* We don't use this extension if X.509 certificates
@@ -178,7 +178,7 @@ _gnutls_cert_type_send_params (gnutls_session_t session, opaque * data,
          for (i = 0; i < len; i++)
            {
              data[i + 1] = _gnutls_cert_type2num (session->internals.
-                                                  cert_type_priority.
+                                                  priorities.cert_type.
                                                   priority[i]);
            }
          return len + 1;
index 0b95cc87d380eb65fff32770d24f777514bda397..8866a18da04de820f072bbe7d09b394c02ac1836 100644 (file)
@@ -658,9 +658,9 @@ _gnutls_mac_priority (gnutls_session_t session,
                      gnutls_mac_algorithm_t algorithm)
 {                              /* actually returns the priority */
   unsigned int i;
-  for (i = 0; i < session->internals.mac_algorithm_priority.algorithms; i++)
+  for (i = 0; i < session->internals.priorities.mac.algorithms; i++)
     {
-      if (session->internals.mac_algorithm_priority.priority[i] == algorithm)
+      if (session->internals.priorities.mac.priority[i] == algorithm)
        return i;
     }
   return -1;
@@ -784,10 +784,10 @@ _gnutls_compression_priority (gnutls_session_t session,
 {                              /* actually returns the priority */
   unsigned int i;
   for (i = 0;
-       i < session->internals.compression_method_priority.algorithms; i++)
+       i < session->internals.priorities.compression.algorithms; i++)
     {
-      if (session->internals.
-         compression_method_priority.priority[i] == algorithm)
+      if (session->internals.priorities.
+         compression.priority[i] == algorithm)
        return i;
     }
   return -1;
@@ -931,10 +931,10 @@ _gnutls_cipher_priority (gnutls_session_t session,
 {
   unsigned int i;
   for (i = 0;
-       i < session->internals.cipher_algorithm_priority.algorithms; i++)
+       i < session->internals.priorities.cipher.algorithms; i++)
     {
-      if (session->internals.
-         cipher_algorithm_priority.priority[i] == algorithm)
+      if (session->internals.priorities.
+         cipher.priority[i] == algorithm)
        return i;
     }
   return -1;
@@ -1069,9 +1069,9 @@ _gnutls_kx_priority (gnutls_session_t session,
                     gnutls_kx_algorithm_t algorithm)
 {
   unsigned int i;
-  for (i = 0; i < session->internals.kx_algorithm_priority.algorithms; i++)
+  for (i = 0; i < session->internals.priorities.kx.algorithms; i++)
     {
-      if (session->internals.kx_algorithm_priority.priority[i] == algorithm)
+      if (session->internals.priorities.kx.priority[i] == algorithm)
        return i;
     }
   return -1;
@@ -1163,15 +1163,15 @@ _gnutls_version_priority (gnutls_session_t session, gnutls_protocol_t version)
 {                              /* actually returns the priority */
   unsigned int i;
 
-  if (session->internals.protocol_priority.priority == NULL)
+  if (session->internals.priorities.protocol.priority == NULL)
     {
       gnutls_assert ();
       return -1;
     }
 
-  for (i = 0; i < session->internals.protocol_priority.algorithms; i++)
+  for (i = 0; i < session->internals.priorities.protocol.algorithms; i++)
     {
-      if (session->internals.protocol_priority.priority[i] == version)
+      if (session->internals.priorities.protocol.priority[i] == version)
        return i;
     }
   return -1;
@@ -1182,15 +1182,15 @@ _gnutls_version_lowest (gnutls_session_t session)
 {                              /* returns the lowest version supported */
   unsigned int i, min = 0xff;
 
-  if (session->internals.protocol_priority.priority == NULL)
+  if (session->internals.priorities.protocol.priority == NULL)
     {
       return GNUTLS_VERSION_UNKNOWN;
     }
   else
-    for (i = 0; i < session->internals.protocol_priority.algorithms; i++)
+    for (i = 0; i < session->internals.priorities.protocol.algorithms; i++)
       {
-       if (session->internals.protocol_priority.priority[i] < min)
-         min = session->internals.protocol_priority.priority[i];
+       if (session->internals.priorities.protocol.priority[i] < min)
+         min = session->internals.priorities.protocol.priority[i];
       }
 
   if (min == 0xff)
@@ -1204,15 +1204,15 @@ _gnutls_version_max (gnutls_session_t session)
 {                              /* returns the maximum version supported */
   unsigned int i, max = 0x00;
 
-  if (session->internals.protocol_priority.priority == NULL)
+  if (session->internals.priorities.protocol.priority == NULL)
     {
       return GNUTLS_VERSION_UNKNOWN;
     }
   else
-    for (i = 0; i < session->internals.protocol_priority.algorithms; i++)
+    for (i = 0; i < session->internals.priorities.protocol.algorithms; i++)
       {
-       if (session->internals.protocol_priority.priority[i] > max)
-         max = session->internals.protocol_priority.priority[i];
+       if (session->internals.priorities.protocol.priority[i] > max)
+         max = session->internals.priorities.protocol.priority[i];
       }
 
   if (max == 0x00)
@@ -1775,7 +1775,7 @@ _gnutls_supported_ciphersuites (gnutls_session_t session,
 
 /* returns the TLS numbers of the compression methods we support 
  */
-#define SUPPORTED_COMPRESSION_METHODS session->internals.compression_method_priority.algorithms
+#define SUPPORTED_COMPRESSION_METHODS session->internals.priorities.compression.algorithms
 int
 _gnutls_supported_compression_methods (gnutls_session_t session,
                                       uint8_t ** comp)
@@ -1788,9 +1788,8 @@ _gnutls_supported_compression_methods (gnutls_session_t session,
 
   for (i = j = 0; i < SUPPORTED_COMPRESSION_METHODS; i++)
     {
-      int tmp = _gnutls_compression_get_num (session->internals.
-                                            compression_method_priority.
-                                            priority[i]);
+      int tmp = _gnutls_compression_get_num (session->internals.priorities.
+                                            compression.priority[i]);
 
       /* remove private compression algorithms, if requested.
        */
index 1d289a4c6952ac18aa41c012e1c78ac36b3698d3..47de0543c8e73fd8a3280c165af893d9ebb77a84 100644 (file)
@@ -378,13 +378,27 @@ typedef struct
   uint64 write_sequence_number;
 } conn_stat_st;
 
-
 typedef struct
 {
   unsigned int priority[MAX_ALGOS];
   unsigned int algorithms;
 } priority_st;
 
+/* For the external api */
+typedef struct gnutls_priority_st
+{
+  priority_st cipher;
+  priority_st mac;
+  priority_st kx;
+  priority_st compression;
+  priority_st protocol;
+  priority_st cert_type;
+
+  /* to disable record padding */
+  int no_padding;
+} *gnutls_priority_t;
+
+
 /* DH and RSA parameters types.
  */
 typedef struct gnutls_dh_params_int
@@ -448,13 +462,9 @@ typedef struct
 
   /* this is the compression method we are going to use */
   gnutls_compression_method_t compression_method;
+
   /* priorities */
-  priority_st cipher_algorithm_priority;
-  priority_st mac_algorithm_priority;
-  priority_st kx_algorithm_priority;
-  priority_st compression_method_priority;
-  priority_st protocol_priority;
-  priority_st cert_type_priority;
+  struct gnutls_priority_st priorities;
 
   /* resumed session */
   resumable_session_t resumed; /* RESUME_TRUE or FALSE - if we are resuming a session */
@@ -463,9 +473,6 @@ typedef struct
   /* sockets internals */
   int lowat;
   
-  /* to disable record padding */
-  int no_padding;
-
   /* These buffers are used in the handshake
    * protocol only. freed using _gnutls_handshake_io_buffer_clear();
    */
index 867f7c3c651cf9710aa50d3186a11cde63441625..9de12feb2014d2083cdd64103010434ec2561d2c 100644 (file)
@@ -59,11 +59,11 @@ gnutls_cipher_set_priority (gnutls_session_t session, const int *list)
     num++;
   if (num > MAX_ALGOS)
     num = MAX_ALGOS;
-  session->internals.cipher_algorithm_priority.algorithms = num;
+  session->internals.priorities.cipher.algorithms = num;
 
   for (i = 0; i < num; i++)
     {
-      session->internals.cipher_algorithm_priority.priority[i] = list[i];
+      session->internals.priorities.cipher.priority[i] = list[i];
     }
 
   return 0;
@@ -93,11 +93,11 @@ gnutls_kx_set_priority (gnutls_session_t session, const int *list)
     num++;
   if (num > MAX_ALGOS)
     num = MAX_ALGOS;
-  session->internals.kx_algorithm_priority.algorithms = num;
+  session->internals.priorities.kx.algorithms = num;
 
   for (i = 0; i < num; i++)
     {
-      session->internals.kx_algorithm_priority.priority[i] = list[i];
+      session->internals.priorities.kx.priority[i] = list[i];
     }
 
   return 0;
@@ -127,11 +127,11 @@ gnutls_mac_set_priority (gnutls_session_t session, const int *list)
     num++;
   if (num > MAX_ALGOS)
     num = MAX_ALGOS;
-  session->internals.mac_algorithm_priority.algorithms = num;
+  session->internals.priorities.mac.algorithms = num;
 
   for (i = 0; i < num; i++)
     {
-      session->internals.mac_algorithm_priority.priority[i] = list[i];
+      session->internals.priorities.mac.priority[i] = list[i];
     }
 
   return 0;
@@ -165,11 +165,11 @@ gnutls_compression_set_priority (gnutls_session_t session, const int *list)
     num++;
   if (num > MAX_ALGOS)
     num = MAX_ALGOS;
-  session->internals.compression_method_priority.algorithms = num;
+  session->internals.priorities.compression.algorithms = num;
 
   for (i = 0; i < num; i++)
     {
-      session->internals.compression_method_priority.priority[i] = list[i];
+      session->internals.priorities.compression.priority[i] = list[i];
     }
   return 0;
 }
@@ -195,11 +195,11 @@ gnutls_protocol_set_priority (gnutls_session_t session, const int *list)
     num++;
   if (num > MAX_ALGOS)
     num = MAX_ALGOS;
-  session->internals.protocol_priority.algorithms = num;
+  session->internals.priorities.protocol.algorithms = num;
 
   for (i = 0; i < num; i++)
     {
-      session->internals.protocol_priority.priority[i] = list[i];
+      session->internals.priorities.protocol.priority[i] = list[i];
     }
 
   /* set the current version to the first in the chain.
@@ -238,11 +238,11 @@ gnutls_certificate_type_set_priority (gnutls_session_t session,
     num++;
   if (num > MAX_ALGOS)
     num = MAX_ALGOS;
-  session->internals.cert_type_priority.algorithms = num;
+  session->internals.priorities.cert_type.algorithms = num;
 
   for (i = 0; i < num; i++)
     {
-      session->internals.cert_type_priority.priority[i] = list[i];
+      session->internals.priorities.cert_type.priority[i] = list[i];
     }
 
   return 0;
@@ -556,33 +556,33 @@ gnutls_set_priority(gnutls_session_t session, const char *priority,
 
          if ((algo =
               gnutls_mac_get_id (&broken_list[i][1])) != GNUTLS_MAC_UNKNOWN)
-           fn(&session->internals.mac_algorithm_priority, algo);
+           fn(&session->internals.priorities.mac, algo);
          else if ((algo = gnutls_cipher_get_id (&broken_list[i][1])) !=
                   GNUTLS_CIPHER_UNKNOWN)
-           fn (&session->internals.cipher_algorithm_priority, algo);
+           fn (&session->internals.priorities.cipher, algo);
          else if ((algo = gnutls_kx_get_id (&broken_list[i][1])) !=
                   GNUTLS_KX_UNKNOWN)
-           fn(&session->internals.kx_algorithm_priority, algo);
+           fn(&session->internals.priorities.kx, algo);
          else if (strncasecmp (&broken_list[i][1], "VERS-", 5) == 0)
            {
              if ((algo =
                   gnutls_protocol_get_id (&broken_list[i][6])) !=
                  GNUTLS_VERSION_UNKNOWN)
-               fn(&session->internals.protocol_priority, algo);
+               fn(&session->internals.priorities.protocol, algo);
            }                   /* now check if the element is something like -ALGO */
          else if (strncasecmp (&broken_list[i][1], "COMP-", 5) == 0)
            {
              if ((algo =
                   gnutls_compression_get_id (&broken_list[i][6])) !=
                  GNUTLS_COMP_UNKNOWN)
-               fn(&session->internals.compression_method_priority, algo);
+               fn(&session->internals.priorities.compression, algo);
            }                   /* now check if the element is something like -ALGO */
          else if (strncasecmp (&broken_list[i][1], "CTYPE-", 6) == 0)
            {
              if ((algo =
                   gnutls_certificate_type_get_id (&broken_list[i][7])) !=
                  GNUTLS_CRT_UNKNOWN)
-               fn(&session->internals.cert_type_priority, algo);
+               fn(&session->internals.priorities.cert_type, algo);
            }                   /* now check if the element is something like -ALGO */
          else
            goto error;
index 576917c409b61732b7679706045eacd4efdd5f77..d4ff531078d6242feed833412898116c16046d73 100644 (file)
@@ -96,7 +96,7 @@ gnutls_transport_set_lowat (gnutls_session_t session, int num)
 void
 gnutls_record_disable_padding (gnutls_session_t session)
 {
-  session->internals.no_padding = 1;
+  session->internals.priorities.no_padding = 1;
 }
 
 /**
@@ -408,7 +408,7 @@ _gnutls_send_int (gnutls_session_t session, content_type_t type,
 
       cipher_size =
        _gnutls_encrypt (session, headers, RECORD_HEADER_SIZE, data,
-                        data2send_size, cipher, cipher_size, type, (session->internals.no_padding==0)?1:0);
+                        data2send_size, cipher, cipher_size, type, (session->internals.priorities.no_padding==0)?1:0);
       if (cipher_size <= 0)
        {
          gnutls_assert ();
index f1d64917c62789179382e2e99c88e6def81ffd03..c95f723d7a4c61e89f1cc3f3e69286e20e7d3fe5 100644 (file)
@@ -150,13 +150,13 @@ _gnutls_session_cert_type_supported (gnutls_session_t session,
     }
 
 
-  if (session->internals.cert_type_priority.algorithms == 0
+  if (session->internals.priorities.cert_type.algorithms == 0
       && cert_type == DEFAULT_CERT_TYPE)
     return 0;
 
-  for (i = 0; i < session->internals.cert_type_priority.algorithms; i++)
+  for (i = 0; i < session->internals.priorities.cert_type.algorithms; i++)
     {
-      if (session->internals.cert_type_priority.priority[i] == cert_type)
+      if (session->internals.priorities.cert_type.priority[i] == cert_type)
        {
          return 0;             /* ok */
        }