23# ifdef ANJ_WITH_SECURE_BINDINGS
26# include <avsystem/commons/avs_crypto_pki.h>
27# include <avsystem/commons/avs_crypto_psk.h>
28# include <avsystem/commons/avs_prng.h>
39# define ANJ_NET_OK (0)
45# define ANJ_NET_EAGAIN (1)
50# define ANJ_NET_EMSGSIZE (2)
56# define ANJ_NET_ENOTSUP (3)
93# ifdef ANJ_WITH_SECURE_BINDINGS
97} anj_net_dtls_handshake_timeouts_t;
100 ANJ_NET_SOCKET_DANE_CA_CONSTRAINT = 0,
101 ANJ_NET_SOCKET_DANE_SERVICE_CERTIFICATE_CONSTRAINT = 1,
102 ANJ_NET_SOCKET_DANE_TRUST_ANCHOR_ASSERTION = 2,
103 ANJ_NET_SOCKET_DANE_DOMAIN_ISSUED_CERTIFICATE = 3
104} anj_net_socket_dane_certificate_usage_t;
107 ANJ_NET_SOCKET_DANE_CERTIFICATE = 0,
108 ANJ_NET_SOCKET_DANE_PUBLIC_KEY = 1
109} anj_net_socket_dane_selector_t;
112 ANJ_NET_SOCKET_DANE_MATCH_FULL = 0,
113 ANJ_NET_SOCKET_DANE_MATCH_SHA256 = 1,
114 ANJ_NET_SOCKET_DANE_MATCH_SHA512 = 2
115} anj_net_socket_dane_matching_type_t;
118 anj_net_socket_dane_certificate_usage_t certificate_usage;
119 anj_net_socket_dane_selector_t selector;
120 anj_net_socket_dane_matching_type_t matching_type;
121 const void *association_data;
122 size_t association_data_size;
123} anj_net_socket_dane_tlsa_record_t;
126 const anj_net_socket_dane_tlsa_record_t *array_ptr;
127 size_t array_element_count;
128} anj_net_socket_dane_tlsa_array_t;
157# ifdef ANJ_WITH_SECURE_BINDINGS
162 ANJ_NET_SSL_VERSION_DEFAULT = 0,
163 ANJ_NET_SSL_VERSION_TLSv1,
164 ANJ_NET_SSL_VERSION_TLSv1_1,
165 ANJ_NET_SSL_VERSION_TLSv1_2,
166 ANJ_NET_SSL_VERSION_TLSv1_3
167} anj_net_ssl_version_t;
170 ANJ_NET_SECURITY_DEFAULT = 0,
171 ANJ_NET_SECURITY_PSK,
172 ANJ_NET_SECURITY_CERTIFICATE =
173 ANJ_NET_SECURITY_DEFAULT
174} anj_net_security_mode_t;
180 avs_crypto_psk_key_info_t key;
181 avs_crypto_psk_identity_info_t identity;
192 bool server_cert_validation;
201 bool ignore_system_trust_store;
217 avs_crypto_certificate_chain_info_t trusted_certs;
224 avs_crypto_cert_revocation_list_info_t cert_revocation_lists;
232 avs_crypto_certificate_chain_info_t client_cert;
240 avs_crypto_private_key_info_t client_key;
251 bool rebuild_client_cert_chain;
252} anj_net_certificate_info_t;
255 anj_net_security_mode_t mode;
257 anj_net_psk_info_t psk;
258 anj_net_certificate_info_t cert;
260} anj_net_security_info_t;
267} anj_net_socket_tls_ciphersuites_t;
273 anj_net_ssl_version_t version;
279 anj_net_security_info_t security;
284 const anj_net_dtls_handshake_timeouts_t *dtls_handshake_timeouts;
308 void *session_resumption_buffer;
322 size_t session_resumption_buffer_size;
338 anj_net_socket_tls_ciphersuites_t ciphersuites;
348 server_name_indication;
357 bool use_connection_id;
363 avs_crypto_prng_ctx_t *prng_ctx;
364} anj_net_ssl_configuration_t;
380# ifdef ANJ_WITH_SECURE_BINDINGS
381 anj_net_ssl_configuration_t secure_socket_config;
385struct anj_net_ctx_struct;
543 size_t *bytes_received,
650 uint64_t *out_value);
652# ifdef ANJ_WITH_SECURE_BINDINGS
673typedef int anj_net_get_session_resumed_t(
anj_net_ctx_t *ctx,
bool *out_value);
691 anj_net_socket_dane_tlsa_array_t *value);
703 anj_net_dtls_handshake_timeouts_t *value);
718typedef int anj_net_get_connection_id_resumed_t(
anj_net_ctx_t *ctx,
int anj_net_get_state_t(anj_net_ctx_t *ctx, anj_net_socket_state_t *out_value)
Definition anj_net_api.h:616
#define ANJ_NET_EAGAIN
Definition anj_net_api.h:45
int anj_net_close_t(anj_net_ctx_t *ctx)
Definition anj_net_api.h:606
int anj_net_shutdown_t(anj_net_ctx_t *ctx)
Definition anj_net_api.h:586
const void * anj_net_get_system_socket_t(anj_net_ctx_t *ctx)
Definition anj_net_api.h:421
static bool anj_net_is_ok(int res)
Definition anj_net_api.h:388
anj_net_binding_type_t
Definition anj_net_api.h:58
@ ANJ_NET_BINDING_TCP
Definition anj_net_api.h:60
@ ANJ_NET_BINDING_TLS
Definition anj_net_api.h:62
@ ANJ_NET_BINDING_NON_IP
Definition anj_net_api.h:63
@ ANJ_NET_BINDING_DTLS
Definition anj_net_api.h:61
@ ANJ_NET_BINDING_UDP
Definition anj_net_api.h:59
struct anj_net_ctx_struct anj_net_ctx_t
Definition anj_net_api.h:386
int anj_net_get_bytes_received_t(anj_net_ctx_t *ctx, uint64_t *out_value)
Definition anj_net_api.h:649
int anj_net_reuse_last_port_t(anj_net_ctx_t *ctx)
Definition anj_net_api.h:564
int anj_net_get_bytes_sent_t(anj_net_ctx_t *ctx, uint64_t *out_value)
Definition anj_net_api.h:638
int anj_net_create_ctx_t(anj_net_ctx_t **ctx, const anj_net_config_t *config)
Definition anj_net_api.h:436
int anj_net_get_inner_mtu_t(anj_net_ctx_t *ctx, int32_t *out_value)
Definition anj_net_api.h:628
#define ANJ_NET_OK
Definition anj_net_api.h:39
int anj_net_recv_t(anj_net_ctx_t *ctx, size_t *bytes_received, uint8_t *buf, size_t length)
Definition anj_net_api.h:542
anj_net_socket_state_t
Definition anj_net_api.h:66
@ ANJ_NET_SOCKET_STATE_CONNECTED
Definition anj_net_api.h:90
@ ANJ_NET_SOCKET_STATE_CLOSED
Definition anj_net_api.h:71
@ ANJ_NET_SOCKET_STATE_SHUTDOWN
Definition anj_net_api.h:77
@ ANJ_NET_SOCKET_STATE_BOUND
Definition anj_net_api.h:83
int anj_net_cleanup_ctx_t(anj_net_ctx_t **ctx)
Definition anj_net_api.h:454
int anj_net_connect_t(anj_net_ctx_t *ctx, const char *hostname, const char *port)
Definition anj_net_api.h:480
anj_net_address_family_setting_t
Definition anj_net_api.h:131
@ ANJ_NET_AF_SETTING_PREFERRED_INET4
Definition anj_net_api.h:135
@ ANJ_NET_AF_SETTING_FORCE_INET4
Definition anj_net_api.h:133
@ ANJ_NET_AF_SETTING_FORCE_INET6
Definition anj_net_api.h:134
@ ANJ_NET_AF_SETTING_PREFERRED_INET6
Definition anj_net_api.h:136
@ ANJ_NET_AF_SETTING_UNSPEC
Definition anj_net_api.h:132
static bool anj_net_is_again(int res)
Definition anj_net_api.h:392
int anj_net_send_t(anj_net_ctx_t *ctx, size_t *bytes_sent, const uint8_t *buf, size_t length)
Definition anj_net_api.h:509
Definition anj_net_api.h:378
anj_net_socket_configuration_t raw_socket_config
Definition anj_net_api.h:379
Definition anj_net_api.h:143
anj_net_address_family_setting_t af_setting
Definition anj_net_api.h:154