ascii-chat 0.6.0
Real-time terminal-based video chat with ASCII art conversion
Loading...
Searching...
No Matches
acds_client.h
Go to the documentation of this file.
1#pragma once
2
31#include <stdint.h>
32#include <stdbool.h>
33#include "asciichat_errno.h"
34#include "platform/socket.h"
35#include "network/acip/acds.h"
36
37// ============================================================================
38// ACDS Client Configuration
39// ============================================================================
40
44typedef struct {
45 char server_address[256];
49
58
59// ============================================================================
60// Connection Management
61// ============================================================================
62
73
82
83// ============================================================================
84// Session Management
85// ============================================================================
86
90typedef struct {
91 uint8_t identity_pubkey[32];
92 uint8_t identity_seckey[64];
96 char password[128];
99 const char *reserved_string;
100 char server_address[64];
103
107typedef struct {
108 char session_string[49];
112
125
145
156asciichat_error_t acds_session_lookup(acds_client_t *client, const char *session_string,
158
162typedef struct {
163 const char *session_string;
164 uint8_t identity_pubkey[32];
165 uint8_t identity_seckey[64];
167 char password[128];
169
186
199
200// ============================================================================
201// Cryptographic Signature Helpers
202// ============================================================================
203
216asciichat_error_t acds_sign_session_create(const uint8_t identity_seckey[64], uint64_t timestamp, uint8_t capabilities,
217 uint8_t max_participants, uint8_t signature_out[64]);
218
231asciichat_error_t acds_verify_session_create(const uint8_t identity_pubkey[32], uint64_t timestamp,
232 uint8_t capabilities, uint8_t max_participants,
233 const uint8_t signature[64]);
234
246asciichat_error_t acds_sign_session_join(const uint8_t identity_seckey[64], uint64_t timestamp,
247 const char *session_string, uint8_t signature_out[64]);
248
260asciichat_error_t acds_verify_session_join(const uint8_t identity_pubkey[32], uint64_t timestamp,
261 const char *session_string, const uint8_t signature[64]);
262
272bool acds_validate_timestamp(uint64_t timestamp_ms, uint32_t window_seconds);
273
274// ============================================================================
275// Helper Functions
276// ============================================================================
277
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.
Definition acds_client.c:38
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.
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.
Definition acds_client.c:53
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.
⚠️‼️ Error and/or exit() when things go bad.
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:46
int socket_t
Socket handle type (POSIX: int)
Definition socket.h:50
ASCII-Chat Discovery Service (ACDS) Protocol Message Formats.
Cross-platform socket interface for ascii-chat.
uint8_t session_id[16]
uint8_t participant_id[16]
ACDS client connection configuration.
Definition acds_client.h:44
uint32_t timeout_ms
Connection timeout in milliseconds.
Definition acds_client.h:47
uint16_t server_port
ACDS server port (default: 27225)
Definition acds_client.h:46
ACDS client connection handle.
Definition acds_client.h:53
acds_client_config_t config
Definition acds_client.h:54
bool connected
Connection status.
Definition acds_client.h:56
socket_t socket
TCP socket to ACDS server.
Definition acds_client.h:55
Session creation request parameters.
Definition acds_client.h:90
const char * reserved_string
Optional reserved string (NULL = auto-generate)
Definition acds_client.h:99
uint16_t server_port
Server port where clients should connect.
bool acds_expose_ip
Explicitly allow public IP disclosure (–acds-expose-ip opt-in)
Definition acds_client.h:97
uint8_t max_participants
Maximum participants (1-8)
Definition acds_client.h:94
bool has_password
Password protection enabled.
Definition acds_client.h:95
uint8_t capabilities
Bit 0: video, Bit 1: audio.
Definition acds_client.h:93
uint8_t session_type
acds_session_type_t: 0=DIRECT_TCP (default), 1=WEBRTC
Definition acds_client.h:98
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.