gnunet-svn
[Top][All Lists]
Advanced

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

[taler-anastasis] 07/12: worked on keyshare lookup api


From: gnunet
Subject: [taler-anastasis] 07/12: worked on keyshare lookup api
Date: Mon, 20 Apr 2020 09:46:02 +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 54869f67f48d3427b4262e881f9157ce82d7763c
Author: Dennis Neufeld <address@hidden>
AuthorDate: Sun Apr 19 19:21:14 2020 +0000

    worked on keyshare lookup api
---
 src/include/anastasis_crypto_lib.h        |   6 +++--
 src/include/anastasis_testing_lib.h       |   9 +++++++
 src/lib/anastasis_api_keyshare_lookup.c   |   1 -
 src/lib/anastasis_api_truth_store.c       |   4 ++-
 src/lib/test_anastasis_api.c              |   6 +++--
 src/lib/testing_api_cmd_keyshare_lookup.c |  10 ++++++++
 src/lib/testing_api_cmd_truth_store.c     |  41 +++++++++++++++++++++++++-----
 src/lib/vgcore.670330                     | Bin 0 -> 32911360 bytes
 src/lib/vgcore.672100                     | Bin 0 -> 32911360 bytes
 src/lib/vgcore.681040                     | Bin 0 -> 54255616 bytes
 src/lib/vgcore.681242                     | Bin 0 -> 54255616 bytes
 src/lib/vgcore.744129                     | Bin 0 -> 41508864 bytes
 src/lib/vgcore.787300                     | Bin 0 -> 41508864 bytes
 src/lib/vgcore.792886                     | Bin 0 -> 49897472 bytes
 src/lib/vgcore.799199                     | Bin 0 -> 49897472 bytes
 src/lib/vgcore.804978                     | Bin 0 -> 49897472 bytes
 src/lib/vgcore.857862                     | Bin 0 -> 54255616 bytes
 src/util/anastasis_crypto.c               |  20 ++++++++-------
 src/util/test_anastasis_crypto.c          |  33 ++++++++++++++++++++----
 19 files changed, 103 insertions(+), 27 deletions(-)

diff --git a/src/include/anastasis_crypto_lib.h 
b/src/include/anastasis_crypto_lib.h
index a3cec5c..2aeb776 100644
--- a/src/include/anastasis_crypto_lib.h
+++ b/src/include/anastasis_crypto_lib.h
@@ -48,7 +48,7 @@ struct ANASTASIS_CRYPTO_AccountPrivateKey
 */
 struct ANASTASIS_CRYPTO_TruthKey
 {
-  uint32_t key[8];
+  struct GNUNET_HashCode key;
 };
 
 
@@ -351,6 +351,7 @@ ANASTASIS_CRYPTO_core_secret_encrypt (
  * @param encrypted_core_secret the encrypted core secret from the user, will 
be encrypted with the policy key
  * @param encrypted_core_secret_size size of the encrypted core secret
  * @param core_secret[out] decrypted core secret will be returned
+ * @param core_secret_size[out] size of core secret
  */
 void
 ANASTASIS_CRYPTO_core_secret_recover (
@@ -358,4 +359,5 @@ ANASTASIS_CRYPTO_core_secret_recover (
   const struct ANASTASIS_CRYPTO_PolicyKey policy_key,
   const void *encrypted_core_secret,
   size_t encrypted_core_secret_size,
-  void **core_secret);
\ No newline at end of file
+  void **core_secret,
+  size_t *core_secret_size);
\ No newline at end of file
diff --git a/src/include/anastasis_testing_lib.h 
b/src/include/anastasis_testing_lib.h
index 5c43a5f..386eadf 100644
--- a/src/include/anastasis_testing_lib.h
+++ b/src/include/anastasis_testing_lib.h
@@ -340,6 +340,15 @@ enum ANASTASIS_TESTING_TruthStoreOption
 
 };
 
