ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
acds_client.h
Go to the documentation of this file.
1#pragma once
2
93#include <stdint.h>
94#include <stdbool.h>
95#include "../../asciichat_errno.h"
96#include "../../platform/socket.h"
97#include "../../network/acip/acds.h"
98#include "../../crypto/handshake/common.h"
99#include "../../network/acip/transport.h"
100
101// ============================================================================
102// ACDS Client Configuration
103// ============================================================================
104
105// Forward declaration of callback type from parallel_connect.h
106typedef bool (*parallel_connect_should_exit_fn)(void *user_data);
107
111typedef struct {
112 char server_address[256];
115
116 // Optional: callback to check if connection should be abandoned (e.g., shutdown signal)
120
131
132// ============================================================================
133// Connection Management
134// ============================================================================
135
146
155
156// ============================================================================
157// Session Management
158// ============================================================================
159
163typedef struct {
164 uint8_t identity_pubkey[32];
165 uint8_t identity_seckey[64];
169 char password[128];
172 const char *reserved_string;
173 char server_address[64];
176
180typedef struct {
181 char session_string[49];
185
198
218
229asciichat_error_t acds_session_lookup(acds_client_t *client, const char *session_string,
231
235typedef struct {
236 const char *session_string;
237 uint8_t identity_pubkey[32];
238 uint8_t identity_seckey[64];
240 char password[128];
242
259
272
273// ============================================================================
274// Cryptographic Signature Helpers
275// ============================================================================
276
289asciichat_error_t acds_sign_session_create(const uint8_t identity_seckey[64], uint64_t timestamp, uint8_t capabilities,
290 uint8_t max_participants, uint8_t signature_out[64]);
291
304asciichat_error_t acds_verify_session_create(const uint8_t identity_pubkey[32], uint64_t timestamp,
305 uint8_t capabilities, uint8_t max_participants,
306 const uint8_t signature[64]);
307
319asciichat_error_t acds_sign_session_join(const uint8_t identity_seckey[64], uint64_t timestamp,
320 const char *session_string, uint8_t signature_out[64]);
321
333asciichat_error_t acds_verify_session_join(const uint8_t identity_pubkey[32], uint64_t timestamp,
334 const char *session_string, const uint8_t signature[64]);
335
345bool acds_validate_timestamp(uint64_t timestamp_ms, uint32_t window_seconds);
346
347// ============================================================================
348// Helper Functions
349// ============================================================================
350
asciichat_error_t acds_verify_session_create(const uint8_t identity_pubkey[32], uint64_t timestamp, uint8_t capabilities, uint8_t max_participants, const uint8_t signature[64])
Verify SESSION_CREATE signature.
asciichat_error_t acds_session_lookup(acds_client_t *client, const char *session_string, acds_session_lookup_result_t *result)
Look up session by string.
asciichat_error_t acds_verify_session_join(const uint8_t identity_pubkey[32], uint64_t timestamp, const char *session_string, const uint8_t signature[64])
Verify SESSION_JOIN signature.
void acds_client_config_init_defaults(acds_client_config_t *config)
Initialize ACDS client configuration with defaults.
asciichat_error_t acds_session_create(acds_client_t *client, const acds_session_create_params_t *params, acds_session_create_result_t *result)
Create a new session on the discovery server.
asciichat_error_t acds_sign_session_join(const uint8_t identity_seckey[64], uint64_t timestamp, const char *session_string, uint8_t signature_out[64])
Sign a SESSION_JOIN message.
bool(* parallel_connect_should_exit_fn)(void *user_data)
asciichat_error_t acds_session_join(acds_client_t *client, const acds_session_join_params_t *params, acds_session_join_result_t *result)
Join an existing session.
bool acds_validate_timestamp(uint64_t timestamp_ms, uint32_t window_seconds)
Check if timestamp is within acceptable window.
asciichat_error_t acds_client_connect(acds_client_t *client, const acds_client_config_t *config)
Connect to ACDS server.
asciichat_error_t acds_sign_session_create(const uint8_t identity_seckey[64], uint64_t timestamp, uint8_t capabilities, uint8_t max_participants, uint8_t signature_out[64])
Sign a SESSION_CREATE message.
void acds_client_disconnect(acds_client_t *client)
Disconnect from ACDS server.
unsigned short uint16_t
Definition common.h:57
unsigned int uint32_t
Definition common.h:58
unsigned long long uint64_t
Definition common.h:59
unsigned char uint8_t
Definition common.h:56
asciichat_error_t
Error and exit codes - unified status values (0-255)
Definition error_codes.h:49
int socket_t
uint8_t session_id[16]
uint8_t participant_id[16]
ClangTool/LibTooling compatibility shim for stdbool.h.
#define bool
Definition stdbool.h:61
ACDS client connection configuration.
uint32_t timeout_ms
Connection timeout in milliseconds.
uint16_t server_port
ACDS server port (default: 27225)
parallel_connect_should_exit_fn should_exit_callback
ACDS client connection handle.
acds_client_config_t config
bool connected
Connection status.
crypto_handshake_context_t handshake_ctx
ACDS crypto handshake state.
acip_transport_t * transport
Transport used for the initial crypto handshake.
socket_t socket
TCP socket to ACDS server.
Session creation request parameters.
const char * reserved_string
Optional reserved string (NULL = auto-generate)
uint16_t server_port
Server port where clients should connect.
bool acds_expose_ip
Explicitly allow public IP disclosure (–acds-expose-ip opt-in)
uint8_t max_participants
Maximum participants (1-8)
bool has_password
Password protection enabled.
uint8_t capabilities
Bit 0: video, Bit 1: audio.
uint8_t session_type
acds_session_type_t: 0=DIRECT_TCP (default), 1=WEBRTC
Session creation result.
uint64_t expires_at
Expiration timestamp (Unix ms)
Session join parameters.
bool has_password
Password provided.
const char * session_string
Session to join.
Session join result.
uint8_t error_code
Error code (if !success)
uint8_t session_type
acds_session_type_t: 0=DIRECT_TCP, 1=WEBRTC (if success)
bool success
Join succeeded.
uint16_t server_port
Server port (if success)
Session lookup result.
uint8_t capabilities
Session capabilities.
bool found
Session exists.
bool require_client_verify
ACDS policy: client must verify server identity.
bool has_password
Password required to join.
uint64_t expires_at
Expiration timestamp (Unix ms)
uint8_t max_participants
Maximum participants.
bool require_server_verify
ACDS policy: server must verify client identity.
uint64_t created_at
Creation timestamp (Unix ms)
uint8_t current_participants
Current participant count.
Transport instance structure.
Definition transport.h:214
Cryptographic handshake context structure.