gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-anastasis] 05/06: fixed salt issue with GNUNET_CRYPTO_pow_hash


From: gnunet
Subject: [taler-anastasis] 05/06: fixed salt issue with GNUNET_CRYPTO_pow_hash
Date: Wed, 19 Aug 2020 12:32:26 +0200

This is an automated email from the git hooks/post-receive script.

dennis-neufeld pushed a commit to branch master
in repository anastasis.

commit 5a4a7c0bd5ce3af5d496c464eafc29a75c806c8a
Author: Dennis Neufeld <dennis.neufeld@students.bfh.ch>
AuthorDate: Tue Aug 18 12:32:51 2020 +0000

    fixed salt issue with GNUNET_CRYPTO_pow_hash
---
 src/backend/anastasis-httpd_salt.c   |  2 +-
 src/backend/anastasis.conf           |  4 ++--
 src/cli/anastasis-cli-assembler.c    |  4 ++--
 src/cli/anastasis-cli-splitter.c     |  6 +++---
 src/include/anastasis.h              |  6 +++---
 src/include/anastasis_crypto_lib.h   | 10 +++++++++-
 src/include/anastasis_service.h      |  4 ++--
 src/include/anastasis_testing_lib.h  |  4 ++--
 src/lib/anastasis.c                  | 16 ++++++++--------
 src/lib/testing_api_cmd_salt.c       |  4 ++--
 src/lib/testing_api_trait_salt.c     |  4 ++--
 src/lib/testing_cmd_recover_secret.c |  4 ++--
 src/lib/testing_cmd_truth_upload.c   |  2 +-
 src/util/anastasis_crypto.c          | 14 +++-----------
 src/util/test_anastasis_crypto.c     | 23 ++++++-----------------
 15 files changed, 48 insertions(+), 59 deletions(-)

