gnunet-svn
[Top][All Lists]
Advanced

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

[gnunet] branch master updated: -add more functions for new blinding API


From: gnunet
Subject: [gnunet] branch master updated: -add more functions for new blinding API
Date: Fri, 27 Oct 2023 23:54:38 +0200

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

grothoff pushed a commit to branch master
in repository gnunet.

The following commit(s) were added to refs/heads/master by this push:
     new b0ba7b1ef -add more functions for new blinding API
b0ba7b1ef is described below

commit b0ba7b1ef93895425cefdc54d21dcedec2f24b43
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Fri Oct 27 23:54:35 2023 +0200

    -add more functions for new blinding API
---
 src/include/gnunet_crypto_lib.h  | 169 +++++++++++++++++++++++----------------
 src/lib/util/crypto_blind_sign.c |  63 ++++++++++++---
 2 files changed, 151 insertions(+), 81 deletions(-)

diff --git a/src/include/gnunet_crypto_lib.h b/src/include/gnunet_crypto_lib.h
index 44db5f466..6e9649410 100644
--- a/src/include/gnunet_crypto_lib.h
+++ b/src/include/gnunet_crypto_lib.h
@@ -961,7 +961,7 @@ GNUNET_CRYPTO_hash_from_string2 (const char *enc,
  * @return #GNUNET_OK on success, #GNUNET_SYSERR if result has the wrong 
encoding
  */
 #define GNUNET_CRYPTO_hash_from_string(enc, result) \
-        GNUNET_CRYPTO_hash_from_string2 (enc, strlen (enc), result)
+  GNUNET_CRYPTO_hash_from_string2 (enc, strlen (enc), result)
 
 
 /**
@@ -2152,15 +2152,15 @@ GNUNET_CRYPTO_eddsa_sign_ (
  * @param[out] sig where to write the signature
  */
 #define GNUNET_CRYPTO_eddsa_sign(priv,ps,sig) do {                 \
-          /* check size is set correctly */                              \
-          GNUNET_assert (ntohl ((ps)->purpose.size) == sizeof (*ps));    \
-          /* check 'ps' begins with the purpose */                       \
-          GNUNET_static_assert (((void*) (ps)) ==                        \
-                                ((void*) &(ps)->purpose));               \
-          GNUNET_assert (GNUNET_OK ==                                    \
-                         GNUNET_CRYPTO_eddsa_sign_ (priv,                \
-                                                    &(ps)->purpose,      \
-                                                    sig));               \
+    /* check size is set correctly */                              \
+    GNUNET_assert (ntohl ((ps)->purpose.size) == sizeof (*ps));    \
+    /* check 'ps' begins with the purpose */                       \
+    GNUNET_static_assert (((void*) (ps)) ==                        \
+                          ((void*) &(ps)->purpose));               \
+    GNUNET_assert (GNUNET_OK ==                                    \
+                   GNUNET_CRYPTO_eddsa_sign_ (priv,                \
+                                              &(ps)->purpose,      \
+                                              sig));               \
 } while (0)
 
 
@@ -2214,15 +2214,15 @@ GNUNET_CRYPTO_eddsa_sign_raw (
  * @param[out] sig where to write the signature
  */
 #define GNUNET_CRYPTO_ecdsa_sign(priv,ps,sig) do {                 \
-          /* check size is set correctly */                              \
-          GNUNET_assert (ntohl ((ps)->purpose.size) == sizeof (*(ps)));  \
-          /* check 'ps' begins with the purpose */                       \
-          GNUNET_static_assert (((void*) (ps)) ==                        \
-                                ((void*) &(ps)->purpose));               \
-          GNUNET_assert (GNUNET_OK ==                                    \
-                         GNUNET_CRYPTO_ecdsa_sign_ (priv,                \
-                                                    &(ps)->purpose,      \
-                                                    sig));               \
+    /* check size is set correctly */                              \
+    GNUNET_assert (ntohl ((ps)->purpose.size) == sizeof (*(ps)));  \
+    /* check 'ps' begins with the purpose */                       \
+    GNUNET_static_assert (((void*) (ps)) ==                        \
+                          ((void*) &(ps)->purpose));               \
+    GNUNET_assert (GNUNET_OK ==                                    \
+                   GNUNET_CRYPTO_ecdsa_sign_ (priv,                \
+                                              &(ps)->purpose,      \
+                                              sig));               \
 } while (0)
 
 /**
@@ -2261,15 +2261,15 @@ GNUNET_CRYPTO_edx25519_sign_ (
  * @param[out] sig where to write the signature
  */
 #define GNUNET_CRYPTO_edx25519_sign(priv,ps,sig) do {              \
