diff options
author | Gian Demarmels <gian@demarmels.org> | 2021-12-23 10:58:03 +0100 |
---|---|---|
committer | Gian Demarmels <gian@demarmels.org> | 2022-02-04 15:31:49 +0100 |
commit | 5d2157a8f6edeaf124e26561ed50c458af9df00d (patch) | |
tree | 7eba8057ef76309cd53c9797a470877bdfff86aa /src/util/denom.c | |
parent | f1ec1e70a02ce1672d4d663d3a23c834817359ac (diff) | |
download | exchange-5d2157a8f6edeaf124e26561ed50c458af9df00d.tar.xz |
sign_blinded implementation
Diffstat (limited to 'src/util/denom.c')
-rw-r--r-- | src/util/denom.c | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/src/util/denom.c b/src/util/denom.c index 6de6084e7..ab0e94ced 100644 --- a/src/util/denom.c +++ b/src/util/denom.c @@ -125,7 +125,8 @@ TALER_denom_cs_derive_r_public (const struct TALER_WithdrawNonce *nonce, enum GNUNET_GenericReturnValue TALER_denom_sign_blinded (struct TALER_BlindedDenominationSignature *denom_sig, const struct TALER_DenominationPrivateKey *denom_priv, - const struct TALER_BlindedPlanchet *blinded_planchet) + const struct TALER_BlindedPlanchet *blinded_planchet, + ...) { memset (denom_sig, 0, @@ -148,7 +149,31 @@ TALER_denom_sign_blinded (struct TALER_BlindedDenominationSignature *denom_sig, } denom_sig->cipher = TALER_DENOMINATION_RSA; return GNUNET_OK; - // TODO: add case for Clause-Schnorr + case TALER_DENOMINATION_CS: + { + va_list ap; + va_start (ap, blinded_planchet); + struct TALER_WithdrawNonce *nonce; + nonce = va_arg (ap, struct TALER_WithdrawNonce *); + + struct GNUNET_CRYPTO_CsRSecret r[2]; + GNUNET_CRYPTO_cs_r_derive (&nonce->nonce, + &denom_priv->details.cs_private_key, + r); + + denom_sig->details.blinded_cs_answer.b = + GNUNET_CRYPTO_cs_sign_derive (&denom_priv->details.cs_private_key, + r, + blinded_planchet->details. + cs_blinded_planchet.c, + &nonce->nonce, + &denom_sig->details.blinded_cs_answer. + s_scalar); + + denom_sig->cipher = TALER_DENOMINATION_CS; + va_end (ap); + } + return GNUNET_OK; default: GNUNET_break (0); } |