diff --git a/src/backend/anastasis-httpd_salt.c 
b/src/backend/anastasis-httpd_salt.c
index 99099cc..34b2315 100644
--- a/src/backend/anastasis-httpd_salt.c
+++ b/src/backend/anastasis-httpd_salt.c
@@ -38,7 +38,7 @@ AH_handler_salt (struct MHD_Connection *connection,
                  const char *url,
                  void **con_cls)
 {
-  struct ANASTASIS_CRYPTO_SaltP salt;
+  struct ANASTASIS_CRYPTO_PowSaltP salt;
 
   GNUNET_CRYPTO_hash (AH_server_salt,
                       strlen (AH_server_salt),
diff --git a/src/backend/anastasis.conf b/src/backend/anastasis.conf
index 3bb226e..eef9860 100644
--- a/src/backend/anastasis.conf
+++ b/src/backend/anastasis.conf
@@ -41,8 +41,8 @@ PAYMENT_BACKEND_URL = http://localhost:9976/
 # Standard expiration time in microseconds range of truth (2 years)
 TRUTH_EXPIRATION = 63115200000000
 
-# Server salt 256 bits
-SERVER_SALT = 
gUfO1KGOKYIFlFQgBv9NeYqiSgS16Y0dcgj74YewVnSEsEkXaG5duaGphWXgQGI84OOezaS9tlffQ0J27u6iAcvWMMdR8oANz5GeoWZFAAQDW65qMrUoTfDK170hY7krj6GZ04PFgBzBRtNAyGqPTkRbOFQ04lu6pa0bYF9JAwmwrFD0csVliuvapL33ukOwHdKDyg81FQuRW1bNbj9D0GMPoVcacJUrOXk0mIWhyG3Q2OoVOfW1LiIaXwfitLGd
+# Server salt 16 Byte
+SERVER_SALT = gUfO1KGOKYIFlFQg
 
 # Supported methods
 SUPPORTED_METHODS = question
diff --git a/src/cli/anastasis-cli-assembler.c 
b/src/cli/anastasis-cli-assembler.c
index ebb0ac6..8a5ed5a 100644
--- a/src/cli/anastasis-cli-assembler.c
+++ b/src/cli/anastasis-cli-assembler.c
@@ -164,7 +164,7 @@ struct RecoverSecretState
   /**
    * Salt to be used to derive the id
    */
-  struct ANASTASIS_CRYPTO_SaltP *salt;
+  struct ANASTASIS_CRYPTO_PowSaltP *salt;
 
   /**
    * Recovery information from the lookup
@@ -697,7 +697,7 @@ core_secret_cb (void *cls,
 static void
 salt_cb (void *cls,
          unsigned int http_status,
-         const struct ANASTASIS_CRYPTO_SaltP *salt)
+         const struct ANASTASIS_CRYPTO_PowSaltP *salt)
 {
   struct RecoverSecretState *rss = cls;
 
diff --git a/src/cli/anastasis-cli-splitter.c b/src/cli/anastasis-cli-splitter.c
index 526cfc6..d43888b 100644
--- a/src/cli/anastasis-cli-splitter.c
+++ b/src/cli/anastasis-cli-splitter.c
@@ -137,7 +137,7 @@ struct ServerInfo
   /**
    * server salt of the anastasis backend.
    */
-  const struct ANASTASIS_CRYPTO_SaltP *backend_salt;
+  const struct ANASTASIS_CRYPTO_PowSaltP *backend_salt;
 
   /**
    * insurance of the anastasis backend.
@@ -173,7 +173,7 @@ struct SaltState
   /**
    * The salt value from server.
    */
-  struct ANASTASIS_CRYPTO_SaltP salt;
+  struct ANASTASIS_CRYPTO_PowSaltP salt;
 
   /**
    * Reference to a ServerInfo.
@@ -624,7 +624,7 @@ config_cb (void *cls,
 static void
 salt_cb (void *cls,
          unsigned int http_status,
-         const struct ANASTASIS_CRYPTO_SaltP *salt)
+         const struct ANASTASIS_CRYPTO_PowSaltP *salt)
 {
   struct SaltState *ss = cls;
   struct ConfigState *cs = GNUNET_new (struct ConfigState);
diff --git a/src/include/anastasis.h b/src/include/anastasis.h
index 407a999..17f6a36 100644
--- a/src/include/anastasis.h
+++ b/src/include/anastasis.h
@@ -83,7 +83,7 @@ struct ANASTASIS_RecoveryInformation
 
   unsigned int cs_len;
 
-  struct ANASTASIS_CRYPTO_SaltP salt;
+  struct ANASTASIS_CRYPTO_PowSaltP salt;
 
   unsigned int version;     // actual version obtained
 };
@@ -246,7 +246,7 @@ ANASTASIS_recovery_begin (struct GNUNET_CURL_Context *ctx,
                           const json_t *id_data,
                           unsigned int version,
                           const char *anastasis_provider_url,
-                          const struct ANASTASIS_CRYPTO_SaltP *salt,
+                          const struct ANASTASIS_CRYPTO_PowSaltP *salt,
                           ANASTASIS_PolicyCallback pc,
                           void *pc_cls,
                           ANASTASIS_CoreSecretCallback csc,
@@ -319,7 +319,7 @@ ANASTASIS_truth_upload (struct GNUNET_CURL_Context *ctx,
                         const char *method,
                         const char *instructions,
                         const char *mime_type,
-                        const struct ANASTASIS_CRYPTO_SaltP *salt,
+                        const struct ANASTASIS_CRYPTO_PowSaltP *salt,
                         const void *truth_data,
                         size_t truth_data_size,
                         ANASTASIS_TruthPaymentCallback tpc,
diff --git a/src/include/anastasis_crypto_lib.h 
b/src/include/anastasis_crypto_lib.h
index a26c010..23d18db 100644
--- a/src/include/anastasis_crypto_lib.h
+++ b/src/include/anastasis_crypto_lib.h
@@ -77,6 +77,14 @@ struct ANASTASIS_CRYPTO_SaltP
   struct GNUNET_HashCode salt GNUNET_PACKED;
 };
 
+/**
+ * Specifies a Salt value of size 16 Byte for GNUNET_CRYPTO_pow_hash.
+*/
+struct ANASTASIS_CRYPTO_PowSaltP
+{
+  uint8_t salt[16];
+};
+
 
 /**
  * Specifies a policy key which is used to decrypt the master key
@@ -184,7 +192,7 @@ GNUNET_NETWORK_STRUCT_END
 void
 ANASTASIS_CRYPTO_user_identifier_derive (
   const json_t *id_data,
-  const struct ANASTASIS_CRYPTO_SaltP *server_salt,
+  const struct ANASTASIS_CRYPTO_PowSaltP *server_salt,
   struct ANASTASIS_CRYPTO_UserIdentifierP *id);
 
 /**
diff --git a/src/include/anastasis_service.h b/src/include/anastasis_service.h
index 70abc62..e849828 100644
--- a/src/include/anastasis_service.h
+++ b/src/include/anastasis_service.h
@@ -319,7 +319,7 @@ struct ANASTASIS_ConfigOperation
 typedef void
 (*ANASTASIS_SaltCallback)(void *cls,
                           unsigned int http_status,
-                          const struct ANASTASIS_CRYPTO_SaltP *salt);
+                          const struct ANASTASIS_CRYPTO_PowSaltP *salt);
 
 
 struct ANASTASIS_SaltOperation *
@@ -366,7 +366,7 @@ struct ANASTASIS_SaltOperation
   /**
    * Server salt.
    */
-  struct ANASTASIS_CRYPTO_SaltP salt;
+  struct ANASTASIS_CRYPTO_PowSaltP salt;
 };
 
 
diff --git a/src/include/anastasis_testing_lib.h 
b/src/include/anastasis_testing_lib.h
index 2249a65..c3ff3c2 100644
--- a/src/include/anastasis_testing_lib.h
+++ b/src/include/anastasis_testing_lib.h
@@ -434,7 +434,7 @@ ANASTASIS_TESTING_cmd_keyshare_lookup (const char *label,
 int
 ANASTASIS_TESTING_get_trait_salt (const struct TALER_TESTING_Command *cmd,
                                   unsigned int index,
-                                  const struct ANASTASIS_CRYPTO_SaltP **s);
+                                  const struct ANASTASIS_CRYPTO_PowSaltP **s);
 
 
 /**
@@ -446,7 +446,7 @@ ANASTASIS_TESTING_get_trait_salt (const struct 
TALER_TESTING_Command *cmd,
  */
 struct TALER_TESTING_Trait
 ANASTASIS_TESTING_make_trait_salt (unsigned int index,
-                                   const struct ANASTASIS_CRYPTO_SaltP *s);
+                                   const struct ANASTASIS_CRYPTO_PowSaltP *s);
 
 
 /**
diff --git a/src/lib/anastasis.c b/src/lib/anastasis.c
index 76cb9ae..ca5780e 100644
--- a/src/lib/anastasis.c
+++ b/src/lib/anastasis.c
@@ -87,15 +87,15 @@ struct ANASTASIS_Recovery
    */
   size_t enc_core_secret_size;
   /**
-   * Length of available decryption policies
+   * Length of available decryption policies //FIXME: Copy paste?
    */