-          /* check size is set correctly */                              \
-          GNUNET_assert (ntohl ((ps)->purpose.size) == sizeof (*(ps)));  \
-          /* check 'ps' begins with the purpose */                       \
-          GNUNET_static_assert (((void*) (ps)) ==                        \
-                                ((void*) &(ps)->purpose));               \
-          GNUNET_assert (GNUNET_OK ==                                    \
-                         GNUNET_CRYPTO_edx25519_sign_ (priv,             \
-                                                       &(ps)->purpose,   \
-                                                       sig));            \
+    /* check size is set correctly */                              \
+    GNUNET_assert (ntohl ((ps)->purpose.size) == sizeof (*(ps)));  \
+    /* check 'ps' begins with the purpose */                       \
+    GNUNET_static_assert (((void*) (ps)) ==                        \
+                          ((void*) &(ps)->purpose));               \
+    GNUNET_assert (GNUNET_OK ==                                    \
+                   GNUNET_CRYPTO_edx25519_sign_ (priv,             \
+                                                 &(ps)->purpose,   \
+                                                 sig));            \
 } while (0)
 
 
@@ -2968,7 +2968,8 @@ GNUNET_CRYPTO_rsa_blind (const void *message,
  */
 struct GNUNET_CRYPTO_RsaSignature *
 GNUNET_CRYPTO_rsa_sign_blinded (const struct GNUNET_CRYPTO_RsaPrivateKey *key,
-                                const struct GNUNET_CRYPTO_RsaBlindedMessage 
*bm);
+                                const struct
+                                GNUNET_CRYPTO_RsaBlindedMessage *bm);
 
 
 /**
@@ -3271,7 +3272,6 @@ GNUNET_CRYPTO_cs_verify (
   size_t msg_len);
 
 
-
 /**
  * Types of public keys used for blind signatures.
  */
@@ -3539,7 +3539,7 @@ union GNUNET_CRYPTO_BlindSessionNonce
  * @param bsign_priv private key to compute input values for
  * @param nonce session nonce to derive input values from
  * @param salt salt to include in derivation logic
