gnunet-svn
[Top][All Lists]
Advanced

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

[taler-anastasis] 02/03: worked on core secret encryption test


From: gnunet
Subject: [taler-anastasis] 02/03: worked on core secret encryption test
Date: Wed, 01 Apr 2020 23:36:59 +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 487c68a6a681e82a0ea29cf9fc93d5696b8b2153
Author: Dennis Neufeld <address@hidden>
AuthorDate: Wed Apr 1 19:39:39 2020 +0000

    worked on core secret encryption test
---
 src/include/anastasis_crypto_lib.h |  4 +--
 src/util/anastasis_crypto.c        |  9 ++----
 src/util/test_anastasis_crypto.c   | 58 ++++++++++++++++++++++++++++++++++++++
 3 files changed, 62 insertions(+), 9 deletions(-)

diff --git a/src/include/anastasis_crypto_lib.h 
b/src/include/anastasis_crypto_lib.h
index 2be02a7..77bb1d0 100644
--- a/src/include/anastasis_crypto_lib.h
+++ b/src/include/anastasis_crypto_lib.h
@@ -326,8 +326,7 @@ ANASTASIS_CRYPTO_policy_key_derive (
  * @param policy_keys_length defines the amount of policy keys and also the 
amount of encrypted master keys
  * @param core_secret the user provided core secret which is secured by 
anastasis
  * @param core_secret_size the size of the core secret
- * @param enc_core_secret the core secret is encrypted with the generated 
master key
- * @param enc_core_secret_size[out] size of the encrypted secret
+ * @param enc_core_secret[out] the core secret is encrypted with the generated 
master key
  * @param encrypted_master_keys[out] array of encrypted master keys which will 
be safed inside the policies one encrypted
  *        master key is created for each policy key
  */
@@ -338,7 +337,6 @@ ANASTASIS_CRYPTO_core_secret_encrypt (
   const void *core_secret,
   size_t core_secret_size,
   void **enc_core_secret,
-  size_t *enc_core_secret_size,
   struct ANASTASIS_CRYPTO_EncryptedMasterKey *encrypted_master_keys);
 
 
diff --git a/src/util/anastasis_crypto.c b/src/util/anastasis_crypto.c
index ab765ee..b42ba7e 100644
--- a/src/util/anastasis_crypto.c
+++ b/src/util/anastasis_crypto.c
@@ -546,8 +546,7 @@ ANASTASIS_CRYPTO_policy_key_derive (
  * @param policy_keys_length defines the amount of policy keys and also the 
amount of encrypted master keys
  * @param core_secret the user provided core secret which is secured by 
anastasis
  * @param core_secret_size the size of the core secret
- * @param enc_core_secret the core secret is encrypted with the generated 
master key
- * @param enc_core_secret_size[out] size of the encrypted secret
+ * @param enc_core_secret[out] the core secret is encrypted with the generated 
master key
  * @param encrypted_master_keys[out] array of encrypted master keys which will 
be safed inside the policies one encrypted
  *        master key is created for each policy key
  */
@@ -558,14 +557,13 @@ ANASTASIS_CRYPTO_core_secret_encrypt (
   const void *core_secret,
   size_t core_secret_size,
   void **enc_core_secret,
-  size_t *enc_core_secret_size,
   struct ANASTASIS_CRYPTO_EncryptedMasterKey *encrypted_master_keys)
 {
   struct GNUNET_CRYPTO_SymmetricSessionKey sk;
   struct GNUNET_CRYPTO_SymmetricInitializationVector iv;
   struct GNUNET_HashCode master_key;
 
-  *enc_core_secret = GNUNET_malloc (*enc_core_secret_size);
+  *enc_core_secret = GNUNET_malloc (core_secret_size);
   GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_STRONG,
                               &master_key,
                               sizeof (struct GNUNET_HashCode));
@@ -581,14 +579,13 @@ ANASTASIS_CRYPTO_core_secret_encrypt (
     struct GNUNET_CRYPTO_SymmetricSessionKey i_sk;
     struct GNUNET_CRYPTO_SymmetricInitializationVector i_iv;
 
-    GNUNET_CRYPTO_hash_to_aes_key (&policy_keys[i].key, &i_sk, &i_iv);
     GNUNET_assert (GNUNET_SYSERR !=
                    GNUNET_CRYPTO_symmetric_encrypt (&master_key,
                                                     sizeof (struct
                                                             GNUNET_HashCode),
                                                     &i_sk,
                                                     &i_iv,
-                                                    
&encrypted_master_keys[0]));
+                                                    
&encrypted_master_keys[i]));
   }
 }
 
diff --git a/src/util/test_anastasis_crypto.c b/src/util/test_anastasis_crypto.c
index d99ac93..0a5da10 100644
--- a/src/util/test_anastasis_crypto.c
+++ b/src/util/test_anastasis_crypto.c
@@ -185,11 +185,66 @@ test_truth (void)
 }
 
 
+static int
+test_core_secret (void)
+{
+  void *enc_core_secret;
+  size_t enc_core_secret_size;
+  unsigned int policy_keys_length = 5;
+  struct ANASTASIS_CRYPTO_Salt salt;
+  struct ANASTASIS_CRYPTO_EncryptedMasterKey
+    encrypted_master_keys[policy_keys_length];
+
+  GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK,
+                              &salt,
+                              sizeof (struct ANASTASIS_CRYPTO_Salt));
+
+  // construction of PolicyKey-array
+  struct ANASTASIS_CRYPTO_PolicyKey policy_keys[policy_keys_length];
+  for (unsigned int i = 0; i < policy_keys_length; i++)
+  {
+    // construction of KeyShare-array
+    unsigned int keyshare_length = 5;
+    struct ANASTASIS_CRYPTO_KeyShare keyshares[keyshare_length];
+    for (unsigned int j = 0; j < keyshare_length; j++)
+    {
+      ANASTASIS_CRYPTO_key_share_create (&keyshares[j]);
+      if (j > 0)
+        GNUNET_assert (0 !=
+                       GNUNET_memcmp (&keyshares[j - 1], &keyshares[j]));
+    }
+
+    // derive policy-keys
+    ANASTASIS_CRYPTO_policy_key_derive ((struct
+                                         ANASTASIS_CRYPTO_KeyShare *)
+                                        &keyshares,
+                                        keyshare_length,
+                                        &salt,
+                                        &policy_keys[i]);
+    if (i > 0)
+      GNUNET_assert (0 !=
+                     GNUNET_memcmp (&policy_keys[i - 1], &policy_keys[i]));
+  }
+
+  // test encryption of core_secret
+  ANASTASIS_CRYPTO_core_secret_encrypt ((struct
+                                         ANASTASIS_CRYPTO_PolicyKey *)
+                                        &policy_keys,
+                                        policy_keys_length,
+                                        "TEST_CORE_SECRET",
+                                        strlen ("TEST_CORE_SECRET"),
+                                        &enc_core_secret,
+                                        &encrypted_master_keys);
+  return 1;
+}
+
+
 int
 main (int argc,
       const char *const argv[])
 {
   GNUNET_log_setup (argv[0], "DEBUG", NULL);
+  /*
   if (0 != test_recovery_document ())
     return 1;
   if (0 != test_user_identifier_derive ())
@@ -198,6 +253,9 @@ main (int argc,
     return 1;
   if (0 != test_truth ())
     return 1;
+  */
+  if (0 != test_core_secret ())
+    return 1;
 
   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]