ENGINE-911: separated API from internal calls in most files (the most egregious cases) - also put DYNAMIC_API on one of the group functions where it was missing
parent
bcf55e3652
commit
fc3a6693b0
@ -0,0 +1,270 @@
|
||||
#ifndef GROUP_INTERNAL_H
|
||||
#define GROUP_INTERNAL_H
|
||||
|
||||
// This file is under GNU General Public License 3.0
|
||||
// see LICENSE.txt
|
||||
|
||||
#include "message_api.h"
|
||||
#include "../asn.1/Distribution.h"
|
||||
#include "group.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************************************************
|
||||
* Internal functions
|
||||
*************************************************************************************************/
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* <!-- group_enable() -->
|
||||
*
|
||||
* @brief Mark an extant group in the database as active
|
||||
*
|
||||
* @param[in] session associated session object
|
||||
* @param[in] group_identity the pEp_identity object representing the group. Must contain at least
|
||||
* a user_id and address
|
||||
*
|
||||
* @retval PEP_STATUS_OK on success
|
||||
* error on failure
|
||||
*
|
||||
* @ownership all arguments belong to the callee
|
||||
*
|
||||
*/
|
||||
PEP_STATUS group_enable(
|
||||
PEP_SESSION session,
|
||||
pEp_identity *group_identity
|
||||
);
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @param session
|
||||
* @param group_identity
|
||||
* @param group_member
|
||||
* @return
|
||||
*/
|
||||
PEP_STATUS group_add_member(
|
||||
PEP_SESSION session,
|
||||
pEp_identity *group_identity,
|
||||
pEp_identity *group_member
|
||||
);
|
||||
|
||||
// leave_group() - leave group as member
|
||||
//
|
||||
// params:
|
||||
// group_identity (in)
|
||||
// as_member (in) own identity
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @param session
|
||||
* @param group_identity
|
||||
* @param member_identity
|
||||
* @return
|
||||
*/
|
||||
PEP_STATUS leave_group(
|
||||
PEP_SESSION session,
|
||||
pEp_identity *group_identity,
|
||||
pEp_identity *member_identity
|
||||
);
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @param session
|
||||
* @param group_identity
|
||||
* @param exists
|
||||
* @return
|
||||
*/
|
||||
PEP_STATUS exists_group(
|
||||
PEP_SESSION session,
|
||||
pEp_identity* group_identity,
|
||||
bool* exists
|
||||
);
|
||||
|
||||
// group_identity stays with caller now - FIXME: adapt assumptions
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @param session
|
||||
* @param group_identity
|
||||
* @param group_info
|
||||
* @return
|
||||
*/
|
||||
PEP_STATUS retrieve_group_info(
|
||||
PEP_SESSION session,
|
||||
pEp_identity* group_identity,
|
||||
pEp_group** group_info
|
||||
);
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @param session
|
||||
* @param group_identity
|
||||
* @param active
|
||||
* @return
|
||||
*/
|
||||
PEP_STATUS is_group_active(
|
||||
PEP_SESSION session,
|
||||
pEp_identity*
|
||||
group_identity,
|
||||
bool* active);
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @param session
|
||||
* @param group_identity
|
||||
* @param members
|
||||
* @return
|
||||
*/
|
||||
PEP_STATUS retrieve_full_group_membership(
|
||||
PEP_SESSION session,
|
||||
pEp_identity* group_identity,
|
||||
member_list** members);
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @param session
|
||||
* @param group_identity
|
||||
* @param members
|
||||
* @return
|
||||
*/
|
||||
PEP_STATUS retrieve_active_group_membership(
|
||||
PEP_SESSION session,
|
||||
pEp_identity* group_identity,
|
||||
member_list** members);
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @param session
|
||||
* @param group
|
||||
* @return
|
||||
*/
|
||||
PEP_STATUS create_group_entry(PEP_SESSION session,
|
||||
pEp_group* group);
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @param session
|
||||
* @param group_identity
|
||||
* @param manager
|
||||
* @param own_identity_recip
|
||||
* @return
|
||||
*/
|
||||
PEP_STATUS add_own_membership_entry(PEP_SESSION session,
|
||||
pEp_identity* group_identity,
|
||||
pEp_identity* manager,
|
||||
pEp_identity* own_identity_recip);
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @param session
|
||||
* @param group
|
||||
* @param own_identity
|
||||
* @return
|
||||
*/
|
||||
PEP_STATUS retrieve_own_membership_info_for_group_and_identity(PEP_SESSION session,
|
||||
pEp_group* group,
|
||||
pEp_identity* own_identity);
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @param session
|
||||
* @param msg
|
||||
* @param rating
|
||||
* @param dist
|
||||
* @return
|
||||
*/
|
||||
PEP_STATUS receive_managed_group_message(PEP_SESSION session, message* msg, PEP_rating rating, Distribution_t* dist);
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @param session
|
||||
* @param group_identity
|
||||
* @param mbr_idents
|
||||
* @return
|
||||
*/
|
||||
PEP_STATUS retrieve_active_member_list(
|
||||
PEP_SESSION session,
|
||||
pEp_identity* group_identity,
|
||||
member_list** mbr_idents);
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @param session
|
||||
* @param group_identity
|
||||
* @param as_member
|
||||
* @param active
|
||||
* @return
|
||||
*/
|
||||
PEP_STATUS set_membership_status(PEP_SESSION session,
|
||||
pEp_identity* group_identity,
|
||||
pEp_identity* as_member,
|
||||
bool active);
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @param session
|
||||
* @param group_identity
|
||||
* @param is_own
|
||||
* @return
|
||||
*/
|
||||
PEP_STATUS is_own_group_identity(PEP_SESSION session, pEp_identity* group_identity, bool* is_own);
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @param memberlist
|
||||
* @return
|
||||
*/
|
||||
identity_list* member_list_to_identity_list(member_list* memberlist);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param session
|
||||
* @param group_identity
|
||||
* @param manager
|
||||
* @return
|
||||
*/
|
||||
PEP_STATUS get_group_manager(PEP_SESSION session,
|
||||
pEp_identity* group_identity,
|
||||
pEp_identity** manager);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param session
|
||||
* @param group_identity
|
||||
* @param own_manager
|
||||
* @return
|
||||
*/
|
||||
PEP_STATUS is_group_mine(PEP_SESSION session, pEp_identity* group_identity, bool* own_manager);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param session
|
||||
* @param group_identity
|
||||
* @param member
|
||||
* @param is_active
|
||||
* @return
|
||||
*/
|
||||
PEP_STATUS is_active_group_member(PEP_SESSION session, pEp_identity* group_identity,
|
||||
pEp_identity* member, bool* is_active);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
@ -0,0 +1,228 @@
|
||||
/**
|
||||
* @file key_reset_internal.h
|
||||
* @brief Functions for resetting partner key defaults and trust and mistrusting and revoking own keys,
|
||||
* as well as functions to inform partners of own revoked keys and their replacements
|
||||
* @license GNU General Public License 3.0 - see LICENSE.txt
|
||||
*/
|
||||
|
||||
#ifndef KEY_RESET_INTERNAL_H
|
||||
#define KEY_RESET_INTERNAL_H
|
||||
|
||||
#include "pEpEngine.h"
|
||||
#include "keymanagement.h"
|
||||
#include "message.h"
|
||||
#include "message_api.h"
|
||||
#include "cryptotech.h"
|
||||
#include "keyreset_command.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* <!-- key_reset() -->
|
||||
*
|
||||
* @brief Reset the database status for a key, removing all trust information
|
||||
* and default database connections. For own keys, also revoke the key
|
||||
* and communicate the revocation and new key to partners we have sent
|
||||
* mail to recently from the specific identity (i.e. address/user_id)
|
||||
* that contacted them. We also in this case set up information so that
|
||||
* if someone we mail uses the wrong key and wasn't yet contacted,
|
||||
* we can send them the reset information from the right address.
|
||||
* For non-own keys, also remove key from the keyring.
|
||||
*
|
||||
* Can be called manually or through another protocol.
|
||||
*
|
||||
* @param[in] session session handle
|
||||
* @param[in] fpr fingerprint of key to reset. If NULL and ident is NULL,
|
||||
* we reset all keys for the own user. If NULL and ident is
|
||||
* an own identity, we reset the default key for that
|
||||
* identity. If that own identity has no default key, we
|
||||
* reset the user default.
|
||||
* if it is NULL and there is a non-own identity, we will reset
|
||||
* the default key for this identity if present, and user if not.
|
||||
* @param[in] ident identity for which the key reset should occur.
|
||||
* if NULL and fpr is non-NULL, we'll reset the key for all
|
||||
* associated identities. If both ident and fpr are NULL, see
|
||||
* the fpr arg documentation.
|
||||
* ***IF there is an ident, it must have a user_id.***
|
||||
* Note: ident->fpr is always ignored
|
||||
* Caveat: this is now used in large part for internal calls.
|
||||
* external apps should call key_reset_identity and key_reset_userdata
|
||||
* and this function should probably be removed from the dynamic api
|
||||
*
|
||||
*
|
||||
* @retval PEP_STATUS_OK
|
||||
* @retval PEP_ILLEGAL_VALUE illegal parameter values
|
||||
* @retval PEP_OUT_OF_MEMORY out of memory
|
||||
* @retval any other value on error
|
||||
*/
|
||||
PEP_STATUS key_reset(
|
||||
PEP_SESSION session,
|
||||
const char* fpr,
|
||||
pEp_identity* ident
|
||||
);
|
||||
|
||||
/*
|
||||
PEP_STATUS key_reset_own_and_deliver_revocations(PEP_SESSION session,
|
||||
identity_list** own_identities,
|
||||
stringlist_t** revocations,
|
||||
stringlist_t** keys);
|
||||
*/
|
||||
|
||||
/**
|
||||
* <!-- has_key_reset_been_sent() -->
|
||||
*
|
||||
* @brief TODO
|
||||
*
|
||||
* @param[in] session session handle
|
||||
* @param[in] from_addr const char*
|
||||
* @param[in] user_id const char*
|
||||
* @param[in] revoked_fpr const char*
|
||||
* @param[in] contacted bool*
|
||||
*
|
||||
* @retval PEP_STATUS_OK
|
||||
* @retval PEP_ILLEGAL_VALUE illegal parameter values
|
||||
* @retval any other value on error
|
||||
*/
|
||||
PEP_STATUS has_key_reset_been_sent(
|
||||
PEP_SESSION session,
|
||||
const char* from_addr,
|
||||
const char* user_id,
|
||||
const char* revoked_fpr,
|
||||
bool* contacted);
|
||||
|
||||
/**
|
||||
* <!-- set_reset_contact_notified() -->
|
||||
*
|
||||
* @brief TODO
|
||||
*
|
||||
* @param[in] session session handle
|
||||
* @param[in] own_address const char*
|
||||
* @param[in] revoke_fpr const char*
|
||||
* @param[in] contact_id const char*
|
||||
*
|
||||
* @retval PEP_STATUS_OK
|
||||
* @retval PEP_ILLEGAL_VALUE illegal parameter values
|
||||
* @retval PEP_UNKNOWN_DB_ERROR
|
||||
*/
|
||||
PEP_STATUS set_reset_contact_notified(
|
||||
PEP_SESSION session,
|
||||
const char* own_address,
|
||||
const char* revoke_fpr,
|
||||
const char* contact_id
|
||||
);
|
||||
|
||||
/**
|
||||
* <!-- receive_key_reset() -->
|
||||
*
|
||||
* @brief TODO
|
||||
*
|
||||
* @param[in] session session handle
|
||||
* @param[in] reset_msg message*
|
||||
*
|
||||
*
|
||||
* @retval PEP_STATUS_OK
|
||||
* @retval PEP_ILLEGAL_VALUE illegal parameter values
|
||||
* @retval PEP_OUT_OF_MEMORY out of memory
|
||||
* @retval PEP_MALFORMED_KEY_RESET_MSG
|
||||
* @retval PEP_KEY_NOT_RESET
|
||||
* @retval PEP_UNKNOWN_ERROR
|
||||
* @retval any other value on error
|
||||
* */
|
||||
PEP_STATUS receive_key_reset(PEP_SESSION session,
|
||||
message* reset_msg);
|
||||
|
||||
/**
|
||||
* <!-- create_standalone_key_reset_message() -->
|
||||
*
|
||||
* @brief TODO
|
||||
*
|
||||
* @param[in] session session handle
|
||||
* @param[in] dst message**
|
||||
* @param[in] own_identity pEp_identity*
|
||||
* @param[in] recip pEp_identity*
|
||||
* @param[in] old_fpr const char*
|
||||
* @param[in] new_fpr const char*
|
||||
*
|
||||
* @retval PEP_STATUS_OK
|
||||
* @retval PEP_ILLEGAL_VALUE illegal parameter values
|
||||
* @retval PEP_UNKNOWN_ERROR
|
||||
* @retval any other value on error
|
||||
*/
|
||||
PEP_STATUS create_standalone_key_reset_message(PEP_SESSION session,
|
||||
message** dst,
|
||||
pEp_identity* own_identity,
|
||||
pEp_identity* recip,
|
||||
const char* old_fpr,
|
||||
const char* new_fpr);
|
||||
|
||||
|
||||
/**
|
||||
* <!-- send_key_reset_to_recents() -->
|
||||
*
|
||||
* @brief TODO
|
||||
*
|
||||
* @param[in] session session handle
|
||||
* @param[in] from_ident pEp_identity*
|
||||
* @param[in] old_fpr const char*
|
||||
* @param[in] new_fpr const char*
|
||||
*
|
||||
* @retval PEP_STATUS_OK
|
||||
* @retval PEP_ILLEGAL_VALUE illegal parameter values
|
||||
* @retval PEP_SYNC_NO_MESSAGE_SEND_CALLBACK
|
||||
* @retval any other value on error
|
||||
*/
|
||||
PEP_STATUS send_key_reset_to_recents(PEP_SESSION session,
|
||||
pEp_identity* from_ident,
|
||||
const char* old_fpr,
|
||||
const char* new_fpr);
|
||||
|
||||
/**
|
||||
* <!-- key_reset_commands_to_PER() -->
|
||||
*
|
||||
* @brief TODO
|
||||
*
|
||||
* @param[in] command_list const keyreset_command_list*
|
||||
* @param[in] cmds char**
|
||||
* @param[in] size size_t*
|
||||
*
|
||||
* @retval PEP_STATUS_OK
|
||||
* @retval PEP_ILLEGAL_VALUE illegal parameter values
|
||||
* @retval any other value on error
|
||||
*/
|
||||
PEP_STATUS key_reset_commands_to_PER(const keyreset_command_list *command_list, char **cmds, size_t *size);
|
||||
|
||||
/**
|
||||
* <!-- PER_to_key_reset_commands() -->
|
||||
*
|
||||
* @brief TODO
|
||||
*
|
||||
* @param[in] cmds const char*
|
||||
* @param[in] size size_t
|
||||
* @param[in] command_list keyreset_command_list**
|
||||
*
|
||||
* @retval PEP_STATUS_OK
|
||||
* @retval PEP_ILLEGAL_VALUE illegal parameter values
|
||||
* @retval any other value on error
|
||||
*/
|
||||
PEP_STATUS PER_to_key_reset_commands(const char *cmds, size_t size, keyreset_command_list **command_list);
|
||||
|
||||
PEP_STATUS key_reset_managed_group(PEP_SESSION session,
|
||||
pEp_identity* group_identity,
|
||||
pEp_identity* manager);
|
||||
|
||||
PEP_STATUS generate_own_commandlist_msg(PEP_SESSION session,
|
||||
identity_list* reset_idents,
|
||||
bool ignore_ungrouped,
|
||||
pEp_identity* alt_sender,
|
||||
pEp_identity* alt_recip,
|
||||
const char* old_fpr,
|
||||
message** dst);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|