- which (contrib/apparmor(?), gnunet-bugreport,
and possibly more)
- zlib
+- argon2 >= 20190702 (for proof-of-work calculations in
+ revocation)
These are the dependencies for GNUnet's testsuite:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AC_CHECK_LIB([kvm],[kvm_open])
AC_CHECK_LIB([kstat],[kstat_open])
+# test for argon2 (for POW)
+AC_CHECK_LIB([argon2],[argon2d_hash_raw])
# test for libextractor
extractor=0
*/
#include "platform.h"
#include "gnunet_crypto_lib.h"
-#include <gcrypt.h>
#include <argon2.h>
-#define LSD0001
-
/**
* Calculate the 'proof-of-work' hash (an expensive hash).
* We're using a non-standard formula to avoid issues with
size_t buf_len,
struct GNUNET_HashCode *result)
{
-#ifdef LSD0001
GNUNET_break (ARGON2_OK == argon2d_hash_raw (3, /* iterations */
1024, /* memory (1 MiB) */
1, /* threads */
sizeof (struct
GNUNET_HashCode)));
-#else
- struct GNUNET_CRYPTO_SymmetricInitializationVector iv;
- struct GNUNET_CRYPTO_SymmetricSessionKey skey;
- char rbuf[buf_len];
-
- GNUNET_break (0 == gcry_kdf_derive (buf,
- buf_len,
- GCRY_KDF_SCRYPT,
- 1 /* subalgo */,
- salt,
- strlen (salt),
- 2 /* iterations; keep cost of individual op small */,
- sizeof(skey),
- &skey));
- GNUNET_CRYPTO_symmetric_derive_iv (&iv,
- &skey,
- "gnunet-proof-of-work-iv",
- strlen ("gnunet-proof-of-work-iv"),
- salt,
- strlen (salt),
- NULL, 0);
- GNUNET_CRYPTO_symmetric_encrypt (buf,
- buf_len,
- &skey,
- &iv,
- &rbuf);
- GNUNET_break (0 == gcry_kdf_derive (rbuf,
- buf_len,
- GCRY_KDF_SCRYPT,
- 1 /* subalgo */,
- salt,
- strlen (salt),
- 2 /* iterations; keep cost of individual op small */,
- sizeof(struct GNUNET_HashCode),
- result));
-#endif
}