[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.
- [taler-anastasis] branch master updated (f3a0f2e -> 5234d69), gnunet, 2020/04/20
- [taler-anastasis] 03/12: worked on keyshare request, gnunet, 2020/04/20
- [taler-anastasis] 05/12: fixed compiling warnings, gnunet, 2020/04/20
- [taler-anastasis] 04/12: fixed compiling errors, gnunet, 2020/04/20
- [taler-anastasis] 07/12: worked on keyshare lookup api,
gnunet <=
- [taler-anastasis] 09/12: .gitignore, gnunet, 2020/04/20
- [taler-anastasis] 10/12: merge, gnunet, 2020/04/20
- [taler-anastasis] 08/12: .gitignore, gnunet, 2020/04/20
- [taler-anastasis] 06/12: worked on keyshare lookup testing, gnunet, 2020/04/20
- [taler-anastasis] 01/12: modified header, gnunet, 2020/04/20
- [taler-anastasis] 02/12: worked on keyshare request, gnunet, 2020/04/20
- [taler-anastasis] 11/12: fix wrong GNUNET_assert usage..., gnunet, 2020/04/20
- [taler-anastasis] 12/12: worked on fixing uuid issue... still something wrong, gnunet, 2020/04/20