cgosling
|
#include <stdarg.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
#include <assert.h>
Go to the source code of this file.
Macros | |
#define | GOSLING_HAVE_LEGACY_TOR_PROVIDER 1 |
#define | GOSLING_HAVE_MOCK_TOR_PROVIDER 1 |
#define | TARGET_ADDRESS_STRING_SIZE 260 |
#define | V3_ONION_SERVICE_ID_STRING_LENGTH 56 |
#define | V3_ONION_SERVICE_ID_STRING_SIZE 57 |
#define | ED25519_PRIVATE_KEYBLOB_BASE64_LENGTH 88 |
#define | ED25519_PRIVATE_KEY_KEYBLOB_HEADER_LENGTH 11 |
#define | ED25519_PRIVATE_KEY_KEYBLOB_LENGTH 99 |
#define | ED25519_PRIVATE_KEY_KEYBLOB_SIZE 100 |
#define | X25519_PRIVATE_KEY_BASE64_LENGTH 44 |
#define | X25519_PRIVATE_KEY_BASE64_SIZE 45 |
#define | X25519_PUBLIC_KEY_BASE32_LENGTH 52 |
#define | X25519_PUBLIC_KEY_BASE32_SIZE 53 |
Enumerations | |
enum | { target_address_string_size = 260 , v3_onion_service_id_string_length = 56 , v3_onion_service_id_string_size = 57 , ed25519_private_keyblob_base64_length = 88 , ed25519_private_key_keyblob_header_length = 11 , ed25519_private_key_keyblob_length = 99 , ed25519_private_key_keyblob_size = 100 , x25519_private_key_base64_length = 44 , x25519_private_key_base64_size = 45 , x25519_public_key_base32_length = 52 , x25519_public_key_base32_size = 53 } |
#define ED25519_PRIVATE_KEY_KEYBLOB_HEADER_LENGTH 11 |
The number of bytes needed to store the keyblob header
#define ED25519_PRIVATE_KEY_KEYBLOB_LENGTH 99 |
The number of bytes needed to store ed25519 private keyblob as an ASCII c-string (not including a null terminator)
#define ED25519_PRIVATE_KEY_KEYBLOB_SIZE 100 |
The number of bytes needed to store ed25519 private keyblob as an ASCII c-string (including a null terminator)
#define ED25519_PRIVATE_KEYBLOB_BASE64_LENGTH 88 |
The number of bytes needed to store base64 encoded ed25519 private key as an ASCII c-string (not including null-terminator)
#define GOSLING_HAVE_LEGACY_TOR_PROVIDER 1 |
Defined if cgosling is built with arti-client tor-provider support Defined if cgosling is built with legacy tor-provider support
#define GOSLING_HAVE_MOCK_TOR_PROVIDER 1 |
Defined if cgosling is built with mock tor-provider support
#define TARGET_ADDRESS_STRING_SIZE 260 |
The maximum number of bytes needed to store a target address in the format domainname:port (including null-terminator) Maximum length of a human-readbale domain name is 253 bytes (per RFC 1035) see: https://stackoverflow.com/a/32294443 Maximum length of the :port section is 6 bytes null-terminator is 1 byte
#define V3_ONION_SERVICE_ID_STRING_LENGTH 56 |
The number of bytes needed to store onion service id as an ASCII c-string (not including null-terminator)
#define V3_ONION_SERVICE_ID_STRING_SIZE 57 |
The number of bytes needed to store onion service id as an ASCII c-string (including null-terminator)
#define X25519_PRIVATE_KEY_BASE64_LENGTH 44 |
The number of bytes needed to store base64 encoded x25519 private key as an ASCII c-string (not including null-terminator)
#define X25519_PRIVATE_KEY_BASE64_SIZE 45 |
The number of bytes needed to store base64 encoded x25519 private key as an ASCII c-string (including a null terminator)
#define X25519_PUBLIC_KEY_BASE32_LENGTH 52 |
The number of bytes needed to store base32 encoded x25519 public key as an ASCII c-string (not including null-terminator)
#define X25519_PUBLIC_KEY_BASE32_SIZE 53 |
The number of bytes needed to store base32 encoded x25519 public key as an ASCII c-string (including a null terminator)
typedef struct gosling_bridge_line gosling_bridge_line |
Bridge line to use with particular pluggable-transport when connecting to the tor network
typedef size_t gosling_circuit_token_t |
A stream isolation token
typedef struct gosling_context gosling_context |
A context object associated with a single peer identity
typedef struct gosling_ed25519_private_key gosling_ed25519_private_key |
An ed25519 private key used to create a v3 onion service
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) |
The function pointer type for the endpoint client handshake completed callback. This callback is called when the client successfully connects to an endpoint server.
context | the context associated with this event |
handshake_handle | the handshake handle this callback is associated with |
endpoint_service_id | the onion service id of the endpoint server the client has connected to |
channel_name | the null-terminated name of the channel name requested by the the client |
channel_name_length | the number of chars in channel_name not including the null-terminator |
stream | os-specific tcp socket handle associated with the connection to the endpoint server |
typedef void(* gosling_endpoint_client_handshake_failed_callback_t) (gosling_context *context, gosling_handshake_handle_t handshake_handle, const gosling_error *error) |
The function pointer type for the endpoint client handshake handshake failed callback. This callback is called when a client's endpoint handshake fails.
context | the context associated with this event |
handshake_handle | the handshake handle this callback is associated with |
error | error associated with this failure |
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) |
The function pointer type of the endpoint server channel supported callback. This callback is called when the server needs to determine if the client's requested channel is supported. The result of this callback partially determines if an incoming endpoint client handshake request is possible to complete.
context | the context associated with this event |
handshake_handle | the handshake handle this callback is associated with |
client_service_id | the onion service id of the connected endpoint client |
channel_name | a null-terminated ASCII string containing the name of the endpoint being requested |
channel_name_length | the number of chars in endpoint_name, not including the null-terminator |
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) |
The function pointer type for the endpoint server handshake completed callback. This callback is called when an endpoint server completes a handshake with an endpoint client.
context | the context associated with this event |
handshake_handle | the handshake handle this callback is associated with |
endpoint_service_id | the onion service id of the endpoint server the endpoint client has connected to |
client_service_id | the onion service id of the connected endpoint client |
channel_name | the null-terminated name of the channel requested by the client |
channel_name_length | the number of chars in channel_name not including the null-terminator |
stream | os-specific tcp socket handle associated with the connection to the endpoint client |
typedef void(* gosling_endpoint_server_handshake_failed_callback_t) (gosling_context *context, gosling_handshake_handle_t handshake_handle, const gosling_error *error) |
The function pointer type for the endpoint server handshake handshake failed callback. This callback is called when a server's endpoint handshake fails.
context | the context associated with this event |
handshake_handle | the handshake handle this callback is associated with |
error | error associated with this failure |
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) |
The function pointer type of the endpoint server handshake rejected callback. This callback is called whenever the endpoint server has rejected an endpoint client's handshake.
context | the context associated with this event |
handshake_handle | the handshake handle this callback is associated with |
client_allowed | true if requesting client is allowed, false otherwies |
client_requested_channel_valid | true if requesting client requested a valid endpoint, false otherwise |
client_proof_signature_valid | true if the requesting client properly signed the endpoint proof, false otherwise |
typedef void(* gosling_endpoint_server_handshake_started_callback_t) (gosling_context *context, gosling_handshake_handle_t handshake_handle) |
The function pointer type of the endpoint server handshake started callback. This callback is called whenever the endpoint server is initially connected to.
context | the context associated with this event |
handshake_handle | the handshake handle this callback is associated with |
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) |
The function pointer type for the endpoint server published callback. This callbcak is called whenever the onion service of the indicated endpoint server associted with the given context is published and should be reachable by clients.
context | the context associated with this event |
endpoint_service_id | the onion service id of the published endpoint server |
endpoint_name | the null-terminated name of the endpoint server published |
endpoint_name_length | the number of chars in endpoint_name string not including the null-terminator |
typedef struct gosling_error gosling_error |
A wrapper object containing an error message
typedef size_t gosling_handshake_handle_t |
A handle for an in-progress identity handhskae
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) |
The function pointer type for the identity client handshake build challlenge response callback. This callback is called when a client is ready to build a challenge response object.
context | the context associated with this event |
handshake_handle | the handshake handle this callback is associated with |
challenge_buffer | the source buffer containing a BSON document received from the identity server to serve as an endpoint request challenge |
challenge_buffer_size | the number of bytes in challenge_buffer |
out_challenge_response_buffer | the destination buffer for the callback to write a BSON document representing the endpoint request challenge response object |
out_challenge_response_buffer_size | the number of bytes allocated in out_challenge_response_buffer |
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) |
The function pointer type for the client handshake challenge response size callback. This callback is called when a client needs to know how much memory to allocate for a challenge response.
context | the context associated with this event |
handshake_handle | pointer to the client handshake handle this callback invocation is associated with; null if no client handshake init callback was provided |
challenge_buffer | the source buffer containing a BSON document received from the identity server to serve as an endpoint request challenge |
challenge_buffer_size | the number of bytes in challenge_buffer |
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) |
The function pointer type for the identity client handshake completed callback. This callback is called whenever the client successfully completes a handshake with an identity server and is granted access to an endpoint server.
context | the context associated with this event |
handshake_handle | the handshake handle this callback is associated with |
identity_service_id | the onion service id of the identity server the client has successfully completed a hadshake with |
endpoint_service_id | the onion service id of the endpoint server the client now has access to |
endpoint_name | the null-terminated name of the provided endpoint server |
endpoint_name_length | the number of chars in endpoint_name string not including the null-terminator |
client_auth_private_key | the client's x25519 private required to connect to the provided endpoint server |
typedef void(* gosling_identity_client_handshake_failed_callback_t) (gosling_context *context, gosling_handshake_handle_t handshake_handle, const gosling_error *error) |
The function pointer type for the identity client handshake handshake failed callback. This callback is called when a client's identity handshake fails.
context | the context associated with this event |
handshake_handle | the handshake handle this callback is associated with |
error | error associated with this failure |
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) |
The function pointer type of the identity server endpoint supported callback. This callback is called when the server needs to determine if the client's requested endpoint is supported. The result of this callback partially determines if an incoming client handshake request is possible to complete.
context | the context associated with this event |
handshake_handle | the handshake handle this callback is associated with |
endpoint_name | a null-terminated ASCII string containing the name of the endpoint being requested |
endpoint_name_length | the number of chars in endpoint_name, not including the null-terminator |
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) |
The function pointer type for the server handshake build challenge callback. This callback is called when a server needs to build a challenge object.
context | the context associated with this event |
handshake_handle | the handshake handle this callback is associated with |
out_challenge_buffer | the destination buffer for the callback to write a BSON document representing the endpoint request challenge object |
out_challenge_buffer_size | the number of bytes allocated in out_challenge_buffer |
typedef size_t(* gosling_identity_server_handshake_challenge_size_callback_t) (gosling_context *context, gosling_handshake_handle_t handshake_handle) |
The function pointer type for the server handshake challenge size callback. This callback is called when a server needs to know how much memory to allocate for a challenge.
context | the context associated with this event |
handshake_handle | the handshake handle this callback is associated with |
typedef 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) |
The function pointer type of the identity server handshake client allowed callback. The result of this callback partially determines if an incoming client handshake request is possible to complete. For instance an implementation of this function completed.
context | the context associated with this event |
handshake_handle | the handshake handle this callback is associated with |
client_service_id | the v3 onion service id of the connected client |
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) |
The function pointer type for the identity server handshake completed callback. This callback is called whenever the identity server has successfully completed a handshake with and granted to a connecting identity client.
context | the context associated with this event |
handshake_handle | the handshake handle this callback is associated with |
endpoint_private_key | the ed25519 private key of the endpoint server to host for the client |
endpoint_name | the null-terminated name of the new endpoint server |
endpoint_name_length | the length of the endpoint_name string not including the null-terminator |
client_service_id | the onion service id of the client we have granted access to |
client_auth_public_key | the x25519 public key to use to encrypt the endpoint server's service descriptor as provided by the connecting client |
typedef void(* gosling_identity_server_handshake_failed_callback_t) (gosling_context *context, gosling_handshake_handle_t handshake_handle, const gosling_error *error) |
The function pointer type for the identity server handshake handshake failed callback. This callback is called when a server's identity handshake fails.
context | the context associated with this event |
handshake_handle | the handshake handle this callback is associated with |
error | error associated with this failure |
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) |
The function pointer type of the identity server handshake rejected callback. This callback is called whenever the identity server has rejected an identity client's handshake.
context | the context associated with this event |
handshake_handle | the handshake handle this callback is associated with |
client_allowed | true if requesting client is allowed, false otherwies |
client_requested_endpoint_valid | true if requesting client requested a valid endpoint, false otherwise |
client_proof_signature_valid | true if the requesting client properly signed the identity proof, false otherwise |
client_auth_signature_valid | true if the requesting client properly signed the authorization proof, false othewise |
challenge_response_valid | true if the requesting client's challenge response was accepted by the server, false otherwise |
typedef void(* gosling_identity_server_handshake_started_callback_t) (gosling_context *context, gosling_handshake_handle_t handshake_handle) |
The function pointer type of the identity server handshake started callback. This callback is called whenever the identity server is initially connected to.
context | the context associated with this event |
handshake_handle | the handshake handle this callback is associated with |
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) |
The function poointer type for the server handshake verify challenge response callback. This callback is called when a server needs to verify a challenge response object.
context | the context associated with this event |
handshake_handle | the handshake handle this callback is associated with |
challenge_response_buffer | a buffer containing the BSON document representing the endpoint request challenge response object |
challenge_response_buffer_size | the number of bytes in challenge_response_buffer |
typedef void(* gosling_identity_server_published_callback_t) (gosling_context *context) |
The function pointer type for the identity server published callback. This callback is called whenever the onion service of the identity server associated with the given context is published and should be reachable by clients.
context | the context associated with this event |
typedef struct gosling_ip_address gosling_ip_address |
An internet socket address, either IPv4 or IPv6
typedef struct gosling_library gosling_library |
A handle for the gosling library
Pluggable transports settings object used by tor provider to launch pluggable-transports
typedef struct gosling_proxy_config gosling_proxy_config |
Proxy settings object used by tor provider to connect to the tor network
typedef struct gosling_target_address gosling_target_address |
An endpoint to connect to over tor
typedef int gosling_tcp_socket_t |
A native TCP socket handle
typedef void(* gosling_tor_bootstrap_completed_callback_t) (gosling_context *context) |
The function pointer type for the tor boootstrap completed callback. This callback is called when the context's tor daemon's bootstrap process has completed.
context | the context associated with this event |
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) |
The function pointer type for the tor bootstrap status received callback. This callback is called when context's tor daemon's bootstrap status has progressed.
context | the context associated with this event |
progress | an unsigned integer from 0 to 100 indicating the current completion perentage of the context's bootstrap process |
tag | the null-terminated short name of the current bootstrap stage |
tag_length | the number of chrs in tag not including any null-terminator |
summary | the null-terminated description of the current bootstra stage |
summary_length | the number of chars in summary not including the null-terminator |
typedef void(* gosling_tor_log_received_callback_t) (gosling_context *context, const char *line, size_t line_length) |
The function pointer type for the tor log received callback. This callback is called whenever the context's tor daemon prints new log lines.
context | the context associated with this event |
line | the null-terminated received log line |
line_length | the number of chars in line not including the null-terminator |
typedef struct gosling_tor_provider gosling_tor_provider |
A tor provider object used by a context to connect to the tor network
typedef struct gosling_tor_provider_config gosling_tor_provider_config |
A tor provider config object used to construct a tor provider
typedef struct gosling_v3_onion_service_id gosling_v3_onion_service_id |
A v3 onion service id
typedef struct gosling_x25519_private_key gosling_x25519_private_key |
An x25519 private key used to decrypt v3 onion service descriptors
typedef struct gosling_x25519_public_key gosling_x25519_public_key |
An x25519 public key used to encrypt v3 onoin service descriptors
anonymous enum |
All of the gosling-related constants defined as an enum
Enumerator | |
---|---|
target_address_string_size | The maximum number of bytes needed to store a target address in the format domainname:port (including null-terminator) Maximum length of a human-readbale domain name is 253 bytes (per RFC 1035) see: https://stackoverflow.com/a/32294443 Maximum length of the :port section is 6 bytes null-terminator is 1 byte |
v3_onion_service_id_string_length | The number of bytes needed to store onion service id as an ASCII c-string (not including null-terminator) |
v3_onion_service_id_string_size | The number of bytes needed to store onion service id as an ASCII c-string (including null-terminator) |
ed25519_private_keyblob_base64_length | The number of bytes needed to store base64 encoded ed25519 private key as an ASCII c-string (not including null-terminator) |
ed25519_private_key_keyblob_header_length | The number of bytes needed to store the keyblob header |
ed25519_private_key_keyblob_length | The number of bytes needed to store ed25519 private keyblob as an ASCII c-string (not including a null terminator) |
ed25519_private_key_keyblob_size | The number of bytes needed to store ed25519 private keyblob as an ASCII c-string (including a null terminator) |
x25519_private_key_base64_length | The number of bytes needed to store base64 encoded x25519 private key as an ASCII c-string (not including null-terminator) |
x25519_private_key_base64_size | The number of bytes needed to store base64 encoded x25519 private key as an ASCII c-string (including a null terminator) |
x25519_public_key_base32_length | The number of bytes needed to store base32 encoded x25519 public key as an ASCII c-string (not including null-terminator) |
x25519_public_key_base32_size | The number of bytes needed to store base32 encoded x25519 public key as an ASCII c-string (including a null terminator) |
void gosling_bridge_line_free | ( | gosling_bridge_line * | in_bridge_line | ) |
Frees a gosling_bridge_line
in_bridge_line | the bridge line object to free |
void gosling_bridge_line_from_string | ( | gosling_bridge_line ** | out_bridge_line, |
const char * | bridge_line, | ||
size_t | bridge_line_length, | ||
gosling_error ** | error | ||
) |
Construct bridge line from string
out_bridge_line | returned bridge line object |
bridge_line | a bridge address to connect to using a pluggable-transport. For more information, see: https://tb-manual.torproject.org/bridges/ |
bridge_line_length | number of characters in bridge_line, not counting any null-terminator |
error | filled on error |
void gosling_context_abort_endpoint_client_handshake | ( | gosling_context * | context, |
gosling_handshake_handle_t | handshake_handle, | ||
gosling_error ** | error | ||
) |
Abort an in-progress endpoint client handshake
context | the context associated with the endpoint client handshake handle |
handshake_handle | the handle associated with the identity client handshake |
error | filled on error |
void gosling_context_abort_identity_client_handshake | ( | gosling_context * | context, |
gosling_handshake_handle_t | handshake_handle, | ||
gosling_error ** | error | ||
) |
Abort an in-progress identity client handshake
context | the context associated with the identity client handshake handle |
handshake_handle | the handle associated with the identity client handshake |
error | filled on error |
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 | ||
) |
Connect to and begin a handshake to request a channel from the given endpoint server
context | the context which will be opening the channel |
endpoint_service_id | the endpoint server to open a channel to |
client_auth_private_key | the x25519 clienth authorization key needed to decrypt the endpoint server's onion service descriptor |
channel_name | the ascii-encoded name of the channel to open |
channel_name_length | the number of chars in channel name not including any null-terminator |
error | filled on 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 | ||
) |
Connect to and begin a handshake to request an endpoint from the given identity server
context | the context to request an endpoint server for |
identity_service_id | the service id of the identity server we want to request an endpoint server from |
endpoint_name | the name of the endpoint server to request |
endpoint_name_length | the number of chars in endpoin_name not including any null-terminator |
error | filled on error |
void gosling_context_bootstrap_tor | ( | gosling_context * | context, |
gosling_error ** | error | ||
) |
Connect a gosling_context to the tor network
context | the gosling context object to connect to the tor network |
error | filled on error |
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 | ||
) |
Connect to a target address using the provided gosling context's tor provider.
context | the context to use to connect with |
out_tcp_socket | returned connected tcp socket |
target_address | the destination address to connect to |
circuit_token | the circuit isolation token |
error | filled on error |
void gosling_context_free | ( | gosling_context * | in_context | ) |
Frees a gosling_context object
in_context | the context object to free |
gosling_circuit_token_t gosling_context_generate_circuit_token | ( | gosling_context * | context, |
gosling_error ** | error | ||
) |
Generate a circuit token to isolate connect calls
context | the context to use to connect with |
error | filled on 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 | ||
) |
Initialize a gosling context.
out_context | returned initialied gosling context |
in_tor_provider | the tor client implementation to use; this function consumes the tor_provider and it may not be re-used in subsequent gosling_* calls, and it does not need to be freed |
identity_port | the tor virtual port the identity server listens on |
endpoint_port | the tor virtual port endpoint servers listen on |
identity_private_key | the e25519 private key used to start th identity server's onion service |
error | filled on error |
void gosling_context_poll_events | ( | gosling_context * | context, |
gosling_error ** | error | ||
) |
Update the internal gosling context state and process event callbacks
context | the context object we are updating |
error | filled on error |
void gosling_context_release_circuit_token | ( | gosling_context * | context, |
gosling_circuit_token_t | circuit_token, | ||
gosling_error ** | error | ||
) |
Release a context's circuit token.
context | the context to use to connect with |
circuit_token | circuit token to destroy |
error | filled on error |
void gosling_context_set_endpoint_client_handshake_completed_callback | ( | gosling_context * | context, |
gosling_endpoint_client_handshake_completed_callback_t | callback, | ||
gosling_error ** | error | ||
) |
Set the endpoint client handshake completed callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on error |
void gosling_context_set_endpoint_client_handshake_failed_callback | ( | gosling_context * | context, |
gosling_endpoint_client_handshake_failed_callback_t | callback, | ||
gosling_error ** | error | ||
) |
Set the endpoint client handshake failed callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on error |
void gosling_context_set_endpoint_server_channel_supported_callback | ( | gosling_context * | context, |
gosling_endpoint_server_channel_supported_callback_t | callback, | ||
gosling_error ** | error | ||
) |
Set the endpoint server handshake started callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on error |
void gosling_context_set_endpoint_server_handshake_completed_callback | ( | gosling_context * | context, |
gosling_endpoint_server_handshake_completed_callback_t | callback, | ||
gosling_error ** | error | ||
) |
Set the endpoint server channel request completed callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on error |
void gosling_context_set_endpoint_server_handshake_failed_callback | ( | gosling_context * | context, |
gosling_endpoint_server_handshake_failed_callback_t | callback, | ||
gosling_error ** | error | ||
) |
Set the endpoint server channel request completed callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on error |
void gosling_context_set_endpoint_server_handshake_rejected_callback | ( | gosling_context * | context, |
gosling_endpoint_server_handshake_rejected_callback_t | callback, | ||
gosling_error ** | error | ||
) |
Set the endpoint server channel request completed callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on error |
void gosling_context_set_endpoint_server_handshake_started_callback | ( | gosling_context * | context, |
gosling_endpoint_server_handshake_started_callback_t | callback, | ||
gosling_error ** | error | ||
) |
Set the endpoint server handshake started callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on error |
void gosling_context_set_endpoint_server_published_callback | ( | gosling_context * | context, |
gosling_endpoint_server_published_callback_t | callback, | ||
gosling_error ** | error | ||
) |
Set the endpoint server published callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on error |
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 | ||
) |
Sets the identity client build challenge response callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on 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 | ||
) |
Sets the identity challenge challenge response size callback for the specified context
context | the context to register the callback to |
callback | the callback to register |
error | filled on error |
void gosling_context_set_identity_client_handshake_completed_callback | ( | gosling_context * | context, |
gosling_identity_client_handshake_completed_callback_t | callback, | ||
gosling_error ** | error | ||
) |
Set the identity client handshake completed callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on error |
void gosling_context_set_identity_client_handshake_failed_callback | ( | gosling_context * | context, |
gosling_identity_client_handshake_failed_callback_t | callback, | ||
gosling_error ** | error | ||
) |
Set the identity client handshake failed callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on 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 | ||
) |
Sets the identity server build challenge callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on erro |
void gosling_context_set_identity_server_challenge_size_callback | ( | gosling_context * | context, |
gosling_identity_server_handshake_challenge_size_callback_t | callback, | ||
gosling_error ** | error | ||
) |
Sets the identity server challenge size callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on erro |
void gosling_context_set_identity_server_client_allowed_callback | ( | gosling_context * | context, |
gosling_identity_server_handshake_client_allowed_callback_t | callback, | ||
gosling_error ** | error | ||
) |
Sets the identity server client allowed callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on error |
void gosling_context_set_identity_server_endpoint_supported_callback | ( | gosling_context * | context, |
gosling_identity_server_endpoint_supported_callback_t | callback, | ||
gosling_error ** | error | ||
) |
Sets the identity server endpoint supported callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on error |
void gosling_context_set_identity_server_handshake_completed_callback | ( | gosling_context * | context, |
gosling_identity_server_handshake_completed_callback_t | callback, | ||
gosling_error ** | error | ||
) |
Set the identity server request completed callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on error |
void gosling_context_set_identity_server_handshake_failed_callback | ( | gosling_context * | context, |
gosling_identity_server_handshake_failed_callback_t | callback, | ||
gosling_error ** | error | ||
) |
Set the identity server request failed callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on error |
void gosling_context_set_identity_server_handshake_rejected_callback | ( | gosling_context * | context, |
gosling_identity_server_handshake_rejected_callback_t | callback, | ||
gosling_error ** | error | ||
) |
Set the identity server request rejeced callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on error |
void gosling_context_set_identity_server_handshake_started_callback | ( | gosling_context * | context, |
gosling_identity_server_handshake_started_callback_t | callback, | ||
gosling_error ** | error | ||
) |
Set the identity server handshake started callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on error |
void gosling_context_set_identity_server_published_callback | ( | gosling_context * | context, |
gosling_identity_server_published_callback_t | callback, | ||
gosling_error ** | error | ||
) |
Set the identity server published callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on 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 | ||
) |
Sets the identity server verify challenge response callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on erro |
void gosling_context_set_tor_bootstrap_completed_callback | ( | gosling_context * | context, |
gosling_tor_bootstrap_completed_callback_t | callback, | ||
gosling_error ** | error | ||
) |
Set the tor bootstrap completed callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on error |
void gosling_context_set_tor_bootstrap_status_received_callback | ( | gosling_context * | context, |
gosling_tor_bootstrap_status_received_callback_t | callback, | ||
gosling_error ** | error | ||
) |
Set the tor bootstrap status received callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on error |
void gosling_context_set_tor_log_received_callback | ( | gosling_context * | context, |
gosling_tor_log_received_callback_t | callback, | ||
gosling_error ** | error | ||
) |
Sets the tor log received callback for the specified context.
context | the context to register the callback to |
callback | the callback to register |
error | filled on error |
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 | ||
) |
Start an endpoint server so the confirmed contact may connect
context | the gosling context with the given endpoint to start |
endpoint_private_key | the ed25519 private key needed to start the endpoint onion service |
endpoint_name | the ascii-encoded name of the endpoint server |
endpoint_name_length | the number of chars in endpoint name not including any null-terminator |
client_identity | the v3 onion service id of the gosling client associated with this endpoint |
client_auth_public_key | the x25519 public key used to encrypt the onion service descriptor |
error | filled on error |
void gosling_context_start_identity_server | ( | gosling_context * | context, |
gosling_error ** | error | ||
) |
Start the identity server so that clients may request endpoints
context | the gosling context whose identity server to start |
error | filled on error |
void gosling_context_stop_endpoint_server | ( | gosling_context * | context, |
const gosling_ed25519_private_key * | endpoint_private_key, | ||
gosling_error ** | error | ||
) |
Stops an endpoint server
context | the gosling context associated with the endpoint server |
endpoint_private_key | the ed25519 private key associated with the endpoint server to stop |
error | filled on erro |
void gosling_context_stop_identity_server | ( | gosling_context * | context, |
gosling_error ** | error | ||
) |
Stop the identity server so clients can no longer request endpoints
context | the gosling context whose identity server to stop |
error | filled on error |
void gosling_ed25519_private_key_clone | ( | gosling_ed25519_private_key ** | out_private_key, |
const gosling_ed25519_private_key * | private_key, | ||
gosling_error ** | error | ||
) |
Copy method for gosling_ed25519_private_key
out_private_key | returned copy |
private_key | original to copy |
error | fliled on error |
void gosling_ed25519_private_key_free | ( | gosling_ed25519_private_key * | in_private_key | ) |
Frees a gosling_ed25519_private_key object
in_private_key | the private key to free |
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 | ||
) |
Conversion method for converting the KeyBlob string returned by ADD_ONION command into a gosling_ed25519_private_key
out_private_key | returned ed25519 private key |
key_blob | an ed25519 KeyBlob string in the form "ED25519-V3:abcd1234..." |
key_blob_length | number of chars in key_blob not including any null-terminator |
error | filled on error |
void gosling_ed25519_private_key_generate | ( | gosling_ed25519_private_key ** | out_private_key, |
gosling_error ** | error | ||
) |
Creation method for securely generating a new gosling_ed25510_private_key
out_private_key | returned generated ed25519 private key |
error | filled on error |
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 | ||
) |
Conversion method for converting an ed25519 private key to a null- terminated KeyBlob string for use with ADD_ONION command
private_key | the private key to encode |
out_key_blob | buffer to be filled with ed25519 KeyBlob in the form "ED25519-V3:abcd1234...\0" |
key_blob_size | size of out_key_blob buffer in bytes, must be at least 100 characters (99 for string + 1 for null-terminator) |
error | filled on error |
void gosling_error_clone | ( | gosling_error ** | out_error, |
const gosling_error * | orig_error, | ||
gosling_error ** | error | ||
) |
Copy method for gosling_error
out_error | returned copy |
orig_error | original to copy |
error | filled on error |
void gosling_error_free | ( | gosling_error * | error | ) |
Frees gosling_error and invalidates any message strings returned by gosling_error_get_message() from the given error object.
error | the error object to free |
const char* gosling_error_get_message | ( | const gosling_error * | error | ) |
Get error message from gosling_error
error | the error object to get the message from |
void gosling_ip_address_clone | ( | gosling_ip_address ** | out_ip_address, |
const gosling_ip_address * | ip_address, | ||
gosling_error ** | error | ||
) |
Copy method for gosling_ip_address
out_ip_address | returned copy |
ip_address | original to copy |
error | filled on error |
void gosling_ip_address_free | ( | gosling_ip_address * | in_ip_address | ) |
Frees a gosling_ip_address object
in_ip_address | the ip address to free |
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 | ||
) |
Create ip address from four ipv4 octets.
out_ip_address | returned ip address |
a | first octet |
b | second octet |
c | third octet |
d | fourth octet |
error | filled on 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 | ||
) |
Create target address from eight ipv6 16-bit sgements
out_ip_address | returned ip address |
a | first segment |
b | second segment |
c | third segment |
d | fourth segment |
e | fifth segment |
f | sixth segment |
g | seventh segment |
h | eigth segment |
error | filled on error |
void gosling_library_free | ( | gosling_library * | in_library | ) |
Frees all resources associated with the Gosling library. No-op if the library is not initialized or if it has already been freed
in_library | gosling library handle to free |
void gosling_library_init | ( | gosling_library ** | out_library, |
gosling_error ** | error | ||
) |
Initializes the Gosling library. This function must be called before using any of the other Gosling functions.
out_library | returned gosling library handle |
error | filled on error |
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 | ||
) |
Add a command-line option to be used when launching the pluggable-transport
pluggable_transport_config | the pluggable-transport ocnfig object to update |
option | cmd-line option or flag to pass to the pluggable-transport on launch |
option_length | number of characters in option, not counting any null- terminator |
error | filled on error |
void gosling_pluggable_transport_config_free | ( | gosling_pluggable_transport_config * | in_pluggable_transport_config | ) |
Frees a gosling_pluggable_transport_config
in_pluggable_transport_config | the pluggable-transport object to free |
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 | ||
) |
Create a new pluggable-transport config object
out_pluggable_transport_config | returned pluggable-transport object |
transports | comma-delimited list of transports this pluggable-transport supports |
transports_length | number of characters in transports, not counting any null-terminator |
path_to_binary | path to the pluggable-transport binary, either absolute or relative to the tor daemon process |
path_to_binary_length | number of characters in path_to_binary, not counting any null-terminator |
error | filled on error |
void gosling_proxy_config_free | ( | gosling_proxy_config * | in_proxy_config | ) |
Frees a gosling_proxy_config
in_proxy_config | the proxy config object to free |
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 | ||
) |
Create a https proxy definition
out_proxy_config | returned proxy config object |
proxy_address | the host address of the proxy, must not be an onion service |
username | username to authenticate with https proxy |
username_length | number of characters in username, not counting any null- terminator |
password | password to authenticate with https proxy |
password_length | number of characters in username, not counting any null- terminator |
error | filled on error |
void gosling_proxy_config_new_socks4 | ( | gosling_proxy_config ** | out_proxy_config, |
const gosling_target_address * | proxy_address, | ||
gosling_error ** | error | ||
) |
Create a socks4 proxy definition
out_proxy_config | returned proxy config object |
proxy_address | the host address of the proxy, must not be an onion service |
error | filled on error |
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 | ||
) |
Create a socks5 proxy definition
out_proxy_config | returned proxy config object |
proxy_address | the host address of the proxy, must not be an onion service |
username | username to authenticate with socks5 proxy |
username_length | number of characters in username, not counting any null- terminator |
password | password to authenticate with socks5 proxy |
password_length | number of characters in username, not counting any null- terminator |
error | filled on error |
bool gosling_string_is_valid_v3_onion_service_id | ( | const char * | service_id_string, |
size_t | service_id_string_length, | ||
gosling_error ** | error | ||
) |
Checks if a service id string is valid per tor rend spec: https://gitweb.torproject.org/torspec.git/tree/rend-spec-v3.txt
service_id_string | string containing the v3 service id to be validated |
service_id_string_length | the number of chars in service_id_string not including any null-terminator; must be V3_ONION_SERVICE_ID_STRING_LENGTH (56) |
error | filled on error |
void gosling_target_address_clone | ( | gosling_target_address ** | out_target_address, |
const gosling_target_address * | target_address, | ||
gosling_error ** | error | ||
) |
Copy method for gosling_target_address
out_target_address | returned copy |
target_address | original to copy |
error | filled on error |
void gosling_target_address_free | ( | gosling_target_address * | in_target_address | ) |
Frees a gosling_target_address object
in_target_address | the target address to free |
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 | ||
) |
Create target address from domain and port. The resulting target address is in the format domain:port
out_target_address | returned target address |
domain | the target domain |
domain_length | the number of chars in domain not including any null-terminator |
port | the target port |
error | filled on 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 | ||
) |
Create target address from an ip address and a port.
out_target_address | returned target address |
ip_address | target ip address |
port | target port |
error | filled on error |
void gosling_target_address_from_string | ( | gosling_target_address ** | out_target_address, |
const char * | target_address, | ||
size_t | target_address_length, | ||
gosling_error ** | error | ||
) |
Create target address from some string representation
out_target_address | returned target address |
target_address | serialised target address |
target_address_length | the number of chars in string not including any null-terminator |
error | filled on 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 | ||
) |
Create target address from onion service id and port.
out_target_address | returned target address |
service_id | the target onion service id |
port | the target port |
error | filled on 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 | ||
) |
Write target address to null-terminated string
target_address | the target address to write |
out_target_address_string | buffer to be filled with string |
target_address_string_size | size of the out_string buffer in bytes. The maximum required size is 262 bytes. |
error | filled on error |
void gosling_tor_provider_config_add_bridge_line | ( | gosling_tor_provider_config * | tor_provider_config, |
const gosling_bridge_line * | bridge_line, | ||
gosling_error ** | error | ||
) |
Add a bridge line to a tor provider config. A tor provider config does not need to support bridge lines, so this function may fail as a result. The currently supported tor provider configs are:
This function may be called multiple times allowing a tor provider config to be configured with multiple bridge lines.
tor_provider_config | the tor provider config to update |
bridge_line | the bridge lin to add to the tor provider config |
error | filled on 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 | ||
) |
Add a pluggable-transport config to a tor provider config. A tor provider config does not need to support pluggable-transport configuration, so this function may fail as a result. The currently supported tor provider configs are:
This function may be called multiple times allowing a tor provider config to be configured with multiple pluggable-transports.
tor_provider_config | the tor provider config to update |
pluggable_transport_config | the pluggable-transport config to add to the tor provider config; must not be null |
error | filled on error |
void gosling_tor_provider_config_free | ( | gosling_tor_provider_config * | in_tor_provider_config | ) |
Frees a gosling_tor_provider_config
in_tor_provider_config | the tor provider config object to free |
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 | ||
) |
Create a tor provider config to build a bundled legacy tor daemon.
out_tor_provider_config | returned tor provider config |
tor_bin_path | the file system path to the tor binary; if this is null the tor executable found in the system PATH variable is used |
tor_bin_path_length | the number of chars in tor_bin_path not including any null terminator |
tor_working_directory | the file system path to store tor's data |
tor_working_directory_length | the number of chars in tor_working_directory not including any null-terminator |
error | filled on error |
void gosling_tor_provider_config_new_mock_client_config | ( | gosling_tor_provider_config ** | out_tor_provider_config, |
gosling_error ** | error | ||
) |
Create a tor provider config to build a mock no-internet tor provider for testing.
out_tor_provider_config | returned tor provider |
error | filled on 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 | ||
) |
Create a tor provider config to build a system legacy tor daemon
out_tor_provider_config | returned tor provider config |
tor_socks_host | tor daemon socks server host |
tor_socks_port | tor daemon socks server port |
tor_control_host | tor daemon control host |
tor_control_port | tor daemon control port |
tor_control_passwd | authentication password |
tor_control_passwd_length | the number of chars in tor_control_password not including any null-terminator |
error | filled on 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 | ||
) |
Set a tor provider config's allowed ports list. A tor provider config does not need to support a port allow-list, so this function may fail as a result. The currently supported tor provider configs are:
tor_provider_config | the tor provider config to update |
allowed_ports | an array of ports the local system's firewall allows connections to; must not be null |
allowed_ports_count | the number of ports in the allowed_ports array; must not be 0 |
error | filled on error |
void gosling_tor_provider_config_set_proxy_config | ( | gosling_tor_provider_config * | tor_provider_config, |
const gosling_proxy_config * | proxy_config, | ||
gosling_error ** | error | ||
) |
Set a tor provider config's proxy configuration. A tor provider config does not need to support proxy configuration, so this function may fail as a result. The currently supported tor provider configs are:
tor_provider_config | the tor provider config to update |
proxy_config | the proxy configuration to use; must not be null |
error | filled on error |
void gosling_tor_provider_free | ( | gosling_tor_provider * | in_tor_provider | ) |
Frees a gosling_tor_provider object
in_tor_provider | the tor provider object to free |
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 | ||
) |
Create a tor provider from the provided tor provider config.
out_tor_provider | returned tor provider |
tor_provider_config | tor provider configuration |
error | filled on 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 | ||
) |
Copy method for gosling_v3_onion_service_id
out_service_id | returned copy |
service_id | original to copy |
error | fliled on error |
void gosling_v3_onion_service_id_free | ( | gosling_v3_onion_service_id * | in_service_id | ) |
Frees a gosling_v3_onion_service_id object
in_service_id | the service id object to free |
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 | ||
) |
Conversion method for converting an ed25519 private key into a gosling_v3_onion_service_id object
out_service_id | returned service id object |
ed25519_private_key | an e25519 private key |
error | filled on error |
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 | ||
) |
Conversion method for converting a v3 onion service string into a gosling_v3_onion_service_id object
out_service_id | returned service id object |
service_id_string | a v3 onion service id string |
service_id_string_length | the number of chars in service_id_string not including any null-terminator |
error | filled on 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 | ||
) |
Conversion method for converting v3 onion service id to a null-terminated string
service_id | the service id to encode |
out_service_id_string | buffer to be filled with x25519 key encoded as base32 |
service_id_string_size | size of out_service_id_string buffer in bytes, must be at least 57 characters (56 for string + 1 for null-terminator) |
error | filled on error |
void gosling_x25519_private_key_clone | ( | gosling_x25519_private_key ** | out_private_key, |
const gosling_x25519_private_key * | private_key, | ||
gosling_error ** | error | ||
) |
Copy method for gosling_x25519_private_key
out_private_key | returned copy |
private_key | original to copy |
error | fliled on error |
void gosling_x25519_private_key_free | ( | gosling_x25519_private_key * | in_private_key | ) |
Frees a gosling_x25519_private_key object
in_private_key | the private key to free |
void gosling_x25519_private_key_from_base64 | ( | gosling_x25519_private_key ** | out_private_key, |
const char * | base64, | ||
size_t | base64_length, | ||
gosling_error ** | error | ||
) |
Conversion method for converting a base64-encoded string used by the ONION_CLIENT_AUTH_ADD command into a gosling_x25519_private_key
out_private_key | returned x25519 private key |
base64 | an x25519 private key encoded as a base64 string |
base64_length | the number of chars in base64 not including any null-terminator |
error | filled on 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 | ||
) |
Conversion method for converting an x25519 private key to a null- terminated base64 string for use with ONION_CLIENT_AUTH_ADD command
private_key | the private key to encode |
out_base64 | buffer to be filled with x25519 key encoded as base64 |
base64_size | size of out_base64 buffer in bytes, must be at least 45 characters (44 for string + 1 for null-terminator) |
error | filled on error |
void gosling_x25519_public_key_clone | ( | gosling_x25519_public_key ** | out_public_key, |
const gosling_x25519_public_key * | public_key, | ||
gosling_error ** | error | ||
) |
Copy method for gosling_x25519_public_key
out_public_key | returned copy |
public_key | original to copy |
error | fliled on error |
void gosling_x25519_public_key_free | ( | gosling_x25519_public_key * | in_public_key | ) |
Frees a gosling_x25519_public_key object
in_public_key | the public key to free |
void gosling_x25519_public_key_from_base32 | ( | gosling_x25519_public_key ** | out_public_key, |
const char * | base32, | ||
size_t | base32_length, | ||
gosling_error ** | error | ||
) |
Conversion method for converting a base32-encoded string used by the ADD_ONION command into a gosling_x25519_public_key
out_public_key | returned x25519 public key |
base32 | an x25519 public key encoded as a base32 string |
base32_length | the number of chars in base32 not including any null-terminator |
error | filled on 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 | ||
) |
Conversion method for converting an x25519 public key to a null- terminated base64 string for use with ADD_ONION command
public_key | the public key to encode |
out_base32 | buffer to be filled with x25519 key encoded as base32 |
base32_size | size of out_base32 buffer in bytes, must be at least 53 characters (52 for string + 1 for null-terminator) |
error | filled on error |