[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.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnunet] branch master updated: -add more functions for new blinding API,
gnunet <=