diff options
author | Christian Grothoff <christian@grothoff.org> | 2023-01-27 15:10:25 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2023-01-27 15:10:25 +0100 |
commit | d79c23aaabb5dc1c9073555d574bea01b75668cd (patch) | |
tree | 70adc8db776468bf8295b9c0092e687fe5d1be9c | |
parent | 6da3cbedd468638a6161fb46063dcec83c069c80 (diff) | |
download | exchange-d79c23aaabb5dc1c9073555d574bea01b75668cd.tar.xz |
add logic to store attributes
-rw-r--r-- | src/exchange/taler-exchange-httpd_kyc-proof.c | 39 | ||||
-rw-r--r-- | src/include/taler_crypto_lib.h | 12 |
2 files changed, 43 insertions, 8 deletions
diff --git a/src/exchange/taler-exchange-httpd_kyc-proof.c b/src/exchange/taler-exchange-httpd_kyc-proof.c index 1904c4acb..11d179667 100644 --- a/src/exchange/taler-exchange-httpd_kyc-proof.c +++ b/src/exchange/taler-exchange-httpd_kyc-proof.c @@ -195,8 +195,43 @@ proof_cb ( if (TALER_KYCLOGIC_STATUS_SUCCESS == status) { enum GNUNET_DB_QueryStatus qs; - - // FIXME: also store 'attributes' in DB! + size_t eas; + void *ea; + const char *birthdate; + struct GNUNET_ShortHashCode kyc_prox; + + // FIXME: compute kyc_prox properly! + memset (&kyc_prox, + 0, + sizeof (kyc_prox)); + birthdate = json_string_value (json_object_get (attributes, + "birthdate")); + TALER_CRYPTO_kyc_attributes_encrypt (&TEH_attribute_key, + attributes, + &ea, + &eas); + qs = TEH_plugin->insert_kyc_attributes ( + TEH_plugin->cls, + &kpc->h_payto, + &kyc_prox, + kpc->provider_section, + birthdate, + GNUNET_TIME_timestamp_get (), + GNUNET_TIME_absolute_to_timestamp (expiration), + eas, + ea); + GNUNET_free (ea); + if (GNUNET_DB_STATUS_HARD_ERROR == qs) + { + GNUNET_break (0); + if (NULL != response) + MHD_destroy_response (response); + kpc->response_code = MHD_HTTP_INTERNAL_SERVER_ERROR; + kpc->response = TALER_MHD_make_error (TALER_EC_GENERIC_DB_STORE_FAILED, + "insert_kyc_attributes"); + GNUNET_async_scope_restore (&old_scope); + return; + } qs = TEH_plugin->update_kyc_process_by_row (TEH_plugin->cls, kpc->process_row, kpc->provider_section, diff --git a/src/include/taler_crypto_lib.h b/src/include/taler_crypto_lib.h index 35a6bd6da..6658ee0a1 100644 --- a/src/include/taler_crypto_lib.h +++ b/src/include/taler_crypto_lib.h @@ -1259,13 +1259,13 @@ struct TALER_AgeAttestation #endif }; + extern const struct TALER_AgeCommitmentHash TALER_ZeroAgeCommitmentHash; -#define TALER_AgeCommitmentHash_isNullOrZero(ph) ((NULL == ph) || \ - (0 == memcmp (ph, \ - & \ - TALER_ZeroAgeCommitmentHash, \ - sizeof(struct \ - TALER_AgeCommitmentHash)))) +#define TALER_AgeCommitmentHash_isNullOrZero(ph) \ + ((NULL == ph) || \ + (0 == memcmp (ph, \ + &TALER_ZeroAgeCommitmentHash, \ + sizeof(struct TALER_AgeCommitmentHash)))) /** * @brief Type of public signing keys for verifying blindly signed coins. |