Add abstractions: TALER_merchant_pay_{sign,verify}
Additionally, this change removes ‘struct TALER_PaymentResponsePS’ from the public API. * src/include/taler_crypto_lib.h (TALER_merchant_pay_sign): New func decl. (TALER_merchant_pay_verify): New func decl. * src/include/taler_signatures.h (struct TALER_PaymentResponsePS): Delete. * src/util/merchant_signatures.c (struct TALER_PaymentResponsePS): Move here from taler_signatures.h. (TALER_merchant_pay_sign): New func. (TALER_merchant_pay_verify): New func.
This commit is contained in:
parent
ba69c32712
commit
a7ad5a07e2
@ -4573,6 +4573,34 @@ TALER_merchant_wire_signature_make (
|
||||
struct TALER_MerchantSignatureP *merch_sig);
|
||||
|
||||
|
||||
/**
|
||||
* Sign a payment confirmation.
|
||||
*
|
||||
* @param h_contract_terms hash of the contact of the merchant with the customer
|
||||
* @param merch_priv private key to sign with
|
||||
* @param[out] merch_sig where to write the signature
|
||||
*/
|
||||
void
|
||||
TALER_merchant_pay_sign (
|
||||
const struct TALER_PrivateContractHashP *h_contract_terms,
|
||||
const struct TALER_MerchantPrivateKeyP *merch_priv,
|
||||
struct GNUNET_CRYPTO_EddsaSignature *merch_sig);
|
||||
|
||||
/**
|
||||
* Verify payment confirmation signature.
|
||||
*
|
||||
* @param h_contract_terms hash of the contact of the merchant with the customer
|
||||
* @param merchant_pub public key of the merchant
|
||||
* @param merchant_sig signature to verify
|
||||
* @return #GNUNET_OK if the signature is valid
|
||||
*/
|
||||
enum GNUNET_GenericReturnValue
|
||||
TALER_merchant_pay_verify (
|
||||
const struct TALER_PrivateContractHashP *h_contract_terms,
|
||||
const struct TALER_MerchantPublicKeyP *merchant_pub,
|
||||
const struct TALER_MerchantSignatureP *merchant_sig);
|
||||
|
||||
|
||||
/* **************** /management/extensions offline signing **************** */
|
||||
|
||||
/**
|
||||
|
@ -440,24 +440,6 @@ struct TALER_ProposalDataPS
|
||||
struct TALER_PrivateContractHashP hash;
|
||||
};
|
||||
|
||||
/**
|
||||
* Used by merchants to return signed responses to /pay requests.
|
||||
* Currently only used to return 200 OK signed responses.
|
||||
*/
|
||||
struct TALER_PaymentResponsePS
|
||||
{
|
||||
/**
|
||||
* Set to #TALER_SIGNATURE_MERCHANT_PAYMENT_OK. Note that
|
||||
* unsuccessful payments are usually proven by some exchange's signature.
|
||||
*/
|
||||
struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
|
||||
|
||||
/**
|
||||
* Hash of the proposal data associated with this confirmation
|
||||
*/
|
||||
struct TALER_PrivateContractHashP h_contract_terms;
|
||||
};
|
||||
|
||||
|
||||
GNUNET_NETWORK_STRUCT_END
|
||||
|
||||
|
@ -175,4 +175,58 @@ TALER_merchant_wire_signature_make (
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Used by merchants to return signed responses to /pay requests.
|
||||
* Currently only used to return 200 OK signed responses.
|
||||
*/
|
||||
struct TALER_PaymentResponsePS
|
||||
{
|
||||
/**
|
||||
* Set to #TALER_SIGNATURE_MERCHANT_PAYMENT_OK. Note that
|
||||
* unsuccessful payments are usually proven by some exchange's signature.
|
||||
*/
|
||||
struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
|
||||
|
||||
/**
|
||||
* Hash of the proposal data associated with this confirmation
|
||||
*/
|
||||
struct TALER_PrivateContractHashP h_contract_terms;
|
||||
};
|
||||
|
||||
void
|
||||
TALER_merchant_pay_sign (
|
||||
const struct TALER_PrivateContractHashP *h_contract_terms,
|
||||
const struct TALER_MerchantPrivateKeyP *merch_priv,
|
||||
struct GNUNET_CRYPTO_EddsaSignature *merch_sig)
|
||||
{
|
||||
struct TALER_PaymentResponsePS mr = {
|
||||
.purpose.purpose = htonl (TALER_SIGNATURE_MERCHANT_PAYMENT_OK),
|
||||
.purpose.size = htonl (sizeof (mr)),
|
||||
.h_contract_terms = *h_contract_terms
|
||||
};
|
||||
|
||||
GNUNET_CRYPTO_eddsa_sign (&merch_priv->eddsa_priv,
|
||||
&mr,
|
||||
merch_sig);
|
||||
}
|
||||
|
||||
enum GNUNET_GenericReturnValue
|
||||
TALER_merchant_pay_verify (
|
||||
const struct TALER_PrivateContractHashP *h_contract_terms,
|
||||
const struct TALER_MerchantPublicKeyP *merchant_pub,
|
||||
const struct TALER_MerchantSignatureP *merchant_sig)
|
||||
{
|
||||
struct TALER_PaymentResponsePS pr = {
|
||||
.purpose.purpose = htonl (TALER_SIGNATURE_MERCHANT_PAYMENT_OK),
|
||||
.purpose.size = htonl (sizeof (pr)),
|
||||
.h_contract_terms = *h_contract_terms
|
||||
};
|
||||
|
||||
return
|
||||
GNUNET_CRYPTO_eddsa_verify (TALER_SIGNATURE_MERCHANT_PAYMENT_OK,
|
||||
&pr,
|
||||
&merchant_sig->eddsa_sig,
|
||||
&merchant_pub->eddsa_pub);
|
||||
}
|
||||
|
||||
/* end of merchant_signatures.c */
|
||||
|
Loading…
Reference in New Issue
Block a user