diff options
author | Christian Grothoff <christian@grothoff.org> | 2020-08-17 14:45:46 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2020-08-17 14:46:08 +0200 |
commit | 6f2ee9eb3c3642147fe381976ffeb88d0c3288e5 (patch) | |
tree | 26a66a4d123c667aa88d2aa5595add21390d53a8 | |
parent | f6acda6d3299bda2e6ea6e38bef5cabfb01b8ab9 (diff) | |
download | gnunet-6f2ee9eb3c3642147fe381976ffeb88d0c3288e5.tar.gz gnunet-6f2ee9eb3c3642147fe381976ffeb88d0c3288e5.zip |
clean up GNUNET_CRYPTO_pow_hash API
-rw-r--r-- | src/include/gnunet_crypto_lib.h | 12 | ||||
-rw-r--r-- | src/nse/gnunet-service-nse.c | 9 | ||||
-rw-r--r-- | src/nse/perf_kdf.c | 3 | ||||
-rw-r--r-- | src/revocation/revocation_api.c | 6 | ||||
-rw-r--r-- | src/util/crypto_pow.c | 3 | ||||
-rw-r--r-- | src/util/gnunet-scrypt.c | 9 |
6 files changed, 33 insertions, 9 deletions
diff --git a/src/include/gnunet_crypto_lib.h b/src/include/gnunet_crypto_lib.h index f8eef5406..6d3725aa0 100644 --- a/src/include/gnunet_crypto_lib.h +++ b/src/include/gnunet_crypto_lib.h | |||
@@ -50,6 +50,7 @@ extern "C" { | |||
50 | #endif | 50 | #endif |
51 | #endif | 51 | #endif |
52 | 52 | ||
53 | #include <sodium.h> | ||
53 | 54 | ||
54 | /** | 55 | /** |
55 | * The identity of the host (wraps the signing key of the peer). | 56 | * The identity of the host (wraps the signing key of the peer). |
@@ -668,6 +669,15 @@ GNUNET_CRYPTO_hash (const void *block, | |||
668 | 669 | ||
669 | 670 | ||
670 | /** | 671 | /** |
672 | * Value for a salt for #GNUNET_CRYPTO_pow_hash(). | ||
673 | */ | ||
674 | struct GNUNET_CRYPTO_PowSalt | ||
675 | { | ||
676 | uint8_t salt[crypto_pwhash_argon2id_SALTBYTES]; | ||
677 | }; | ||
678 | |||
679 | |||
680 | /** | ||
671 | * Calculate the 'proof-of-work' hash (an expensive hash). | 681 | * Calculate the 'proof-of-work' hash (an expensive hash). |
672 | * | 682 | * |
673 | * @param salt salt for the hash. Must be crypto_pwhash_argon2id_SALTBYTES long. | 683 | * @param salt salt for the hash. Must be crypto_pwhash_argon2id_SALTBYTES long. |
@@ -676,7 +686,7 @@ GNUNET_CRYPTO_hash (const void *block, | |||
676 | * @param result where to write the resulting hash | 686 | * @param result where to write the resulting hash |
677 | */ | 687 | */ |
678 | void | 688 | void |
679 | GNUNET_CRYPTO_pow_hash (const char *salt, | 689 | GNUNET_CRYPTO_pow_hash (const struct GNUNET_CRYPTO_PowSalt *salt, |
680 | const void *buf, | 690 | const void *buf, |
681 | size_t buf_len, | 691 | size_t buf_len, |
682 | struct GNUNET_HashCode *result); | 692 | struct GNUNET_HashCode *result); |
diff --git a/src/nse/gnunet-service-nse.c b/src/nse/gnunet-service-nse.c index ebf39585e..dfd71e57a 100644 --- a/src/nse/gnunet-service-nse.c +++ b/src/nse/gnunet-service-nse.c | |||
@@ -113,6 +113,11 @@ static struct GNUNET_BIO_WriteHandle *histogram; | |||
113 | 113 | ||
114 | #endif | 114 | #endif |
115 | 115 | ||
116 | /** | ||
117 | * Salt for PoW calcualations. | ||
118 | */ | ||
119 | static struct GNUNET_CRYPTO_PowSalt salt = { "gnunet-nse-proof" }; | ||
120 | |||
116 | 121 | ||
117 | /** | 122 | /** |
118 | * Per-peer information. | 123 | * Per-peer information. |
@@ -806,7 +811,7 @@ check_proof_of_work (const struct GNUNET_CRYPTO_EddsaPublicKey *pkey, | |||
806 | GNUNET_memcpy (&buf[sizeof(val)], | 811 | GNUNET_memcpy (&buf[sizeof(val)], |
807 | pkey, | 812 | pkey, |
808 | sizeof(struct GNUNET_CRYPTO_EddsaPublicKey)); | 813 | sizeof(struct GNUNET_CRYPTO_EddsaPublicKey)); |
809 | GNUNET_CRYPTO_pow_hash ("gnunet-nse-proof", | 814 | GNUNET_CRYPTO_pow_hash (&salt, |
810 | buf, | 815 | buf, |
811 | sizeof(buf), | 816 | sizeof(buf), |
812 | &result); | 817 | &result); |
@@ -861,7 +866,7 @@ find_proof (void *cls) | |||
861 | while ((counter != UINT64_MAX) && (i < ROUND_SIZE)) | 866 | while ((counter != UINT64_MAX) && (i < ROUND_SIZE)) |
862 | { | 867 | { |
863 | GNUNET_memcpy (buf, &counter, sizeof(uint64_t)); | 868 | GNUNET_memcpy (buf, &counter, sizeof(uint64_t)); |
864 | GNUNET_CRYPTO_pow_hash ("gnunet-nse-proof", | 869 | GNUNET_CRYPTO_pow_hash (&salt, |
865 | buf, | 870 | buf, |
866 | sizeof(buf), | 871 | sizeof(buf), |
867 | &result); | 872 | &result); |
diff --git a/src/nse/perf_kdf.c b/src/nse/perf_kdf.c index 89b70903a..10207675f 100644 --- a/src/nse/perf_kdf.c +++ b/src/nse/perf_kdf.c | |||
@@ -34,10 +34,11 @@ perfHash () | |||
34 | { | 34 | { |
35 | struct GNUNET_HashCode hc; | 35 | struct GNUNET_HashCode hc; |
36 | char buf[64]; | 36 | char buf[64]; |
37 | struct GNUNET_CRYPTO_PowSalt salt = { "gnunet-nse-proof" }; | ||
37 | 38 | ||
38 | memset (buf, 1, sizeof(buf)); | 39 | memset (buf, 1, sizeof(buf)); |
39 | for (unsigned int i = 0; i < 1024; i++) | 40 | for (unsigned int i = 0; i < 1024; i++) |
40 | GNUNET_CRYPTO_pow_hash ("gnunet-nse-proof", | 41 | GNUNET_CRYPTO_pow_hash (&salt, |
41 | buf, | 42 | buf, |
42 | sizeof(buf), | 43 | sizeof(buf), |
43 | &hc); | 44 | &hc); |
diff --git a/src/revocation/revocation_api.c b/src/revocation/revocation_api.c index e0b195aa9..75cfd8761 100644 --- a/src/revocation/revocation_api.c +++ b/src/revocation/revocation_api.c | |||
@@ -103,6 +103,8 @@ struct GNUNET_REVOCATION_PowCalculationHandle | |||
103 | 103 | ||
104 | }; | 104 | }; |
105 | 105 | ||
106 | static struct GNUNET_CRYPTO_PowSalt salt = { "GnsRevocationPow" }; | ||
107 | |||
106 | /** | 108 | /** |
107 | * Generic error handler, called with the appropriate | 109 | * Generic error handler, called with the appropriate |
108 | * error code and the same closure specified at the creation of | 110 | * error code and the same closure specified at the creation of |
@@ -483,7 +485,7 @@ GNUNET_REVOCATION_check_pow (const struct GNUNET_REVOCATION_PowP *pow, | |||
483 | { | 485 | { |
484 | pow_val = GNUNET_ntohll (pow->pow[i]); | 486 | pow_val = GNUNET_ntohll (pow->pow[i]); |
485 | GNUNET_memcpy (buf, &pow->pow[i], sizeof(uint64_t)); | 487 | GNUNET_memcpy (buf, &pow->pow[i], sizeof(uint64_t)); |
486 | GNUNET_CRYPTO_pow_hash ("GnsRevocationPow", | 488 | GNUNET_CRYPTO_pow_hash (&salt, |
487 | buf, | 489 | buf, |
488 | sizeof(buf), | 490 | sizeof(buf), |
489 | &result); | 491 | &result); |
@@ -644,7 +646,7 @@ GNUNET_REVOCATION_pow_round (struct GNUNET_REVOCATION_PowCalculationHandle *pc) | |||
644 | GNUNET_memcpy (&buf[sizeof(uint64_t) * 2], | 646 | GNUNET_memcpy (&buf[sizeof(uint64_t) * 2], |
645 | &pc->pow->key, | 647 | &pc->pow->key, |
646 | sizeof(struct GNUNET_CRYPTO_EcdsaPublicKey)); | 648 | sizeof(struct GNUNET_CRYPTO_EcdsaPublicKey)); |
647 | GNUNET_CRYPTO_pow_hash ("GnsRevocationPow", | 649 | GNUNET_CRYPTO_pow_hash (&salt, |
648 | buf, | 650 | buf, |
649 | sizeof(buf), | 651 | sizeof(buf), |
650 | &result); | 652 | &result); |
diff --git a/src/util/crypto_pow.c b/src/util/crypto_pow.c index cfa0676d0..051a0c209 100644 --- a/src/util/crypto_pow.c +++ b/src/util/crypto_pow.c | |||
@@ -38,12 +38,11 @@ | |||
38 | * @param result where to write the resulting hash | 38 | * @param result where to write the resulting hash |
39 | */ | 39 | */ |
40 | void | 40 | void |
41 | GNUNET_CRYPTO_pow_hash (const char *salt, | 41 | GNUNET_CRYPTO_pow_hash (const struct GNUNET_CRYPTO_PowSalt *salt, |
42 | const void *buf, | 42 | const void *buf, |
43 | size_t buf_len, | 43 | size_t buf_len, |
44 | struct GNUNET_HashCode *result) | 44 | struct GNUNET_HashCode *result) |
45 | { | 45 | { |
46 | GNUNET_assert (strlen (salt) == crypto_pwhash_argon2id_SALTBYTES); | ||
47 | /* Threads hardcoded at 1 in libsodium */ | 46 | /* Threads hardcoded at 1 in libsodium */ |
48 | GNUNET_break (0 == | 47 | GNUNET_break (0 == |
49 | crypto_pwhash_argon2id ((unsigned char *) result, | 48 | crypto_pwhash_argon2id ((unsigned char *) result, |
diff --git a/src/util/gnunet-scrypt.c b/src/util/gnunet-scrypt.c index aa64144a8..136c6debb 100644 --- a/src/util/gnunet-scrypt.c +++ b/src/util/gnunet-scrypt.c | |||
@@ -26,6 +26,13 @@ | |||
26 | #include "gnunet_util_lib.h" | 26 | #include "gnunet_util_lib.h" |
27 | #include <gcrypt.h> | 27 | #include <gcrypt.h> |
28 | 28 | ||
29 | |||
30 | /** | ||
31 | * Salt for PoW calcualations. | ||
32 | */ | ||
33 | static struct GNUNET_CRYPTO_PowSalt salt = { "gnunet-nse-proof" }; | ||
34 | |||
35 | |||
29 | /** | 36 | /** |
30 | * Amount of work required (W-bit collisions) for NSE proofs, in collision-bits. | 37 | * Amount of work required (W-bit collisions) for NSE proofs, in collision-bits. |
31 | */ | 38 | */ |
@@ -117,7 +124,7 @@ find_proof (void *cls) | |||
117 | while ((counter != UINT64_MAX) && (i < ROUND_SIZE)) | 124 | while ((counter != UINT64_MAX) && (i < ROUND_SIZE)) |
118 | { | 125 | { |
119 | GNUNET_memcpy (buf, &counter, sizeof(uint64_t)); | 126 | GNUNET_memcpy (buf, &counter, sizeof(uint64_t)); |
120 | GNUNET_CRYPTO_pow_hash ("gnunet-nse-proof", | 127 | GNUNET_CRYPTO_pow_hash (&salt, |
121 | buf, | 128 | buf, |
122 | sizeof(buf), | 129 | sizeof(buf), |
123 | &result); | 130 | &result); |