if test $ac_cv_c_compiler_gnu != no; then
if test x$opt_developer_mode = xyes; then
- CFLAGS="${CFLAGS} -g -Wall -Wcast-align -W -Wpointer-arith -Wchar-subscripts -Wformat-security -Wmissing-braces -Winline -Wstrict-prototypes"
+ CFLAGS="${CFLAGS} -g -std=c99 -pedantic -Wno-format-y2k -Wall -Wcast-align -W -Wpointer-arith -Wchar-subscripts -Wformat-security -Wmissing-braces -Winline -Wstrict-prototypes"
else
CFLAGS="${CFLAGS} -O2 -finline-functions"
fi
return 0;
}
+/* Some upper limit to protect alloca();
+ */
+#define MAX_ISSUERS 512
+
/* Finds the appropriate certificate depending on the cA Distinguished name
* advertized by the server. If none matches then returns 0 and -1 as index.
* In case of an error a negative value, is returned.
if (dataptr_size == 0)
break;
- } while (1);
-
+ } while (issuers_dn_len < MAX_ISSUERS);
my_certs =
gnutls_alloca(cred->ncerts * sizeof(gnutls_datum));
int _gnutls_gen_openpgp_certificate_fpr(gnutls_session session,
opaque ** data)
{
- int ret, fpr_size, packet_size;
+ int ret, packet_size;
+ size_t fpr_size;
opaque *pdata;
gnutls_cert *apr_cert_list;
gnutls_privkey* apr_pkey;
*/
peer_certificate_list =
- gnutls_alloca(sizeof(gnutls_cert) *
+ gnutls_malloc(sizeof(gnutls_cert) *
(peer_certificate_list_size));
if (peer_certificate_list == NULL) {
if ((ret =
_gnutls_x509_cert2gnutls_cert(&peer_certificate_list
[j], &tmp,
- CERT_ONLY_EXTENSIONS)) <
- 0) {
+ CERT_ONLY_EXTENSIONS)) < 0) {
gnutls_assert();
- CLEAR_CERTS;
- gnutls_afree(peer_certificate_list);
- return ret;
+ goto cleanup;
}
p += len;
if ((ret =
_gnutls_copy_certificate_auth_info(info, gnutls_certificate_type_get(session),
peer_certificate_list,
- peer_certificate_list_size))
- < 0) {
+ peer_certificate_list_size)) < 0) {
gnutls_assert();
- CLEAR_CERTS;
- gnutls_afree(peer_certificate_list);
- return ret;
+ goto cleanup;
}
if ((ret =
_gnutls_check_key_usage(&peer_certificate_list[0],
- gnutls_kx_get(session)))
- < 0) {
+ gnutls_kx_get(session))) < 0) {
gnutls_assert();
- CLEAR_CERTS;
- gnutls_afree(peer_certificate_list);
- return ret;
+ goto cleanup;
}
+ ret = 0;
+
+cleanup:
CLEAR_CERTS;
- gnutls_afree(peer_certificate_list);
+ gnutls_free(peer_certificate_list);
+ return ret;
- return 0;
}
#define CLEAR_CERTS for(x=0;x<peer_certificate_list_size;x++) _gnutls_free_cert(&peer_certificate_list[x])
const gnutls_certificate_credentials cred;
ssize_t dsize = data_size;
int i, x;
- gnutls_cert *peer_certificate_list;
+ gnutls_cert *peer_certificate_list = NULL;
int peer_certificate_list_size = 0;
gnutls_datum tmp, akey = { NULL, 0 };
if (peer_certificate_list_size == 0) {
gnutls_assert();
- _gnutls_free_datum(&akey);
return GNUTLS_E_UNEXPECTED_PACKET_LENGTH;
}
(peer_certificate_list_size));
if (peer_certificate_list == NULL) {
gnutls_assert();
- return GNUTLS_E_MEMORY_ERROR;
+ ret = GNUTLS_E_MEMORY_ERROR;
+ goto cleanup;
}
memset(peer_certificate_list, 0, sizeof(gnutls_cert) *
peer_certificate_list_size);
if (_E_gnutls_openpgp_cert2gnutls_cert == NULL) {
gnutls_assert();
- _gnutls_free_datum(&akey);
- CLEAR_CERTS;
- gnutls_afree(peer_certificate_list);
- return GNUTLS_E_INIT_LIBEXTRA;
+ ret = GNUTLS_E_INIT_LIBEXTRA;
+ goto cleanup;
}
if ((ret =
_E_gnutls_openpgp_cert2gnutls_cert(&peer_certificate_list[0],
&tmp)) < 0) {
gnutls_assert();
- _gnutls_free_datum(&akey);
- CLEAR_CERTS;
- gnutls_afree(peer_certificate_list);
- return ret;
+ goto cleanup;
}
- _gnutls_free_datum(&akey);
if ((ret =
_gnutls_copy_certificate_auth_info(info,
gnutls_certificate_type_get(session),
peer_certificate_list,
- peer_certificate_list_size))
- < 0) {
+ peer_certificate_list_size)) < 0) {
gnutls_assert();
- CLEAR_CERTS;
- gnutls_afree(peer_certificate_list);
- return ret;
+ goto cleanup;
}
if ((ret =
_gnutls_check_key_usage(&peer_certificate_list[0],
- gnutls_kx_get(session)))
- < 0) {
+ gnutls_kx_get(session))) < 0) {
gnutls_assert();
- CLEAR_CERTS;
- gnutls_afree(peer_certificate_list);
- return ret;
+ goto cleanup;
}
+ ret = 0;
+
+cleanup:
+
+ _gnutls_free_datum(&akey);
CLEAR_CERTS;
gnutls_afree(peer_certificate_list);
-
- return 0;
+ return ret;
+
}
int _gnutls_proc_cert_server_certificate(gnutls_session session,
const gnutls_certificate_credentials cred;
int ind;
- cred = _gnutls_get_kx_cred(session, GNUTLS_CRD_CERTIFICATE, NULL);
+ cred = _gnutls_get_cred(session->key, GNUTLS_CRD_CERTIFICATE, NULL);
if (cred == NULL) {
gnutls_assert();
void _gnutls_dump_mpi(const char* prefix, GNUTLS_MPI a)
{
- char buf[1024];
+ opaque buf[1024];
size_t n = sizeof buf;
if (gcry_mpi_print(GCRYMPI_FMT_HEX, buf, n, &n, a))
size_t _data_size)
{
uint16 len;
- char *p;
+ opaque *p;
int i;
ssize_t data_size = _data_size;
int total_size = 0;
ssize_t ret=0, ret2=0;
size_t min;
int buf_pos;
- char *buf;
+ opaque *buf;
int recvlowat;
int recvdata, alloc_size;
/* This is a receive function for the gnutls handshake
* protocol. Makes sure that we have received all data.
*/
-ssize_t _gnutls_handshake_io_recv_int( gnutls_session session, ContentType type, HandshakeType htype, void *iptr, size_t sizeOfPtr)
+ssize_t _gnutls_handshake_io_recv_int( gnutls_session session,
+ ContentType type, HandshakeType htype, void *iptr, size_t sizeOfPtr)
{
size_t left;
ssize_t i;
- char *ptr;
+ opaque *ptr;
size_t dsize;
ptr = iptr;
/* FIXME: This function is too long
*/
opaque *key_block;
- char random[2 * TLS_RANDOM_SIZE];
- char rrandom[2 * TLS_RANDOM_SIZE];
+ opaque random[2 * TLS_RANDOM_SIZE];
+ opaque rrandom[2 * TLS_RANDOM_SIZE];
int pos, ret;
int block_size;
char buf[64];
} else if (IV_size > 0 && export_flag != 0) {
opaque *iv_block = gnutls_alloca(IV_size * 2);
-
if (iv_block == NULL) {
gnutls_assert();
gnutls_free(key_block);
if (ret < 0) {
gnutls_assert();
gnutls_free(key_block);
+ gnutls_afree(iv_block);
return ret;
}
} else { /* TLS 1.0 */
ret =
- _gnutls_PRF("", 0,
+ _gnutls_PRF( "", 0,
ivblock, ivblock_length, rrandom,
2 * TLS_RANDOM_SIZE, IV_size * 2,
iv_block);
if (ret < 0) {
gnutls_assert();
+ gnutls_afree(iv_block);
gnutls_free(key_block);
return ret;
}
if (_gnutls_sset_datum
(&session->cipher_specs.client_write_IV, iv_block,
IV_size) < 0) {
+ gnutls_afree(iv_block);
gnutls_free(key_block);
return GNUTLS_E_MEMORY_ERROR;
}
if (_gnutls_sset_datum
(&session->cipher_specs.server_write_IV,
&iv_block[IV_size], IV_size) < 0) {
+ gnutls_afree(iv_block);
gnutls_free(key_block);
return GNUTLS_E_MEMORY_ERROR;
}
+
+ gnutls_afree(iv_block);
}
gnutls_free(key_block);
_gnutls_mpi_print( NULL, &g_size, params->_generator);
_gnutls_mpi_print( NULL, &p_size, params->_prime);
- all_data = gnutls_alloca( g_size + p_size);
+ all_data = gnutls_malloc( g_size + p_size);
if (all_data == NULL) {
gnutls_assert();
return GNUTLS_E_MEMORY_ERROR;
(_gnutls_get_gnutls_asn(), "GNUTLS.DHParameter", &c2))
!= ASN1_SUCCESS) {
gnutls_assert();
- gnutls_afree(all_data);
+ gnutls_free(all_data);
return _gnutls_asn2err(result);
}
p_data, p_size)) != ASN1_SUCCESS)
{
gnutls_assert();
- gnutls_afree(all_data);
+ gnutls_free(all_data);
asn1_delete_structure(&c2);
return _gnutls_asn2err(result);
}
if ((result = asn1_write_value(c2, "base",
g_data, g_size)) != ASN1_SUCCESS) {
gnutls_assert();
- gnutls_afree(all_data);
+ gnutls_free(all_data);
asn1_delete_structure(&c2);
return _gnutls_asn2err(result);
}
- gnutls_afree(all_data);
+ gnutls_free(all_data);
if ((result = asn1_write_value(c2, "privateValueLength",
NULL, 0)) != ASN1_SUCCESS) {
len = 0;
asn1_der_coding( c2, "", NULL, &len, NULL);
- tmp = gnutls_alloca( len);
+ tmp = gnutls_malloc( len);
if (tmp == NULL) {
gnutls_assert();
asn1_delete_structure(&c2);
if ((result=asn1_der_coding( c2, "", tmp, &len, NULL)) != ASN1_SUCCESS) {
gnutls_assert();
- gnutls_afree( tmp);
+ gnutls_free( tmp);
asn1_delete_structure(&c2);
return _gnutls_asn2err(result);
}
result = _gnutls_fbase64_encode("DH PARAMETERS",
tmp, len, &out);
- gnutls_afree( tmp);
+ gnutls_free( tmp);
if (result < 0) {
gnutls_assert();
/* EXTENSION functions */
-void* _gnutls_ext_func_recv(uint16 type)
+ext_recv_func _gnutls_ext_func_recv(uint16 type)
{
- void* ret=NULL;
+ ext_recv_func ret = NULL;
GNUTLS_EXTENSION_LOOP(ret = p->gnutls_ext_func_recv);
return ret;
}
-void* _gnutls_ext_func_send(uint16 type)
+
+ext_send_func _gnutls_ext_func_send(uint16 type)
{
- void* ret=NULL;
+ ext_send_func ret = NULL;
GNUTLS_EXTENSION_LOOP(ret = p->gnutls_ext_func_send);
return ret;
}
-const char *_gnutls_extension_get_name(uint16 type)
+const char* _gnutls_extension_get_name(uint16 type)
{
const char *ret = NULL;
/*
- * Copyright (C) 2001 Nikos Mavroyanopoulos
+ * Copyright (C) 2001,2003 Nikos Mavroyanopoulos
*
* This file is part of GNUTLS.
*
#include <gnutls_int.h>
-void* _gnutls_ext_func_send(uint16 type);
-void* _gnutls_ext_func_recv(uint16 type);
const char *_gnutls_extension_get_name(uint16 type);
int _gnutls_parse_extensions( gnutls_session, const opaque*, int);
int _gnutls_gen_extensions( gnutls_session session, opaque** data);
+typedef int (*ext_recv_func)( gnutls_session, const opaque*, size_t); /* recv data */
+typedef int (*ext_send_func)( gnutls_session, opaque*, size_t); /* send data */
+
+ext_send_func _gnutls_ext_func_send(uint16 type);
+ext_recv_func _gnutls_ext_func_recv(uint16 type);
+
typedef struct {
const char *name;
uint16 type;
- int (*gnutls_ext_func_recv)( gnutls_session, const opaque*, size_t); /* recv data */
- int (*gnutls_ext_func_send)( gnutls_session, opaque*, size_t); /* send data */
+ ext_recv_func gnutls_ext_func_recv;
+ ext_send_func gnutls_ext_func_send;
} gnutls_extension_entry;
_gnutls_is_secure_memory = _gnutls_is_secure_mem_null;
/* if using the libc's default malloc
- * then also use the libc's strdup.
+ * use libc's calloc as well.
*/
if ( gnutls_malloc == malloc) {
- gnutls_strdup = strdup;
gnutls_calloc = calloc;
} else { /* use the included ones */
- gnutls_strdup = _gnutls_strdup;
gnutls_calloc = _gnutls_calloc;
}
+ gnutls_strdup = _gnutls_strdup;
+
}
#ifdef DEBUG
const int siz = SSL_MSG_LEN;
GNUTLS_MAC_HANDLE td_md5;
GNUTLS_MAC_HANDLE td_sha;
- const opaque *mesg;
+ const char *mesg;
td_md5 = _gnutls_hash_copy( session->internals.handshake_mac_handle_md5);
if (td_md5 == NULL) {
{
const int siz = TLS_MSG_LEN;
opaque concat[36];
- const opaque *mesg;
+ const char *mesg;
GNUTLS_MAC_HANDLE td_md5;
GNUTLS_MAC_HANDLE td_sha;
opaque * session_id,
int session_id_len)
{
-char buf[2*TLS_MAX_SESSION_ID_SIZE+1];
+opaque buf[2*TLS_MAX_SESSION_ID_SIZE+1];
_gnutls_handshake_log("HSK[%x]: SessionID length: %d\n", session, session_id_len);
_gnutls_handshake_log("HSK[%x]: SessionID: %s\n", session,
* This function also restores resumed parameters if we are resuming a
* session.
*/
-static int _gnutls_read_server_hello(gnutls_session session, char *data,
+static int _gnutls_read_server_hello(gnutls_session session, opaque *data,
int datalen)
{
uint8 session_id_len = 0;
uint8 comp;
opaque *SessionID = session->security_parameters.session_id;
uint8 session_id_len = session->security_parameters.session_id_size;
- char buf[2*TLS_MAX_SESSION_ID_SIZE+1];
+ opaque buf[2*TLS_MAX_SESSION_ID_SIZE+1];
if (SessionID == NULL)
session_id_len = 0;
* hello message is expected. It uses the security_parameters.current_cipher_suite
* and internals.compression_method.
*/
-int _gnutls_recv_hello(gnutls_session session, char *data, int datalen)
+int _gnutls_recv_hello(gnutls_session session, opaque *data, int datalen)
{
int ret;
}
-int _gnutls_generate_session_id(char *session_id, uint8 * len)
+int _gnutls_generate_session_id(opaque *session_id, uint8 * len)
{
*len = TLS_MAX_SESSION_ID_SIZE;
/*
- * Copyright (C) 2000 Nikos Mavroyanopoulos
+ * Copyright (C) 2000,2003 Nikos Mavroyanopoulos
*
* This file is part of GNUTLS.
*
int gnutls_send_hello_request( gnutls_session session);
int _gnutls_recv_hello_request( gnutls_session session, void* data, uint32 data_size);
int _gnutls_send_hello( gnutls_session session, int again);
-int _gnutls_recv_hello( gnutls_session session, char* data, int datalen);
+int _gnutls_recv_hello( gnutls_session session, opaque* data, int datalen);
int gnutls_handshake( gnutls_session session);
int _gnutls_recv_handshake( gnutls_session session, uint8**, int*, HandshakeType, Optional optional);
-int _gnutls_generate_session_id( char* session_id, uint8* len);
+int _gnutls_generate_session_id( opaque* session_id, uint8* len);
int _gnutls_handshake_common( gnutls_session session);
int _gnutls_handshake_client( gnutls_session session);
int _gnutls_handshake_server( gnutls_session session);
void _gnutls_hash_deinit(GNUTLS_HASH_HANDLE handle, void *digest)
{
- char *mac;
+ opaque *mac;
int maclen;
maclen = gcry_md_get_algo_dlen(gcry_md_get_algo(handle->handle));
void _gnutls_hmac_deinit(GNUTLS_MAC_HANDLE handle, void *digest)
{
- char *mac;
+ opaque *mac;
int maclen;
maclen = gcry_md_get_algo_dlen(gcry_md_get_algo(handle->handle));
int keylen)
{
GNUTLS_MAC_HANDLE ret;
- char ipad[48];
+ opaque ipad[48];
int padsize;
padsize = get_padsize( algorithm);
{
opaque ret[MAX_HASH_SIZE];
GNUTLS_MAC_HANDLE td;
- char opad[48];
+ opaque opad[48];
int padsize;
int block;
{
opaque ret[MAX_HASH_SIZE];
GNUTLS_MAC_HANDLE td;
- char opad[48];
- char ipad[48];
+ opaque opad[48];
+ opaque ipad[48];
int padsize;
int block;
}
}
-static int ssl3_sha(int i, char *secret, int secret_len, char *random,
+static int ssl3_sha(int i, opaque *secret, int secret_len, opaque *random,
int random_len, void *digest)
{
int j;
- char text1[26];
+ opaque text1[26];
GNUTLS_HASH_HANDLE td;
return 0;
}
-static int ssl3_md5(int i, char *secret, int secret_len, char *random,
+static int ssl3_md5(int i, opaque *secret, int secret_len, opaque *random,
int random_len, void *digest)
{
opaque tmp[MAX_HASH_SIZE];
int ret_bytes, opaque * ret)
{
int i = 0, copy, output_bytes;
- char digest[MAX_HASH_SIZE];
+ opaque digest[MAX_HASH_SIZE];
int block = _gnutls_hash_get_algo_len(GNUTLS_MAC_MD5);
int result, times;
typedef gnutls_datum (*gnutls_db_retr_func)(void*, gnutls_datum key);
typedef struct AUTH_CRED {
- gnutls_kx_algorithm algorithm;
+ gnutls_credentials_type algorithm;
/* the type of credentials depends on algorithm */
void* credentials;
struct AUTH_CRED* next;
gnutls_realloc_function gnutls_realloc = realloc;
void* (*gnutls_calloc)(size_t, size_t) = calloc;
-char* (*gnutls_strdup)(const char*) = strdup;
+char* (*gnutls_strdup)(const char*) = _gnutls_strdup;
int _gnutls_is_secure_mem_null( const void* ign) { return 0; }
}
}
-static
+inline static
ssize_t _gnutls_create_empty_record( gnutls_session session, ContentType type,
opaque* erecord, unsigned int erecord_size)
{
/* now proceed to packet encryption
*/
cipher_size = data2send_size + MAX_RECORD_OVERHEAD;
- cipher = gnutls_alloca( cipher_size);
+ cipher = gnutls_malloc( cipher_size);
if (cipher==NULL) {
gnutls_assert();
return GNUTLS_E_MEMORY_ERROR;
gnutls_assert();
if (cipher_size==0) cipher_size = GNUTLS_E_ENCRYPTION_FAILED;
gnutls_afree( erecord);
- gnutls_afree( cipher);
+ gnutls_free( cipher);
return cipher_size; /* error */
}
_gnutls_session_invalidate( session);
gnutls_assert();
gnutls_afree( erecord);
- gnutls_afree( cipher);
+ gnutls_free( cipher);
return GNUTLS_E_RECORD_LIMIT_REACHED;
}
ret = _gnutls_io_write_buffered2( session, erecord, erecord_size, cipher, cipher_size);
gnutls_afree( erecord);
- gnutls_afree( cipher);
+ gnutls_free( cipher);
}
if ( ret != cipher_size + erecord_size) {
* receive (if called by the user the Content is Userdata only)
* It is intended to receive data, under the current session.
*/
-ssize_t _gnutls_recv_int( gnutls_session session, ContentType type, HandshakeType htype, char *data, size_t sizeofdata)
+ssize_t _gnutls_recv_int( gnutls_session session, ContentType type, HandshakeType htype,
+ opaque *data, size_t sizeofdata)
{
uint8 *tmpdata;
int tmplen;
* packet length (due to compression).
*/
tmplen = MAX_RECORD_RECV_SIZE;
- tmpdata = gnutls_alloca( tmplen);
+ tmpdata = gnutls_malloc( tmplen);
if (tmpdata==NULL) {
gnutls_assert();
return GNUTLS_E_MEMORY_ERROR;
if (tmplen < 0) {
_gnutls_session_unresumable( session);
_gnutls_session_invalidate( session);
- gnutls_afree(tmpdata);
+ gnutls_free(tmpdata);
gnutls_assert();
return tmplen;
}
if ((size_t)tmplen!=sizeofdata) { /* sizeofdata should be 1 */
gnutls_assert();
- gnutls_afree(tmpdata);
+ gnutls_free(tmpdata);
return GNUTLS_E_UNEXPECTED_PACKET_LENGTH;
}
memcpy( data, tmpdata, sizeofdata);
- gnutls_afree(tmpdata);
+ gnutls_free(tmpdata);
return tmplen;
}
/* increase sequence number */
if (_gnutls_uint64pp( &session->connection_state.read_sequence_number)!=0) {
_gnutls_session_invalidate( session);
- gnutls_afree(tmpdata);
+ gnutls_free(tmpdata);
gnutls_assert();
return GNUTLS_E_RECORD_LIMIT_REACHED;
}
if ( (ret=_gnutls_record_check_type( session, recv_type, type, htype, tmpdata, tmplen)) < 0) {
- gnutls_afree(tmpdata);
+ gnutls_free(tmpdata);
if (ret==GNUTLS_E_INT_RET_0) return 0;
gnutls_assert();
return ret;
}
- gnutls_afree(tmpdata);
+ gnutls_free(tmpdata);
/* Get Application data from buffer
*/
-ssize_t _gnutls_send_int( gnutls_session session, ContentType type, HandshakeType htype, const void* data, size_t sizeofdata);
-ssize_t _gnutls_recv_int( gnutls_session session, ContentType type, HandshakeType, char* data, size_t sizeofdata);
+ssize_t _gnutls_send_int( gnutls_session session, ContentType type,
+ HandshakeType htype, const void* data, size_t sizeofdata);
+ssize_t _gnutls_recv_int( gnutls_session session, ContentType type,
+ HandshakeType, opaque* data, size_t sizeofdata);
ssize_t _gnutls_send_change_cipher_spec( gnutls_session session, int again);
void gnutls_transport_set_lowat(gnutls_session session, int num);
* needed by the TLS specification. ret must have a least total_bytes
* available.
*/
-int _gnutls_PRF( const opaque * secret, int secret_size, const uint8 * label, int label_size, opaque * seed, int seed_size, int total_bytes, void* ret)
+int _gnutls_PRF( const opaque * secret, int secret_size, const char * label, int label_size,
+ opaque * seed, int seed_size, int total_bytes, void* ret)
{
int l_s, s_seed_size;
- const char *s1, *s2;
+ const opaque *s1, *s2;
opaque s_seed[MAX_SEED_SIZE];
opaque o1[MAX_PRF_BYTES], o2[MAX_PRF_BYTES];
int result;
memcpy(&s_seed[label_size], seed, seed_size);
l_s = secret_size / 2;
+
s1 = &secret[0];
s2 = &secret[l_s];
int _gnutls_openpgp_send_fingerprint( gnutls_session session);
-int _gnutls_PRF( const opaque * secret, int secret_size, const uint8 * label,
+int _gnutls_PRF( const opaque * secret, int secret_size, const char * label,
int label_size, opaque * seed, int seed_size, int total_bytes, void* ret);
#define DEFAULT_CERT_TYPE GNUTLS_CRT_X509
static int _gnutls_handshake_select_v2_suite(gnutls_session session, opaque *data, int datalen)
{
int i, j, ret;
- char* _data;
+ opaque* _data;
int _datalen;
_data = gnutls_malloc( datalen);
* a gnutls_cert structure. This is only called if PKCS7 read fails.
* returns the number of certificates parsed (1)
*/
-static int parse_crt_mem( gnutls_cert** cert_list, int* ncerts,
+static int parse_crt_mem( gnutls_cert** cert_list, uint* ncerts,
gnutls_x509_crt cert)
{
int i;
* a gnutls_cert structure. This is only called if PKCS7 read fails.
* returns the number of certificates parsed (1)
*/
-static int parse_der_cert_mem( gnutls_cert** cert_list, int* ncerts,
- const char *input_cert, int input_cert_size)
+static int parse_der_cert_mem( gnutls_cert** cert_list, uint* ncerts,
+ const void *input_cert, int input_cert_size)
{
gnutls_datum tmp;
gnutls_x509_crt cert;
* a gnutls_cert structure.
* returns the number of certificate parsed
*/
-static int parse_pkcs7_cert_mem( gnutls_cert** cert_list, int* ncerts, const
- char *input_cert, int input_cert_size, int flags)
+static int parse_pkcs7_cert_mem( gnutls_cert** cert_list, uint* ncerts, const
+ void *input_cert, int input_cert_size, int flags)
{
#ifdef ENABLE_PKI
int i, j, count;
gnutls_datum tmp, tmp2;
int ret;
opaque *pcert = NULL;
- int pcert_size;
+ size_t pcert_size;
gnutls_pkcs7 pkcs7;
ret = gnutls_pkcs7_init( &pkcs7);
/* Reads a base64 encoded certificate list from memory and stores it to
* a gnutls_cert structure. Returns the number of certificate parsed.
*/
-static int parse_pem_cert_mem( gnutls_cert** cert_list, int* ncerts,
- const char *input_cert, int input_cert_size)
+static int parse_pem_cert_mem( gnutls_cert** cert_list, uint* ncerts,
+ const opaque *input_cert, int input_cert_size)
{
int size, siz2, i;
- const char *ptr;
+ const opaque *ptr;
opaque *ptr2;
gnutls_datum tmp;
int ret, count;
/* Reads a DER or PEM certificate from memory
*/
static
-int read_cert_mem(gnutls_certificate_credentials res, const char *cert, int cert_size,
+int read_cert_mem(gnutls_certificate_credentials res, const void *cert, int cert_size,
gnutls_x509_crt_fmt type)
{
int ret;
* 2002-01-26: Added ability to read DSA keys.
* type indicates the certificate format.
*/
-static int read_key_mem(gnutls_certificate_credentials res, const char *key, int key_size,
+static int read_key_mem(gnutls_certificate_credentials res, const void *key, int key_size,
gnutls_x509_crt_fmt type)
{
int ret;
/**
* gnutls_certificate_set_x509_key_mem - Used to set keys in a gnutls_certificate_credentials structure
* @res: is an &gnutls_certificate_credentials structure.
- * @CERT: contains a certificate list (path) for the specified private key
- * @KEY: is the private key
+ * @cert: contains a certificate list (path) for the specified private key
+ * @key: is the private key
* @type: is PEM or DER
*
* This function sets a certificate/private key pair in the
* then the strings that hold their values must be null terminated.
*
**/
-int gnutls_certificate_set_x509_key_mem(gnutls_certificate_credentials res, const gnutls_datum* CERT,
- const gnutls_datum* KEY, gnutls_x509_crt_fmt type)
+int gnutls_certificate_set_x509_key_mem(gnutls_certificate_credentials res, const gnutls_datum* cert,
+ const gnutls_datum* key, gnutls_x509_crt_fmt type)
{
int ret;
/* this should be first
*/
- if ((ret = read_key_mem( res, KEY->data, KEY->size, type)) < 0)
+ if ((ret = read_key_mem( res, key->data, key->size, type)) < 0)
return ret;
- if ((ret = read_cert_mem( res, CERT->data, CERT->size, type)) < 0)
+ if ((ret = read_cert_mem( res, cert->data, cert->size, type)) < 0)
return ret;
res->ncerts++;
* @res: is an &gnutls_certificate_credentials structure.
* @cert_list: contains a certificate list (path) for the specified private key
* @cert_list_size: holds the size of the certificate list
- * @key: is a gnutls_x509_privkey key
+ * @key: is a gnutls_x509_privkey key
*
* This function sets a certificate/private key pair in the
* gnutls_certificate_credentials structure. This function may be called
return ret;
}
- _tmp.data = (char*) tmp.data;
+ _tmp.data = (opaque*) tmp.data;
_tmp.size = tmp.size;
_gnutls_write_datum16(pdata, _tmp);
pdata += (2 + tmp.size);
-static int parse_pem_ca_mem( gnutls_x509_crt** cert_list, int* ncerts,
- const char *input_cert, int input_cert_size)
+static int parse_pem_ca_mem( gnutls_x509_crt** cert_list, uint* ncerts,
+ const opaque *input_cert, int input_cert_size)
{
int i, size;
- const char *ptr;
+ const opaque *ptr;
gnutls_datum tmp;
int ret, count;
return ret;
}
- tmp.data = (char*)ptr;
+ tmp.data = (opaque*)ptr;
tmp.size = size;
ret =
* a gnutls_cert structure. This is only called if PKCS7 read fails.
* returns the number of certificates parsed (1)
*/
-static int parse_der_ca_mem( gnutls_x509_crt** cert_list, int* ncerts,
- const char *input_cert, int input_cert_size)
+static int parse_der_ca_mem( gnutls_x509_crt** cert_list, uint* ncerts,
+ const void *input_cert, int input_cert_size)
{
int i;
gnutls_datum tmp;
/**
* gnutls_certificate_set_x509_trust_mem - Used to add trusted CAs in a gnutls_certificate_credentials structure
* @res: is an &gnutls_certificate_credentials structure.
- * @CA: is a list of trusted CAs or a DER certificate
+ * @ca: is a list of trusted CAs or a DER certificate
* @type: is DER or PEM
*
* This function adds the trusted CAs in order to verify client
*
**/
int gnutls_certificate_set_x509_trust_mem(gnutls_certificate_credentials res,
- const gnutls_datum *CA, gnutls_x509_crt_fmt type)
+ const gnutls_datum *ca, gnutls_x509_crt_fmt type)
{
int ret, ret2;
if (type==GNUTLS_X509_FMT_DER)
return parse_der_ca_mem( &res->x509_ca_list, &res->x509_ncas,
- CA->data, CA->size);
+ ca->data, ca->size);
else
return parse_pem_ca_mem( &res->x509_ca_list, &res->x509_ncas,
- CA->data, CA->size);
+ ca->data, ca->size);
if ((ret2 = generate_rdn_seq(res)) < 0)
return ret2;
#ifdef ENABLE_PKI
-static int parse_pem_crl_mem( gnutls_x509_crl** crl_list, int* ncrls,
- const char *input_crl, int input_crl_size)
+static int parse_pem_crl_mem( gnutls_x509_crl** crl_list, uint* ncrls,
+ const opaque *input_crl, int input_crl_size)
{
int size, i;
- const char *ptr;
+ const opaque *ptr;
gnutls_datum tmp;
int ret, count;
* a gnutls_cert structure. This is only called if PKCS7 read fails.
* returns the number of certificates parsed (1)
*/
-static int parse_der_crl_mem( gnutls_x509_crl** crl_list, int* ncrls,
- const char *input_crl, int input_crl_size)
+static int parse_der_crl_mem( gnutls_x509_crl** crl_list, uint* ncrls,
+ const void *input_crl, int input_crl_size)
{
int i;
gnutls_datum tmp;
/* Reads a DER or PEM CRL from memory
*/
static
-int read_crl_mem(gnutls_certificate_credentials res, const char *crl, int crl_size,
+int read_crl_mem(gnutls_certificate_credentials res, const void *crl, int crl_size,
gnutls_x509_crt_fmt type)
{
int ret;
gnutls_x509_crt_fmt format)
{
int result = 0, need_free = 0;
- gnutls_datum _data = { data->data, data->size };
+ gnutls_datum _data;
+
+ _data.data = data->data;
+ _data.size = data->size;
if (crl == NULL) {
gnutls_assert();
0xff, 0xff
};
-inline static int encode(uint8 * result, const uint8 * data, int left)
+inline static int encode(char * result, const uint8 * data, int left)
{
int data_len;
* result should be 3 bytes
*/
#define TOASCII(c) (c < 127 ? asciitable[c] : 0xff)
-inline static int decode(uint8 * result, const uint8 * data)
+inline static int decode(uint8 * result, const opaque * data)
{
uint8 a1, a2;
int ret = 3;
{
int ret;
uint8 *data_n, *data_s;
- uint8 *data_g, *username;
+ uint8 *data_g;
+ char *username;
SRP_PWD_ENTRY *pwd_entry;
SRP_SERVER_AUTH_INFO info;
ssize_t data_size;
{
uint i,j;
int ret, tmp;
- char tmpres[4];
+ opaque tmpres[4];
int mod = data_size % 3;
ret = mod;
case CDK_Inv_Value: return GNUTLS_E_INVALID_REQUEST;
default: return GNUTLS_E_INTERNAL_ERROR;
}
- return rc;
}
-*/
int
gnutls_openpgp_add_keyring_mem(gnutls_datum *keyring,
- const opaque *data, size_t len)
+ const void *data, size_t len)
{
uint8 *blob;
size_t nbytes = 0;
#include <config.h>
-#ifdef ENABLE_OPENSSL
-
#include <gnutls/gnutls.h>
#include <gcrypt.h>
#include <stdio.h>
return md;
}
-#endif
int gnutls_openpgp_add_keyring_mem(
gnutls_datum *keyring,
- const opaque *data,
+ const void *data,
size_t len );
int gnutls_openpgp_add_keyring_file(
unsigned int flags, unsigned int *verify)
{
int rc = 0;
- unsigned int status = 0;
+ int status = 0;
if( !key || !keyring ) {
gnutls_assert();
void parse_ciphers( char** ciphers, int nciphers, int* cipher_priority);
void parse_protocols( char** protocols, int protocols_size, int* protocol_priority);
-void socket_init( void);
+void sockets_init( void);
#ifndef HAVE_INET_NTOP
const char *inet_ntop(int af, const void *src,
char *dst, size_t cnt);