-  struct ANASTASIS_CRYPTO_SaltP policy_salt;
+  struct ANASTASIS_CRYPTO_PowSaltP policy_salt;
   /**
-   * Length of available decryption policies
+   * Length of available decryption policies //FIXME: Copy paste?
    */
   struct ANASTASIS_Challenge *solved_challenges;
   /**
-   * Length of available decryption policies
+   * Length of available decryption policies //FIXME: Copy paste?
    */
   unsigned int solved_challenge_pos;
   /**
@@ -709,7 +709,7 @@ ANASTASIS_recovery_begin (struct GNUNET_CURL_Context *ctx,
                           const json_t *id_data,
                           unsigned int version,
                           const char *anastasis_provider_url,
-                          const struct ANASTASIS_CRYPTO_SaltP *salt,
+                          const struct ANASTASIS_CRYPTO_PowSaltP *salt,
                           ANASTASIS_PolicyCallback pc,
                           void *pc_cls,
                           ANASTASIS_CoreSecretCallback csc,
@@ -822,7 +822,7 @@ struct ANASTASIS_Truth
   /**
    * server salt used to derive user identifier
    */
-  const struct ANASTASIS_CRYPTO_SaltP *salt;
+  const struct ANASTASIS_CRYPTO_PowSaltP *salt;
 };
 
 /**
@@ -976,7 +976,7 @@ ANASTASIS_truth_upload (struct GNUNET_CURL_Context *ctx,
                         const char *method,
                         const char *instructions,
                         const char *mime_type,
-                        const struct ANASTASIS_CRYPTO_SaltP *salt,
+                        const struct ANASTASIS_CRYPTO_PowSaltP *salt,
                         const void *truth_data,
                         size_t truth_data_size,
                         ANASTASIS_TruthPaymentCallback tpc,
@@ -1282,7 +1282,7 @@ struct PolicyStoreState
   /**
    * Server salt
    */
