diff options
author | Christian Grothoff <christian@grothoff.org> | 2022-01-19 10:20:43 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2022-01-19 10:20:43 +0100 |
commit | 1ccd17d515d43b524dc06e3a4d206f19f873d0dd (patch) | |
tree | e4f7768d71b9eb091c0295f3300338aa8480e0dc /src/include | |
parent | a261b98c73643a16e70ce4f22ed7cd8838967689 (diff) | |
download | anastasis-1ccd17d515d43b524dc06e3a4d206f19f873d0dd.tar.gz anastasis-1ccd17d515d43b524dc06e3a4d206f19f873d0dd.tar.bz2 anastasis-1ccd17d515d43b524dc06e3a4d206f19f873d0dd.zip |
modify backend to support separate storage of meta data
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/anastasis_database_plugin.h | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/src/include/anastasis_database_plugin.h b/src/include/anastasis_database_plugin.h index e5012a6..20e87d1 100644 --- a/src/include/anastasis_database_plugin.h +++ b/src/include/anastasis_database_plugin.h @@ -1,6 +1,6 @@ /* This file is part of Anastasis - Copyright (C) 2019-2021 Anastasis SARL + Copyright (C) 2019-2022 Anastasis SARL Anastasis is free software; you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software @@ -159,6 +159,24 @@ typedef bool /** + * Function called on matching meta data. Note that if the client did + * not provide meta data for @a version, the function will be called + * with @a recovery_meta_data being NULL. + * + * @param cls closure + * @param version the version of the recovery document + * @param recovery_meta_data contains meta data about the encrypted recovery document + * @param recovery_meta_data_size size of @a recovery_meta_data blob + * @return #GNUNET_OK to continue to iterate, #GNUNET_NO to abort iteration + */ +typedef enum GNUNET_GenericReturnValue +(*ANASTASIS_DB_RecoveryMetaCallback)(void *cls, + uint32_t version, + const void *recovery_meta_data, + size_t recovery_meta_data_size); + + +/** * Handle to interact with the database. * * Functions ending with "_TR" run their OWN transaction scope @@ -329,6 +347,8 @@ struct ANASTASIS_DatabasePlugin * @param recovery_data_hash hash of @a data * @param recovery_data contains encrypted recovery document * @param recovery_data_size size of @a recovery_data blob + * @param recovery_meta_data contains meta data about the encrypted recovery document + * @param recovery_meta_data_size size of @a recovery_meta_data blob * @param payment_secret identifier for the payment, used to later charge on uploads * @param[out] version set to the version assigned to the document by the database * @return transaction status, 0 if upload could not be finished because @a payment_secret @@ -342,11 +362,34 @@ struct ANASTASIS_DatabasePlugin const struct GNUNET_HashCode *recovery_data_hash, const void *recovery_data, size_t recovery_data_size, + const void *recovery_meta_data, + size_t recovery_meta_data_size, const struct ANASTASIS_PaymentSecretP *payment_secret, uint32_t *version); /** + * Fetch recovery document meta data for user. Returns + * meta data in descending order from @a max_version. + * The size of the result set may be limited. + * + * @param cls closure + * @param account_pub public key of the user's account + * @param max_version the maximum version number the user requests + * @param cb function to call on each result + * @param cb_cls closure for @a cb + * @return transaction status + */ + enum GNUNET_DB_QueryStatus + (*get_recovery_meta_data)( + void *cls, + const struct ANASTASIS_CRYPTO_AccountPublicKeyP *account_pub, + uint32_t max_version, + ANASTASIS_DB_RecoveryMetaCallback cb, + void *cb_cls); + + + /** * Fetch recovery document for user according given version. * * @param cls closure |