- * @return blinding input values 
+ * @return blinding input values
  */
 struct GNUNET_CRYPTO_BlindingInputValues *
 GNUNET_CRYPTO_get_blinding_input_values (
@@ -3554,7 +3554,8 @@ GNUNET_CRYPTO_get_blinding_input_values (
  * @param[in] bsign_pub key to free
  */
 void
-GNUNET_CRYPTO_blind_sign_pub_decref (struct GNUNET_CRYPTO_BlindSignPublicKey 
*bsign_pub);
+GNUNET_CRYPTO_blind_sign_pub_decref (
+  struct GNUNET_CRYPTO_BlindSignPublicKey *bsign_pub);
 
 
 /**
@@ -3563,7 +3564,8 @@ GNUNET_CRYPTO_blind_sign_pub_decref (struct 
GNUNET_CRYPTO_BlindSignPublicKey *bs
  * @param[in] bsign_priv key to free
  */
 void
-GNUNET_CRYPTO_blind_sign_priv_decref (struct GNUNET_CRYPTO_BlindSignPrivateKey 
*bsign_priv);
+GNUNET_CRYPTO_blind_sign_priv_decref (
+  struct GNUNET_CRYPTO_BlindSignPrivateKey *bsign_priv);
 
 
 /**
@@ -3572,7 +3574,8 @@ GNUNET_CRYPTO_blind_sign_priv_decref (struct 
GNUNET_CRYPTO_BlindSignPrivateKey *
  * @param[in] ub_sig signature to free
  */
 void
-GNUNET_CRYPTO_unblinded_sig_decref (struct GNUNET_CRYPTO_UnblindedSignature 
*ub_sig);
+GNUNET_CRYPTO_unblinded_sig_decref (
+  struct GNUNET_CRYPTO_UnblindedSignature *ub_sig);
 
 
 /**
@@ -3606,6 +3609,28 @@ GNUNET_CRYPTO_blinded_message_incref (
   struct GNUNET_CRYPTO_BlindedMessage *bm);
 
 
+/**
+ * Increment reference counter of the given @a bi.
+ *
+ * @param[in,out] bi blinding input values to increment reference counter for
+ * @return alias of @a bi with RC incremented
+ */
+struct GNUNET_CRYPTO_BlindingInputValues *
+GNUNET_CRYPTO_blinding_input_values_incref (
+  struct GNUNET_CRYPTO_BlindingInputValues *bm);
+
+
+/**
+ * Decrement reference counter of the given @a bi, and free it if it reaches
+ * zero.
+ *
+ * @param[in,out] bi blinding input values to decrement reference counter for
+ */
+void
+GNUNET_CRYPTO_blinding_input_values_decref (
+  struct GNUNET_CRYPTO_BlindingInputValues *bm);
+
+
 /**
  * Increment reference counter of the given @a bsign_pub.
  *
@@ -3613,7 +3638,10 @@ GNUNET_CRYPTO_blinded_message_incref (
  * @return alias of @a bsign_pub with RC incremented
  */
 struct GNUNET_CRYPTO_BlindSignPublicKey *
-GNUNET_CRYPTO_bsign_pub_incref (struct GNUNET_CRYPTO_BlindSignPublicKey 
*bsign_pub);
+GNUNET_CRYPTO_bsign_pub_incref (
+  struct GNUNET_CRYPTO_BlindSignPublicKey *bsign_pub);
+
+
 /**
  * Increment reference counter of the given @a bsign_priv.
  *
@@ -3621,7 +3649,8 @@ GNUNET_CRYPTO_bsign_pub_incref (struct 
GNUNET_CRYPTO_BlindSignPublicKey *bsign_p
  * @return alias of @a bsign_priv with RC incremented
  */
 struct GNUNET_CRYPTO_BlindSignPrivateKey *
-GNUNET_CRYPTO_bsign_priv_incref (struct GNUNET_CRYPTO_BlindSignPrivateKey 
*bsign_priv);
+GNUNET_CRYPTO_bsign_priv_incref (
+  struct GNUNET_CRYPTO_BlindSignPrivateKey *bsign_priv);
 
 
 /**
@@ -3843,7 +3872,7 @@ GNUNET_CRYPTO_blind_sig_verify (
  */
 ssize_t
 GNUNET_CRYPTO_public_key_get_length (const struct
-                                       GNUNET_CRYPTO_PublicKey *key);
+                                     GNUNET_CRYPTO_PublicKey *key);
 
 /**
  * Reads a #GNUNET_CRYPTO_PublicKey from a compact buffer.
@@ -3894,9 +3923,9 @@ GNUNET_CRYPTO_private_key_get_length (
  */
 ssize_t
 GNUNET_CRYPTO_write_public_key_to_buffer (const struct
-                                            GNUNET_CRYPTO_PublicKey *key,
-                                            void*buffer,
-                                            size_t len);
+                                          GNUNET_CRYPTO_PublicKey *key,
+                                          void*buffer,
+                                          size_t len);
 
 
 /**
@@ -4056,15 +4085,15 @@ GNUNET_CRYPTO_sign_raw_ (
  * @param[out] sig where to write the signature
  */
 #define GNUNET_CRYPTO_sign(priv,ps,sig) do {                \
