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);
|
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 **************** */
|
/* **************** /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
|
GNUNET_NETWORK_STRUCT_END
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -229,4 +229,42 @@ TALER_merchant_pay_verify (
|
|||||||
&merchant_pub->eddsa_pub);
|
&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 */
|
/* end of merchant_signatures.c */
|
||||||
|
Loading…
Reference in New Issue
Block a user