#include "gnunet_common.h"
#include "gnunet_time_lib.h"
#include "gnunet_util_lib.h"
#include "gnunet_messenger_service.h"
Go to the source code of this file.
Data Structures | |
struct | GNUNET_MESSENGER_EpochAnnouncement |
Functions | |
struct GNUNET_MESSENGER_EpochAnnouncement * | create_epoch_announcement (struct GNUNET_MESSENGER_Epoch *epoch, const union GNUNET_MESSENGER_EpochIdentifier *identifier, enum GNUNET_GenericReturnValue valid) |
Creates and allocates a new epoch announcement for a given epoch using a specific announcement identifier or NULL. More... | |
void | destroy_epoch_announcement (struct GNUNET_MESSENGER_EpochAnnouncement *announcement) |
Destroys a given epoch announcement and frees its resources. More... | |
uint32_t | get_epoch_announcement_size (const struct GNUNET_MESSENGER_EpochAnnouncement *announcement) |
Returns the size of a given epoch announcement in terms of members. More... | |
uint32_t | get_epoch_announcement_members_count (const struct GNUNET_MESSENGER_EpochAnnouncement *announcement) |
Returns the current amount of members of a given epoch announcement. More... | |
enum GNUNET_GenericReturnValue | is_epoch_announcement_completed (const struct GNUNET_MESSENGER_EpochAnnouncement *announcement) |
Returns whether a given epoch announcement is complete in terms of confirmed announcements from its members. More... | |
enum GNUNET_GenericReturnValue | is_epoch_announcement_announced (const struct GNUNET_MESSENGER_EpochAnnouncement *announcement) |
Returns whether the client has announced being part of a given epoch announcement owning its secret key. More... | |
void | set_epoch_announcement_appeal (struct GNUNET_MESSENGER_EpochAnnouncement *announcement, struct GNUNET_TIME_Relative timeout) |
Sets a specified timeout for a given epoch announcement of the client for its own appeal of the announced secret key. More... | |
enum GNUNET_GenericReturnValue | is_epoch_announcement_appealed (const struct GNUNET_MESSENGER_EpochAnnouncement *announcement) |
Returns whether a given epoch announcement of the client is currently appealing for its secret key from other members. More... | |
void | set_epoch_announcement_key (struct GNUNET_MESSENGER_EpochAnnouncement *announcement, const struct GNUNET_CRYPTO_SymmetricSessionKey *shared_key, enum GNUNET_GenericReturnValue write_record) |
Sets the secret key of a given epoch announcement to a shared key. More... | |
const struct GNUNET_CRYPTO_SymmetricSessionKey * | get_epoch_announcement_key (const struct GNUNET_MESSENGER_EpochAnnouncement *announcement) |
Returns the secret key of a given epoch announcement or NULL. More... | |
void | handle_epoch_announcement_message (struct GNUNET_MESSENGER_EpochAnnouncement *announcement, const struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash) |
Handles an encrypted message with hash by a given epoch announcement using its secret key for decryption if available. More... | |
enum GNUNET_GenericReturnValue | confirm_epoch_announcement_member (struct GNUNET_MESSENGER_EpochAnnouncement *announcement, const struct GNUNET_HashCode *hash, const struct GNUNET_MESSENGER_Message *message, struct GNUNET_MESSENGER_Contact *contact, enum GNUNET_GenericReturnValue sent) |
Confirms an announcement message with its hash to a given epoch announcement as confirmation for a specific contact. More... | |
enum GNUNET_GenericReturnValue | revoke_epoch_announcement_member (struct GNUNET_MESSENGER_EpochAnnouncement *announcement, const struct GNUNET_HashCode *hash, const struct GNUNET_MESSENGER_Message *message, struct GNUNET_MESSENGER_Contact *contact) |
Revokes an announcement message with its hash from a given epoch announcement removing the caused confirmation for a specific contact to be its member. More... | |
enum GNUNET_GenericReturnValue | is_epoch_announcement_member (const struct GNUNET_MESSENGER_EpochAnnouncement *announcement, const struct GNUNET_MESSENGER_Contact *contact) |
Returns whether a specific contact is confirmed member of a given epoch announcement. More... | |
enum GNUNET_GenericReturnValue | get_epoch_announcement_member_hash (const struct GNUNET_MESSENGER_EpochAnnouncement *announcement, struct GNUNET_HashCode *hash, enum GNUNET_GenericReturnValue other) |
Provides an announcement hash of a member from a given epoch announcement. More... | |
void | invalidate_epoch_announcement (struct GNUNET_MESSENGER_EpochAnnouncement *announcement, const struct GNUNET_MESSENGER_Contact *contact) |
Invalidates a given epoch announcement by a specific contact. More... | |
enum GNUNET_GenericReturnValue | send_epoch_announcement (struct GNUNET_MESSENGER_EpochAnnouncement *announcement) |
Tries to send an announcement message by the client for a given epoch announcement using its secret key. More... | |
enum GNUNET_GenericReturnValue | send_epoch_announcement_appeal (struct GNUNET_MESSENGER_EpochAnnouncement *announcement, const struct GNUNET_HashCode *event) |
Tries to send an appeal message by the client responding to a previous event in regards to a given epoch announcement requesting its secret key from other members. More... | |
enum GNUNET_GenericReturnValue | send_epoch_announcement_access (struct GNUNET_MESSENGER_EpochAnnouncement *announcement, const struct GNUNET_HashCode *event) |
Tries to send an access message by the client responding to a previous event in regards to a given epoch announcement using its secret key. More... | |
enum GNUNET_GenericReturnValue | send_epoch_announcement_revolution (struct GNUNET_MESSENGER_EpochAnnouncement *announcement) |
Tries to send a revolution message by the client for a given epoch announcement using its secret key. More... | |
enum GNUNET_GenericReturnValue | send_epoch_announcement_authorization (struct GNUNET_MESSENGER_EpochAnnouncement *announcement, const struct GNUNET_MESSENGER_EpochGroup *group, const struct GNUNET_HashCode *event) |
Tries to send an authorization message by the client responding to a previous event in regards to a given epoch announcement using the secret key from a permitted epoch group. More... | |
void | handle_epoch_announcement (struct GNUNET_MESSENGER_EpochAnnouncement *announcement, const struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash, struct GNUNET_MESSENGER_Contact *sender, enum GNUNET_GenericReturnValue sent) |
Handles an announcement message with hash from its sender inside a given epoch announcement as first stage. More... | |
void | handle_epoch_announcement_delay (struct GNUNET_MESSENGER_EpochAnnouncement *announcement, const struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash, struct GNUNET_MESSENGER_Contact *sender, enum GNUNET_GenericReturnValue sent) |
Handles an announcement message with hash from its sender inside a given epoch announcement as second stage after custom delay. More... | |
void | handle_epoch_announcement_access (struct GNUNET_MESSENGER_EpochAnnouncement *announcement, const struct GNUNET_MESSENGER_Message *message, const struct GNUNET_HashCode *hash) |
Handles an access message with hash from its sender inside a given epoch announcement. More... | |
void | write_epoch_announcement_record (struct GNUNET_MESSENGER_EpochAnnouncement *announcement, enum GNUNET_GenericReturnValue deleted) |
Writes/Deletes the GNS record of a given epoch announcement depending on a provided flag that states wether an existing record should be deleted. More... | |
struct GNUNET_MESSENGER_EpochAnnouncement * create_epoch_announcement | ( | struct GNUNET_MESSENGER_Epoch * | epoch, |
const union GNUNET_MESSENGER_EpochIdentifier * | identifier, | ||
enum GNUNET_GenericReturnValue | valid | ||
) |
Creates and allocates a new epoch announcement for a given epoch using a specific announcement identifier or NULL.
Additionally a flag specifies whether that group needs to be valid to allow key derivation based on that property.
[in,out] | epoch | Epoch |
[in] | identifier | Announcement identifier |
[in] | valid | Validity flag |
Definition at line 82 of file messenger_api_epoch_announcement.c.
References GNUNET_MESSENGER_EpochAnnouncement::announcement_expiration, GNUNET_MESSENGER_EpochAnnouncement::appeal, GNUNET_MESSENGER_EpochAnnouncement::appeal_task, GNUNET_MESSENGER_EpochIdentifier::code, create_epoch_membership(), derive_epoch_announcement_key(), GNUNET_MESSENGER_EpochAnnouncement::epoch, get_epoch_announcement_size(), get_epoch_previous_announcement(), GNUNET_assert, GNUNET_CONTAINER_multihashmap_create(), GNUNET_memcpy, GNUNET_new, GNUNET_NO, GNUNET_OK, GNUNET_TIME_absolute_get_zero_(), GNUNET_YES, GNUNET_MESSENGER_EpochIdentifierCode::group_bit, GNUNET_MESSENGER_EpochAnnouncement::identifier, key, GNUNET_MESSENGER_EpochAnnouncement::membership, GNUNET_MESSENGER_EpochAnnouncement::messages, GNUNET_MESSENGER_EpochAnnouncement::query, random_epoch_announcement_identifier(), set_epoch_announcement_key(), GNUNET_MESSENGER_EpochAnnouncement::shared_key, GNUNET_MESSENGER_EpochAnnouncement::stored, and GNUNET_MESSENGER_EpochAnnouncement::valid.
Referenced by generate_room_epoch_announcement(), and get_epoch_announcement().
void destroy_epoch_announcement | ( | struct GNUNET_MESSENGER_EpochAnnouncement * | announcement | ) |
Destroys a given epoch announcement and frees its resources.
[in,out] | announcement | Epoch announcement |
Definition at line 149 of file messenger_api_epoch_announcement.c.
References GNUNET_MESSENGER_EpochAnnouncement::appeal, GNUNET_MESSENGER_EpochAnnouncement::appeal_task, destroy_epoch_membership(), GNUNET_assert, GNUNET_CONTAINER_multihashmap_destroy(), GNUNET_free, GNUNET_NAMESTORE_cancel(), GNUNET_SCHEDULER_cancel(), GNUNET_MESSENGER_EpochAnnouncement::membership, GNUNET_MESSENGER_EpochAnnouncement::messages, GNUNET_MESSENGER_EpochAnnouncement::query, and GNUNET_MESSENGER_EpochAnnouncement::shared_key.
Referenced by generate_room_epoch_announcement(), get_epoch_announcement(), and iterate_destroy_announcement().
uint32_t get_epoch_announcement_size | ( | const struct GNUNET_MESSENGER_EpochAnnouncement * | announcement | ) |
Returns the size of a given epoch announcement in terms of members.
[in] | announcement | Epoch announcement |
Definition at line 177 of file messenger_api_epoch_announcement.c.
References GNUNET_MESSENGER_EpochAnnouncement::epoch, get_epoch_size(), and GNUNET_assert.
Referenced by create_epoch_announcement().
uint32_t get_epoch_announcement_members_count | ( | const struct GNUNET_MESSENGER_EpochAnnouncement * | announcement | ) |
Returns the current amount of members of a given epoch announcement.
[in] | announcement | Epoch announcement |
Definition at line 187 of file messenger_api_epoch_announcement.c.
References get_epoch_membership_count(), GNUNET_assert, and GNUNET_MESSENGER_EpochAnnouncement::membership.
Referenced by is_epoch_group_missing_announcement(), is_other_epoch_announcement_better(), and send_epoch_announcement_appeal().
enum GNUNET_GenericReturnValue is_epoch_announcement_completed | ( | const struct GNUNET_MESSENGER_EpochAnnouncement * | announcement | ) |
Returns whether a given epoch announcement is complete in terms of confirmed announcements from its members.
[in] | announcement | Epoch announcement |
Definition at line 198 of file messenger_api_epoch_announcement.c.
References GNUNET_assert, is_epoch_membership_completed(), and GNUNET_MESSENGER_EpochAnnouncement::membership.
Referenced by handle_epoch_announcement().
enum GNUNET_GenericReturnValue is_epoch_announcement_announced | ( | const struct GNUNET_MESSENGER_EpochAnnouncement * | announcement | ) |
Returns whether the client has announced being part of a given epoch announcement owning its secret key.
[in] | announcement | Epoch announcement |
Definition at line 209 of file messenger_api_epoch_announcement.c.
References GNUNET_assert, is_epoch_membership_member(), and GNUNET_MESSENGER_EpochAnnouncement::membership.
Referenced by handle_epoch_announcement(), and propose_epoch_group().
void set_epoch_announcement_appeal | ( | struct GNUNET_MESSENGER_EpochAnnouncement * | announcement, |
struct GNUNET_TIME_Relative | timeout | ||
) |
Sets a specified timeout for a given epoch announcement of the client for its own appeal of the announced secret key.
[in,out] | announcement | Epoch announcement |
[in] | timeout | Timeout of appeal |
Definition at line 242 of file messenger_api_epoch_announcement.c.
References GNUNET_MESSENGER_EpochAnnouncement::appeal, GNUNET_MESSENGER_EpochAnnouncement::appeal_task, GNUNET_assert, GNUNET_memcpy, GNUNET_new, GNUNET_SCHEDULER_add_at_with_priority(), GNUNET_SCHEDULER_cancel(), GNUNET_SCHEDULER_PRIORITY_HIGH, GNUNET_TIME_absolute_add(), GNUNET_TIME_absolute_cmp, GNUNET_TIME_absolute_get(), task_epoch_announcement_appeal(), and timeout.
Referenced by handle_appeal_message(), and send_epoch_announcement_appeal().
enum GNUNET_GenericReturnValue is_epoch_announcement_appealed | ( | const struct GNUNET_MESSENGER_EpochAnnouncement * | announcement | ) |
Returns whether a given epoch announcement of the client is currently appealing for its secret key from other members.
[in] | announcement | Epoch announcement |
Definition at line 271 of file messenger_api_epoch_announcement.c.
References GNUNET_MESSENGER_EpochAnnouncement::appeal, GNUNET_assert, GNUNET_NO, GNUNET_TIME_absolute_get_remaining(), GNUNET_TIME_relative_is_zero(), and GNUNET_YES.
Referenced by handle_epoch_announcement_delay().
void set_epoch_announcement_key | ( | struct GNUNET_MESSENGER_EpochAnnouncement * | announcement, |
const struct GNUNET_CRYPTO_SymmetricSessionKey * | shared_key, | ||
enum GNUNET_GenericReturnValue | write_record | ||
) |
Sets the secret key of a given epoch announcement to a shared key.
An additional flag decides whether the shared key has been loaded from storage or whether it should write its record afterwards.
[in,out] | announcement | Epoch announcement |
[in] | shared_key | Shared key or NULL |
[in] | write_record | GNUNET_YES if the record should be written, otherwise GNUNET_NO |
Definition at line 296 of file messenger_api_epoch_announcement.c.
References GNUNET_MESSENGER_EpochAnnouncement::epoch, GNUNET_assert, GNUNET_CRYPTO_symmetric_create_session_key(), GNUNET_memcpy, GNUNET_new, GNUNET_NO, GNUNET_YES, handle_secret_messages_with_key(), GNUNET_MESSENGER_EpochAnnouncement::shared_key, GNUNET_MESSENGER_EpochAnnouncement::stored, update_epoch_announcement(), and write_epoch_announcement_record().
Referenced by cb_key_monitor(), create_epoch_announcement(), generate_room_epoch_announcement(), handle_authorization_message(), and handle_epoch_announcement_access().
const struct GNUNET_CRYPTO_SymmetricSessionKey * get_epoch_announcement_key | ( | const struct GNUNET_MESSENGER_EpochAnnouncement * | announcement | ) |
Returns the secret key of a given epoch announcement or NULL.
[in] | announcement | Epoch announcement |
Definition at line 332 of file messenger_api_epoch_announcement.c.
References GNUNET_assert, and GNUNET_MESSENGER_EpochAnnouncement::shared_key.
Referenced by derive_epoch_announcement_key(), generate_room_epoch_announcement(), handle_access_message(), handle_authorization_message(), handle_epoch_announcement(), handle_epoch_announcement_access(), handle_epoch_announcement_delay(), handle_epoch_announcement_message(), handle_revolution_message(), handle_room_delayed_appeal(), handle_secret_message_with_key(), handle_secret_messages_with_key(), is_epoch_announcement_key_derived_from(), it_find_valid_announcement_with_most_members(), send_epoch_announcement(), send_epoch_announcement_access(), send_epoch_announcement_authorization(), send_epoch_announcement_revolution(), send_message_to_room(), and update_epoch_announcement().
void handle_epoch_announcement_message | ( | struct GNUNET_MESSENGER_EpochAnnouncement * | announcement, |
const struct GNUNET_MESSENGER_Message * | message, | ||
const struct GNUNET_HashCode * | hash | ||
) |
Handles an encrypted message with hash by a given epoch announcement using its secret key for decryption if available.
[in,out] | announcement | Epoch announcement |
[in] | message | Message |
[in] | hash | Hash of message |
Definition at line 422 of file messenger_api_epoch_announcement.c.
References get_epoch_announcement_key(), GNUNET_assert, GNUNET_CONTAINER_multihashmap_contains(), GNUNET_CONTAINER_multihashmap_put(), GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST, GNUNET_MESSENGER_KIND_SECRET, GNUNET_NO, GNUNET_YES, handle_secret_message_with_key(), GNUNET_MESSENGER_Message::header, GNUNET_MESSENGER_MessageHeader::kind, and GNUNET_MESSENGER_EpochAnnouncement::messages.
Referenced by handle_secret_message().
enum GNUNET_GenericReturnValue confirm_epoch_announcement_member | ( | struct GNUNET_MESSENGER_EpochAnnouncement * | announcement, |
const struct GNUNET_HashCode * | hash, | ||
const struct GNUNET_MESSENGER_Message * | message, | ||
struct GNUNET_MESSENGER_Contact * | contact, | ||
enum GNUNET_GenericReturnValue | sent | ||
) |
Confirms an announcement message with its hash to a given epoch announcement as confirmation for a specific contact.
An additional flag specifies whether the message has been sent by the client or not.
[in,out] | announcement | Epoch announcement |
[in] | hash | Hash of message |
[in] | message | Message |
[in,out] | contact | Contact |
[in] | sent | Sent flag |
Definition at line 448 of file messenger_api_epoch_announcement.c.
References confirm_epoch_membership_announcment(), GNUNET_MESSENGER_EpochAnnouncement::epoch, GNUNET_assert, GNUNET_SYSERR, GNUNET_YES, is_epoch_member(), GNUNET_MESSENGER_EpochAnnouncement::membership, result, and update_epoch_announcement().
Referenced by handle_epoch_announcement().
enum GNUNET_GenericReturnValue revoke_epoch_announcement_member | ( | struct GNUNET_MESSENGER_EpochAnnouncement * | announcement, |
const struct GNUNET_HashCode * | hash, | ||
const struct GNUNET_MESSENGER_Message * | message, | ||
struct GNUNET_MESSENGER_Contact * | contact | ||
) |
Revokes an announcement message with its hash from a given epoch announcement removing the caused confirmation for a specific contact to be its member.
This might be caused by deletion of the original announcement message by that member.
[in,out] | announcement | Epoch announcement |
[in] | hash | Hash of message |
[in] | message | Message |
[in,out] | contact | Contact |
Definition at line 478 of file messenger_api_epoch_announcement.c.
References GNUNET_assert, GNUNET_MESSENGER_KIND_ANNOUNCEMENT, GNUNET_SYSERR, GNUNET_MESSENGER_Message::header, GNUNET_MESSENGER_MessageHeader::kind, GNUNET_MESSENGER_EpochAnnouncement::membership, and revoke_epoch_membership_announcement().
Referenced by handle_room_delayed_deletion().
enum GNUNET_GenericReturnValue is_epoch_announcement_member | ( | const struct GNUNET_MESSENGER_EpochAnnouncement * | announcement, |
const struct GNUNET_MESSENGER_Contact * | contact | ||
) |
Returns whether a specific contact is confirmed member of a given epoch announcement.
[in] | announcement | Epoch announcement |
[in] | contact | Contact |
Definition at line 496 of file messenger_api_epoch_announcement.c.
References GNUNET_assert, is_epoch_membership_member(), and GNUNET_MESSENGER_EpochAnnouncement::membership.
Referenced by handle_appeal_message(), handle_epoch_announcement(), handle_room_delayed_appeal(), it_check_epoch_announcement_member(), and task_epoch_announcement_appeal().
enum GNUNET_GenericReturnValue get_epoch_announcement_member_hash | ( | const struct GNUNET_MESSENGER_EpochAnnouncement * | announcement, |
struct GNUNET_HashCode * | hash, | ||
enum GNUNET_GenericReturnValue | other | ||
) |
Provides an announcement hash of a member from a given epoch announcement.
Depending on a flag it provides some hash of another member or the clients own announcement.
[in] | announcement | Epoch announcement |
[out] | hash | Hash of announcement |
[in] | other | Other flag |
Definition at line 507 of file messenger_api_epoch_announcement.c.
References get_epoch_membership_member_hash(), GNUNET_assert, and GNUNET_MESSENGER_EpochAnnouncement::membership.
Referenced by handle_access_message(), propose_epoch_group(), and task_epoch_announcement_appeal().
void invalidate_epoch_announcement | ( | struct GNUNET_MESSENGER_EpochAnnouncement * | announcement, |
const struct GNUNET_MESSENGER_Contact * | contact | ||
) |
Invalidates a given epoch announcement by a specific contact.
[in,out] | announcement | Epoch announcement |
[in] | contact | Contact |
Definition at line 521 of file messenger_api_epoch_announcement.c.
References GNUNET_MESSENGER_Message::body, GNUNET_MESSENGER_MessageJoin::epoch, GNUNET_MESSENGER_MessageLeave::epoch, GNUNET_MESSENGER_EpochAnnouncement::epoch, GNUNET_MESSENGER_MessageMerge::epochs, get_epoch_announcement(), get_room_epoch(), get_room_message(), GNUNET_assert, GNUNET_MESSENGER_KIND_JOIN, GNUNET_MESSENGER_KIND_LEAVE, GNUNET_MESSENGER_KIND_MERGE, GNUNET_NO, GNUNET_SYSERR, GNUNET_YES, GNUNET_MESSENGER_Epoch::hash, GNUNET_MESSENGER_Message::header, GNUNET_MESSENGER_EpochAnnouncement::identifier, invalidate_epoch_announcement(), is_epoch_announcement_key_derived_from(), is_epoch_member(), GNUNET_MESSENGER_MessageBody::join, GNUNET_MESSENGER_MessageHeader::kind, GNUNET_MESSENGER_MessageBody::leave, GNUNET_MESSENGER_Epoch::main_announcement, GNUNET_MESSENGER_MessageBody::merge, GNUNET_MESSENGER_Epoch::room, GNUNET_MESSENGER_EpochAnnouncement::valid, and write_epoch_announcement_record().
Referenced by handle_revolution_message(), invalidate_epoch_announcement(), and iterate_epoch_announcement_invalidation().
enum GNUNET_GenericReturnValue send_epoch_announcement | ( | struct GNUNET_MESSENGER_EpochAnnouncement * | announcement | ) |
Tries to send an announcement message by the client for a given epoch announcement using its secret key.
[in,out] | announcement | Epoch announcement |
Definition at line 620 of file messenger_api_epoch_announcement.c.
References GNUNET_MESSENGER_EpochAnnouncement::announcement_expiration, create_message_announcement(), GNUNET_MESSENGER_EpochAnnouncement::epoch, get_epoch_announcement_key(), get_epoch_private_key(), get_epoch_private_key_timeout(), GNUNET_assert, GNUNET_NO, GNUNET_OK, GNUNET_SYSERR, GNUNET_TIME_absolute_add(), GNUNET_TIME_absolute_get(), GNUNET_TIME_absolute_get_remaining(), GNUNET_TIME_relative_get_hour_(), GNUNET_TIME_relative_is_zero(), GNUNET_TIME_relative_multiply(), GNUNET_YES, GNUNET_MESSENGER_EpochAnnouncement::identifier, key, send_epoch_message(), and timeout.
Referenced by generate_room_epoch_announcement(), handle_authorization_message(), handle_epoch_announcement(), and handle_epoch_announcement_access().
enum GNUNET_GenericReturnValue send_epoch_announcement_appeal | ( | struct GNUNET_MESSENGER_EpochAnnouncement * | announcement, |
const struct GNUNET_HashCode * | event | ||
) |
Tries to send an appeal message by the client responding to a previous event in regards to a given epoch announcement requesting its secret key from other members.
[in,out] | announcement | Epoch announcement |
[in] | event | Hash of event message |
Definition at line 686 of file messenger_api_epoch_announcement.c.
References create_message_appeal(), GNUNET_MESSENGER_EpochAnnouncement::epoch, get_epoch_announcement_members_count(), get_epoch_private_key(), get_epoch_private_key_timeout(), GNUNET_assert, GNUNET_CONTAINER_multihashmap_contains(), GNUNET_CONTAINER_multihashmap_iterate(), GNUNET_OK, GNUNET_SYSERR, GNUNET_TIME_relative_get_hour_(), GNUNET_YES, it_store_any_event(), GNUNET_MESSENGER_EpochMembership::members, GNUNET_MESSENGER_EpochAnnouncement::membership, send_epoch_message(), set_epoch_announcement_appeal(), and timeout.
Referenced by handle_epoch_announcement_delay(), and task_epoch_announcement_appeal().
enum GNUNET_GenericReturnValue send_epoch_announcement_access | ( | struct GNUNET_MESSENGER_EpochAnnouncement * | announcement, |
const struct GNUNET_HashCode * | event | ||
) |
Tries to send an access message by the client responding to a previous event in regards to a given epoch announcement using its secret key.
[in,out] | announcement | Epoch announcement |
[in] | event | Hash of event message |
Definition at line 735 of file messenger_api_epoch_announcement.c.
References GNUNET_MESSENGER_MessageBody::appeal, GNUNET_MESSENGER_Message::body, create_message_access(), GNUNET_MESSENGER_EpochAnnouncement::epoch, GNUNET_MESSENGER_MessageAppeal::event, get_epoch_announcement_key(), get_room_message(), GNUNET_assert, GNUNET_CONTAINER_multihashmap_contains(), GNUNET_MESSENGER_KIND_APPEAL, GNUNET_OK, GNUNET_SYSERR, GNUNET_YES, GNUNET_MESSENGER_Message::header, key, GNUNET_MESSENGER_MessageAppeal::key, GNUNET_MESSENGER_MessageHeader::kind, GNUNET_MESSENGER_Epoch::room, and send_epoch_message().
Referenced by handle_room_delayed_appeal().
enum GNUNET_GenericReturnValue send_epoch_announcement_revolution | ( | struct GNUNET_MESSENGER_EpochAnnouncement * | announcement | ) |
Tries to send a revolution message by the client for a given epoch announcement using its secret key.
[in,out] | announcement | Epoch announcement |
Definition at line 782 of file messenger_api_epoch_announcement.c.
References create_message_revolution(), GNUNET_MESSENGER_EpochAnnouncement::epoch, get_epoch_announcement_key(), GNUNET_assert, GNUNET_OK, GNUNET_SYSERR, GNUNET_MESSENGER_EpochAnnouncement::identifier, key, and send_epoch_message().
Referenced by handle_epoch_announcement().
enum GNUNET_GenericReturnValue send_epoch_announcement_authorization | ( | struct GNUNET_MESSENGER_EpochAnnouncement * | announcement, |
const struct GNUNET_MESSENGER_EpochGroup * | group, | ||
const struct GNUNET_HashCode * | event | ||
) |
Tries to send an authorization message by the client responding to a previous event in regards to a given epoch announcement using the secret key from a permitted epoch group.
[in,out] | announcement | Epoch announcement |
[in] | group | Epoch group |
[in] | event | Hash of event message |
Definition at line 807 of file messenger_api_epoch_announcement.c.
References GNUNET_MESSENGER_MessageBody::announcement, GNUNET_MESSENGER_Message::body, GNUNET_MESSENGER_EpochIdentifier::code, create_message_authorization(), GNUNET_MESSENGER_EpochAnnouncement::epoch, GNUNET_MESSENGER_EpochGroup::epoch, get_epoch_announcement_key(), get_epoch_group_key(), get_room_message(), GNUNET_assert, GNUNET_memcmp, GNUNET_MESSENGER_KIND_ANNOUNCEMENT, GNUNET_OK, GNUNET_SYSERR, GNUNET_YES, GNUNET_MESSENGER_EpochIdentifierCode::group_bit, GNUNET_MESSENGER_Message::header, GNUNET_MESSENGER_MessageAnnouncement::identifier, GNUNET_MESSENGER_EpochAnnouncement::identifier, GNUNET_MESSENGER_EpochGroup::identifier, key, GNUNET_MESSENGER_MessageHeader::kind, GNUNET_MESSENGER_Epoch::room, send_epoch_message(), and verify_message_by_key().
Referenced by handle_epoch_announcement_access().
void handle_epoch_announcement | ( | struct GNUNET_MESSENGER_EpochAnnouncement * | announcement, |
const struct GNUNET_MESSENGER_Message * | message, | ||
const struct GNUNET_HashCode * | hash, | ||
struct GNUNET_MESSENGER_Contact * | sender, | ||
enum GNUNET_GenericReturnValue | sent | ||
) |
Handles an announcement message with hash from its sender inside a given epoch announcement as first stage.
[in,out] | announcement | Epoch announcement |
[in] | message | Message |
[in] | hash | Hash of message |
[in] | sender | Sender of message |
[in] | sent | Sent flag |
Definition at line 865 of file messenger_api_epoch_announcement.c.
References cancel_room_actions_by(), confirm_epoch_announcement_member(), delay_room_action(), GNUNET_MESSENGER_EpochAnnouncement::epoch, get_epoch_announcement_key(), get_epoch_group_position_factor(), get_epoch_position_factor(), get_handle_contact(), get_message_timeout(), get_room_handle(), get_room_key(), GNUNET_assert, GNUNET_MESSENGER_KIND_APPEAL, GNUNET_OK, GNUNET_TIME_relative_get_zero_(), GNUNET_TIME_relative_multiply_double(), GNUNET_YES, GNUNET_MESSENGER_Epoch::hash, GNUNET_MESSENGER_EpochAnnouncement::identifier, is_epoch_announcement_announced(), is_epoch_announcement_completed(), is_epoch_announcement_member(), key, GNUNET_MESSENGER_Epoch::main_group, GNUNET_MESSENGER_EpochAnnouncement::membership, GNUNET_MESSENGER_Epoch::room, send_epoch_announcement(), send_epoch_announcement_revolution(), timeout, and verify_message_by_key().
Referenced by handle_announcement_message().
void handle_epoch_announcement_delay | ( | struct GNUNET_MESSENGER_EpochAnnouncement * | announcement, |
const struct GNUNET_MESSENGER_Message * | message, | ||
const struct GNUNET_HashCode * | hash, | ||
struct GNUNET_MESSENGER_Contact * | sender, | ||
enum GNUNET_GenericReturnValue | sent | ||
) |
Handles an announcement message with hash from its sender inside a given epoch announcement as second stage after custom delay.
[in,out] | announcement | Epoch announcement |
[in] | message | Message |
[in] | hash | Hash of message |
[in] | sender | Sender of message |
[in] | sent | Sent flag |
Definition at line 933 of file messenger_api_epoch_announcement.c.
References GNUNET_MESSENGER_EpochAnnouncement::epoch, get_epoch_announcement_key(), get_message_timeout(), GNUNET_assert, GNUNET_TIME_relative_get_hour_(), GNUNET_TIME_relative_is_zero(), GNUNET_YES, is_epoch_announcement_appealed(), is_room_public(), propose_epoch_group(), GNUNET_MESSENGER_Epoch::room, send_epoch_announcement_appeal(), timeout, and GNUNET_MESSENGER_EpochAnnouncement::valid.
Referenced by handle_room_delayed_announcement().
void handle_epoch_announcement_access | ( | struct GNUNET_MESSENGER_EpochAnnouncement * | announcement, |
const struct GNUNET_MESSENGER_Message * | message, | ||
const struct GNUNET_HashCode * | hash | ||
) |
Handles an access message with hash from its sender inside a given epoch announcement.
[in,out] | announcement | Epoch announcement |
[in] | message | Message |
[in] | hash | Hash of message |
[in] | sender | Sender of message |
[in] | sent | Sent flag |
Definition at line 967 of file messenger_api_epoch_announcement.c.
References GNUNET_MESSENGER_MessageBody::access, GNUNET_MESSENGER_MessageBody::appeal, GNUNET_MESSENGER_Message::body, GNUNET_MESSENGER_EpochAnnouncement::epoch, GNUNET_MESSENGER_MessageAppeal::event, GNUNET_MESSENGER_MessageAccess::event, extract_access_message_key(), get_epoch_announcement_key(), get_epoch_private_key(), get_room_message(), GNUNET_assert, GNUNET_ERROR_TYPE_DEBUG, GNUNET_log, GNUNET_MESSENGER_KIND_APPEAL, GNUNET_NO, GNUNET_TIME_relative_get_hour_(), GNUNET_YES, GNUNET_MESSENGER_Message::header, is_epoch_group_compatible(), is_epoch_group_missing_announcement(), GNUNET_MESSENGER_MessageHeader::kind, GNUNET_MESSENGER_Epoch::main_group, GNUNET_MESSENGER_Epoch::room, send_epoch_announcement(), send_epoch_announcement_authorization(), and set_epoch_announcement_key().
Referenced by handle_access_message().
void write_epoch_announcement_record | ( | struct GNUNET_MESSENGER_EpochAnnouncement * | announcement, |
enum GNUNET_GenericReturnValue | deleted | ||
) |
Writes/Deletes the GNS record of a given epoch announcement depending on a provided flag that states wether an existing record should be deleted.
[in,out] | announcement | Epoch announcement |
[in] | deleted | Deleted flag |
Definition at line 1036 of file messenger_api_epoch_announcement.c.
References cont_write_epoch_announcement_record(), GNUNET_MESSENGER_EpochAnnouncement::epoch, get_room_handle(), get_room_key(), GNUNET_assert, GNUNET_MESSENGER_FLAG_EPOCH_NONE, GNUNET_MESSENGER_FLAG_EPOCH_VALID, GNUNET_YES, handle, GNUNET_MESSENGER_EpochIdentifier::hash, GNUNET_MESSENGER_Epoch::hash, GNUNET_MESSENGER_EpochAnnouncement::identifier, key, GNUNET_MESSENGER_EpochAnnouncement::query, GNUNET_MESSENGER_Epoch::room, GNUNET_MESSENGER_EpochAnnouncement::shared_key, store_handle_epoch_key(), and GNUNET_MESSENGER_EpochAnnouncement::valid.
Referenced by invalidate_epoch_announcement(), it_announcement_store_key(), and set_epoch_announcement_key().