From: Nikos Mavrogiannopoulos Date: Sun, 12 Nov 2000 15:39:00 +0000 (+0000) Subject: added preliminary support for AES (rijndael) X-Git-Tag: gnutls0-0-4~12 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0fc8bfd2ce156d03e4f26657e29645ace7ea92b5;p=thirdparty%2Fgnutls.git added preliminary support for AES (rijndael) --- diff --git a/lib/gnutls.h b/lib/gnutls.h index 6053dfbdcd..d0b25f6059 100644 --- a/lib/gnutls.h +++ b/lib/gnutls.h @@ -20,7 +20,7 @@ enum ContentType { GNUTLS_APPLICATION_DATA=23 }; typedef enum ContentType ContentType; -enum BulkCipherAlgorithm { GNUTLS_NULL, GNUTLS_ARCFOUR=1, GNUTLS_DES=3, GNUTLS_3DES = 4 }; +enum BulkCipherAlgorithm { GNUTLS_NULL, GNUTLS_ARCFOUR=1, GNUTLS_DES=3, GNUTLS_3DES = 4, GNUTLS_AES }; 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; diff --git a/lib/gnutls_algorithms.c b/lib/gnutls_algorithms.c index c8741cd89b..663853d882 100644 --- a/lib/gnutls_algorithms.c +++ b/lib/gnutls_algorithms.c @@ -38,6 +38,7 @@ typedef struct gnutls_cipher_entry gnutls_cipher_entry; static gnutls_cipher_entry algorithms[] = { GNUTLS_CIPHER_ENTRY(GNUTLS_3DES, 8, 24, 1, 8, -1), + GNUTLS_CIPHER_ENTRY(GNUTLS_AES, 16, 16, 1, 16, -1), #ifdef USE_MCRYPT GNUTLS_CIPHER_ENTRY(GNUTLS_DES, 8, 8, 1, 8, -1), GNUTLS_CIPHER_ENTRY(GNUTLS_ARCFOUR, 1, 16, 0, 0, -1), @@ -147,6 +148,13 @@ typedef struct { #define GNUTLS_DHE_DSS_WITH_DES_CBC_SHA { 0x00, 0x12 } #define GNUTLS_DHE_RSA_WITH_DES_CBC_SHA { 0x00, 0x15 } +#define GNUTLS_RSA_WITH_AES_128_CBC_SHA { 0xFF, 0x2F } +#define GNUTLS_DH_DSS_WITH_AES_128_CBC_SHA { 0xFF, 0x30 } +#define GNUTLS_DH_RSA_WITH_AES_128_CBC_SHA { 0xFF, 0x31 } +#define GNUTLS_DHE_DSS_WITH_AES_128_CBC_SHA { 0xFF, 0x32 } +#define GNUTLS_DHE_RSA_WITH_AES_128_CBC_SHA { 0xFF, 0x33 } + + static gnutls_cipher_suite_entry cs_algorithms[] = { GNUTLS_CIPHER_SUITE_ENTRY(GNUTLS_DH_anon_WITH_ARCFOUR_MD5, GNUTLS_ARCFOUR, GNUTLS_KX_ANON_DH, GNUTLS_MAC_MD5), GNUTLS_CIPHER_SUITE_ENTRY(GNUTLS_DH_anon_WITH_3DES_EDE_CBC_SHA, GNUTLS_3DES, GNUTLS_KX_ANON_DH, GNUTLS_MAC_SHA), @@ -162,6 +170,11 @@ static gnutls_cipher_suite_entry cs_algorithms[] = { GNUTLS_CIPHER_SUITE_ENTRY( GNUTLS_RSA_WITH_ARCFOUR_MD5, GNUTLS_ARCFOUR, GNUTLS_KX_RSA, GNUTLS_MAC_MD5), GNUTLS_CIPHER_SUITE_ENTRY( GNUTLS_RSA_WITH_3DES_EDE_CBC_SHA, GNUTLS_3DES, GNUTLS_KX_RSA, GNUTLS_MAC_SHA), GNUTLS_CIPHER_SUITE_ENTRY( GNUTLS_RSA_WITH_DES_CBC_SHA, GNUTLS_DES, GNUTLS_KX_RSA, GNUTLS_MAC_SHA), + GNUTLS_CIPHER_SUITE_ENTRY( GNUTLS_RSA_WITH_AES_128_CBC_SHA, GNUTLS_AES, GNUTLS_KX_RSA, GNUTLS_MAC_SHA), + GNUTLS_CIPHER_SUITE_ENTRY( GNUTLS_DH_DSS_WITH_AES_128_CBC_SHA, GNUTLS_AES, GNUTLS_KX_DH_DSS, GNUTLS_MAC_SHA), + GNUTLS_CIPHER_SUITE_ENTRY( GNUTLS_DH_RSA_WITH_AES_128_CBC_SHA, GNUTLS_AES, GNUTLS_KX_DH_RSA, GNUTLS_MAC_SHA), + GNUTLS_CIPHER_SUITE_ENTRY( GNUTLS_DHE_DSS_WITH_AES_128_CBC_SHA, GNUTLS_AES, GNUTLS_KX_DHE_DSS, GNUTLS_MAC_SHA), + GNUTLS_CIPHER_SUITE_ENTRY( GNUTLS_DHE_RSA_WITH_AES_128_CBC_SHA, GNUTLS_AES, GNUTLS_KX_DHE_RSA, GNUTLS_MAC_SHA), {0} }; diff --git a/lib/gnutls_cipher_int.c b/lib/gnutls_cipher_int.c index c0bcce6e1f..547b9b65ea 100644 --- a/lib/gnutls_cipher_int.c +++ b/lib/gnutls_cipher_int.c @@ -36,6 +36,13 @@ GNUTLS_CIPHER_HANDLE ret; ret = mcrypt_module_open( "des", NULL, "cbc", NULL); #else ret = GNUTLS_CIPHER_FAILED; +#endif + break; + case GNUTLS_AES: +#ifdef USE_MCRYPT + ret = mcrypt_module_open( "rijndael-128", NULL, "cbc", NULL); +#else + ret = gcry_cipher_open(GCRY_CIPHER_RIJNDAEL, GCRY_CIPHER_MODE_CBC, 0); #endif break; case GNUTLS_3DES: diff --git a/lib/gnutls_int.h b/lib/gnutls_int.h index a161f18da6..b5b5c6e009 100644 --- a/lib/gnutls_int.h +++ b/lib/gnutls_int.h @@ -82,7 +82,7 @@ typedef struct { /* STATE */ enum ConnectionEnd { GNUTLS_SERVER, GNUTLS_CLIENT }; -enum BulkCipherAlgorithm { GNUTLS_NULL, GNUTLS_ARCFOUR=1, GNUTLS_DES=3, GNUTLS_3DES = 4 }; +enum BulkCipherAlgorithm { GNUTLS_NULL, GNUTLS_ARCFOUR=1, GNUTLS_DES=3, GNUTLS_3DES = 4, GNUTLS_AES }; 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 };