+/**
+ * Creates a truth key.
+ *
+ * @param key_str a str you want to be a truth key
+ * @return truthkey
+ */
+struct ANASTASIS_CRYPTO_TruthKey *
+ANASTASIS_TESTING_make_truthkey (const char *key_str);
+
 /**
  * Creates hash of an answer
  *
diff --git a/src/lib/anastasis_api_keyshare_lookup.c 
b/src/lib/anastasis_api_keyshare_lookup.c
index 92f14d0..b79c5d5 100644
--- a/src/lib/anastasis_api_keyshare_lookup.c
+++ b/src/lib/anastasis_api_keyshare_lookup.c
@@ -267,7 +267,6 @@ ANASTASIS_keyshare_lookup (struct GNUNET_CURL_Context *ctx,
   GNUNET_asprintf (&path,
                    "truth/%s",
                    uuid_str);
-  GNUNET_free (uuid_str);
   kslo->url = TALER_url_join (backend_url,
                               path,
                               "response",
diff --git a/src/lib/anastasis_api_truth_store.c 
b/src/lib/anastasis_api_truth_store.c
index 409d3ad..a54e7c8 100644
--- a/src/lib/anastasis_api_truth_store.c
+++ b/src/lib/anastasis_api_truth_store.c
@@ -270,6 +270,9 @@ ANASTASIS_truth_store (struct GNUNET_CURL_Context *ctx,
   CURL *eh;
   char *json_str;
 
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "Truth json before upload 3: %s\n",
+              json_dumps (truth_data, JSON_COMPACT));
   json_str = json_dumps (truth_data,
                          JSON_COMPACT);
 
@@ -341,7 +344,6 @@ ANASTASIS_truth_store (struct GNUNET_CURL_Context *ctx,
                                       GNUNET_NO,
                                       &handle_truth_store_finished,
                                       tso);
-  GNUNET_free (json_str);
   json_decref (truth_data);
   return tso;
 }
diff --git a/src/lib/test_anastasis_api.c b/src/lib/test_anastasis_api.c
index 475ca41..317f7af 100644
--- a/src/lib/test_anastasis_api.c
+++ b/src/lib/test_anastasis_api.c
@@ -243,14 +243,16 @@ run (void *cls,
                                          ANASTASIS_TESTING_make_hashed_answer (
                                            "Hashed-Answer",
                                            strlen ("Hashed-Answer")),
-                                         "Truth-Key")),
+                                         ANASTASIS_TESTING_make_truthkey (
+                                           "Truth-Key"))),
     ANASTASIS_TESTING_cmd_keyshare_lookup ("keyshare-lookup-1",
                                            anastasis_url,
                                            MHD_HTTP_OK,
                                            
ANASTASIS_TESTING_make_hashed_answer (
                                              "Hashed-Answer",
                                              strlen ("Hashed-Answer")),
-                                           "Truth-Key",
+                                           ANASTASIS_TESTING_make_truthkey (
+                                             "Truth-Key"),
                                            "truth-store-1"),
 
     TALER_TESTING_cmd_end ()
diff --git a/src/lib/testing_api_cmd_keyshare_lookup.c 
b/src/lib/testing_api_cmd_keyshare_lookup.c
index 7128863..e39e280 100644
--- a/src/lib/testing_api_cmd_keyshare_lookup.c
+++ b/src/lib/testing_api_cmd_keyshare_lookup.c
@@ -197,6 +197,9 @@ ANASTASIS_TESTING_make_hashed_answer (const void *answer,
   GNUNET_CRYPTO_hash (answer,
                       size_answer,
                       &hashed_answer);
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "Hashed answer: %s\n",
+              TALER_B2S (&hashed_answer));
   return hashed_answer;
 }
 
@@ -224,6 +227,13 @@ ANASTASIS_TESTING_cmd_keyshare_lookup (const char *label,
 {
   struct KeyShareLookupState *ksls;
 
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "Hashed answer in keyshare lookup cmd: %s\n",
+              TALER_B2S (&answer));
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "TruthKey in keyshare lookup cmd: %s\n",
+              TALER_B2S (key));
+
   GNUNET_assert (NULL != upload_ref);
   ksls = GNUNET_new (struct KeyShareLookupState);
   ksls->http_status = http_status;
diff --git a/src/lib/testing_api_cmd_truth_store.c 
b/src/lib/testing_api_cmd_truth_store.c
index cb4a820..66cd376 100644
--- a/src/lib/testing_api_cmd_truth_store.c
+++ b/src/lib/testing_api_cmd_truth_store.c
@@ -212,6 +212,9 @@ truth_store_run (void *cls,
 {
   struct TruthStoreState *tss = cls;
   tss->is = is;
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "Truth json before upload 2: %s\n",
+              json_dumps (tss->truth_data, JSON_COMPACT));
   if (NULL != tss->prev_upload)
   {
     const struct TALER_TESTING_Command *ref;
@@ -295,7 +298,6 @@ truth_store_cleanup (void *cls,
 
   GNUNET_free_non_null ((void *) tss->payment_order_id);
   GNUNET_free (tss);
-  json_decref (tss->truth_data);
 }
 
 
@@ -332,6 +334,25 @@ truth_store_traits (void *cls,
 }
 
 
+/**
+ * Creates a truth key.
+ *
+ * @param key_str a str you want to be a truth key
+ * @return truthkey (must be freed)
+ */
+struct ANASTASIS_CRYPTO_TruthKey *
+ANASTASIS_TESTING_make_truthkey (const char *key_str)
+{
+  struct ANASTASIS_CRYPTO_TruthKey *key;
+
+  key = GNUNET_new (struct ANASTASIS_CRYPTO_TruthKey);
+  GNUNET_CRYPTO_hash (key_str,
+                      strlen (key_str),
+                      &key->key);
+  return key;
+}
+
+
 /**
  * Creates a sample of truth.
  *
@@ -351,23 +372,25 @@ ANASTASIS_TESTING_make_truth_example (const char *method,
 
   json_t *truth_data;
   struct ANASTASIS_CRYPTO_EncryptedKeyShare keyshare_data;
-  struct GNUNET_HashCode truth_hash;
   void *encrypted_truth;
   size_t size_encrypted_truth;
 
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "Hashed answer in truth example: %s\n",
+              TALER_B2S (&answer));
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "TruthKey in truth example: %s\n",
+              TALER_B2S (key));
+
   GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK,
                               &keyshare_data,
                               sizeof (struct
                                       ANASTASIS_CRYPTO_EncryptedKeyShare));
-  GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK,
-                              &truth_hash,
-                              sizeof (struct GNUNET_HashCode));
   ANASTASIS_CRYPTO_truth_encrypt (key,
                                   &answer,
                                   sizeof (answer),
                                   &encrypted_truth,
                                   &size_encrypted_truth);
-
   truth_data = json_pack ("{s:o," /* keyshare_data */
                           " s:s," /* method */
                           " s:o," /* encrypted_truth */
