cgosling
cgosling.h
Go to the documentation of this file.
1 // libgosling header is autogenerated, do not modify
2 #ifndef LIBCGOSLING_H
3 #define LIBCGOSLING_H
4 
5 // gosling platform defines derived from: https://loumalouomega.github.io/OSPreprocessor/
6 #if (defined(_WIN32) || defined(_WIN64))
7 # define GOSLING_PLATFORM_WINDOWS
8 #elif (defined(__linux__) || defined(__linux) || defined(linux) || defined(__gnu_linux__))
9 # define GOSLING_PLATFORM_LINUX
10 #elif (defined(__APPLE__) && defined(__MACH__))
11 # define GOSLING_PLATFORM_MACOS
12 #endif
13 
14 #include <stdarg.h>
15 #include <stdbool.h>
16 #include <stddef.h>
17 #include <stdint.h>
18 #include <stdlib.h>
19 #include <assert.h>
20 
21 // per-platform includes
22 #if defined(GOSLING_PLATFORM_WINDOWS)
23 # include <winsock2.h>
24 #elif defined(GOSLING_PLATFORM_LINUX) || defined(GOSLING_PLATFORM_MACOS)
25 # include <sys/socket.h>
26 #endif
27 
31  #undef GOSLING_HAVE_ARTI_CLIENT_TOR_PROVIDER
35  #define GOSLING_HAVE_LEGACY_TOR_PROVIDER 1
39  #define GOSLING_HAVE_MOCK_TOR_PROVIDER 1
40 
49 #define TARGET_ADDRESS_STRING_SIZE 260
53 #define V3_ONION_SERVICE_ID_STRING_LENGTH 56
57 #define V3_ONION_SERVICE_ID_STRING_SIZE 57
61 #define ED25519_PRIVATE_KEYBLOB_BASE64_LENGTH 88
65 #define ED25519_PRIVATE_KEY_KEYBLOB_HEADER_LENGTH 11
69 #define ED25519_PRIVATE_KEY_KEYBLOB_LENGTH 99
73 #define ED25519_PRIVATE_KEY_KEYBLOB_SIZE 100
77 #define X25519_PRIVATE_KEY_BASE64_LENGTH 44
81 #define X25519_PRIVATE_KEY_BASE64_SIZE 45
85 #define X25519_PUBLIC_KEY_BASE32_LENGTH 52
89 #define X25519_PUBLIC_KEY_BASE32_SIZE 53
90 
94 enum {
144 };
145 
153 typedef struct gosling_context gosling_context;
161 typedef struct gosling_error gosling_error;
169 typedef struct gosling_library gosling_library;
213 typedef size_t gosling_circuit_token_t;
214 
227 typedef void(*gosling_tor_bootstrap_status_received_callback_t)(gosling_context* context, uint32_t progress, const char* tag, size_t tag_length, const char* summary, size_t summary_length);
243 typedef void(*gosling_tor_log_received_callback_t)(gosling_context* context, const char* line, size_t line_length);
258 typedef size_t(*gosling_identity_client_handshake_challenge_response_size_callback_t)(gosling_context* context, gosling_handshake_handle_t handshake_handle, const uint8_t* challenge_buffer, size_t challenge_buffer_size);
275 typedef void(*gosling_identity_client_handshake_build_challenge_response_callback_t)(gosling_context* context, gosling_handshake_handle_t handshake_handle, const uint8_t* challenge_buffer, size_t challenge_buffer_size, uint8_t* out_challenge_response_buffer, size_t out_challenge_response_buffer_size);
293 typedef void(*gosling_identity_client_handshake_completed_callback_t)(gosling_context* context, gosling_handshake_handle_t handshake_handle, const gosling_v3_onion_service_id* identity_service_id, const gosling_v3_onion_service_id* endpoint_service_id, const char* endpoint_name, size_t endpoint_name_length, const gosling_x25519_private_key* client_auth_private_key);
346 typedef bool(*gosling_identity_server_endpoint_supported_callback_t)(gosling_context* context, gosling_handshake_handle_t handshake_handle, const char* endpoint_name, size_t endpoint_name_length);
368 typedef void(*gosling_identity_server_handshake_build_challenge_callback_t)(gosling_context* context, gosling_handshake_handle_t handshake_handle, uint8_t* out_challenge_buffer, size_t out_challenge_buffer_size);
382 typedef bool(*gosling_identity_server_handshake_verify_challenge_response_callback_t)(gosling_context* context, gosling_handshake_handle_t handshake_handle, const uint8_t* challenge_response_buffer, size_t challenge_response_buffer_size);
400 typedef void(*gosling_identity_server_handshake_completed_callback_t)(gosling_context* context, gosling_handshake_handle_t handshake_handle, const gosling_ed25519_private_key* endpoint_private_key, const char* endpoint_name, size_t endpoint_name_length, const gosling_v3_onion_service_id* client_service_id, const gosling_x25519_public_key* client_auth_public_key);
418 typedef void(*gosling_identity_server_handshake_rejected_callback_t)(gosling_context* context, gosling_handshake_handle_t handshake_handle, bool client_allowed, bool client_requested_endpoint_valid, bool client_proof_signature_valid, bool client_auth_signature_valid, bool challenge_response_valid);
443 typedef void(*gosling_endpoint_client_handshake_completed_callback_t)(gosling_context* context, gosling_handshake_handle_t handshake_handle, const gosling_v3_onion_service_id* endpoint_service_id, const char* channel_name, size_t channel_name_length, gosling_tcp_socket_t stream);
464 typedef void(*gosling_endpoint_server_published_callback_t)(gosling_context* context, const gosling_v3_onion_service_id* endpoint_service_id, const char* endpoint_name, size_t endpoint_name_length);
489 typedef bool(*gosling_endpoint_server_channel_supported_callback_t)(gosling_context* context, gosling_handshake_handle_t handshake_handle, const gosling_v3_onion_service_id* client_service_id, const char* channel_name, size_t channel_name_length);
506 typedef void(*gosling_endpoint_server_handshake_completed_callback_t)(gosling_context* context, gosling_handshake_handle_t handshake_handle, const gosling_v3_onion_service_id* endpoint_service_id, const gosling_v3_onion_service_id* client_service_id, const char* channel_name, size_t channel_name_length, gosling_tcp_socket_t stream);
520 typedef void(*gosling_endpoint_server_handshake_rejected_callback_t)(gosling_context* context, gosling_handshake_handle_t handshake_handle, bool client_allowed, bool client_requested_channel_valid, bool client_proof_signature_valid);
530 
531 #ifdef __cplusplus
532 extern "C" {
533 #endif // __cplusplus
534 
753 void gosling_context_init(gosling_context** out_context, gosling_tor_provider* in_tor_provider, uint16_t identity_port, uint16_t endpoint_port, const gosling_ed25519_private_key* identity_private_key, gosling_error** error);
787 void gosling_context_start_endpoint_server(gosling_context* context, const gosling_ed25519_private_key* endpoint_private_key, const char* endpoint_name, size_t endpoint_name_length, const gosling_v3_onion_service_id* client_identity, const gosling_x25519_public_key* client_auth_public_key, gosling_error** error);
806 gosling_handshake_handle_t gosling_context_begin_identity_handshake(gosling_context* context, const gosling_v3_onion_service_id* identity_service_id, const char* endpoint_name, size_t endpoint_name_length, gosling_error** error);
826 gosling_handshake_handle_t gosling_context_begin_endpoint_handshake(gosling_context* context, const gosling_v3_onion_service_id* endpoint_service_id, const gosling_x25519_private_key* client_auth_private_key, const char* channel_name, size_t channel_name_length, gosling_error** error);
915 void gosling_ed25519_private_key_from_keyblob(gosling_ed25519_private_key** out_private_key, const char* key_blob, size_t key_blob_length, gosling_error** error);
927 void gosling_ed25519_private_key_to_keyblob(const gosling_ed25519_private_key* private_key, char* out_key_blob, size_t key_blob_size, gosling_error** error);
937 void gosling_x25519_private_key_from_base64(gosling_x25519_private_key** out_private_key, const char* base64, size_t base64_length, gosling_error** error);
948 void gosling_x25519_private_key_to_base64(const gosling_x25519_private_key* private_key, char* out_base64, size_t base64_size, gosling_error** error);
958 void gosling_x25519_public_key_from_base32(gosling_x25519_public_key** out_public_key, const char* base32, size_t base32_length, gosling_error** error);
969 void gosling_x25519_public_key_to_base32(const gosling_x25519_public_key* public_key, char* out_base32, size_t base32_size, gosling_error** error);
980 void gosling_v3_onion_service_id_from_string(gosling_v3_onion_service_id** out_service_id, const char* service_id_string, size_t service_id_string_length, gosling_error** error);
1000 void gosling_v3_onion_service_id_to_string(const gosling_v3_onion_service_id* service_id, char* out_service_id_string, size_t service_id_string_size, gosling_error** error);
1010 bool gosling_string_is_valid_v3_onion_service_id(const char* service_id_string, size_t service_id_string_length, gosling_error** error);
1018 const char* gosling_error_get_message(const gosling_error* error);
1026 void gosling_error_clone(gosling_error** out_error, const gosling_error* orig_error, gosling_error** error);
1086 void gosling_proxy_config_new_socks4(gosling_proxy_config** out_proxy_config, const gosling_target_address* proxy_address, gosling_error** error);
1100 void gosling_proxy_config_new_socks5(gosling_proxy_config** out_proxy_config, const gosling_target_address* proxy_address, const char* username, size_t username_length, const char* password, size_t password_length, gosling_error** error);
1114 void gosling_proxy_config_new_https(gosling_proxy_config** out_proxy_config, const gosling_target_address* proxy_address, const char* username, size_t username_length, const char* password, size_t password_length, gosling_error** error);
1128 void gosling_pluggable_transport_config_new(gosling_pluggable_transport_config** out_pluggable_transport_config, const char* transports, size_t transports_length, const char* path_to_binary, size_t path_to_binary_length, gosling_error** error);
1138 void gosling_pluggable_transport_config_add_cmdline_option(gosling_pluggable_transport_config* pluggable_transport_config, const char* option, size_t option_length, gosling_error** error);
1149 void gosling_bridge_line_from_string(gosling_bridge_line** out_bridge_line, const char* bridge_line, size_t bridge_line_length, gosling_error** error);
1169 void gosling_tor_provider_config_new_bundled_legacy_client_config(gosling_tor_provider_config** out_tor_provider_config, const char* tor_bin_path, size_t tor_bin_path_length, const char* tor_working_directory, size_t tor_working_directory_length, gosling_error** error);
1183 void gosling_tor_provider_config_new_system_legacy_client_config(gosling_tor_provider_config** out_tor_provider_config, const gosling_ip_address* tor_socks_host, uint16_t tor_socks_port, const gosling_ip_address* tor_control_host, uint16_t tor_control_port, const char* tor_control_passwd, size_t tor_control_passwd_length, gosling_error** error);
1208 void gosling_tor_provider_config_set_allowed_ports(gosling_tor_provider_config* tor_provider_config, const uint16_t* allowed_ports, size_t allowed_ports_count, gosling_error** error);
1265 void gosling_ip_address_clone(gosling_ip_address** out_ip_address, const gosling_ip_address* ip_address, gosling_error** error);
1273 void gosling_target_address_clone(gosling_target_address** out_target_address, const gosling_target_address* target_address, gosling_error** error);
1283 void gosling_context_connect(gosling_context* context, gosling_tcp_socket_t* out_tcp_socket, const gosling_target_address* target_address, gosling_circuit_token_t circuit_token, gosling_error** error);
1294 void gosling_ip_address_from_ipv4(gosling_ip_address** out_ip_address, uint8_t a, uint8_t b, uint8_t c, uint8_t d, gosling_error** error);
1309 void gosling_ip_address_from_ipv6(gosling_ip_address** out_ip_address, uint16_t a, uint16_t b, uint16_t c, uint16_t d, uint16_t e, uint16_t f, uint16_t g, uint16_t h, gosling_error** error);
1318 void gosling_target_address_from_ip_address(gosling_target_address** out_target_address, const gosling_ip_address* ip_address, uint16_t port, gosling_error** error);
1329 void gosling_target_address_from_domain(gosling_target_address** out_target_address, const char* domain, size_t domain_length, uint16_t port, gosling_error** error);
1338 void gosling_target_address_from_v3_onion_service_id(gosling_target_address** out_target_address, const gosling_v3_onion_service_id* service_id, uint16_t port, gosling_error** error);
1347 void gosling_target_address_from_string(gosling_target_address** out_target_address, const char* target_address, size_t target_address_length, gosling_error** error);
1357 void gosling_target_address_to_string(const gosling_target_address* target_address, char* out_target_address_string, size_t target_address_string_size, gosling_error** error);
1373 
1374 #ifdef __cplusplus
1375 }
1376 #endif // __cplusplus
1377 
1378 #endif // LIBCGOSLING_H
void(* gosling_identity_client_handshake_failed_callback_t)(gosling_context *context, gosling_handshake_handle_t handshake_handle, const gosling_error *error)
Definition: cgosling.h:302
void gosling_target_address_from_string(gosling_target_address **out_target_address, const char *target_address, size_t target_address_length, gosling_error **error)
@ ed25519_private_key_keyblob_header_length
Definition: cgosling.h:119
@ ed25519_private_key_keyblob_length
Definition: cgosling.h:123
@ v3_onion_service_id_string_length
Definition: cgosling.h:107
@ x25519_private_key_base64_length
Definition: cgosling.h:131
@ x25519_public_key_base32_size
Definition: cgosling.h:143
@ v3_onion_service_id_string_size
Definition: cgosling.h:111
@ target_address_string_size
Definition: cgosling.h:103
@ ed25519_private_keyblob_base64_length
Definition: cgosling.h:115
@ x25519_private_key_base64_size
Definition: cgosling.h:135
@ x25519_public_key_base32_length
Definition: cgosling.h:139
@ ed25519_private_key_keyblob_size
Definition: cgosling.h:127
struct gosling_x25519_public_key gosling_x25519_public_key
Definition: cgosling.h:201
gosling_circuit_token_t gosling_context_generate_circuit_token(gosling_context *context, gosling_error **error)
void gosling_context_set_identity_server_handshake_failed_callback(gosling_context *context, gosling_identity_server_handshake_failed_callback_t callback, gosling_error **error)
void(* gosling_endpoint_server_handshake_failed_callback_t)(gosling_context *context, gosling_handshake_handle_t handshake_handle, const gosling_error *error)
Definition: cgosling.h:529
void gosling_context_connect(gosling_context *context, gosling_tcp_socket_t *out_tcp_socket, const gosling_target_address *target_address, gosling_circuit_token_t circuit_token, gosling_error **error)
int gosling_tcp_socket_t
Definition: cgosling.h:209
size_t gosling_circuit_token_t
Definition: cgosling.h:213
void gosling_x25519_public_key_from_base32(gosling_x25519_public_key **out_public_key, const char *base32, size_t base32_length, gosling_error **error)
void(* gosling_identity_server_handshake_started_callback_t)(gosling_context *context, gosling_handshake_handle_t handshake_handle)
Definition: cgosling.h:318
void gosling_tor_provider_config_set_proxy_config(gosling_tor_provider_config *tor_provider_config, const gosling_proxy_config *proxy_config, gosling_error **error)
const char * gosling_error_get_message(const gosling_error *error)
void gosling_error_clone(gosling_error **out_error, const gosling_error *orig_error, gosling_error **error)
struct gosling_ed25519_private_key gosling_ed25519_private_key
Definition: cgosling.h:157
void gosling_proxy_config_new_socks4(gosling_proxy_config **out_proxy_config, const gosling_target_address *proxy_address, gosling_error **error)
void gosling_v3_onion_service_id_from_ed25519_private_key(gosling_v3_onion_service_id **out_service_id, const gosling_ed25519_private_key *ed25519_private_key, gosling_error **error)
void gosling_proxy_config_new_https(gosling_proxy_config **out_proxy_config, const gosling_target_address *proxy_address, const char *username, size_t username_length, const char *password, size_t password_length, gosling_error **error)
void gosling_context_init(gosling_context **out_context, gosling_tor_provider *in_tor_provider, uint16_t identity_port, uint16_t endpoint_port, const gosling_ed25519_private_key *identity_private_key, gosling_error **error)
void gosling_context_set_tor_log_received_callback(gosling_context *context, gosling_tor_log_received_callback_t callback, gosling_error **error)
void gosling_error_free(gosling_error *error)
void gosling_context_start_identity_server(gosling_context *context, gosling_error **error)
void gosling_target_address_free(gosling_target_address *in_target_address)
void gosling_library_init(gosling_library **out_library, gosling_error **error)
void gosling_v3_onion_service_id_to_string(const gosling_v3_onion_service_id *service_id, char *out_service_id_string, size_t service_id_string_size, gosling_error **error)
bool(* gosling_endpoint_server_channel_supported_callback_t)(gosling_context *context, gosling_handshake_handle_t handshake_handle, const gosling_v3_onion_service_id *client_service_id, const char *channel_name, size_t channel_name_length)
Definition: cgosling.h:489
void gosling_v3_onion_service_id_from_string(gosling_v3_onion_service_id **out_service_id, const char *service_id_string, size_t service_id_string_length, gosling_error **error)
void gosling_v3_onion_service_id_free(gosling_v3_onion_service_id *in_service_id)
struct gosling_proxy_config gosling_proxy_config
Definition: cgosling.h:177
void gosling_x25519_private_key_clone(gosling_x25519_private_key **out_private_key, const gosling_x25519_private_key *private_key, gosling_error **error)
void gosling_context_set_endpoint_server_channel_supported_callback(gosling_context *context, gosling_endpoint_server_channel_supported_callback_t callback, gosling_error **error)
void(* gosling_identity_server_handshake_failed_callback_t)(gosling_context *context, gosling_handshake_handle_t handshake_handle, const gosling_error *error)
Definition: cgosling.h:427
struct gosling_ip_address gosling_ip_address
Definition: cgosling.h:165
struct gosling_context gosling_context
Definition: cgosling.h:153
void(* gosling_identity_client_handshake_build_challenge_response_callback_t)(gosling_context *context, gosling_handshake_handle_t handshake_handle, const uint8_t *challenge_buffer, size_t challenge_buffer_size, uint8_t *out_challenge_response_buffer, size_t out_challenge_response_buffer_size)
Definition: cgosling.h:275
void gosling_context_set_endpoint_server_handshake_started_callback(gosling_context *context, gosling_endpoint_server_handshake_started_callback_t callback, gosling_error **error)
void gosling_tor_provider_config_new_bundled_legacy_client_config(gosling_tor_provider_config **out_tor_provider_config, const char *tor_bin_path, size_t tor_bin_path_length, const char *tor_working_directory, size_t tor_working_directory_length, gosling_error **error)
void gosling_context_set_endpoint_server_published_callback(gosling_context *context, gosling_endpoint_server_published_callback_t callback, gosling_error **error)
void gosling_library_free(gosling_library *in_library)
void(* gosling_endpoint_client_handshake_completed_callback_t)(gosling_context *context, gosling_handshake_handle_t handshake_handle, const gosling_v3_onion_service_id *endpoint_service_id, const char *channel_name, size_t channel_name_length, gosling_tcp_socket_t stream)
Definition: cgosling.h:443
void gosling_proxy_config_free(gosling_proxy_config *in_proxy_config)
bool(* gosling_identity_server_endpoint_supported_callback_t)(gosling_context *context, gosling_handshake_handle_t handshake_handle, const char *endpoint_name, size_t endpoint_name_length)
Definition: cgosling.h:346
void gosling_ip_address_clone(gosling_ip_address **out_ip_address, const gosling_ip_address *ip_address, gosling_error **error)
void(* gosling_endpoint_client_handshake_failed_callback_t)(gosling_context *context, gosling_handshake_handle_t handshake_handle, const gosling_error *error)
Definition: cgosling.h:452
void gosling_context_stop_identity_server(gosling_context *context, gosling_error **error)
void gosling_tor_provider_free(gosling_tor_provider *in_tor_provider)
void gosling_context_set_tor_bootstrap_completed_callback(gosling_context *context, gosling_tor_bootstrap_completed_callback_t callback, gosling_error **error)
void gosling_tor_provider_config_add_pluggable_transport_config(gosling_tor_provider_config *tor_provider_config, const gosling_pluggable_transport_config *pluggable_transport_config, gosling_error **error)
void(* gosling_endpoint_server_handshake_completed_callback_t)(gosling_context *context, gosling_handshake_handle_t handshake_handle, const gosling_v3_onion_service_id *endpoint_service_id, const gosling_v3_onion_service_id *client_service_id, const char *channel_name, size_t channel_name_length, gosling_tcp_socket_t stream)
Definition: cgosling.h:506
void gosling_context_set_identity_server_challenge_size_callback(gosling_context *context, gosling_identity_server_handshake_challenge_size_callback_t callback, gosling_error **error)
size_t gosling_handshake_handle_t
Definition: cgosling.h:205
struct gosling_bridge_line gosling_bridge_line
Definition: cgosling.h:149
void gosling_context_set_identity_client_handshake_completed_callback(gosling_context *context, gosling_identity_client_handshake_completed_callback_t callback, gosling_error **error)
void gosling_context_set_identity_server_handshake_rejected_callback(gosling_context *context, gosling_identity_server_handshake_rejected_callback_t callback, gosling_error **error)
void(* gosling_identity_server_handshake_rejected_callback_t)(gosling_context *context, gosling_handshake_handle_t handshake_handle, bool client_allowed, bool client_requested_endpoint_valid, bool client_proof_signature_valid, bool client_auth_signature_valid, bool challenge_response_valid)
Definition: cgosling.h:418
void gosling_pluggable_transport_config_free(gosling_pluggable_transport_config *in_pluggable_transport_config)
void gosling_x25519_public_key_free(gosling_x25519_public_key *in_public_key)
void gosling_bridge_line_free(gosling_bridge_line *in_bridge_line)
void gosling_context_abort_endpoint_client_handshake(gosling_context *context, gosling_handshake_handle_t handshake_handle, gosling_error **error)
void gosling_x25519_private_key_to_base64(const gosling_x25519_private_key *private_key, char *out_base64, size_t base64_size, gosling_error **error)
void gosling_context_set_identity_server_published_callback(gosling_context *context, gosling_identity_server_published_callback_t callback, gosling_error **error)
void gosling_ed25519_private_key_free(gosling_ed25519_private_key *in_private_key)
struct gosling_target_address gosling_target_address
Definition: cgosling.h:181
void gosling_pluggable_transport_config_new(gosling_pluggable_transport_config **out_pluggable_transport_config, const char *transports, size_t transports_length, const char *path_to_binary, size_t path_to_binary_length, gosling_error **error)
void gosling_ed25519_private_key_generate(gosling_ed25519_private_key **out_private_key, gosling_error **error)
void gosling_context_set_identity_client_challenge_response_size_callback(gosling_context *context, gosling_identity_client_handshake_challenge_response_size_callback_t callback, gosling_error **error)
void gosling_tor_provider_config_new_mock_client_config(gosling_tor_provider_config **out_tor_provider_config, gosling_error **error)
gosling_handshake_handle_t gosling_context_begin_identity_handshake(gosling_context *context, const gosling_v3_onion_service_id *identity_service_id, const char *endpoint_name, size_t endpoint_name_length, gosling_error **error)
void gosling_tor_provider_config_set_allowed_ports(gosling_tor_provider_config *tor_provider_config, const uint16_t *allowed_ports, size_t allowed_ports_count, gosling_error **error)
void gosling_context_abort_identity_client_handshake(gosling_context *context, gosling_handshake_handle_t handshake_handle, gosling_error **error)
void gosling_target_address_from_domain(gosling_target_address **out_target_address, const char *domain, size_t domain_length, uint16_t port, gosling_error **error)
void gosling_target_address_to_string(const gosling_target_address *target_address, char *out_target_address_string, size_t target_address_string_size, gosling_error **error)
void gosling_context_set_endpoint_server_handshake_completed_callback(gosling_context *context, gosling_endpoint_server_handshake_completed_callback_t callback, gosling_error **error)
void gosling_context_set_identity_server_build_challenge_callback(gosling_context *context, gosling_identity_server_handshake_build_challenge_callback_t callback, gosling_error **error)
void gosling_target_address_from_v3_onion_service_id(gosling_target_address **out_target_address, const gosling_v3_onion_service_id *service_id, uint16_t port, gosling_error **error)
void gosling_ed25519_private_key_from_keyblob(gosling_ed25519_private_key **out_private_key, const char *key_blob, size_t key_blob_length, gosling_error **error)
void(* gosling_identity_server_published_callback_t)(gosling_context *context)
Definition: cgosling.h:310
void gosling_context_set_identity_client_build_challenge_response_callback(gosling_context *context, gosling_identity_client_handshake_build_challenge_response_callback_t callback, gosling_error **error)
struct gosling_pluggable_transport_config gosling_pluggable_transport_config
Definition: cgosling.h:173
bool(* gosling_identity_server_handshake_client_allowed_callback_t)(gosling_context *context, gosling_handshake_handle_t handshake_handle, const gosling_v3_onion_service_id *client_service_id)
Definition: cgosling.h:330
void gosling_x25519_private_key_free(gosling_x25519_private_key *in_private_key)
void(* gosling_identity_client_handshake_completed_callback_t)(gosling_context *context, gosling_handshake_handle_t handshake_handle, const gosling_v3_onion_service_id *identity_service_id, const gosling_v3_onion_service_id *endpoint_service_id, const char *endpoint_name, size_t endpoint_name_length, const gosling_x25519_private_key *client_auth_private_key)
Definition: cgosling.h:293
void gosling_context_set_tor_bootstrap_status_received_callback(gosling_context *context, gosling_tor_bootstrap_status_received_callback_t callback, gosling_error **error)
void gosling_ip_address_free(gosling_ip_address *in_ip_address)
void gosling_x25519_private_key_from_base64(gosling_x25519_private_key **out_private_key, const char *base64, size_t base64_length, gosling_error **error)
void gosling_context_set_endpoint_client_handshake_failed_callback(gosling_context *context, gosling_endpoint_client_handshake_failed_callback_t callback, gosling_error **error)
void(* gosling_tor_bootstrap_completed_callback_t)(gosling_context *context)
Definition: cgosling.h:234
void gosling_ed25519_private_key_to_keyblob(const gosling_ed25519_private_key *private_key, char *out_key_blob, size_t key_blob_size, gosling_error **error)
void gosling_context_set_endpoint_server_handshake_failed_callback(gosling_context *context, gosling_endpoint_server_handshake_failed_callback_t callback, gosling_error **error)
void gosling_target_address_clone(gosling_target_address **out_target_address, const gosling_target_address *target_address, gosling_error **error)
void gosling_x25519_public_key_clone(gosling_x25519_public_key **out_public_key, const gosling_x25519_public_key *public_key, gosling_error **error)
struct gosling_tor_provider gosling_tor_provider
Definition: cgosling.h:185
void gosling_tor_provider_config_add_bridge_line(gosling_tor_provider_config *tor_provider_config, const gosling_bridge_line *bridge_line, gosling_error **error)
void gosling_context_poll_events(gosling_context *context, gosling_error **error)
void gosling_context_set_identity_server_handshake_started_callback(gosling_context *context, gosling_identity_server_handshake_started_callback_t callback, gosling_error **error)
void gosling_ip_address_from_ipv6(gosling_ip_address **out_ip_address, uint16_t a, uint16_t b, uint16_t c, uint16_t d, uint16_t e, uint16_t f, uint16_t g, uint16_t h, gosling_error **error)
void gosling_tor_provider_config_free(gosling_tor_provider_config *in_tor_provider_config)
void gosling_context_set_endpoint_client_handshake_completed_callback(gosling_context *context, gosling_endpoint_client_handshake_completed_callback_t callback, gosling_error **error)
void(* gosling_endpoint_server_published_callback_t)(gosling_context *context, const gosling_v3_onion_service_id *endpoint_service_id, const char *endpoint_name, size_t endpoint_name_length)
Definition: cgosling.h:464
void gosling_context_free(gosling_context *in_context)
bool gosling_string_is_valid_v3_onion_service_id(const char *service_id_string, size_t service_id_string_length, gosling_error **error)
void gosling_tor_provider_config_new_system_legacy_client_config(gosling_tor_provider_config **out_tor_provider_config, const gosling_ip_address *tor_socks_host, uint16_t tor_socks_port, const gosling_ip_address *tor_control_host, uint16_t tor_control_port, const char *tor_control_passwd, size_t tor_control_passwd_length, gosling_error **error)
void gosling_context_set_endpoint_server_handshake_rejected_callback(gosling_context *context, gosling_endpoint_server_handshake_rejected_callback_t callback, gosling_error **error)
void gosling_context_release_circuit_token(gosling_context *context, gosling_circuit_token_t circuit_token, gosling_error **error)
void gosling_context_stop_endpoint_server(gosling_context *context, const gosling_ed25519_private_key *endpoint_private_key, gosling_error **error)
bool(* gosling_identity_server_handshake_verify_challenge_response_callback_t)(gosling_context *context, gosling_handshake_handle_t handshake_handle, const uint8_t *challenge_response_buffer, size_t challenge_response_buffer_size)
Definition: cgosling.h:382
struct gosling_tor_provider_config gosling_tor_provider_config
Definition: cgosling.h:189
void(* gosling_endpoint_server_handshake_started_callback_t)(gosling_context *context, gosling_handshake_handle_t handshake_handle)
Definition: cgosling.h:472
void gosling_proxy_config_new_socks5(gosling_proxy_config **out_proxy_config, const gosling_target_address *proxy_address, const char *username, size_t username_length, const char *password, size_t password_length, gosling_error **error)
void gosling_ip_address_from_ipv4(gosling_ip_address **out_ip_address, uint8_t a, uint8_t b, uint8_t c, uint8_t d, gosling_error **error)
void(* gosling_identity_server_handshake_completed_callback_t)(gosling_context *context, gosling_handshake_handle_t handshake_handle, const gosling_ed25519_private_key *endpoint_private_key, const char *endpoint_name, size_t endpoint_name_length, const gosling_v3_onion_service_id *client_service_id, const gosling_x25519_public_key *client_auth_public_key)
Definition: cgosling.h:400
void gosling_pluggable_transport_config_add_cmdline_option(gosling_pluggable_transport_config *pluggable_transport_config, const char *option, size_t option_length, gosling_error **error)
void gosling_context_set_identity_server_handshake_completed_callback(gosling_context *context, gosling_identity_server_handshake_completed_callback_t callback, gosling_error **error)
void gosling_bridge_line_from_string(gosling_bridge_line **out_bridge_line, const char *bridge_line, size_t bridge_line_length, gosling_error **error)
void gosling_x25519_public_key_to_base32(const gosling_x25519_public_key *public_key, char *out_base32, size_t base32_size, gosling_error **error)
void(* gosling_identity_server_handshake_build_challenge_callback_t)(gosling_context *context, gosling_handshake_handle_t handshake_handle, uint8_t *out_challenge_buffer, size_t out_challenge_buffer_size)
Definition: cgosling.h:368
size_t(* gosling_identity_client_handshake_challenge_response_size_callback_t)(gosling_context *context, gosling_handshake_handle_t handshake_handle, const uint8_t *challenge_buffer, size_t challenge_buffer_size)
Definition: cgosling.h:258
void gosling_ed25519_private_key_clone(gosling_ed25519_private_key **out_private_key, const gosling_ed25519_private_key *private_key, gosling_error **error)
size_t(* gosling_identity_server_handshake_challenge_size_callback_t)(gosling_context *context, gosling_handshake_handle_t handshake_handle)
Definition: cgosling.h:356
void(* gosling_tor_log_received_callback_t)(gosling_context *context, const char *line, size_t line_length)
Definition: cgosling.h:243
struct gosling_library gosling_library
Definition: cgosling.h:169
void gosling_context_start_endpoint_server(gosling_context *context, const gosling_ed25519_private_key *endpoint_private_key, const char *endpoint_name, size_t endpoint_name_length, const gosling_v3_onion_service_id *client_identity, const gosling_x25519_public_key *client_auth_public_key, gosling_error **error)
void gosling_v3_onion_service_id_clone(gosling_v3_onion_service_id **out_service_id, const gosling_v3_onion_service_id *service_id, gosling_error **error)
void gosling_context_set_identity_client_handshake_failed_callback(gosling_context *context, gosling_identity_client_handshake_failed_callback_t callback, gosling_error **error)
void gosling_context_bootstrap_tor(gosling_context *context, gosling_error **error)
struct gosling_x25519_private_key gosling_x25519_private_key
Definition: cgosling.h:197
void gosling_tor_provider_from_tor_provider_config(gosling_tor_provider **out_tor_provider, const gosling_tor_provider_config *tor_provider_config, gosling_error **error)
void(* gosling_tor_bootstrap_status_received_callback_t)(gosling_context *context, uint32_t progress, const char *tag, size_t tag_length, const char *summary, size_t summary_length)
Definition: cgosling.h:227
void gosling_context_set_identity_server_client_allowed_callback(gosling_context *context, gosling_identity_server_handshake_client_allowed_callback_t callback, gosling_error **error)
void gosling_target_address_from_ip_address(gosling_target_address **out_target_address, const gosling_ip_address *ip_address, uint16_t port, gosling_error **error)
struct gosling_v3_onion_service_id gosling_v3_onion_service_id
Definition: cgosling.h:193
struct gosling_error gosling_error
Definition: cgosling.h:161
void(* gosling_endpoint_server_handshake_rejected_callback_t)(gosling_context *context, gosling_handshake_handle_t handshake_handle, bool client_allowed, bool client_requested_channel_valid, bool client_proof_signature_valid)
Definition: cgosling.h:520
gosling_handshake_handle_t gosling_context_begin_endpoint_handshake(gosling_context *context, const gosling_v3_onion_service_id *endpoint_service_id, const gosling_x25519_private_key *client_auth_private_key, const char *channel_name, size_t channel_name_length, gosling_error **error)
void gosling_context_set_identity_server_endpoint_supported_callback(gosling_context *context, gosling_identity_server_endpoint_supported_callback_t callback, gosling_error **error)
void gosling_context_set_identity_server_verify_challenge_response_callback(gosling_context *context, gosling_identity_server_handshake_verify_challenge_response_callback_t callback, gosling_error **error)