opt_profiler_mode=no
AC_MSG_CHECKING([whether in profile mode])
AC_ARG_ENABLE(profile-mode,
-[ --enable-profile-mode enable profiler (gcov)],
+[ --enable-profile-mode enable profiler (gcov/gprof)],
opt_profiler_mode=$enableval)
AC_MSG_RESULT($opt_profiler_mode)
if test $ac_cv_prog_gcc != no; then
if test $opt_profiler_mode = yes; then
- CFLAGS="${CFLAGS} -O0 -fprofile-arcs -ftest-coverage"
+ CFLAGS="${CFLAGS} -O0 -fprofile-arcs -ftest-coverage -pg"
else
CFLAGS="${CFLAGS} -O2 -ffast-math"
fi
Sets the priority on the ciphers supported by gnutls. The num
is the number of the ciphers specified. After num you should
specify the ciphers you want.
+ Note that the priority is set on the client. The server does
+ not use that except for disabling algorithms that were not
+ specified.
void gnutls_set_kx_priority( GNUTLS_STATE state, int num, ...);
like gnutls_set_cipher_priority, but for key exchange methods.
* Make server work (we need certificate API for that!)
* Add support for v2.0 init packet (why do that anyway ???)
* Resume old sessions (server side)
-
+* Non-blocking IO support (send mail to gnutls-dev@gnupg.org if you are interested/want to help)
(*state)->security_parameters.entity = con_end;
/* Set the defaults (only to remind me that they should be allocated ) */
- (*state)->security_parameters.bulk_cipher_algorithm = GNUTLS_NULL;
- (*state)->security_parameters.mac_algorithm = GNUTLS_MAC_NULL;
- (*state)->security_parameters.compression_algorithm = GNUTLS_COMPRESSION_NULL;
+ (*state)->security_parameters.bulk_cipher_algorithm = GNUTLS_NULL_CIPHER;
+ (*state)->security_parameters.mac_algorithm = GNUTLS_NULL_MAC;
+ (*state)->security_parameters.compression_algorithm = GNUTLS_NULL_COMPRESSION;
(*state)->connection_state.read_compression_state = NULL;
(*state)->connection_state.read_mac_secret = NULL;
/* Set default priorities */
gnutls_set_cipher_priority( (*state), 2, GNUTLS_RIJNDAEL, GNUTLS_3DES);
- gnutls_set_compression_priority( (*state), 1, GNUTLS_COMPRESSION_NULL);
+ gnutls_set_compression_priority( (*state), 1, GNUTLS_NULL_COMPRESSION);
gnutls_set_kx_priority( (*state), 2, GNUTLS_KX_DHE_DSS, GNUTLS_KX_DHE_RSA);
gnutls_set_mac_priority( (*state), 2, GNUTLS_MAC_SHA, GNUTLS_MAC_MD5);
typedef enum ContentType ContentType;
#define GNUTLS_AES GNUTLS_RIJNDAEL
-enum BulkCipherAlgorithm { GNUTLS_NULL, GNUTLS_ARCFOUR=1, GNUTLS_3DES = 4, GNUTLS_RIJNDAEL };
+enum BulkCipherAlgorithm { GNUTLS_NULL_CIPHER, GNUTLS_ARCFOUR=1, GNUTLS_3DES = 4, GNUTLS_RIJNDAEL };
typedef enum BulkCipherAlgorithm BulkCipherAlgorithm;
enum KXAlgorithm { GNUTLS_KX_RSA, GNUTLS_KX_DHE_DSS, GNUTLS_KX_DHE_RSA, GNUTLS_KX_DH_DSS, GNUTLS_KX_DH_RSA, GNUTLS_KX_ANON_DH };
typedef enum KXAlgorithm KXAlgorithm;
-enum MACAlgorithm { GNUTLS_MAC_NULL, GNUTLS_MAC_MD5, GNUTLS_MAC_SHA };
+enum MACAlgorithm { GNUTLS_NULL_MAC, GNUTLS_MAC_MD5, GNUTLS_MAC_SHA };
typedef enum MACAlgorithm MACAlgorithm;
-enum CompressionMethod { GNUTLS_COMPRESSION_NULL, GNUTLS_ZLIB=224 };
+enum CompressionMethod { GNUTLS_NULL_COMPRESSION, GNUTLS_ZLIB=224 };
typedef enum CompressionMethod CompressionMethod;
enum ConnectionEnd { GNUTLS_SERVER, GNUTLS_CLIENT };
typedef enum ConnectionEnd ConnectionEnd;
#else
GNUTLS_CIPHER_ENTRY(GNUTLS_ARCFOUR, 1, 16, 0, 0),
#endif
- GNUTLS_CIPHER_ENTRY(GNUTLS_NULL, 1, 0, 0, 0),
+ GNUTLS_CIPHER_ENTRY(GNUTLS_NULL_CIPHER, 1, 0, 0, 0),
{0}
};
static gnutls_hash_entry hash_algorithms[] = {
GNUTLS_HASH_ENTRY(GNUTLS_MAC_SHA, 20),
GNUTLS_HASH_ENTRY(GNUTLS_MAC_MD5, 16),
- GNUTLS_HASH_ENTRY(GNUTLS_MAC_NULL, 0),
+ GNUTLS_HASH_ENTRY(GNUTLS_NULL_MAC, 0),
{0}
};
typedef struct gnutls_compression_entry gnutls_compression_entry;
static gnutls_compression_entry compression_algorithms[] = {
- GNUTLS_COMPRESSION_ENTRY(GNUTLS_COMPRESSION_NULL),
+ GNUTLS_COMPRESSION_ENTRY(GNUTLS_NULL_COMPRESSION),
#ifdef HAVE_LIBZ
GNUTLS_COMPRESSION_ENTRY(GNUTLS_ZLIB),
#endif
GNUTLS_CIPHER_SUITE_ENTRY(GNUTLS_DH_anon_WITH_ARCFOUR_MD5,
GNUTLS_ARCFOUR,
GNUTLS_KX_ANON_DH, GNUTLS_MAC_MD5,
- GNUTLS_COMPRESSION_NULL),
+ GNUTLS_NULL_COMPRESSION),
GNUTLS_CIPHER_SUITE_ENTRY(GNUTLS_DH_anon_WITH_3DES_EDE_CBC_SHA,
GNUTLS_3DES, GNUTLS_KX_ANON_DH,
GNUTLS_MAC_SHA,
- GNUTLS_COMPRESSION_NULL),
+ GNUTLS_NULL_COMPRESSION),
GNUTLS_CIPHER_SUITE_ENTRY(GNUTLS_DH_DSS_WITH_3DES_EDE_CBC_SHA,
GNUTLS_3DES,
GNUTLS_KX_DH_DSS, GNUTLS_MAC_SHA,
- GNUTLS_COMPRESSION_NULL),
+ GNUTLS_NULL_COMPRESSION),
GNUTLS_CIPHER_SUITE_ENTRY(GNUTLS_DH_RSA_WITH_3DES_EDE_CBC_SHA,
GNUTLS_3DES,
GNUTLS_KX_DH_RSA, GNUTLS_MAC_SHA,
- GNUTLS_COMPRESSION_NULL),
+ GNUTLS_NULL_COMPRESSION),
GNUTLS_CIPHER_SUITE_ENTRY(GNUTLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA,
GNUTLS_3DES, GNUTLS_KX_DHE_DSS,
GNUTLS_MAC_SHA,
- GNUTLS_COMPRESSION_NULL),
+ GNUTLS_NULL_COMPRESSION),
GNUTLS_CIPHER_SUITE_ENTRY(GNUTLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,
GNUTLS_3DES, GNUTLS_KX_DHE_RSA,
GNUTLS_MAC_SHA,
- GNUTLS_COMPRESSION_NULL),
+ GNUTLS_NULL_COMPRESSION),
GNUTLS_CIPHER_SUITE_ENTRY(GNUTLS_RSA_WITH_ARCFOUR_SHA,
GNUTLS_ARCFOUR,
GNUTLS_KX_RSA, GNUTLS_MAC_SHA,
- GNUTLS_COMPRESSION_NULL),
+ GNUTLS_NULL_COMPRESSION),
GNUTLS_CIPHER_SUITE_ENTRY(GNUTLS_RSA_WITH_ARCFOUR_MD5,
GNUTLS_ARCFOUR,
GNUTLS_KX_RSA, GNUTLS_MAC_MD5,
- GNUTLS_COMPRESSION_NULL),
+ GNUTLS_NULL_COMPRESSION),
GNUTLS_CIPHER_SUITE_ENTRY(GNUTLS_RSA_WITH_3DES_EDE_CBC_SHA,
GNUTLS_3DES,
GNUTLS_KX_RSA, GNUTLS_MAC_SHA,
- GNUTLS_COMPRESSION_NULL),
+ GNUTLS_NULL_COMPRESSION),
GNUTLS_CIPHER_SUITE_ENTRY(GNUTLS_RSA_WITH_RIJNDAEL_128_CBC_SHA,
GNUTLS_RIJNDAEL, GNUTLS_KX_RSA,
GNUTLS_MAC_SHA,
- GNUTLS_COMPRESSION_NULL),
+ GNUTLS_NULL_COMPRESSION),
GNUTLS_CIPHER_SUITE_ENTRY(GNUTLS_DH_DSS_WITH_RIJNDAEL_128_CBC_SHA,
GNUTLS_RIJNDAEL, GNUTLS_KX_DH_DSS,
- GNUTLS_MAC_SHA, GNUTLS_COMPRESSION_NULL),
+ GNUTLS_MAC_SHA, GNUTLS_NULL_COMPRESSION),
GNUTLS_CIPHER_SUITE_ENTRY(GNUTLS_DH_RSA_WITH_RIJNDAEL_128_CBC_SHA,
GNUTLS_RIJNDAEL, GNUTLS_KX_DH_RSA,
- GNUTLS_MAC_SHA, GNUTLS_COMPRESSION_NULL),
+ GNUTLS_MAC_SHA, GNUTLS_NULL_COMPRESSION),
GNUTLS_CIPHER_SUITE_ENTRY(GNUTLS_DHE_DSS_WITH_RIJNDAEL_128_CBC_SHA,
GNUTLS_RIJNDAEL, GNUTLS_KX_DHE_DSS,
- GNUTLS_MAC_SHA, GNUTLS_COMPRESSION_NULL),
+ GNUTLS_MAC_SHA, GNUTLS_NULL_COMPRESSION),
GNUTLS_CIPHER_SUITE_ENTRY(GNUTLS_DHE_RSA_WITH_RIJNDAEL_128_CBC_SHA,
GNUTLS_RIJNDAEL, GNUTLS_KX_DHE_RSA,
- GNUTLS_MAC_SHA, GNUTLS_COMPRESSION_NULL),
+ GNUTLS_MAC_SHA, GNUTLS_NULL_COMPRESSION),
GNUTLS_CIPHER_SUITE_ENTRY(GNUTLS_DH_anon_WITH_RIJNDAEL_SHA,
GNUTLS_RIJNDAEL, GNUTLS_KX_ANON_DH,
- GNUTLS_MAC_SHA, GNUTLS_COMPRESSION_NULL),
+ GNUTLS_MAC_SHA, GNUTLS_NULL_COMPRESSION),
{0}
};
if (state->connection_state.write_cipher_state ==
GNUTLS_CIPHER_FAILED
&& state->security_parameters.bulk_cipher_algorithm !=
- GNUTLS_NULL) {
+ GNUTLS_NULL_CIPHER) {
gnutls_assert();
return GNUTLS_E_UNKNOWN_CIPHER;
}
if (state->connection_state.read_cipher_state ==
GNUTLS_CIPHER_FAILED
&& state->security_parameters.bulk_cipher_algorithm !=
- GNUTLS_NULL) {
+ GNUTLS_NULL_CIPHER) {
gnutls_assert();
return GNUTLS_E_UNKNOWN_CIPHER;
}
if (state->connection_state.read_cipher_state ==
GNUTLS_CIPHER_FAILED
&& state->security_parameters.bulk_cipher_algorithm !=
- GNUTLS_NULL) {
+ GNUTLS_NULL_CIPHER) {
gnutls_assert();
return GNUTLS_E_UNKNOWN_CIPHER;
}
if (state->connection_state.write_cipher_state ==
GNUTLS_CIPHER_FAILED
&& state->security_parameters.bulk_cipher_algorithm !=
- GNUTLS_NULL) {
+ GNUTLS_NULL_CIPHER) {
gnutls_assert();
return GNUTLS_E_UNKNOWN_CIPHER;
}
mac_secret_size);
}
if (td == GNUTLS_MAC_FAILED
- && state->security_parameters.mac_algorithm != GNUTLS_MAC_NULL) {
+ && state->security_parameters.mac_algorithm != GNUTLS_NULL_MAC) {
gnutls_free(*cipher);
gnutls_free(content);
gnutls_assert();
mac_secret_size);
}
if (td == GNUTLS_MAC_FAILED
- && state->security_parameters.mac_algorithm != GNUTLS_MAC_NULL) {
+ && state->security_parameters.mac_algorithm != GNUTLS_NULL_MAC) {
gnutls_free(*compress);
gnutls_free(content);
gnutls_assert();
GNUTLS_CIPHER_HANDLE ret;
switch (cipher) {
- case GNUTLS_NULL:
+ case GNUTLS_NULL_CIPHER:
ret = GNUTLS_CIPHER_FAILED;
break;
case GNUTLS_RIJNDAEL:
int err;
switch (algorithm) {
- case GNUTLS_COMPRESSION_NULL:
+ case GNUTLS_NULL_COMPRESSION:
*compressed = gnutls_malloc(plain_size);
memmove(*compressed, plain, plain_size);
compressed_size = plain_size;
if (compressed_size > MAX_COMP_SIZE) return GNUTLS_E_DECOMPRESSION_FAILED;
switch (algorithm) {
- case GNUTLS_COMPRESSION_NULL:
+ case GNUTLS_NULL_COMPRESSION:
*plain = gnutls_malloc(compressed_size);
memmove(*plain, compressed, compressed_size);
plain_size = compressed_size;
ret->algorithm = algorithm;
switch (algorithm) {
- case GNUTLS_MAC_NULL:
+ case GNUTLS_NULL_MAC:
ret = GNUTLS_HASH_FAILED;
break;
case GNUTLS_MAC_SHA:
int ret;
switch (algorithm) {
- case GNUTLS_MAC_NULL:
+ case GNUTLS_NULL_MAC:
ret = 0;
break;
case GNUTLS_MAC_SHA:
ret->keysize = keylen;
switch (algorithm) {
- case GNUTLS_MAC_NULL:
+ case GNUTLS_NULL_MAC:
ret = GNUTLS_MAC_FAILED;
break;
case GNUTLS_MAC_SHA:
int ret;
switch (algorithm) {
- case GNUTLS_MAC_NULL:
+ case GNUTLS_NULL_MAC:
ret = 0;
break;
case GNUTLS_MAC_SHA:
/* STATE */
enum ConnectionEnd { GNUTLS_SERVER, GNUTLS_CLIENT };
-enum BulkCipherAlgorithm { GNUTLS_NULL, GNUTLS_ARCFOUR=1, GNUTLS_3DES = 4, GNUTLS_RIJNDAEL };
+enum BulkCipherAlgorithm { GNUTLS_NULL_CIPHER, GNUTLS_ARCFOUR=1, GNUTLS_3DES = 4, GNUTLS_RIJNDAEL };
enum KXAlgorithm { GNUTLS_KX_RSA, GNUTLS_KX_DHE_DSS, GNUTLS_KX_DHE_RSA, GNUTLS_KX_DH_DSS, GNUTLS_KX_DH_RSA, GNUTLS_KX_ANON_DH };
enum KeyExchangeAlgorithm { GNUTLS_RSA, GNUTLS_DIFFIE_HELLMAN };
enum CipherType { CIPHER_STREAM, CIPHER_BLOCK };
-enum MACAlgorithm { GNUTLS_MAC_NULL, GNUTLS_MAC_MD5, GNUTLS_MAC_SHA };
-enum CompressionMethod { GNUTLS_COMPRESSION_NULL, GNUTLS_ZLIB=224 };
+enum MACAlgorithm { GNUTLS_NULL_MAC, GNUTLS_MAC_MD5, GNUTLS_MAC_SHA };
+enum CompressionMethod { GNUTLS_NULL_COMPRESSION, GNUTLS_ZLIB=224 };
enum ValidSession { VALID_TRUE, VALID_FALSE };
enum ResumableSession { RESUME_TRUE, RESUME_FALSE };
#define SA struct sockaddr
#define ERR(err,s) if (err==-1) {perror(s);return(1);}
-#define MAX_BUF 50
+#define MAX_BUF 4096
+
+#define RESUME
#define MAX(X,Y) (X >= Y ? X : Y);
err = connect(sd, (SA *) & sa, sizeof(sa));
ERR(err, "connect");
+#ifdef RESUME
gnutls_init(&state, GNUTLS_CLIENT);
gnutls_set_current_version( state, GNUTLS_TLS1);
gnutls_set_cipher_priority( state, 2, GNUTLS_ARCFOUR, GNUTLS_3DES);
- gnutls_set_compression_priority( state, 1, GNUTLS_COMPRESSION_NULL);
+ gnutls_set_compression_priority( state, 1, GNUTLS_NULL_COMPRESSION);
gnutls_set_kx_priority( state, 3, GNUTLS_KX_ANON_DH, GNUTLS_KX_DHE_DSS, GNUTLS_KX_DHE_RSA);
gnutls_set_mac_priority( state, 2, GNUTLS_MAC_SHA, GNUTLS_MAC_MD5);
ret = gnutls_handshake(sd, state);
err = connect(sd, (SA *) & sa, sizeof(sa));
ERR(err, "connect");
-
+
+#endif
+
/* Begin handshake again */
gnutls_init(&state, GNUTLS_CLIENT);
gnutls_set_current_version( state, GNUTLS_TLS1);
gnutls_set_cipher_priority( state, 2, GNUTLS_ARCFOUR, GNUTLS_3DES);
- gnutls_set_compression_priority( state, 2, GNUTLS_ZLIB, GNUTLS_COMPRESSION_NULL);
+ gnutls_set_compression_priority( state, 2, GNUTLS_ZLIB, GNUTLS_NULL_COMPRESSION);
gnutls_set_kx_priority( state, 3, GNUTLS_KX_ANON_DH, GNUTLS_KX_DHE_DSS, GNUTLS_KX_DHE_RSA);
gnutls_set_mac_priority( state, 2, GNUTLS_MAC_SHA, GNUTLS_MAC_MD5);
-#define PORT 5555
+#define PORT 5556
#define SERVER "127.0.0.1"
for (;;) {
gnutls_init(&state, GNUTLS_SERVER);
gnutls_set_cipher_priority( state, 2, GNUTLS_RIJNDAEL, GNUTLS_3DES);
- gnutls_set_compression_priority( state, 2, GNUTLS_ZLIB, GNUTLS_COMPRESSION_NULL);
+ gnutls_set_compression_priority( state, 2, GNUTLS_ZLIB, GNUTLS_NULL_COMPRESSION);
gnutls_set_kx_priority( state, 1, GNUTLS_KX_ANON_DH);
gnutls_set_mac_priority( state, 2, GNUTLS_MAC_SHA, GNUTLS_MAC_MD5);
sd = accept(listen_sd, (SA *) & sa_cli, &client_len);