@@ -381,7 +404,7 @@ ANASTASIS_TESTING_make_truth_example (const char *method,
                           "truth_mime", mime_type
                           );
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Truth json before upload: %s\n",
+              "Truth json before upload 0: %s\n",
               json_dumps (truth_data, JSON_COMPACT));
   GNUNET_assert (NULL != truth_data);
   GNUNET_free (encrypted_truth);
@@ -411,6 +434,10 @@ ANASTASIS_TESTING_cmd_truth_store (const char *label,
 {
   struct TruthStoreState *tss;
 
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "Truth json before upload 1: %s\n",
+              json_dumps (truth_data, JSON_COMPACT));
+
   tss = GNUNET_new (struct TruthStoreState);
   tss->truth_data = truth_data;
   tss->http_status = http_status;
diff --git a/src/lib/vgcore.670330 b/src/lib/vgcore.670330
new file mode 100644
index 0000000..2b587d3
Binary files /dev/null and b/src/lib/vgcore.670330 differ
diff --git a/src/lib/vgcore.672100 b/src/lib/vgcore.672100
new file mode 100644
index 0000000..57f1d83
Binary files /dev/null and b/src/lib/vgcore.672100 differ
diff --git a/src/lib/vgcore.681040 b/src/lib/vgcore.681040
new file mode 100644
index 0000000..81f8231
Binary files /dev/null and b/src/lib/vgcore.681040 differ
diff --git a/src/lib/vgcore.681242 b/src/lib/vgcore.681242
new file mode 100644
index 0000000..45e89b9
Binary files /dev/null and b/src/lib/vgcore.681242 differ
diff --git a/src/lib/vgcore.744129 b/src/lib/vgcore.744129
new file mode 100644
index 0000000..6437e15
Binary files /dev/null and b/src/lib/vgcore.744129 differ
diff --git a/src/lib/vgcore.787300 b/src/lib/vgcore.787300
new file mode 100644
index 0000000..f6bebdf
Binary files /dev/null and b/src/lib/vgcore.787300 differ
diff --git a/src/lib/vgcore.792886 b/src/lib/vgcore.792886
new file mode 100644
index 0000000..04e2ee1
Binary files /dev/null and b/src/lib/vgcore.792886 differ
diff --git a/src/lib/vgcore.799199 b/src/lib/vgcore.799199
new file mode 100644
index 0000000..d650cc0
Binary files /dev/null and b/src/lib/vgcore.799199 differ
diff --git a/src/lib/vgcore.804978 b/src/lib/vgcore.804978
new file mode 100644
index 0000000..5d393aa
Binary files /dev/null and b/src/lib/vgcore.804978 differ
diff --git a/src/lib/vgcore.857862 b/src/lib/vgcore.857862
new file mode 100644
index 0000000..94ac54a
Binary files /dev/null and b/src/lib/vgcore.857862 differ
diff --git a/src/util/anastasis_crypto.c b/src/util/anastasis_crypto.c
index 2762f52..5c3b62e 100644
--- a/src/util/anastasis_crypto.c
+++ b/src/util/anastasis_crypto.c
@@ -396,8 +396,8 @@ ANASTASIS_CRYPTO_keyshare_encrypt (
                      salt,
                      (void **) enc_key_share,
                      &eks_size);
-  GNUNET_assert (eks_size ==
-                 sizeof (struct ANASTASIS_CRYPTO_EncryptedKeyShare));
+  GNUNET_assert (eks_size == sizeof (struct
+                                     ANASTASIS_CRYPTO_EncryptedKeyShare));
 }
 
 
