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.
|
* operations.
|
||||||
*/
|
*/
|
||||||
struct TALER_TransferPrivateKeyP
|
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
|
* @brief Type of online public keys used by the exchange to sign
|
||||||
* messages.
|
* messages.
|
||||||
@ -3427,6 +3453,32 @@ TALER_exchange_offline_denom_validity_verify (
|
|||||||
const struct TALER_MasterSignatureP *master_sig);
|
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.
|
* Create security module EdDSA signature.
|
||||||
*
|
*
|
||||||
|
@ -97,6 +97,11 @@
|
|||||||
*/
|
*/
|
||||||
#define TALER_SIGNATURE_MASTER_EXTENSION 1031
|
#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) */
|
/* 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 */
|
/* end of offline_signatures.c */
|
||||||
|
Loading…
Reference in New Issue
Block a user