add one more p2p signature
This commit is contained in:
parent
6868b78692
commit
6505f69869
@ -195,7 +195,7 @@ struct TALER_TransferPublicKeyP
|
||||
|
||||
|
||||
/**
|
||||
* @brief Type of transfer public keys used during refresh
|
||||
* @brief Type of transfer private keys used during refresh
|
||||
* operations.
|
||||
*/
|
||||
struct TALER_TransferPrivateKeyP
|
||||
@ -207,6 +207,32 @@ struct TALER_TransferPrivateKeyP
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief Type of public keys used for contract
|
||||
* encryption.
|
||||
*/
|
||||
struct TALER_ContractDiffiePublicP
|
||||
{
|
||||
/**
|
||||
* Taler uses ECDHE for contract encryption.
|
||||
*/
|
||||
struct GNUNET_CRYPTO_EcdhePublicKey ecdhe_pub;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief Type of private keys used for contract
|
||||
* encryption.
|
||||
*/
|
||||
struct TALER_ContractDiffiePrivateP
|
||||
{
|
||||
/**
|
||||
* Taler uses ECDHE for contract encryption.
|
||||
*/
|
||||
struct GNUNET_CRYPTO_EcdhePrivateKey ecdhe_priv;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief Type of online public keys used by the exchange to sign
|
||||
* messages.
|
||||
@ -3427,6 +3453,32 @@ TALER_exchange_offline_denom_validity_verify (
|
||||
const struct TALER_MasterSignatureP *master_sig);
|
||||
|
||||
|
||||
// FIXME: document
|
||||
void
|
||||
TALER_exchange_offline_partner_details_sign (
|
||||
const struct TALER_MasterPublicKeyP *partner_pub,
|
||||
struct GNUNET_TIME_Timestamp start_date,
|
||||
struct GNUNET_TIME_Timestamp end_date,
|
||||
struct GNUNET_TIME_Relative wad_frequency,
|
||||
const struct TALER_Amount *wad_fee,
|
||||
const char *partner_base_url,
|
||||
const struct TALER_MasterPrivateKeyP *master_priv,
|
||||
struct TALER_MasterSignatureP *master_sig);
|
||||
|
||||
|
||||
// FIXME: document
|
||||
enum GNUNET_GenericReturnValue
|
||||
TALER_exchange_offline_partner_details_verify (
|
||||
const struct TALER_MasterPublicKeyP *partner_pub,
|
||||
struct GNUNET_TIME_Timestamp start_date,
|
||||
struct GNUNET_TIME_Timestamp end_date,
|
||||
struct GNUNET_TIME_Relative wad_frequency,
|
||||
const struct TALER_Amount *wad_fee,
|
||||
const char *partner_base_url,
|
||||
const struct TALER_MasterPublicKeyP *master_pub,
|
||||
const struct TALER_MasterSignatureP *master_sig);
|
||||
|
||||
|
||||
/**
|
||||
* Create security module EdDSA signature.
|
||||
*
|
||||
|
@ -97,6 +97,11 @@
|
||||
*/
|
||||
#define TALER_SIGNATURE_MASTER_EXTENSION 1031
|
||||
|
||||
/**
|
||||
* Signature affirming a partner configuration for wads.
|
||||
*/
|
||||
#define TALER_SIGNATURE_MASTER_PARTNER_DETAILS 1032
|
||||
|
||||
/*********************************************/
|
||||
/* Exchange online signatures (with signing key) */
|
||||
/*********************************************/
|
||||
|
@ -888,4 +888,86 @@ TALER_exchange_wire_signature_make (
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Message signed by account to merge a purse into a reserve.
|
||||
*/
|
||||
struct TALER_PartnerConfigurationPS
|
||||
{
|
||||
|
||||
/**
|
||||
* Purpose is #TALER_SIGNATURE_MASTER_PARNTER_DETAILS
|
||||
*/
|
||||
struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
|
||||
struct TALER_MasterPublicKeyP partner_pub;
|
||||
struct GNUNET_TIME_TimestampNBO start_date;
|
||||
struct GNUNET_TIME_TimestampNBO end_date;
|
||||
struct GNUNET_TIME_RelativeNBO wad_frequency;
|
||||
struct TALER_AmountNBO wad_fee;
|
||||
struct GNUNET_HashCode h_url;
|
||||
};
|
||||
|
||||
|
||||
void
|
||||
TALER_exchange_offline_partner_details_sign (
|
||||
const struct TALER_MasterPublicKeyP *partner_pub,
|
||||
struct GNUNET_TIME_Timestamp start_date,
|
||||
struct GNUNET_TIME_Timestamp end_date,
|
||||
struct GNUNET_TIME_Relative wad_frequency,
|
||||
const struct TALER_Amount *wad_fee,
|
||||
const char *partner_base_url,
|
||||
const struct TALER_MasterPrivateKeyP *master_priv,
|
||||
struct TALER_MasterSignatureP *master_sig)
|
||||
{
|
||||
struct TALER_PartnerConfigurationPS wd = {
|
||||
.purpose.purpose = htonl (TALER_SIGNATURE_MASTER_PARTNER_DETAILS),
|
||||
.purpose.size = htonl (sizeof (wd)),
|
||||
.partner_pub = *partner_pub,
|
||||
.start_date = GNUNET_TIME_timestamp_hton (start_date),
|
||||
.end_date = GNUNET_TIME_timestamp_hton (end_date),
|
||||
.wad_frequency = GNUNET_TIME_relative_hton (wad_frequency),
|
||||
};
|
||||
|
||||
GNUNET_CRYPTO_hash (partner_base_url,
|
||||
strlen (partner_base_url) + 1,
|
||||
&wd.h_url);
|
||||
TALER_amount_hton (&wd.wad_fee,
|
||||
wad_fee);
|
||||
GNUNET_CRYPTO_eddsa_sign (&master_priv->eddsa_priv,
|
||||
&wd,
|
||||
&master_sig->eddsa_signature);
|
||||
}
|
||||
|
||||
|
||||
enum GNUNET_GenericReturnValue
|
||||
TALER_exchange_offline_partner_details_verify (
|
||||
const struct TALER_MasterPublicKeyP *partner_pub,
|
||||
struct GNUNET_TIME_Timestamp start_date,
|
||||
struct GNUNET_TIME_Timestamp end_date,
|
||||
struct GNUNET_TIME_Relative wad_frequency,
|
||||
const struct TALER_Amount *wad_fee,
|
||||
const char *partner_base_url,
|
||||
const struct TALER_MasterPublicKeyP *master_pub,
|
||||
const struct TALER_MasterSignatureP *master_sig)
|
||||
{
|
||||
struct TALER_PartnerConfigurationPS wd = {
|
||||
.purpose.purpose = htonl (TALER_SIGNATURE_MASTER_PARTNER_DETAILS),
|
||||
.purpose.size = htonl (sizeof (wd)),
|
||||
.partner_pub = *partner_pub,
|
||||
.start_date = GNUNET_TIME_timestamp_hton (start_date),
|
||||
.end_date = GNUNET_TIME_timestamp_hton (end_date),
|
||||
.wad_frequency = GNUNET_TIME_relative_hton (wad_frequency),
|
||||
};
|
||||
|
||||
GNUNET_CRYPTO_hash (partner_base_url,
|
||||
strlen (partner_base_url) + 1,
|
||||
&wd.h_url);
|
||||
TALER_amount_hton (&wd.wad_fee,
|
||||
wad_fee);
|
||||
return GNUNET_CRYPTO_eddsa_verify (TALER_SIGNATURE_MASTER_PARTNER_DETAILS,
|
||||
&wd,
|
||||
&master_sig->eddsa_signature,
|
||||
&master_pub->eddsa_pub);
|
||||
}
|
||||
|
||||
|
||||
/* end of offline_signatures.c */
|
||||
|
Loading…
Reference in New Issue
Block a user