@@ -596,6 +596,7 @@ ANASTASIS_CRYPTO_core_secret_encrypt (
  * @param encrypted_core_secret the encrypted core secret from the user, will 
be encrypted with the policy key
  * @param encrypted_core_secret_size size of the encrypted core secret
  * @param core_secret[out] decrypted core secret will be returned
+ * @param core_secret_size[out] size of core secret
  */
 void
 ANASTASIS_CRYPTO_core_secret_recover (
@@ -603,7 +604,8 @@ ANASTASIS_CRYPTO_core_secret_recover (
   const struct ANASTASIS_CRYPTO_PolicyKey policy_key,
   const void *encrypted_core_secret,
   size_t encrypted_core_secret_size,
-  void **core_secret)
+  void **core_secret,
+  size_t *core_secret_size)
 {
   struct GNUNET_CRYPTO_SymmetricSessionKey mk_sk;
   struct GNUNET_CRYPTO_SymmetricInitializationVector mk_iv;
@@ -624,12 +626,12 @@ ANASTASIS_CRYPTO_core_secret_recover (
   GNUNET_CRYPTO_hash_to_aes_key (&master_key,
                                  &core_sk,
                                  &core_iv);
-  GNUNET_assert (GNUNET_SYSERR !=
-                 GNUNET_CRYPTO_symmetric_decrypt (encrypted_core_secret,
-                                                  encrypted_core_secret_size,
-                                                  &core_sk,
-                                                  &core_iv,
-                                                  *core_secret));
+  *core_secret_size = GNUNET_CRYPTO_symmetric_decrypt (encrypted_core_secret,
+                                                       
encrypted_core_secret_size,
+                                                       &core_sk,
+                                                       &core_iv,
+                                                       *core_secret);
+  GNUNET_assert (GNUNET_SYSERR != *core_secret_size);
 }
 
 
diff --git a/src/util/test_anastasis_crypto.c b/src/util/test_anastasis_crypto.c
index ae12658..07a0712 100644
--- a/src/util/test_anastasis_crypto.c
+++ b/src/util/test_anastasis_crypto.c
@@ -75,6 +75,9 @@ test_user_identifier_derive (void)
               TALER_B2S (&id_3));
   GNUNET_assert (0 == GNUNET_memcmp (&id_1, &id_2));
   GNUNET_assert (0 != GNUNET_memcmp (&id_1, &id_3));
+  json_decref (id_data_1);
+  json_decref (id_data_2);
+  json_decref (id_data_3);
   return 0;
 }
 
