diff options
author | Christian Grothoff <christian@grothoff.org> | 2022-09-27 16:10:00 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2022-09-27 16:10:00 +0200 |
commit | 2635f2e0b8246a08e3456ced3068fe161b07a87b (patch) | |
tree | cd99a0e65554d45de27cf5b12ab912ca032c54f1 /src/include | |
parent | 33680940fe7df8261880fa1d7f164c8b02a33aed (diff) | |
download | exchange-2635f2e0b8246a08e3456ced3068fe161b07a87b.tar.xz |
implement exchange_api_reserves_attest.c
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/taler_crypto_lib.h | 64 | ||||
-rw-r--r-- | src/include/taler_exchange_service.h | 24 |
2 files changed, 86 insertions, 2 deletions
diff --git a/src/include/taler_crypto_lib.h b/src/include/taler_crypto_lib.h index 4ad9eed05..b5ae20832 100644 --- a/src/include/taler_crypto_lib.h +++ b/src/include/taler_crypto_lib.h @@ -3201,7 +3201,13 @@ TALER_wallet_account_setup_verify ( /** - * FIXME. + * Sign request to the exchange to confirm certain + * @a details about the owner of a reserve. + * + * @param request_timestamp when was the request created + * @param details which attributes are requested + * @param reserve_priv private key of the reserve + * @param[out] reserve_sig where to store the signature */ void TALER_wallet_reserve_attest_request_sign ( @@ -3212,7 +3218,14 @@ TALER_wallet_reserve_attest_request_sign ( /** - * FIXME. + * Verify request to the exchange to confirm certain + * @a details about the owner of a reserve. + * + * @param request_timestamp when was the request created + * @param details which attributes are requested + * @param reserve_priv private key of the reserve + * @param reserve_sig where to store the signature + * @return #GNUNET_OK if the signature is valid */ enum GNUNET_GenericReturnValue TALER_wallet_reserve_attest_request_verify ( @@ -4251,6 +4264,53 @@ TALER_exchange_online_reserve_closed_verify ( /** + * Create signature by exchange affirming that a reserve + * has had certain attributes verified via KYC. + * + * @param scb function to call to create the signature + * @param attest_timestamp our time + * @param expiration_time when does the KYC data expire + * @param reserve_pub for which reserve are attributes attested + * @param attributes JSON object with attributes being attested to + * @param[out] pub where to write the public key + * @param[out] sig where to write the signature + * @return #TALER_EC_NONE on success + */ +enum TALER_ErrorCode +TALER_exchange_online_reserve_attest_details_sign ( + TALER_ExchangeSignCallback scb, + struct GNUNET_TIME_Timestamp attest_timestamp, + struct GNUNET_TIME_Timestamp expiration_time, + const struct TALER_ReservePublicKeyP *reserve_pub, + const json_t *attributes, + struct TALER_ExchangePublicKeyP *pub, + struct TALER_ExchangeSignatureP *sig); + + +/** + * Verify signature by exchange affirming that a reserve + * has had certain attributes verified via KYC. + * + * @param scb function to call to create the signature + * @param attest_timestamp our time + * @param expiration_time when does the KYC data expire + * @param reserve_pub for which reserve are attributes attested + * @param attributes JSON object with attributes being attested to + * @param pub exchange public key + * @param sig exchange signature to verify + * @return #GNUNET_OK if the signature is valid + */ +enum GNUNET_GenericReturnValue +TALER_exchange_online_reserve_attest_details_verify ( + struct GNUNET_TIME_Timestamp attest_timestamp, + struct GNUNET_TIME_Timestamp expiration_time, + const struct TALER_ReservePublicKeyP *reserve_pub, + const json_t *attributes, + struct TALER_ExchangePublicKeyP *pub, + struct TALER_ExchangeSignatureP *sig); + + +/** * Create signature by exchange affirming that a purse was created. * * @param scb function to call to create the signature diff --git a/src/include/taler_exchange_service.h b/src/include/taler_exchange_service.h index 7949dbbf4..2abd6b2aa 100644 --- a/src/include/taler_exchange_service.h +++ b/src/include/taler_exchange_service.h @@ -5451,6 +5451,30 @@ struct TALER_EXCHANGE_ReservePostAttestResult */ struct { + /** + * Time when the exchange made the signature. + */ + struct GNUNET_TIME_Timestamp exchange_time; + + /** + * Current expiration time of the reserve. + */ + struct GNUNET_TIME_Timestamp expiration_time; + + /** + * Signature by the exchange affirming the attributes. + */ + struct TALER_ExchangeSignatureP exchange_sig; + + /** + * Online signing key used by the exchange. + */ + struct TALER_ExchangePublicKeyP exchange_pub; + + /** + * Attributes being confirmed by the exchange. + */ + const json_t *attributes; } ok; |