-  const struct ANASTASIS_CRYPTO_SaltP *server_salt;
+  const struct ANASTASIS_CRYPTO_PowSaltP *server_salt;
 
   /**
    * Status of the transaction
diff --git a/src/lib/testing_api_cmd_salt.c b/src/lib/testing_api_cmd_salt.c
index c891215..aea43f5 100644
--- a/src/lib/testing_api_cmd_salt.c
+++ b/src/lib/testing_api_cmd_salt.c
@@ -54,7 +54,7 @@ struct SaltState
   /**
    * The salt value from server.
    */
-  struct ANASTASIS_CRYPTO_SaltP salt;
+  struct ANASTASIS_CRYPTO_PowSaltP salt;
 };
 
 
@@ -68,7 +68,7 @@ struct SaltState
 static void
 salt_cb (void *cls,
          unsigned int http_status,
-         const struct ANASTASIS_CRYPTO_SaltP *salt)
+         const struct ANASTASIS_CRYPTO_PowSaltP *salt)
 {
   struct SaltState *ss = cls;
 
diff --git a/src/lib/testing_api_trait_salt.c b/src/lib/testing_api_trait_salt.c
index 0bf5f3a..88976ce 100644
--- a/src/lib/testing_api_trait_salt.c
+++ b/src/lib/testing_api_trait_salt.c
@@ -41,7 +41,7 @@ int
 ANASTASIS_TESTING_get_trait_salt
   (const struct TALER_TESTING_Command *cmd,
   unsigned int index,
-  const struct ANASTASIS_CRYPTO_SaltP **s)
+  const struct ANASTASIS_CRYPTO_PowSaltP **s)
 {
   return cmd->traits (cmd->cls,
                       (const void **) s,
@@ -60,7 +60,7 @@ ANASTASIS_TESTING_get_trait_salt
 struct TALER_TESTING_Trait
 ANASTASIS_TESTING_make_trait_salt
   (unsigned int index,
-  const struct ANASTASIS_CRYPTO_SaltP *s)
+  const struct ANASTASIS_CRYPTO_PowSaltP *s)
 {
   struct TALER_TESTING_Trait ret = {
     .index = index,
diff --git a/src/lib/testing_cmd_recover_secret.c 
b/src/lib/testing_cmd_recover_secret.c
index 3cd6d6d..8ec7243 100644
--- a/src/lib/testing_cmd_recover_secret.c
+++ b/src/lib/testing_cmd_recover_secret.c
@@ -75,7 +75,7 @@ struct RecoverSecretState
   /**
    * Salt to be used to derive the id
    */
-  struct ANASTASIS_CRYPTO_SaltP *salt;
+  struct ANASTASIS_CRYPTO_PowSaltP *salt;
   /**
    * Recovery information from the lookup
    */
@@ -134,7 +134,7 @@ recover_secret_run (void *cls,
 {
   struct RecoverSecretState *rss = cls;
   const struct TALER_TESTING_Command *ref;
-  const struct ANASTASIS_CRYPTO_SaltP *salt;
+  const struct ANASTASIS_CRYPTO_PowSaltP *salt;
   rss->is = is;
 
   if (NULL != rss->download_reference)
diff --git a/src/lib/testing_cmd_truth_upload.c 
b/src/lib/testing_cmd_truth_upload.c
index 7d7e7e7..122cfe3 100644
--- a/src/lib/testing_cmd_truth_upload.c
+++ b/src/lib/testing_cmd_truth_upload.c
@@ -168,7 +168,7 @@ truth_upload_run (void *cls,
 {
   struct TruthUploadState *tus = cls;
   const struct TALER_TESTING_Command *ref;
-  const struct ANASTASIS_CRYPTO_SaltP *salt;
+  const struct ANASTASIS_CRYPTO_PowSaltP *salt;
 
   tus->is = is;
   if (NULL != tus->upload_reference)
diff --git a/src/util/anastasis_crypto.c b/src/util/anastasis_crypto.c
index 68d21e0..78b95c8 100644
--- a/src/util/anastasis_crypto.c
+++ b/src/util/anastasis_crypto.c
@@ -319,28 +319,20 @@ anastasis_decrypt (const void *key,
 void
 ANASTASIS_CRYPTO_user_identifier_derive (
   const json_t *id_data,
-  const struct ANASTASIS_CRYPTO_SaltP *server_salt,
+  const struct ANASTASIS_CRYPTO_PowSaltP *server_salt,
   struct ANASTASIS_CRYPTO_UserIdentifierP *id)
 {
   char *json_enc;
-  char *salt_str_buf;
-  char salt_str[16];
-
-  salt_str_buf = GNUNET_STRINGS_data_to_string_alloc (server_salt,
-                                                      sizeof (*server_salt));
-  // GNUNET_CRYPTO_pow_hash needs a salt value of exactly 16 Bytes
-  strncpy (salt_str,salt_str_buf, 16);
-  salt_str[16] = '\0';
+
   json_enc = json_dumps (id_data,
                          JSON_COMPACT | JSON_SORT_KEYS);
   GNUNET_assert (NULL != json_enc);
-  GNUNET_CRYPTO_pow_hash (salt_str,
+  GNUNET_CRYPTO_pow_hash (server_salt,
                           json_enc,
                           strlen (json_enc),
                           &id->hash);
 
   free (json_enc);
-  GNUNET_free (salt_str_buf);
 }
 
 
diff --git a/src/util/test_anastasis_crypto.c b/src/util/test_anastasis_crypto.c
index 7abd455..8797882 100644
--- a/src/util/test_anastasis_crypto.c
+++ b/src/util/test_anastasis_crypto.c
@@ -41,11 +41,6 @@ test_user_identifier_derive (void)
   struct ANASTASIS_CRYPTO_UserIdentifierP id_1;
   struct ANASTASIS_CRYPTO_UserIdentifierP id_2;
   struct ANASTASIS_CRYPTO_UserIdentifierP id_3;
-  struct ANASTASIS_CRYPTO_SaltP salt;
-
-  GNUNET_CRYPTO_hash_from_string2 ("Server Salt",
-                                   strlen ("Server Salt"),
-                                   &salt.salt);
 
   // sample data 1
   id_data_1 = json_object ();
@@ -58,13 +53,13 @@ test_user_identifier_derive (void)
   json_object_set_new (id_data_3, "arg1", json_string ("Hallo2"));
 
   ANASTASIS_CRYPTO_user_identifier_derive (id_data_1,
-                                           &salt,
+                                           "Server-Salt-Test",
                                            &id_1);
   ANASTASIS_CRYPTO_user_identifier_derive (id_data_2,
-                                           &salt,
+                                           "Server-Salt-Test",
                                            &id_2);
   ANASTASIS_CRYPTO_user_identifier_derive (id_data_3,
-                                           &salt,
+                                           "Server-Salt-Test",
                                            &id_3);
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "UserIdentifier_1: %s\n",
@@ -97,17 +92,12 @@ test_recovery_document (void)
   size_t size_plaintext;
   struct ANASTASIS_CRYPTO_UserIdentifierP id;
   int ret;
-  struct ANASTASIS_CRYPTO_SaltP *salt = GNUNET_new (struct
-                                                    ANASTASIS_CRYPTO_SaltP);
+
   json_t *id_data = json_object ();
   const char *test = "TEST_ERD";
-
-  GNUNET_CRYPTO_hash_from_string ("Server Salt",
-                                  &salt->salt);
-
   json_object_set_new (id_data, "arg1", json_string ("ID_DATA"));
   ANASTASIS_CRYPTO_user_identifier_derive (id_data,
-                                           salt,
+                                           "Server-Salt-Test",
                                            &id);
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -131,7 +121,6 @@ test_recovery_document (void)
   GNUNET_assert (strlen (test) == size_plaintext);
   ret = strncmp (plaintext, test, strlen (test));
   json_decref (id_data);
-  GNUNET_free (salt);
   GNUNET_free (ciphertext);
   GNUNET_free (plaintext);
   return ret;
@@ -311,7 +300,7 @@ test_public_key_derive ()
 {
   struct ANASTASIS_CRYPTO_UserIdentifierP id;
   struct ANASTASIS_CRYPTO_AccountPublicKeyP pub_key;
-  struct ANASTASIS_CRYPTO_SaltP server_salt;
+  struct ANASTASIS_CRYPTO_PowSaltP server_salt;
 
   json_t *id_data = json_object ();
 

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]