@@ -92,6 +95,7 @@ test_recovery_document (void)
   size_t size_plaintext;
   struct ANASTASIS_CRYPTO_UserIdentifier id;
   struct ANASTASIS_CRYPTO_Salt salt;
+  int ret;
 
   json_t *id_data = json_object ();
   const char *test = "TEST_ERD";
@@ -120,7 +124,12 @@ test_recovery_document (void)
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "ERD_AFTER:   %s\n",
               TALER_b2s (plaintext, size_plaintext));
-  return strncmp ((char *) plaintext, test, strlen (test));
+  GNUNET_assert (strlen (test) == size_plaintext);
+  ret = strncmp (plaintext, test, strlen (test));
+  json_decref (id_data);
+  GNUNET_free (ciphertext);
+  GNUNET_free (plaintext);
+  return ret;
 }
 
 
@@ -133,6 +142,7 @@ test_key_share (void)
   struct ANASTASIS_CRYPTO_KeyShare key_share;
   struct ANASTASIS_CRYPTO_KeyShare key_share_1;
   struct ANASTASIS_CRYPTO_KeyShare key_share_2;
+  int ret;
 
   // testing of enc-/decryption of a keyshare
   GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_NONCE,
@@ -158,8 +168,10 @@ test_key_share (void)
   ANASTASIS_CRYPTO_keyshare_create (&key_share_2);
   GNUNET_assert (0 !=
                  GNUNET_memcmp (&key_share_1, &key_share_2));
-
-  return GNUNET_memcmp (&key_share, plaintext);
+  ret = GNUNET_memcmp (&key_share, plaintext);
+  GNUNET_free (ciphertext);
+  GNUNET_free (plaintext);
+  return ret;
 }
 
 
@@ -172,6 +184,7 @@ test_truth (void)
   void *plaintext;
   size_t size_plaintext;
   struct ANASTASIS_CRYPTO_TruthKey truth_enc_key;
+  int ret;
 
   GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_NONCE,
                               &truth_enc_key,
@@ -195,7 +208,11 @@ test_truth (void)
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "TRUTH_AFTER:   %s\n",
               TALER_b2s (plaintext, size_plaintext));
-  return strncmp ((char *) plaintext, test, strlen (test));
+  ret = strncmp (plaintext, test, strlen (test));
+  GNUNET_assert (strlen (test) == size_plaintext);
+  GNUNET_free (ciphertext);
+  GNUNET_free (plaintext);
+  return ret;
 }
 
 
@@ -259,15 +276,19 @@ test_core_secret (void)
   for (unsigned int k = 0; k < policy_keys_length; k++)
   {
     void *dec_core_secret;
+    size_t core_secret_size;
+
     ANASTASIS_CRYPTO_core_secret_recover (&encrypted_master_keys[k],
                                           policy_keys[k],
                                           enc_core_secret,
                                           strlen (test),
-                                          &dec_core_secret);
+                                          &dec_core_secret,
+                                          &core_secret_size);
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                 "CORE_SECRET_AFTER_%i:   %s\n",
                 k,
                 TALER_b2s (dec_core_secret, strlen (test)));
+    GNUNET_assert (strlen (test) == core_secret_size);
     GNUNET_assert (0 ==
                    strncmp (dec_core_secret, test, strlen (test)));
     GNUNET_assert (0 !=
@@ -275,6 +296,7 @@ test_core_secret (void)
                               test)));
     GNUNET_free (dec_core_secret);
   }
+  GNUNET_free (enc_core_secret);
   return 0;
 }
 
@@ -297,6 +319,7 @@ test_public_key_derive ()
   ANASTASIS_CRYPTO_account_public_key_derive (&id,
                                               &pub_key);
   // FIXME: write a real test, e.g. signing and verification
+  json_decref (id_data);
   return 0;
 }
 

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

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