From: Nikos Mavrogiannopoulos Date: Sat, 24 Nov 2007 09:58:46 +0000 (+0200) Subject: cleanup the priority functionality X-Git-Tag: gnutls_2_1_7~38 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6c659775ea17547e85332af22b166687f56726bb;p=thirdparty%2Fgnutls.git cleanup the priority functionality --- diff --git a/lib/ext_cert_type.c b/lib/ext_cert_type.c index f89c4c6dfc..0ddc19d233 100644 --- a/lib/ext_cert_type.c +++ b/lib/ext_cert_type.c @@ -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; diff --git a/lib/gnutls_algorithms.c b/lib/gnutls_algorithms.c index 0b95cc87d3..8866a18da0 100644 --- a/lib/gnutls_algorithms.c +++ b/lib/gnutls_algorithms.c @@ -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. */ diff --git a/lib/gnutls_int.h b/lib/gnutls_int.h index 1d289a4c69..47de0543c8 100644 --- a/lib/gnutls_int.h +++ b/lib/gnutls_int.h @@ -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(); */ diff --git a/lib/gnutls_priority.c b/lib/gnutls_priority.c index 867f7c3c65..9de12feb20 100644 --- a/lib/gnutls_priority.c +++ b/lib/gnutls_priority.c @@ -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; diff --git a/lib/gnutls_record.c b/lib/gnutls_record.c index 576917c409..d4ff531078 100644 --- a/lib/gnutls_record.c +++ b/lib/gnutls_record.c @@ -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 (); diff --git a/lib/gnutls_state.c b/lib/gnutls_state.c index f1d64917c6..c95f723d7a 100644 --- a/lib/gnutls_state.c +++ b/lib/gnutls_state.c @@ -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 */ }