|
Radix Relay
Hybrid mesh communications with Signal Protocol encryption
|
C++ wrapper for the Rust Signal Protocol implementation. More...
#include <signal_bridge.hpp>
Public Member Functions | |
| bridge (const std::filesystem::path &bridge_db) | |
| Constructs a Signal bridge with database path. | |
| bridge (rust::Box< SignalBridge > signal_bridge) | |
| Constructs a Signal bridge from existing Rust implementation. | |
| bridge (const bridge &)=delete | |
| auto | operator= (const bridge &) -> bridge &=delete |
| bridge (bridge &&)=default | |
| auto | operator= (bridge &&) -> bridge &=default |
| ~bridge ()=default | |
| auto | get_node_fingerprint () const -> std::string |
| Returns this node's RDX fingerprint. | |
| auto | list_contacts () const -> std::vector< core::contact_info > |
| Lists all known contacts. | |
| auto | encrypt_message (const std::string &rdx, const std::vector< uint8_t > &bytes) const -> std::vector< uint8_t > |
| Encrypts a message for a peer. | |
| auto | decrypt_message (const std::string &rdx, const std::vector< uint8_t > &bytes) const -> decryption_result |
| Decrypts an incoming message. | |
| auto | add_contact_and_establish_session_from_base64 (const std::string &bundle, const std::string &alias) const -> std::string |
| Establishes a session from a prekey bundle. | |
| auto | extract_rdx_from_bundle_base64 (const std::string &bundle_base64) const -> std::string |
| Extracts RDX fingerprint from a prekey bundle. | |
| auto | generate_prekey_bundle_announcement (const std::string &version) const -> bundle_info |
| Generates a signed prekey bundle announcement. | |
| auto | generate_empty_bundle_announcement (const std::string &version) const -> std::string |
| Generates an empty bundle announcement for unpublishing. | |
| auto | assign_contact_alias (const std::string &rdx, const std::string &alias) const -> void |
| Assigns an alias to a contact. | |
| auto | create_and_sign_encrypted_message (const std::string &rdx, const std::string &content, uint32_t timestamp, const std::string &version) const -> std::string |
| Creates and signs a Nostr encrypted message event. | |
| auto | lookup_contact (const std::string &alias) const -> core::contact_info |
| Looks up a contact by RDX fingerprint or alias. | |
| auto | sign_nostr_event (const std::string &event_json) const -> std::string |
| Signs a Nostr event with node's private key. | |
| auto | create_subscription_for_self (const std::string &subscription_id, std::uint64_t since_timestamp=0) const -> std::string |
| Creates a Nostr subscription filter for messages to this node. | |
| auto | update_last_message_timestamp (std::uint64_t timestamp) const -> void |
| Updates the timestamp of the last received message. | |
| auto | perform_key_maintenance () const -> key_maintenance_result |
| Performs periodic key maintenance and rotation. | |
| auto | record_published_bundle (std::uint32_t pre_key_id, std::uint32_t signed_pre_key_id, std::uint32_t kyber_pre_key_id) const -> void |
| Records published prekey bundle to track used keys. | |
| auto | get_conversations (bool include_archived) const -> std::vector< conversation > |
| Retrieves all conversations ordered by most recent message. | |
| auto | get_conversation_messages (const std::string &rdx_fingerprint, std::uint32_t limit, std::uint32_t offset) const -> std::vector< stored_message > |
| Retrieves messages from a conversation with pagination. | |
| auto | mark_conversation_read (const std::string &rdx_fingerprint) const -> void |
| Marks all messages in a conversation as read. | |
| auto | delete_message (std::int64_t message_id) const -> void |
| Deletes a specific message from history. | |
| auto | delete_conversation (const std::string &rdx_fingerprint) const -> void |
| Deletes an entire conversation and all its messages. | |
| auto | get_unread_count (const std::string &rdx_fingerprint) const -> std::uint32_t |
| Gets the number of unread messages in a conversation. | |
C++ wrapper for the Rust Signal Protocol implementation.
Provides Signal Protocol operations including encryption/decryption, key management, session establishment, and Nostr integration.
Definition at line 20 of file signal_bridge.hpp.
|
inlineexplicit |
Constructs a Signal bridge with database path.
| bridge_db | Path to Signal Protocol database |
Definition at line 28 of file signal_bridge.hpp.
|
inlineexplicit |
Constructs a Signal bridge from existing Rust implementation.
| signal_bridge | Rust SignalBridge instance |
Definition at line 37 of file signal_bridge.hpp.
|
delete |
|
default |
|
default |
| auto radix_relay::signal::bridge::add_contact_and_establish_session_from_base64 | ( | const std::string & | bundle, |
| const std::string & | alias | ||
| ) | const -> std::string |
Establishes a session from a prekey bundle.
| bundle | Base64-encoded prekey bundle |
| alias | Optional alias for the contact |
| auto radix_relay::signal::bridge::assign_contact_alias | ( | const std::string & | rdx, |
| const std::string & | alias | ||
| ) | const -> void |
Assigns an alias to a contact.
| rdx | Contact's RDX fingerprint |
| alias | User-friendly alias |
| auto radix_relay::signal::bridge::create_and_sign_encrypted_message | ( | const std::string & | rdx, |
| const std::string & | content, | ||
| uint32_t | timestamp, | ||
| const std::string & | version | ||
| ) | const -> std::string |
Creates and signs a Nostr encrypted message event.
| rdx | Recipient's RDX fingerprint or Nostr pubkey |
| content | Hex-encoded encrypted content |
| timestamp | Unix timestamp |
| version | Protocol version string |
| auto radix_relay::signal::bridge::create_subscription_for_self | ( | const std::string & | subscription_id, |
| std::uint64_t | since_timestamp = 0 |
||
| ) | const -> std::string |
Creates a Nostr subscription filter for messages to this node.
| subscription_id | Subscription identifier |
| since_timestamp | Optional timestamp to filter messages since |
| auto radix_relay::signal::bridge::decrypt_message | ( | const std::string & | rdx, |
| const std::vector< uint8_t > & | bytes | ||
| ) | const -> decryption_result |
Decrypts an incoming message.
| rdx | Sender's RDX fingerprint or Nostr pubkey (peer hint) |
| bytes | Encrypted message bytes |
| auto radix_relay::signal::bridge::delete_conversation | ( | const std::string & | rdx_fingerprint | ) | const -> void |
Deletes an entire conversation and all its messages.
| rdx_fingerprint | Contact's RDX fingerprint |
| auto radix_relay::signal::bridge::delete_message | ( | std::int64_t | message_id | ) | const -> void |
Deletes a specific message from history.
| message_id | Database ID of the message to delete |
| auto radix_relay::signal::bridge::encrypt_message | ( | const std::string & | rdx, |
| const std::vector< uint8_t > & | bytes | ||
| ) | const -> std::vector< uint8_t > |
Encrypts a message for a peer.
| rdx | Recipient's RDX fingerprint or Nostr pubkey |
| bytes | Plaintext message bytes |
| auto radix_relay::signal::bridge::extract_rdx_from_bundle_base64 | ( | const std::string & | bundle_base64 | ) | const -> std::string |
Extracts RDX fingerprint from a prekey bundle.
| bundle_base64 | Base64-encoded prekey bundle |
| auto radix_relay::signal::bridge::generate_empty_bundle_announcement | ( | const std::string & | version | ) | const -> std::string |
Generates an empty bundle announcement for unpublishing.
| version | Protocol version string |
| auto radix_relay::signal::bridge::generate_prekey_bundle_announcement | ( | const std::string & | version | ) | const -> bundle_info |
Generates a signed prekey bundle announcement.
| version | Protocol version string |
| auto radix_relay::signal::bridge::get_conversation_messages | ( | const std::string & | rdx_fingerprint, |
| std::uint32_t | limit, | ||
| std::uint32_t | offset | ||
| ) | const -> std::vector< stored_message > |
Retrieves messages from a conversation with pagination.
| rdx_fingerprint | Contact's RDX fingerprint |
| limit | Maximum number of messages to retrieve |
| offset | Number of messages to skip (for pagination) |
| auto radix_relay::signal::bridge::get_conversations | ( | bool | include_archived | ) | const -> std::vector< conversation > |
Retrieves all conversations ordered by most recent message.
| include_archived | Whether to include archived conversations |
| auto radix_relay::signal::bridge::get_node_fingerprint | ( | ) | const -> std::string |
Returns this node's RDX fingerprint.
| auto radix_relay::signal::bridge::get_unread_count | ( | const std::string & | rdx_fingerprint | ) | const -> std::uint32_t |
Gets the number of unread messages in a conversation.
| rdx_fingerprint | Contact's RDX fingerprint |
| auto radix_relay::signal::bridge::list_contacts | ( | ) | const -> std::vector< core::contact_info > |
Lists all known contacts.
| auto radix_relay::signal::bridge::lookup_contact | ( | const std::string & | alias | ) | const -> core::contact_info |
Looks up a contact by RDX fingerprint or alias.
| alias | Contact identifier (RDX fingerprint or user alias) |
| std::runtime_error | if contact not found |
| auto radix_relay::signal::bridge::mark_conversation_read | ( | const std::string & | rdx_fingerprint | ) | const -> void |
Marks all messages in a conversation as read.
| rdx_fingerprint | Contact's RDX fingerprint |
| auto radix_relay::signal::bridge::perform_key_maintenance | ( | ) | const -> key_maintenance_result |
Performs periodic key maintenance and rotation.
| auto radix_relay::signal::bridge::record_published_bundle | ( | std::uint32_t | pre_key_id, |
| std::uint32_t | signed_pre_key_id, | ||
| std::uint32_t | kyber_pre_key_id | ||
| ) | const -> void |
Records published prekey bundle to track used keys.
| pre_key_id | One-time prekey ID |
| signed_pre_key_id | Signed prekey ID |
| kyber_pre_key_id | Kyber prekey ID |
| auto radix_relay::signal::bridge::sign_nostr_event | ( | const std::string & | event_json | ) | const -> std::string |
Signs a Nostr event with node's private key.
| event_json | Unsigned event JSON |
| auto radix_relay::signal::bridge::update_last_message_timestamp | ( | std::uint64_t | timestamp | ) | const -> void |
Updates the timestamp of the last received message.
| timestamp | Unix timestamp |