-          /* check size is set correctly */                                    
 \
-          GNUNET_assert (ntohl ((ps)->purpose.size) == sizeof (*(ps)));        
 \
-          /* check 'ps' begins with the purpose */                             
 \
-          GNUNET_static_assert (((void*) (ps)) ==                              
 \
-                                ((void*) &(ps)->purpose));                     
 \
-          GNUNET_assert (GNUNET_OK ==                                          
 \
-                         GNUNET_CRYPTO_sign_ (priv,               \
-                                                &(ps)->purpose,             \
-                                                sig));                      \
+    /* check size is set correctly */                                     \
+    GNUNET_assert (ntohl ((ps)->purpose.size) == sizeof (*(ps)));         \
+    /* check 'ps' begins with the purpose */                              \
+    GNUNET_static_assert (((void*) (ps)) ==                               \
+                          ((void*) &(ps)->purpose));                      \
+    GNUNET_assert (GNUNET_OK ==                                           \
+                   GNUNET_CRYPTO_sign_ (priv,               \
+                                        &(ps)->purpose,             \
+                                        sig));                      \
 } while (0)
 
 
@@ -4135,9 +4164,9 @@ GNUNET_CRYPTO_signature_verify_raw_ (
     GNUNET_static_assert (((void*) (ps)) ==                               \
                           ((void*) &(ps)->purpose));                      \
     GNUNET_CRYPTO_signature_verify_ (purp,                              \
-                                       &(ps)->purpose,                    \
-                                       sig,                               \
-                                       pub);                              \
+                                     &(ps)->purpose,                    \
+                                     sig,                               \
+                                     pub);                              \
   })
 
 
