Add abstraction: TALER_merchant_contract_sign
Additionally, this change removes ‘struct TALER_ProposalDataPS’ from the public API. * src/include/taler_crypto_lib.h (TALER_merchant_contract_sign): New func decl. * src/include/taler_signatures.h (struct TALER_ProposalDataPS): Delete. * src/util/merchant_signatures.c (struct TALER_ProposalDataPS): Move here from taler_signatures.h. (TALER_merchant_contract_sign): New func.
This commit is contained in:
parent
a7ad5a07e2
commit
509657bfef
@ -4601,6 +4601,20 @@ TALER_merchant_pay_verify (
|
||||
const struct TALER_MerchantSignatureP *merchant_sig);
|
||||
|
||||
|
||||
/**
|
||||
* Sign contract sent by the merchant to the wallet.
|
||||
*
|
||||
* @param h_contract_terms hash of the contract terms
|
||||
* @param merch_priv private key to sign with
|
||||
* @param[out] merch_sig where to write the signature
|
||||
*/
|
||||
void
|
||||
TALER_merchant_contract_sign (
|
||||
const struct TALER_PrivateContractHashP *h_contract_terms,
|
||||
const struct TALER_MerchantPrivateKeyP *merch_priv,
|
||||
struct GNUNET_CRYPTO_EddsaSignature *merch_sig);
|
||||
|
||||
|
||||
/* **************** /management/extensions offline signing **************** */
|
||||
|
||||
/**
|
||||
|
@ -422,25 +422,6 @@ struct TALER_DepositTrackPS
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* The contract sent by the merchant to the wallet.
|
||||
*/
|
||||
struct TALER_ProposalDataPS
|
||||
{
|
||||
/**
|
||||
* Purpose header for the signature over the proposal data
|
||||
* with purpose #TALER_SIGNATURE_MERCHANT_CONTRACT.
|
||||
*/
|
||||
struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
|
||||
|
||||
/**
|
||||
* Hash of the JSON contract in UTF-8 including 0-termination,
|
||||
* using JSON_COMPACT | JSON_SORT_KEYS
|
||||
*/
|
||||
struct TALER_PrivateContractHashP hash;
|
||||
};
|
||||
|
||||
|
||||
GNUNET_NETWORK_STRUCT_END
|
||||
|
||||
#endif
|
||||
|
@ -229,4 +229,42 @@ TALER_merchant_pay_verify (
|
||||
&merchant_pub->eddsa_pub);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* The contract sent by the merchant to the wallet.
|
||||
*/
|
||||
struct TALER_ProposalDataPS
|
||||
{
|
||||
/**
|
||||
* Purpose header for the signature over the proposal data
|
||||
* with purpose #TALER_SIGNATURE_MERCHANT_CONTRACT.
|
||||
*/
|
||||
struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
|
||||
|
||||
/**
|
||||
* Hash of the JSON contract in UTF-8 including 0-termination,
|
||||
* using JSON_COMPACT | JSON_SORT_KEYS
|
||||
*/
|
||||
struct TALER_PrivateContractHashP hash;
|
||||
};
|
||||
|
||||
void
|
||||
TALER_merchant_contract_sign (
|
||||
const struct TALER_PrivateContractHashP *h_contract_terms,
|
||||
const struct TALER_MerchantPrivateKeyP *merch_priv,
|
||||
struct GNUNET_CRYPTO_EddsaSignature *merch_sig)
|
||||
{
|
||||
struct TALER_ProposalDataPS pdps = {
|
||||
.purpose.purpose = htonl (TALER_SIGNATURE_MERCHANT_CONTRACT),
|
||||
.purpose.size = htonl (sizeof (pdps)),
|
||||
.hash = *h_contract_terms
|
||||
};
|
||||
|
||||
GNUNET_CRYPTO_eddsa_sign (&merch_priv->eddsa_priv,
|
||||
&pdps,
|
||||
merch_sig);
|
||||
}
|
||||
|
||||
// NB: "TALER_merchant_contract_verify" not (yet?) needed / not defined.
|
||||
|
||||
/* end of merchant_signatures.c */
|
||||
|
Loading…
Reference in New Issue
Block a user