Radix Relay
Hybrid mesh communications with Signal Protocol encryption
Loading...
Searching...
No Matches
radix_relay::concepts::signal_bridge Concept Reference

Concept defining the interface for Signal Protocol cryptographic operations. More...

#include <signal_bridge.hpp>

Concept definition

template<typename T>
concept radix_relay::concepts::signal_bridge = requires(T bridge,
const std::string &rdx,
const std::string &alias,
const std::string &bundle,
const std::string &version,
const std::string &content,
const std::vector<uint8_t> &bytes,
const std::string &subscription_id,
uint32_t timestamp,
std::uint64_t since_timestamp,
std::uint32_t pre_key_id,
std::uint32_t signed_pre_key_id,
std::uint32_t kyber_pre_key_id) {
{ bridge.get_node_fingerprint() } -> std::convertible_to<std::string>;
{ bridge.list_contacts() } -> std::convertible_to<std::vector<radix_relay::core::contact_info>>;
{ bridge.encrypt_message(rdx, bytes) } -> std::convertible_to<std::vector<uint8_t>>;
{ bridge.decrypt_message(rdx, bytes) } -> std::convertible_to<radix_relay::signal::decryption_result>;
{ bridge.add_contact_and_establish_session_from_base64(bundle, alias) } -> std::convertible_to<std::string>;
{ bridge.generate_prekey_bundle_announcement(version) } -> std::convertible_to<radix_relay::signal::bundle_info>;
{ bridge.generate_empty_bundle_announcement(version) } -> std::convertible_to<std::string>;
{ bridge.extract_rdx_from_bundle_base64(bundle) } -> std::convertible_to<std::string>;
{ bridge.assign_contact_alias(rdx, alias) } -> std::same_as<void>;
{ bridge.lookup_contact(alias) } -> std::convertible_to<radix_relay::core::contact_info>;
{ bridge.create_and_sign_encrypted_message(rdx, content, timestamp, version) } -> std::convertible_to<std::string>;
{ bridge.sign_nostr_event(content) } -> std::convertible_to<std::string>;
{ bridge.create_subscription_for_self(subscription_id, since_timestamp) } -> std::convertible_to<std::string>;
{ bridge.update_last_message_timestamp(since_timestamp) } -> std::same_as<void>;
{ bridge.perform_key_maintenance() } -> std::convertible_to<radix_relay::signal::key_maintenance_result>;
{ bridge.record_published_bundle(pre_key_id, signed_pre_key_id, kyber_pre_key_id) } -> std::same_as<void>;
}
Concept defining the interface for Signal Protocol cryptographic operations.

Detailed Description

Concept defining the interface for Signal Protocol cryptographic operations.

Types satisfying this concept provide identity management, session establishment, message encryption/decryption, contact management, Nostr event signing, and key maintenance.

Definition at line 18 of file signal_bridge.hpp.