gnunet-svn
[Top][All Lists]
Advanced

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

[taler-exchange] branch master updated: age restriction: make seed a Has


From: gnunet
Subject: [taler-exchange] branch master updated: age restriction: make seed a HashCode due to endianess and security level concerns
Date: Tue, 26 Apr 2022 23:34:22 +0200

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

dold pushed a commit to branch master
in repository exchange.

The following commit(s) were added to refs/heads/master by this push:
     new 17a00ef2 age restriction: make seed a HashCode due to endianess and 
security level concerns
17a00ef2 is described below

commit 17a00ef22dadd10c97fea188c75a8aaeb1e64442
Author: Florian Dold <florian@dold.me>
AuthorDate: Tue Apr 26 23:34:14 2022 +0200

    age restriction: make seed a HashCode due to endianess and security level 
concerns
---
 contrib/gana                                         | 2 +-
 src/exchange/taler-exchange-httpd_refreshes_reveal.c | 4 +---
 src/include/taler_crypto_lib.h                       | 2 +-
 src/lib/exchange_api_link.c                          | 4 +---
 src/lib/exchange_api_refresh_common.c                | 7 +------
 src/util/age_restriction.c                           | 6 +++---
 src/util/test_age_restriction.c                      | 8 +++++---
 src/util/tv_age_restriction.c                        | 6 +++++-
 8 files changed, 18 insertions(+), 21 deletions(-)

