Current list:
+ Audit the code
* Add function(s) to get the DHE/A parameters
-* Add function to quickly report if a session is a resumed one
* Add function(s) to extract the certificate key's parameters
+* Optimize functions which now return malloc'd data
* Minimize footprint.
- Add Kerberos support
const char *gnutls_protocol_get_name(GNUTLS_Version version);
-/* get/set session */
+/* get/set session
+ */
int gnutls_session_set_data( GNUTLS_STATE state, void* session, int session_size);
int gnutls_session_get_data( GNUTLS_STATE state, void* session, int *session_size);
/* returns the session ID */
int gnutls_session_get_id( GNUTLS_STATE state, void* session, int *session_size);
+/* checks if this session is a resumed one
+ */
+int gnutls_session_resumed(GNUTLS_STATE state);
+
typedef int (*GNUTLS_DB_STORE_FUNC)(void*, gnutls_datum key, gnutls_datum data);
typedef int (*GNUTLS_DB_REMOVE_FUNC)(void*, gnutls_datum key);
typedef gnutls_datum (*GNUTLS_DB_RETR_FUNC)(void*, gnutls_datum key);
CertType_Priority cert_type_priority;
/* resumed session */
- ResumableSession resumed; /* TRUE or FALSE - if we are resuming a session */
+ ResumableSession resumed; /* RESUME_TRUE or FALSE - if we are resuming a session */
SecurityParameters resumed_security_parameters;
/* sockets internals */
#include <gnutls_gcry.h>
#include <gnutls_global.h>
+void _gcry_mpi_invm( MPI x, MPI a, MPI n );
/* Converts an RSA PKCS#1 key to
* an internal structure (gnutls_private_key)
state->gnutls_internals.adv_version_minor = 0;
state->gnutls_internals.adv_version_minor = 0;
- state->gnutls_internals.resumed = RESUME_FALSE;
state->gnutls_internals.resumable = RESUME_TRUE;
}
return 0; /* ok */
}
+
+/**
+ * gnutls_session_resumed - Used to check whether this session is a resumed one
+ * @state: is a &GNUTLS_STATE structure.
+ *
+ * This function will return 0 if this session is a resumed one,
+ * or a negative number if this is a new session.
+ *
+ **/
+int gnutls_session_resumed(GNUTLS_STATE state)
+{
+ if (state->security_parameters.entity==GNUTLS_CLIENT) {
+ if (memcmp( state->security_parameters.session_id,
+ state->gnutls_internals.resumed_security_parameters.session_id,
+ state->security_parameters.session_id_size)==0)
+ return 0;
+ } else {
+ if (state->gnutls_internals.resumed==RESUME_TRUE)
+ return 0;
+ }
+
+ return GNUTLS_E_UNKNOWN_ERROR;
+}
return 1;
} else {
printf("- Handshake was completed\n");
+ if (gnutls_session_resumed( state)==0)
+ printf("*** This is a resumed session\n");
}
if (i == 1) { /* resume */
continue;
}
printf("- Handshake was completed\n");
+ if ( gnutls_session_resumed( state)==0)
+ printf("*** This is a resumed session\n");
print_info(state);