]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
corrected bug in the session resumption detection in the gnutls-cli-debug, and other...
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Wed, 27 Aug 2003 15:24:59 +0000 (15:24 +0000)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Wed, 27 Aug 2003 15:24:59 +0000 (15:24 +0000)
src/serv.c
src/tests.c
src/tls_test-gaa.c
src/tls_test-gaa.h
src/tls_test.c
src/tls_test.gaa

index 92f32c50ee4a142a0cdc319ad9ea70e3835d2eeb..ae7feb2041a7dccc98b24eb80718eeb203e36ebd 100644 (file)
@@ -114,7 +114,7 @@ gnutls_srp_server_credentials srp_cred;
 gnutls_anon_server_credentials dh_cred;
 gnutls_certificate_credentials cert_cred;
 
-const int ssl_session_cache = 40;
+const int ssl_session_cache = 128;
 
 static void wrap_db_init(void);
 static void wrap_db_deinit(void);
index 20155388f40fbb08b943f87ad80abc77032acd62..d2e4ff6e71e59c1be98fa8d68fdf6a726e132152 100644 (file)
@@ -589,7 +589,8 @@ int ret;
 }
 #endif
 
-int test_session_resume2( gnutls_session session) {
+int test_session_resume2( gnutls_session session) 
+{
 int ret;
 char tmp_session_id[32];
 int tmp_session_id_size;
@@ -602,6 +603,8 @@ int tmp_session_id_size;
        ADD_ALL_PROTOCOLS(session);
        ADD_ALL_MACS(session);
        ADD_ALL_KX(session);
+
+       gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, xcred);
        gnutls_credentials_set(session, GNUTLS_CRD_ANON, anon_cred);
 
        gnutls_session_set_data(session, session_data, session_data_size);
@@ -611,12 +614,14 @@ int tmp_session_id_size;
 
        ret = do_handshake( session);
        if (ret == FAILED) return ret;
-       
+
        /* check if we actually resumed the previous session */
 
        session_id_size = sizeof(session_id);
        gnutls_session_get_id(session, session_id, &session_id_size);
 
+       if (gnutls_session_is_resumed( session)) return SUCCEED;
+
        if (memcmp(tmp_session_id, session_id, tmp_session_id_size) == 0)
                return SUCCEED;
        else
index 774b7c1b9aae4cb633b9509b5e9bae31349abfb3..297de3aab4668f247145c49c806d34689a2d0783 100644 (file)
@@ -118,6 +118,7 @@ void gaa_help(void)
 {
        printf("GNU TLS debug client\nUsage: gnutls-cli-debug [options] hostname\n\n\n");
        __gaa_helpsingle('p', "port", "integer ", "The port to connect to.");
+       __gaa_helpsingle('d', "debug", "integer ", "Enable debugging");
        __gaa_helpsingle('v', "verbose", "", "More verbose output");
        __gaa_helpsingle('h', "help", "", "prints this help");
 
@@ -134,10 +135,12 @@ typedef struct _gaainfo gaainfo;
 
 struct _gaainfo
 {
-#line 12 "tls_test.gaa"
+#line 15 "tls_test.gaa"
        char *rest_args;
-#line 6 "tls_test.gaa"
+#line 9 "tls_test.gaa"
        int more_info;
+#line 6 "tls_test.gaa"
+       int debug;
 #line 3 "tls_test.gaa"
        int pp;
 
@@ -194,10 +197,11 @@ int gaa_error = 0;
 #define GAA_MULTIPLE_OPTION     3
 
 #define GAA_REST                0
-#define GAA_NB_OPTION           3
+#define GAA_NB_OPTION           4
 #define GAAOPTID_help  1
 #define GAAOPTID_verbose       2
-#define GAAOPTID_port  3
+#define GAAOPTID_debug 3
+#define GAAOPTID_port  4
 
 #line 168 "gaa.skel"
 
@@ -384,6 +388,12 @@ float gaa_getfloat(char *arg)
 }
 /* option structures */
 
+struct GAAOPTION_debug 
+{
+       int arg1;
+       int size1;
+};
+
 struct GAAOPTION_port 
 {
        int arg1;
@@ -426,6 +436,7 @@ int gaa_get_option_num(char *str, int status)
     switch(status)
         {
         case GAA_LETTER_OPTION:
+                       GAA_CHECK1STR("d", GAAOPTID_debug);
                        GAA_CHECK1STR("p", GAAOPTID_port);
         case GAA_MULTIPLE_OPTION:
 #line 375 "gaa.skel"
@@ -437,6 +448,7 @@ int gaa_get_option_num(char *str, int status)
         case GAA_WORD_OPTION:
                        GAA_CHECKSTR("help", GAAOPTID_help);
                        GAA_CHECKSTR("verbose", GAAOPTID_verbose);
+                       GAA_CHECKSTR("debug", GAAOPTID_debug);
                        GAA_CHECKSTR("port", GAAOPTID_port);
 
 #line 281 "gaa.skel"
@@ -450,6 +462,7 @@ int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list)
 {
     int OK = 0;
     int gaa_last_non_option;
+       struct GAAOPTION_debug GAATMP_debug;
        struct GAAOPTION_port GAATMP_port;
 
 #line 393 "gaa.skel"
@@ -473,16 +486,26 @@ int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list)
     {
        case GAAOPTID_help:
        OK = 0;
-#line 9 "tls_test.gaa"
+#line 12 "tls_test.gaa"
 { gaa_help(); exit(0); ;};
 
                return GAA_OK;
                break;
        case GAAOPTID_verbose:
        OK = 0;
-#line 7 "tls_test.gaa"
+#line 10 "tls_test.gaa"
 { gaaval->more_info = 1 ;};
 
+               return GAA_OK;
+               break;
+       case GAAOPTID_debug:
+       OK = 0;
+               GAA_TESTMOREARGS;
+               GAA_FILL(GAATMP_debug.arg1, gaa_getint, GAATMP_debug.size1);
+               gaa_index++;
+#line 7 "tls_test.gaa"
+{ gaaval->debug = GAATMP_debug.arg1 ;};
+
                return GAA_OK;
                break;
        case GAAOPTID_port:
@@ -499,7 +522,7 @@ int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list)
                GAA_TESTMOREARGS;
                GAA_FILL(GAAREST_tmp.arg1, gaa_getstr, GAAREST_tmp.size1);
                gaa_index++;
-#line 13 "tls_test.gaa"
+#line 16 "tls_test.gaa"
 { gaaval->rest_args = GAAREST_tmp.arg1; ;};
 
                return GAA_OK;
@@ -528,7 +551,7 @@ int gaa(int argc, char **argv, gaainfo *gaaval)
     if(inited == 0)
     {
 
-#line 15 "tls_test.gaa"
+#line 18 "tls_test.gaa"
 { gaaval->rest_args=NULL; gaaval->pp = 443; gaaval->more_info = 0; ;};
 
     }
index fe83e489896c6d9c37f63cec5fdb05972955c729..22805265b64b2f3dcea41e76cb6881e8ae5f18f1 100644 (file)
@@ -8,10 +8,12 @@ typedef struct _gaainfo gaainfo;
 
 struct _gaainfo
 {
-#line 12 "tls_test.gaa"
+#line 15 "tls_test.gaa"
        char *rest_args;
-#line 6 "tls_test.gaa"
+#line 9 "tls_test.gaa"
        int more_info;
+#line 6 "tls_test.gaa"
+       int debug;
 #line 3 "tls_test.gaa"
        int pp;
 
index 5c64983cb876060c61b9d680576ddc15b2027081..bd261985ddbddd16f23f74c7d6a9c457506f9ba8 100644 (file)
@@ -53,6 +53,7 @@ char *hostname=NULL;
 int port;
 int record_max_size;
 int fingerprint;
+static int debug;
 
 gnutls_srp_client_credentials srp_cred;
 gnutls_anon_client_credentials anon_cred;
@@ -66,6 +67,11 @@ int more_info = 0;
 int tls1_ok = 0;
 int ssl3_ok = 0;
 
+static void tls_log_func( int level, const char* str)
+{
+       fprintf(stderr, "|<%d>| %s", level, str);
+}
+
 typedef int (*TEST_FUNC)( gnutls_session);
 
 typedef struct {
@@ -93,6 +99,8 @@ static const TLS_TEST tls_tests[] = {
        { "for certificate information", test_certificate, "", "", "" },
        { "for trusted CAs", test_server_cas, "", "", "" },
        { "whether the server understands TLS closure alerts", test_bye, "yes", "no", "partially"},
+       /* the fact that is after the closure alert test matter.
+        */
        { "whether the server supports session resumption", test_session_resume2, "yes", "no", "dunno"},
        { "for export-grade ciphersuite support", test_export, "yes", "no", "dunno" },
 #ifdef ENABLE_ANON
@@ -150,6 +158,9 @@ int main(int argc, char **argv)
                exit(1);
        }
 
+       gnutls_global_set_log_function( tls_log_func);
+       gnutls_global_set_log_level(debug);
+
        if (gnutls_global_init_extra() < 0) {
                fprintf(stderr, "global state initialization error\n");
                exit(1);
@@ -242,6 +253,8 @@ void gaa_parser(int argc, char **argv)
        if (info.rest_args==NULL) hostname="localhost";
        else hostname = info.rest_args;
 
+       debug = info.debug;
+
        more_info = info.more_info;
        
 }
index bf3a059c24f204e3c5cf9d7cd1aa7e7ec0f4630b..dfa49484291b8550f2ab2501f19ebe94a9f25d1a 100644 (file)
@@ -3,6 +3,9 @@ helpnode "GNU TLS debug client\nUsage: gnutls-cli-debug [options] hostname\n\n"
 #int pp;
 option (p, port) INT "integer" { $pp = $1 } "The port to connect to."
 
+#int debug;
+option (d, debug) INT "integer" { $debug = $1 } "Enable debugging" 
+
 #int more_info;
 option (v, verbose) { $more_info = 1 } "More verbose output"