* 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
info->ncerts = 0;
return 0;
}
-
+
info->raw_certificate_list =
gnutls_calloc(1, sizeof(gnutls_datum) * ncerts);
if (info->raw_certificate_list == NULL) {
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) {
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();
#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(),
}
} else { /* server side */
-
if ( session->security_parameters.cert_type != DEFAULT_CERT_TYPE) {
len = 1;
if (data_size < len) {
/* 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;
/* 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;
/* 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);
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; \
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;
}
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
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;
/* 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;
data[packed_session->size - sizeof(SecurityParameters)],
&session->security_parameters, sizeof(SecurityParameters));
-
return 0;
}