gnutls_x509_trust_list_remove_trust_mem: Added
gnutls_x509_trust_list_remove_trust_file: Added
gnutls_x509_trust_list_remove_cas: Added
+gnutls_session_get_desc: Added
* Version 3.1.9 (released 2013-02-27)
}
else
{
- printf ("- Handshake was completed\n");
+ char* desc;
+
+ desc = gnutls_session_get_desc(session);
+ printf ("- Session info: %s\n", desc);
+ gnutls_free(desc);
}
gnutls_record_send (session, MSG, strlen (MSG));
}
else
{
- printf ("- Handshake was completed\n");
+ char* desc;
+
+ desc = gnutls_session_get_desc(session);
+ printf ("- Session info: %s\n", desc);
+ gnutls_free(desc);
}
gnutls_record_send (session, MSG, strlen (MSG));
}
else
{
- printf ("- Handshake was completed\n");
+ char* desc;
+
+ desc = gnutls_session_get_desc(session);
+ printf ("- Session info: %s\n", desc);
+ gnutls_free(desc);
}
gnutls_record_send (session, MSG, strlen (MSG));
}
else
{
- printf ("- Handshake was completed\n");
+ char* desc;
+
+ desc = gnutls_session_get_desc(session);
+ printf ("- Session info: %s\n", desc);
+ gnutls_free(desc);
}
gnutls_record_send (session, MSG, strlen (MSG));
}
else
{
- printf ("- Handshake was completed\n");
+ char* desc;
+
+ desc = gnutls_session_get_desc(session);
+ printf ("- Session info: %s\n", desc);
+ gnutls_free(desc);
}
gnutls_record_send (session, MSG, strlen (MSG));
}
else
{
- printf ("- Handshake was completed\n");
+ char* desc;
+
+ desc = gnutls_session_get_desc(session);
+ printf ("- Session info: %s\n", desc);
+ gnutls_free(desc);
}
gnutls_record_send (session, MSG, strlen (MSG));
}
else
{
- printf ("- Handshake was completed\n");
+ char* desc;
+
+ desc = gnutls_session_get_desc(session);
+ printf ("- Session info: %s\n", desc);
+ gnutls_free(desc);
}
gnutls_record_send (session, MSG, strlen (MSG));
/* FIXME: The following are not saved in the session storage
* for session resumption.
*/
-
+
/* Used by extensions that enable supplemental data: Which ones
* do that? Do they belong in security parameters?
*/
{
res->rsa_params = rsa_params;
}
-
#endif
+
+#define DESC_SIZE 64
+
+/**
+ * gnutls_session_get_desc:
+ * @session: is a gnutls session
+ *
+ * This function returns a string describing the current session.
+ * The string is null terminated and allocated using gnutls_malloc().
+ *
+ * Returns: a description of the protocols and algorithms in the current session.
+ *
+ * Since: 3.1.10
+ **/
+char *
+gnutls_session_get_desc (gnutls_session_t session)
+{
+ gnutls_kx_algorithm_t kx;
+ unsigned type;
+ char kx_name[32];
+ char proto_name[32];
+ const char* curve_name = NULL;
+ unsigned dh_bits = 0;
+ char* desc;
+
+ kx = session->security_parameters.kx_algorithm;
+
+ if (kx == GNUTLS_KX_ANON_ECDH || kx == GNUTLS_KX_ECDHE_PSK ||
+ kx == GNUTLS_KX_ECDHE_RSA || kx == GNUTLS_KX_ECDHE_ECDSA)
+ {
+ curve_name = gnutls_ecc_curve_get_name(gnutls_ecc_curve_get(session));
+ }
+ else if (kx == GNUTLS_KX_ANON_DH || kx == GNUTLS_KX_DHE_PSK ||
+ kx == GNUTLS_KX_DHE_RSA || kx == GNUTLS_KX_DHE_DSS)
+ {
+ dh_bits = gnutls_dh_get_prime_bits (session);
+ }
+
+ if (curve_name != NULL)
+ snprintf(kx_name, sizeof(kx_name), "%s-%s", gnutls_kx_get_name(kx), curve_name);
+ else if (dh_bits != 0)
+ snprintf(kx_name, sizeof(kx_name), "%s-%u", gnutls_kx_get_name(kx), dh_bits);
+ else
+ snprintf(kx_name, sizeof(kx_name), "%s", gnutls_kx_get_name(kx));
+
+ type = gnutls_certificate_type_get (session);
+ if (type == GNUTLS_CRT_X509)
+ snprintf(proto_name, sizeof(proto_name), "%s-PKIX", gnutls_protocol_get_name(_gnutls_protocol_get_version(session)));
+ else
+ snprintf(proto_name, sizeof(proto_name), "%s-%s", gnutls_protocol_get_name(_gnutls_protocol_get_version(session)),
+ gnutls_certificate_type_get_name(type));
+
+ gnutls_protocol_get_name(_gnutls_protocol_get_version (session)),
+
+ desc = gnutls_malloc(DESC_SIZE);
+ if (desc == NULL)
+ return NULL;
+
+ snprintf(desc, DESC_SIZE,
+ "(%s)-(%s)-(%s)-(%s)",
+ proto_name,
+ kx_name,
+ gnutls_cipher_get_name (gnutls_cipher_get (session)),
+ gnutls_mac_get_name (gnutls_mac_get (session)));
+
+ return desc;
+}
gnutls_datum_t * data);
void gnutls_session_get_random (gnutls_session_t session, gnutls_datum_t* client,
gnutls_datum_t* server);
+ char * gnutls_session_get_desc (gnutls_session_t session);
int gnutls_session_set_premaster (gnutls_session_t session, unsigned int entity,
gnutls_protocol_t version,
gnutls_x509_trust_list_remove_trust_mem;
gnutls_x509_trust_list_remove_trust_file;
gnutls_x509_trust_list_remove_cas;
+ gnutls_session_get_desc;
} GNUTLS_3_0_0;
GNUTLS_PRIVATE {
unsigned char session_id[33];
size_t session_id_size = sizeof (session_id);
gnutls_srtp_profile_t srtp_profile;
+ char *desc;
int rc;
+ desc = gnutls_session_get_desc(session);
+ printf ("- Description: %s\n", desc);
+ gnutls_free(desc);
+
/* print session ID */
gnutls_session_get_id (session, session_id, &session_id_size);
printf ("- Session ID: %s\n",