]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
some fixes to have the correct cert_type on resumed sessions.
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Mon, 10 Nov 2003 15:32:33 +0000 (15:32 +0000)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Mon, 10 Nov 2003 15:32:33 +0000 (15:32 +0000)
lib/auth_cert.c
lib/ext_cert_type.c
lib/ext_cert_type.h
lib/gnutls_constate.c
lib/gnutls_extensions.c
lib/gnutls_session_pack.c

index d0bef0f2cb111820bbbca4d4fde1c3b2b9ac4a3c..b0c0685ca274ee1fb3fa5df747cf13ae6fabd03a 100644 (file)
@@ -52,7 +52,7 @@ static int _gnutls_server_find_cert_list_index(gnutls_session session,
  * exported certificate struct (CERTIFICATE_AUTH_INFO)
  */
 static
-int _gnutls_copy_certificate_auth_info(CERTIFICATE_AUTH_INFO info,
+int _gnutls_copy_certificate_auth_info(CERTIFICATE_AUTH_INFO info, gnutls_certificate_type type,
                                       gnutls_cert * cert, int ncerts)
 {
        /* Copy peer's information to AUTH_INFO
@@ -64,7 +64,7 @@ int _gnutls_copy_certificate_auth_info(CERTIFICATE_AUTH_INFO info,
                info->ncerts = 0;
                return 0;
        }
-
+       
        info->raw_certificate_list =
            gnutls_calloc(1, sizeof(gnutls_datum) * ncerts);
        if (info->raw_certificate_list == NULL) {
@@ -737,7 +737,7 @@ int _gnutls_proc_x509_server_certificate(gnutls_session session,
 
 
        if ((ret =
-            _gnutls_copy_certificate_auth_info(info,
+            _gnutls_copy_certificate_auth_info(info, gnutls_certificate_type_get(session),
                                                peer_certificate_list,
                                                peer_certificate_list_size))
            < 0) {
@@ -909,7 +909,8 @@ int _gnutls_proc_openpgp_server_certificate(gnutls_session session,
 
        if ((ret =
             _gnutls_copy_certificate_auth_info(info,
-                                               peer_certificate_list,
+                                               gnutls_certificate_type_get(session),
+                                               peer_certificate_list, 
                                                peer_certificate_list_size))
            < 0) {
                gnutls_assert();
index e9683e37681aca814dc44c3f7823a1fabed68b31..73756461243c5ad5dce0416fe3b410055838f427 100644 (file)
@@ -30,6 +30,9 @@
 #include <gnutls_state.h>
 #include <gnutls_num.h>
 
+inline static int _gnutls_num2cert_type( int num);
+inline static int _gnutls_cert_type2num( int record_size);
+
 /* 
  * In case of a server: if a CERT_TYPE extension type is received then it stores
  * into the session security parameters the new value. The server may use gnutls_session_certificate_type_get(),
@@ -144,7 +147,6 @@ int _gnutls_cert_type_send_params( gnutls_session session, opaque* data, size_t
                }
 
        } else { /* server side */
-
                if ( session->security_parameters.cert_type != DEFAULT_CERT_TYPE) {
                        len = 1;
                        if (data_size < len) {
@@ -165,7 +167,8 @@ int _gnutls_cert_type_send_params( gnutls_session session, opaque* data, size_t
 /* Maps numbers to record sizes according to the
  * extensions draft.
  */
-int _gnutls_num2cert_type( int num) {
+inline
+static int _gnutls_num2cert_type( int num) {
        switch( num) {
        case 0:
                return GNUTLS_CRT_X509;
@@ -179,7 +182,8 @@ int _gnutls_num2cert_type( int num) {
 /* Maps record size to numbers according to the
  * extensions draft.
  */
-int _gnutls_cert_type2num( int cert_type) {
+inline
+static int _gnutls_cert_type2num( int cert_type) {
        switch(cert_type) {
        case GNUTLS_CRT_X509:
                return 0;
index f7520cdab2dba18c5051bf935838f5b116b6db4b..c011befc19ec0dac24aac2b2601c3d82711dcfca 100644 (file)
@@ -1,7 +1,5 @@
 /* Maps record size to numbers according to the
  * extensions draft.
  */
-int _gnutls_num2cert_type( int num);
-int _gnutls_cert_type2num( int record_size);
 int _gnutls_cert_type_recv_params( gnutls_session session, const opaque* data, size_t data_size);
 int _gnutls_cert_type_send_params( gnutls_session session, opaque* data, size_t);
index 191b1c066e2a337b3fb85f4ac34c9b3edec075dd..c74fddd38a2fc9fc96914e9fd493bb9254fbb15a 100644 (file)
@@ -393,6 +393,7 @@ int _gnutls_set_write_keys(gnutls_session session)
        memcpy( dst->server_random, src->server_random, TLS_RANDOM_SIZE); \
        memcpy( dst->session_id, src->session_id, TLS_MAX_SESSION_ID_SIZE); \
        dst->session_id_size = src->session_id_size; \
+       dst->cert_type = src->cert_type; \
        dst->timestamp = src->timestamp; \
        dst->max_record_recv_size = src->max_record_recv_size; \
        dst->max_record_send_size = src->max_record_send_size; \
index 5d8bd6334b01a4fe5603abc54a57633d66532ce6..de80bf5dbdc28aa88f1db3f695128667b8bbc96b 100644 (file)
@@ -77,7 +77,7 @@ const char *_gnutls_extension_get_name(uint16 type)
        const char *ret = NULL;
 
        /* avoid prefix */
-       GNUTLS_EXTENSION_LOOP(ret = p->name + sizeof("EXTENSION_") - 1);
+       GNUTLS_EXTENSION_LOOP(ret = p->name + sizeof("GNUTLS_EXTENSION_") - 1);
 
        return ret;
 }
@@ -111,7 +111,8 @@ int i;
 
        if (session->security_parameters.entity==GNUTLS_CLIENT)
                for (i=0;i<session->internals.extensions_sent_size;i++) {
-                       _gnutls_debug_log("extensions: expecting extension %d\n", session->internals.extensions_sent[i]);
+                       _gnutls_debug_log("EXT[%d]: expecting extension '%s'\n", session,
+                               _gnutls_extension_get_name(session->internals.extensions_sent[i]));
                }
 #endif
 
@@ -126,6 +127,9 @@ int i;
                type = _gnutls_read_uint16( &data[pos]);
                pos+=2;
                
+               _gnutls_debug_log("EXT[%x]: Received extension '%s'\n", session, 
+                       _gnutls_extension_get_name(type));
+               
                if ( (ret=_gnutls_extension_list_check( session, type)) < 0) {
                        gnutls_assert();
                        return ret;
@@ -210,6 +214,9 @@ int (*ext_func_send)( gnutls_session, opaque*, int);
                        /* add this extension to the extension list
                         */
                        _gnutls_extension_list_add( session, next);
+
+                       _gnutls_debug_log("EXT[%x]: Sending extension %s\n", session,
+                               _gnutls_extension_get_name(next));
                } else if (size < 0) {
                        gnutls_assert();
                        gnutls_free(*data); *data = NULL;
index 17cb8946dc77db3deb5ec80649bf6a4655b2eb65..01c7e36e0fca9d52cbe50512c9844073eb361700 100644 (file)
@@ -140,7 +140,6 @@ int _gnutls_session_pack(gnutls_session session, gnutls_datum * packed_session)
               data[packed_session->size - sizeof(SecurityParameters)],
               &session->security_parameters, sizeof(SecurityParameters));
 
-
        return 0;
 }