diff --git a/contrib/gana b/contrib/gana
index fbd5974f..0172bed4 160000
--- a/contrib/gana
+++ b/contrib/gana
@@ -1 +1 @@
-Subproject commit fbd5974fba30cab15ef1b7454a5a609286c71508
+Subproject commit 0172bed41a8fdfc4ef2511e311441120a3d2572d
diff --git a/src/exchange/taler-exchange-httpd_refreshes_reveal.c 
b/src/exchange/taler-exchange-httpd_refreshes_reveal.c
index fbfbf8ac..19c126f7 100644
--- a/src/exchange/taler-exchange-httpd_refreshes_reveal.c
+++ b/src/exchange/taler-exchange-httpd_refreshes_reveal.c
@@ -297,8 +297,6 @@ check_commitment (struct RevealContext *rctx,
            * the transfer_secret and the old age commitment. */
           if (NULL != rctx->old_age_commitment)
           {
-            uint64_t seed = (uint64_t) ts.key.bits[0]
-                            | (uint64_t) ts.key.bits[1] << 32;
             struct TALER_AgeCommitmentProof acp = {
               /* we only need the commitment, not the proof, for the call to
                * TALER_age_commitment_derive. */
@@ -310,7 +308,7 @@ check_commitment (struct RevealContext *rctx,
             GNUNET_assert (GNUNET_OK ==
                            TALER_age_commitment_derive (
                              &acp,
-                             seed,
+                             &ts.key,
                              &nacp));
 
             TALER_age_commitment_hash (&nacp.commitment, &h);
diff --git a/src/include/taler_crypto_lib.h b/src/include/taler_crypto_lib.h
index 2cf4c8f4..3530f736 100644
--- a/src/include/taler_crypto_lib.h
+++ b/src/include/taler_crypto_lib.h
@@ -4819,7 +4819,7 @@ TALER_age_restriction_commit (
 enum GNUNET_GenericReturnValue
 TALER_age_commitment_derive (
   const struct TALER_AgeCommitmentProof *orig,
-  const uint64_t salt,
+  const struct GNUNET_HashCode *salt,
   struct TALER_AgeCommitmentProof *derived);
 
 
diff --git a/src/lib/exchange_api_link.c b/src/lib/exchange_api_link.c
index ddc763c3..9e8625ed 100644
--- a/src/lib/exchange_api_link.c
+++ b/src/lib/exchange_api_link.c
@@ -148,15 +148,13 @@ parse_link_coin (const struct TALER_EXCHANGE_LinkHandle 
*lh,
   /* Derive the age commitment and calculate the hash */
   if (NULL != lh->age_commitment_proof)
   {
-    uint64_t seed  = (uint64_t) secret.key.bits[0]
-                     | (uint64_t) secret.key.bits[1] << 32;
     lci->age_commitment_proof = GNUNET_new (struct TALER_AgeCommitmentProof);
     lci->h_age_commitment = GNUNET_new (struct TALER_AgeCommitmentHash);
 
     GNUNET_assert (GNUNET_OK ==
                    TALER_age_commitment_derive (
                      lh->age_commitment_proof,
-                     seed,
+                     &secret.key,
                      lci->age_commitment_proof));
 
     TALER_age_commitment_hash (
diff --git a/src/lib/exchange_api_refresh_common.c 
b/src/lib/exchange_api_refresh_common.c
index 94d0dc8c..581e2115 100644
--- a/src/lib/exchange_api_refresh_common.c
+++ b/src/lib/exchange_api_refresh_common.c
@@ -185,11 +185,6 @@ TALER_EXCHANGE_get_melt_data_ (
       /* Handle age commitment, if present */
       if (NULL != md->melted_coin.age_commitment_proof)
       {
-        /* We use the first 8 bytes of the trans_sec to generate a new age
-         * commitment */
-        uint64_t age_seed = (uint64_t) trans_sec.key.bits[0]
-                            | (uint64_t) trans_sec.key.bits[1] << 32;
-
         fcd->age_commitment_proof[i] = GNUNET_new (struct
                                                    TALER_AgeCommitmentProof);
         ach = GNUNET_new (struct TALER_AgeCommitmentHash);
@@ -197,7 +192,7 @@ TALER_EXCHANGE_get_melt_data_ (
         GNUNET_assert (GNUNET_OK ==
                        TALER_age_commitment_derive (
                          md->melted_coin.age_commitment_proof,
-                         age_seed,
+                         &trans_sec.key,
                          fcd->age_commitment_proof[i]));
 
         TALER_age_commitment_hash (
diff --git a/src/util/age_restriction.c b/src/util/age_restriction.c
index 45ebc03c..65c1574b 100644
--- a/src/util/age_restriction.c
+++ b/src/util/age_restriction.c
@@ -173,7 +173,7 @@ FAIL:
 enum GNUNET_GenericReturnValue
 TALER_age_commitment_derive (
   const struct TALER_AgeCommitmentProof *orig,
-  const uint64_t salt,
+  const struct GNUNET_HashCode *salt,
   struct TALER_AgeCommitmentProof *newacp)
 {
   GNUNET_assert (NULL != newacp);
@@ -211,8 +211,8 @@ TALER_age_commitment_derive (
   {
     GNUNET_CRYPTO_edx25519_private_key_derive (
       &orig->proof.keys[i].priv,
-      &salt,
-      sizeof(salt),
+      salt,
+      sizeof(*salt),
       &newacp->proof.keys[i].priv);
   }
 #else
diff --git a/src/util/test_age_restriction.c b/src/util/test_age_restriction.c
index 9b8c6dfe..847ab4e9 100644
--- a/src/util/test_age_restriction.c
+++ b/src/util/test_age_restriction.c
@@ -170,11 +170,13 @@ test_attestation (void)
     /* Also derive two more commitments right away */
     for (uint8_t i = 0; i<2; i++)
     {
-      uint64_t salt = GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK,
-                                                UINT64_MAX);
+      struct GNUNET_HashCode salt;
+      GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK,
+                                  &salt,
+                                  sizeof (salt));
       GNUNET_assert (GNUNET_OK ==
                      TALER_age_commitment_derive (&acp[i],
-                                                  salt,
+                                                  &salt,
                                                   &acp[i + 1]));
     }
 
diff --git a/src/util/tv_age_restriction.c b/src/util/tv_age_restriction.c
index ffb144ec..2bddb9d1 100644
--- a/src/util/tv_age_restriction.c
+++ b/src/util/tv_age_restriction.c
@@ -175,11 +175,15 @@ generate (
     /* Also derive two more commitments right away */
     for (uint8_t i = 0; i<2; i++)
     {
+      struct GNUNET_HashCode salt;
+      GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK,
+                                  &salt,
+                                  sizeof (salt));
       uint64_t salt = GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK,
                                                 UINT64_MAX / 2);
       GNUNET_assert (GNUNET_OK ==
                      TALER_age_commitment_derive (&acp[i],
-                                                  salt,
+                                                  &salt,
                                                   &acp[i + 1]));
     }
 

-- 
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]