diff options
author | Christian Grothoff <christian@grothoff.org> | 2013-09-30 11:22:48 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2013-09-30 11:22:48 +0000 |
commit | 05ef63d9f8cf65561b7ed2234efdc80e3fb40bd0 (patch) | |
tree | 7c00b58220e87d7f2f050b46e0e2f59c3795e703 /src/util/test_crypto_aes.c | |
parent | 814457c05d62c8f0c167c6bc2015201151355249 (diff) | |
download | gnunet-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.c | 44 |
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 | ||
33 | static int | 33 | static int |
34 | testSymcipher () | 34 | testSymcipher () |
@@ -68,7 +68,8 @@ testSymcipher () | |||
68 | return 0; | 68 | return 0; |
69 | } | 69 | } |
70 | 70 | ||
71 | int | 71 | |
72 | static int | ||
72 | verifyCrypto () | 73 | verifyCrypto () |
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 | |||
137 | error: | 146 | error: |
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 | |||
144 | int | 152 | int |
145 | main (int argc, char *argv[]) | 153 | main (int argc, char *argv[]) |
146 | { | 154 | { |