diff options
author | Nils Durner <durner@gnunet.org> | 2010-10-22 21:18:45 +0000 |
---|---|---|
committer | Nils Durner <durner@gnunet.org> | 2010-10-22 21:18:45 +0000 |
commit | 8a9e1bbdece202c9fc87320e93b4ad1c4aa1d717 (patch) | |
tree | e50cc5c8a079945e89e4ab588b51c7d7fd2a2dfb | |
parent | 3d660ac05e4e4db1aa12d177016407554480c1e4 (diff) | |
download | gnunet-8a9e1bbdece202c9fc87320e93b4ad1c4aa1d717.tar.gz gnunet-8a9e1bbdece202c9fc87320e93b4ad1c4aa1d717.zip |
HMAC check
-rw-r--r-- | configure.ac | 47 |
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]) |
190 | fi | 190 | fi |
191 | 191 | ||
192 | AC_MSG_CHECKING([for working HMAC]) | ||
193 | AC_LANG_PUSH(C) | ||
194 | LIBS="$LIBS -lgcrypt" | ||
195 | AC_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 | ]) | ||
238 | AC_LANG_POP(C) | ||
192 | 239 | ||
193 | # libcurl | 240 | # libcurl |
194 | LIBCURL_CHECK_CONFIG(,7.20.1,,AC_MSG_ERROR([GNUnet requires libcurl >= 7.20.1])) | 241 | LIBCURL_CHECK_CONFIG(,7.20.1,,AC_MSG_ERROR([GNUnet requires libcurl >= 7.20.1])) |