diff options
Diffstat (limited to 'src/util/wallet_signatures.c')
-rw-r--r-- | src/util/wallet_signatures.c | 41 |
1 files changed, 24 insertions, 17 deletions
diff --git a/src/util/wallet_signatures.c b/src/util/wallet_signatures.c index 9c5669650..41e272eb0 100644 --- a/src/util/wallet_signatures.c +++ b/src/util/wallet_signatures.c @@ -1248,20 +1248,9 @@ TALER_wallet_econtract_upload_sign ( } -/** - * Verify a signature over encrypted contract. - * - * @param econtract encrypted contract - * @param econtract_size number of bytes in @a econtract - * @param contract_pub public key for the DH-encryption - * @param purse_pub purse’s public key - * @param purse_sig the signature made with purpose #TALER_SIGNATURE_WALLET_PURSE_CREATE - * @return #GNUNET_OK if the signature is valid - */ enum GNUNET_GenericReturnValue -TALER_wallet_econtract_upload_verify ( - const void *econtract, - size_t econtract_size, +TALER_wallet_econtract_upload_verify2 ( + const struct GNUNET_HashCode *h_econtract, const struct TALER_ContractDiffiePublicP *contract_pub, const struct TALER_PurseContractPublicKeyP *purse_pub, const struct TALER_PurseContractSignatureP *purse_sig) @@ -1269,12 +1258,10 @@ TALER_wallet_econtract_upload_verify ( struct TALER_PurseContractPS pc = { .purpose.size = htonl (sizeof (pc)), .purpose.purpose = htonl (TALER_SIGNATURE_WALLET_PURSE_ECONTRACT), - .contract_pub = *contract_pub + .contract_pub = *contract_pub, + .h_econtract = *h_econtract }; - GNUNET_CRYPTO_hash (econtract, - econtract_size, - &pc.h_econtract); return GNUNET_CRYPTO_eddsa_verify_ (TALER_SIGNATURE_WALLET_PURSE_ECONTRACT, &pc.purpose, &purse_sig->eddsa_signature, @@ -1282,4 +1269,24 @@ TALER_wallet_econtract_upload_verify ( } +enum GNUNET_GenericReturnValue +TALER_wallet_econtract_upload_verify ( + const void *econtract, + size_t econtract_size, + const struct TALER_ContractDiffiePublicP *contract_pub, + const struct TALER_PurseContractPublicKeyP *purse_pub, + const struct TALER_PurseContractSignatureP *purse_sig) +{ + struct GNUNET_HashCode h_econtract; + + GNUNET_CRYPTO_hash (econtract, + econtract_size, + &h_econtract); + return TALER_wallet_econtract_upload_verify2 (&h_econtract, + contract_pub, + purse_pub, + purse_sig); +} + + /* end of wallet_signatures.c */ |