aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNils Durner <durner@gnunet.org>2010-10-22 21:18:45 +0000
committerNils Durner <durner@gnunet.org>2010-10-22 21:18:45 +0000
commit8a9e1bbdece202c9fc87320e93b4ad1c4aa1d717 (patch)
treee50cc5c8a079945e89e4ab588b51c7d7fd2a2dfb
parent3d660ac05e4e4db1aa12d177016407554480c1e4 (diff)
downloadgnunet-8a9e1bbdece202c9fc87320e93b4ad1c4aa1d717.tar.gz
gnunet-8a9e1bbdece202c9fc87320e93b4ad1c4aa1d717.zip
HMAC check
-rw-r--r--configure.ac47
1 files changed, 47 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 13b370f21..5ce808848 100644
--- a/configure.ac
+++ b/configure.ac
@@ -189,6 +189,53 @@ then
189 AC_MSG_ERROR([GNUnet needs libgcrypt]) 189 AC_MSG_ERROR([GNUnet needs libgcrypt])
190fi 190fi
191 191
192AC_MSG_CHECKING([for working HMAC])
193AC_LANG_PUSH(C)
194LIBS="$LIBS -lgcrypt"
195AC_RUN_IFELSE(
196 [AC_LANG_PROGRAM([#include <gcrypt.h>], [[
197 gcry_md_hd_t mac;
198
199 unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
200 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
201 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
202 unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
203 unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
204 0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
205 0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
206 0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
207 0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
208 0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
209
210 if (!gcry_check_version (GCRYPT_VERSION))
211 return 1;
212
213 gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
214 gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
215
216 if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
217 return 2;
218
219 gcry_md_setkey (mac, key, sizeof (key));
220 gcry_md_write (mac, data, sizeof (data));
221
222 if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
223 return 3;
224
225 gcry_md_close (mac);
226
227 return 0;
228 ]])],
229 [AC_MSG_RESULT([yes])],
230 [
231 if test $? = 3
232 then
233 AC_MSG_FAILURE([HMAC test vector does not match. This is a known problem with libgcrypt 1.2.2 on Windows and fixed in 1.4.6.])
234 else
235 AC_MSG_FAILURE([HMAC test failed])
236 fi
237 ])
238AC_LANG_POP(C)
192 239
193# libcurl 240# libcurl
194LIBCURL_CHECK_CONFIG(,7.20.1,,AC_MSG_ERROR([GNUnet requires libcurl >= 7.20.1])) 241LIBCURL_CHECK_CONFIG(,7.20.1,,AC_MSG_ERROR([GNUnet requires libcurl >= 7.20.1]))