@@ -4158,10 +4187,10 @@ GNUNET_CRYPTO_signature_verify_raw_ (
  */
 ssize_t
 GNUNET_CRYPTO_encrypt_old (const void *block,
-                             size_t size,
-                             const struct GNUNET_CRYPTO_PublicKey *pub,
-                             struct GNUNET_CRYPTO_EcdhePublicKey *ecc,
-                             void *result);
+                           size_t size,
+                           const struct GNUNET_CRYPTO_PublicKey *pub,
+                           struct GNUNET_CRYPTO_EcdhePublicKey *ecc,
+                           void *result);
 
 
 /**
@@ -4187,8 +4216,8 @@ GNUNET_CRYPTO_decrypt_old (
   void *result);
 
 #define GNUNET_CRYPTO_ENCRYPT_OVERHEAD_BYTES (crypto_secretbox_MACBYTES \
-                                                + sizeof (struct \
-                                                          
GNUNET_CRYPTO_FoKemC))
+                                              + sizeof (struct \
+                                                        GNUNET_CRYPTO_FoKemC))
 
 /**
  * Encrypt a block with #GNUNET_CRYPTO_PublicKey and derives a
@@ -4207,10 +4236,10 @@ GNUNET_CRYPTO_decrypt_old (
  */
 enum GNUNET_GenericReturnValue
 GNUNET_CRYPTO_encrypt (const void *block,
-                         size_t size,
-                         const struct GNUNET_CRYPTO_PublicKey *pub,
-                         void *result,
-                         size_t result_size);
+                       size_t size,
+                       const struct GNUNET_CRYPTO_PublicKey *pub,
+                       void *result,
+                       size_t result_size);
 
 
 /**
@@ -4226,10 +4255,10 @@ GNUNET_CRYPTO_encrypt (const void *block,
  */
 enum GNUNET_GenericReturnValue
 GNUNET_CRYPTO_decrypt (const void *block,
-                         size_t size,
-                         const struct GNUNET_CRYPTO_PrivateKey *priv,
-                         void *result,
-                         size_t result_size);
+                       size_t size,
+                       const struct GNUNET_CRYPTO_PrivateKey *priv,
+                       void *result,
+                       size_t result_size);
 
 
 /**
@@ -4268,7 +4297,7 @@ GNUNET_CRYPTO_private_key_to_string (
  */
 enum GNUNET_GenericReturnValue
 GNUNET_CRYPTO_public_key_from_string (const char*str,
-                                        struct GNUNET_CRYPTO_PublicKey *key);
+                                      struct GNUNET_CRYPTO_PublicKey *key);
 
 
 /**
@@ -4281,7 +4310,7 @@ GNUNET_CRYPTO_public_key_from_string (const char*str,
  */
 enum GNUNET_GenericReturnValue
 GNUNET_CRYPTO_private_key_from_string (const char*str,
-                                         struct GNUNET_CRYPTO_PrivateKey *key);
+                                       struct GNUNET_CRYPTO_PrivateKey *key);
 
 
 /**
@@ -4293,8 +4322,8 @@ GNUNET_CRYPTO_private_key_from_string (const char*str,
  */
 enum GNUNET_GenericReturnValue
 GNUNET_CRYPTO_key_get_public (const struct
-                                GNUNET_CRYPTO_PrivateKey *privkey,
-                                struct GNUNET_CRYPTO_PublicKey *key);
+                              GNUNET_CRYPTO_PrivateKey *privkey,
+                              struct GNUNET_CRYPTO_PublicKey *key);
 
 #if 0 /* keep Emacsens' auto-indent happy */
 {
diff --git a/src/lib/util/crypto_blind_sign.c b/src/lib/util/crypto_blind_sign.c
index bbe5a5496..ac611cf4f 100644
--- a/src/lib/util/crypto_blind_sign.c
+++ b/src/lib/util/crypto_blind_sign.c
@@ -23,7 +23,33 @@
 
 
 void
-GNUNET_CRYPTO_blind_sign_priv_decref (struct GNUNET_CRYPTO_BlindSignPrivateKey 
*bsign_priv)
+GNUNET_CRYPTO_blinding_input_values_decref (
+  struct GNUNET_CRYPTO_BlindingInputValues *bm)
+{
+  GNUNET_assert (bm->rc > 0);
+  bm->rc--;
+  if (0 != bm->rc)
+    return;
+  switch (bm->cipher)
+  {
+  case GNUNET_CRYPTO_BSA_INVALID:
+    GNUNET_break (0);
+    break;
+  case GNUNET_CRYPTO_BSA_RSA:
+    bm->cipher = GNUNET_CRYPTO_BSA_INVALID;
+    break;
+  case GNUNET_CRYPTO_BSA_CS:
+    bm->cipher = GNUNET_CRYPTO_BSA_INVALID;
+    break;
+  }
+  GNUNET_free (bm);
+}
+
+
+void
+GNUNET_CRYPTO_blind_sign_priv_decref (struct
+                                      GNUNET_CRYPTO_BlindSignPrivateKey *
+                                      bsign_priv)
 {
   GNUNET_assert (bsign_priv->rc > 0);
   bsign_priv->rc--;
@@ -51,7 +77,8 @@ GNUNET_CRYPTO_blind_sign_priv_decref (struct 
GNUNET_CRYPTO_BlindSignPrivateKey *
 
 
 void
-GNUNET_CRYPTO_blind_sign_pub_decref (struct GNUNET_CRYPTO_BlindSignPublicKey 
*bsign_pub)
+GNUNET_CRYPTO_blind_sign_pub_decref (struct
+                                     GNUNET_CRYPTO_BlindSignPublicKey 
*bsign_pub)
 {
   GNUNET_assert (bsign_pub->rc > 0);
   bsign_pub->rc--;
@@ -78,7 +105,8 @@ GNUNET_CRYPTO_blind_sign_pub_decref (struct 
GNUNET_CRYPTO_BlindSignPublicKey *bs
 
 
 void
-GNUNET_CRYPTO_unblinded_sig_decref (struct GNUNET_CRYPTO_UnblindedSignature 
*ub_sig)
+GNUNET_CRYPTO_unblinded_sig_decref (struct
+                                    GNUNET_CRYPTO_UnblindedSignature *ub_sig)
 {
   GNUNET_assert (ub_sig->rc > 0);
   ub_sig->rc--;
@@ -167,8 +195,18 @@ GNUNET_CRYPTO_blinded_message_incref (
 }
 
 
+struct GNUNET_CRYPTO_BlindingInputValues *
+GNUNET_CRYPTO_blinding_input_values_incref (
+  struct GNUNET_CRYPTO_BlindingInputValues *bm)
+{
+  bm->rc++;
+  return bm;
+}
+
+
 struct GNUNET_CRYPTO_BlindSignPublicKey *
-GNUNET_CRYPTO_bsign_pub_incref (struct GNUNET_CRYPTO_BlindSignPublicKey 
*bsign_pub)
+GNUNET_CRYPTO_bsign_pub_incref (
+  struct GNUNET_CRYPTO_BlindSignPublicKey *bsign_pub)
 {
   bsign_pub->rc++;
   return bsign_pub;
@@ -176,7 +214,8 @@ GNUNET_CRYPTO_bsign_pub_incref (struct 
GNUNET_CRYPTO_BlindSignPublicKey *bsign_p
 
 
 struct GNUNET_CRYPTO_BlindSignPrivateKey *
-GNUNET_CRYPTO_bsign_priv_incref (struct GNUNET_CRYPTO_BlindSignPrivateKey 
*bsign_priv)
+GNUNET_CRYPTO_bsign_priv_incref (
+  struct GNUNET_CRYPTO_BlindSignPrivateKey *bsign_priv)
 {
   bsign_priv->rc++;
   return bsign_priv;
@@ -328,7 +367,7 @@ GNUNET_CRYPTO_blind_sign_keys_create_va (
   struct GNUNET_CRYPTO_BlindSignPublicKey **bsign_pub,
   enum GNUNET_CRYPTO_BlindSignatureAlgorithm cipher,
   va_list ap)
-  {
+{
   struct GNUNET_CRYPTO_BlindSignPrivateKey *priv;
   struct GNUNET_CRYPTO_BlindSignPublicKey *pub;
 
@@ -557,9 +596,10 @@ GNUNET_CRYPTO_blind_sig_unblind (
   const void *message,
   size_t message_size,
   const struct GNUNET_CRYPTO_BlindingInputValues *alg_values,
-  const struct GNUNET_CRYPTO_BlindSignPublicKey *bsign_pub){
+  const struct GNUNET_CRYPTO_BlindSignPublicKey *bsign_pub)
+{
   struct GNUNET_CRYPTO_UnblindedSignature *ub_sig;
-  
+
   if (blinded_sig->cipher != bsign_pub->cipher)
   {
     GNUNET_break (0);
@@ -612,9 +652,10 @@ GNUNET_CRYPTO_blind_sig_unblind (
       b = blinded_sig->details.blinded_cs_answer.b;
       ub_sig->details.cs_signature.r_point
         = r_pub_blind.r_pub[b];
-      GNUNET_CRYPTO_cs_unblind 
(&blinded_sig->details.blinded_cs_answer.s_scalar,
-                                &bs[b],
-                                &ub_sig->details.cs_signature.s_scalar);
+      GNUNET_CRYPTO_cs_unblind (
+        &blinded_sig->details.blinded_cs_answer.s_scalar,
+        &bs[b],
+        &ub_sig->details.cs_signature.s_scalar);
       return ub_sig;
     }
   }

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