From c787e28e842a8ec538041df68d7d195cc7be9485 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Fri, 5 Nov 2021 14:18:13 +0100 Subject: more denom key refactoring --- src/include/taler_crypto_lib.h | 61 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) (limited to 'src/include/taler_crypto_lib.h') diff --git a/src/include/taler_crypto_lib.h b/src/include/taler_crypto_lib.h index b726972c..06247689 100644 --- a/src/include/taler_crypto_lib.h +++ b/src/include/taler_crypto_lib.h @@ -587,6 +587,29 @@ struct TALER_DenominationPublicKey }; +/** + * Client-side secrets for blinding. + */ +struct TALER_BlindingSecret +{ + + /** + * Type of the blinding secret. + */ + enum TALER_DenominationCipher cipher; + + union + { + + /** + * Blinding key secret for RSA. + */ + struct GNUNET_CRYPTO_RsaBlindingKeySecret rsa_bks; + + } details; +}; + + /** * @brief Type of private signing keys for blind signing of coins. */ @@ -677,6 +700,27 @@ void TALER_denom_pub_free (struct TALER_DenominationPublicKey *denom_pub); +/** + * Create a blinding secret @a bs for @a cipher. + * + * @param[out] blinding secret to initialize + * @param cipher cipher to create blinding secret for + */ +enum GNUNET_GenericReturnValue +TALER_blinding_secret_create (struct TALER_BlindingSecret *bs, + enum TALER_DenominationCipher cipher, + ...); + + +/** + * Release memory inside of a blinding secret @a bs. + * + * @param[in] blinding secret to free + */ +void +TALER_blinding_secret_free (struct TALER_BlindingSecret *bs); + + /** * Initialize denomination public-private key pair. * @@ -731,6 +775,23 @@ TALER_denom_sign_blinded (struct TALER_BlindedDenominationSignature *denom_sig, size_t blinded_msg_size); +/** + * Unblind blinded signature. + * + * @param[out] denom_sig where to write the unblinded signature + * @param bdenom_sig the blinded signature + * @param bks blinding secret to use + * @param denom_pub public key used for signing + * @return #GNUNET_OK on success + */ +enum GNUNET_GenericReturnValue +TALER_denom_sig_unblind (struct TALER_DenominationSignature *denom_sig, + const struct + TALER_BlindedDenominationSignature *bdenom_sig, + const struct TALER_BlindingSecret *bks, + const struct TALER_DenominationPublicKey *denom_pub); + + /** * Free internals of @a denom_sig, but not @a denom_sig itself. * -- cgit v1.2.3