aboutsummaryrefslogtreecommitdiff
path: root/src/util/test_crypto_aes.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2013-09-30 11:22:48 +0000
committerChristian Grothoff <christian@grothoff.org>2013-09-30 11:22:48 +0000
commit05ef63d9f8cf65561b7ed2234efdc80e3fb40bd0 (patch)
tree7c00b58220e87d7f2f050b46e0e2f59c3795e703 /src/util/test_crypto_aes.c
parent814457c05d62c8f0c167c6bc2015201151355249 (diff)
downloadgnunet-05ef63d9f8cf65561b7ed2234efdc80e3fb40bd0.tar.gz
gnunet-05ef63d9f8cf65561b7ed2234efdc80e3fb40bd0.zip
-encrypt using both AES and TWOFISH, with independent symmetric keys
Diffstat (limited to 'src/util/test_crypto_aes.c')
-rw-r--r--src/util/test_crypto_aes.c44
1 files changed, 26 insertions, 18 deletions
diff --git a/src/util/test_crypto_aes.c b/src/util/test_crypto_aes.c
index 1c5897c1e..a5d49063a 100644
--- a/src/util/test_crypto_aes.c
+++ b/src/util/test_crypto_aes.c
@@ -28,7 +28,7 @@
28#include "gnunet_crypto_lib.h" 28#include "gnunet_crypto_lib.h"
29 29
30#define TESTSTRING "Hello World!" 30#define TESTSTRING "Hello World!"
31#define INITVALUE "InitializationVectorValue" 31#define INITVALUE "InitializationVectorValueinitializationvectorvalue"
32 32
33static int 33static int
34testSymcipher () 34testSymcipher ()
@@ -68,7 +68,8 @@ testSymcipher ()
68 return 0; 68 return 0;
69} 69}
70 70
71int 71
72static int
72verifyCrypto () 73verifyCrypto ()
73{ 74{
74 struct GNUNET_CRYPTO_AesSessionKey key; 75 struct GNUNET_CRYPTO_AesSessionKey key;
@@ -77,25 +78,34 @@ verifyCrypto ()
77 int ret; 78 int ret;
78 79
79 unsigned char plain[] = 80 unsigned char plain[] =
80 { 29, 128, 192, 253, 74, 171, 38, 187, 84, 219, 76, 76, 209, 118, 33, 249, 81 {
82 29, 128, 192, 253, 74, 171, 38, 187, 84, 219, 76, 76, 209, 118, 33, 249,
81 172, 124, 96, 9, 157, 110, 8, 215, 200, 63, 69, 230, 157, 104, 247, 164 83 172, 124, 96, 9, 157, 110, 8, 215, 200, 63, 69, 230, 157, 104, 247, 164
82 }; 84 };
83 unsigned char raw_key[] = 85 unsigned char raw_key_aes[] =
84 { 106, 74, 209, 88, 145, 55, 189, 135, 125, 180, 225, 108, 183, 54, 25, 86 {
87 106, 74, 209, 88, 145, 55, 189, 135, 125, 180, 225, 108, 183, 54, 25,
85 169, 129, 188, 131, 75, 227, 245, 105, 10, 225, 15, 115, 159, 148, 184, 88 169, 129, 188, 131, 75, 227, 245, 105, 10, 225, 15, 115, 159, 148, 184,
86 34, 191 89 34, 191
87 }; 90 };
91 unsigned char raw_key_twofish[] =
92 {
93 145, 55, 189, 135, 125, 180, 225, 108, 183, 54, 25,
94 169, 129, 188, 131, 75, 227, 245, 105, 10, 225, 15, 115, 159, 148, 184,
95 34, 191, 106, 74, 209, 88
96 };
88 unsigned char encrresult[] = 97 unsigned char encrresult[] =
89 { 167, 102, 230, 233, 127, 195, 176, 107, 17, 91, 199, 127, 96, 113, 75, 98 {
90 195, 245, 217, 61, 236, 159, 165, 103, 121, 203, 99, 202, 41, 23, 222, 25, 99 161, 152, 186, 231, 214, 55, 225, 206, 85, 43, 80, 134, 145, 198, 20,
91 102 100 233, 236, 57, 194, 10, 147, 149, 30, 106, 179, 54, 182, 247, 71, 204,
101 179, 51, 1
92 }; 102 };
93 103
94 res = NULL; 104 res = NULL;
95 ret = 0; 105 ret = 0;
96 106
97 memcpy (key.key, raw_key, GNUNET_CRYPTO_AES_KEY_LENGTH); 107 memcpy (key.aes_key, raw_key_aes, GNUNET_CRYPTO_AES_KEY_LENGTH);
98 108 memcpy (key.twofish_key, raw_key_twofish, GNUNET_CRYPTO_AES_KEY_LENGTH);
99 if (GNUNET_CRYPTO_AES_KEY_LENGTH != 109 if (GNUNET_CRYPTO_AES_KEY_LENGTH !=
100 GNUNET_CRYPTO_aes_encrypt (plain, GNUNET_CRYPTO_AES_KEY_LENGTH, &key, 110 GNUNET_CRYPTO_aes_encrypt (plain, GNUNET_CRYPTO_AES_KEY_LENGTH, &key,
101 (const struct 111 (const struct
@@ -107,15 +117,17 @@ verifyCrypto ()
107 goto error; 117 goto error;
108 } 118 }
109 119
110 if (memcmp (encrresult, result, GNUNET_CRYPTO_AES_KEY_LENGTH) != 0) 120 if (0 != memcmp (encrresult, result, GNUNET_CRYPTO_AES_KEY_LENGTH))
111 { 121 {
122 int i;
112 printf ("Encrypted result wrong.\n"); 123 printf ("Encrypted result wrong.\n");
124 for (i=0;i<GNUNET_CRYPTO_AES_KEY_LENGTH;i++)
125 printf ("%u, ", (uint8_t) result[i]);
113 ret = 1; 126 ret = 1;
114 goto error; 127 goto error;
115 } 128 }
116 129
117 res = GNUNET_malloc (GNUNET_CRYPTO_AES_KEY_LENGTH); 130 res = GNUNET_malloc (GNUNET_CRYPTO_AES_KEY_LENGTH);
118
119 if (GNUNET_CRYPTO_AES_KEY_LENGTH != 131 if (GNUNET_CRYPTO_AES_KEY_LENGTH !=
120 GNUNET_CRYPTO_aes_decrypt (result, GNUNET_CRYPTO_AES_KEY_LENGTH, &key, 132 GNUNET_CRYPTO_aes_decrypt (result, GNUNET_CRYPTO_AES_KEY_LENGTH, &key,
121 (const struct 133 (const struct
@@ -126,21 +138,17 @@ verifyCrypto ()
126 ret = 1; 138 ret = 1;
127 goto error; 139 goto error;
128 } 140 }
129 141 if (0 != memcmp (res, plain, GNUNET_CRYPTO_AES_KEY_LENGTH))
130 if (memcmp (res, plain, GNUNET_CRYPTO_AES_KEY_LENGTH) != 0)
131 { 142 {
132 printf ("Decrypted result does not match input.\n"); 143 printf ("Decrypted result does not match input.\n");
133
134 ret = 1; 144 ret = 1;
135 } 145 }
136
137error: 146error:
138
139 GNUNET_free_non_null (res); 147 GNUNET_free_non_null (res);
140
141 return ret; 148 return ret;
142} 149}
143 150
151
144int 152int
145main (int argc, char *argv[]) 153main (int argc, char *argv[])
146{ 154{