761 const uint8_t **out_der_data,
762 size_t *out_der_len);
834 size_t cert_chain_len,
835 const uint8_t *private_key,
836 size_t private_key_len,
970 size_t cipher_suites_len,
971 const uint16_t *tls_versions,
972 size_t tls_versions_len,
1028 const char *filename);
1070 size_t certified_keys_len);
1106 const char *hostname,
1240 const uint8_t **protocol_out,
1241 size_t *protocol_out_len);
1292#if defined(DEFINE_READ_BUF)
1326void rustls_error(
unsigned int result,
char *buf,
size_t len,
size_t *out_n);
1387 size_t cipher_suites_len,
1388 const uint16_t *tls_versions,
1389 size_t tls_versions_len,
1460 size_t certified_keys_len);
1540 size_t certified_keys_len,
rustls_result rustls_server_config_builder_set_ignore_client_order(struct rustls_server_config_builder *builder, bool ignore)
struct rustls_certified_key rustls_certified_key
Definition: rustls.h:148
const struct rustls_certificate * rustls_connection_get_peer_certificate(const struct rustls_connection *conn, size_t i)
size_t rustls_all_ciphersuites_len(void)
rustls_result rustls_root_cert_store_add_pem(struct rustls_root_cert_store *store, const uint8_t *pem, size_t pem_len, bool strict)
struct rustls_slice_bytes rustls_accepted_alpn(const struct rustls_accepted *accepted, size_t i)
struct rustls_slice_str rustls_slice_str
Definition: rustls.h:254
rustls_result rustls_server_config_builder_set_persistence(struct rustls_server_config_builder *builder, rustls_session_store_get_callback get_cb, rustls_session_store_put_callback put_cb)
struct rustls_server_config_builder rustls_server_config_builder
Definition: rustls.h:218
struct rustls_certificate rustls_certificate
Definition: rustls.h:140
struct rustls_client_config_builder rustls_client_config_builder
Definition: rustls.h:185
struct rustls_client_config_builder * rustls_client_config_builder_new(void)
rustls_result rustls_server_config_builder_set_hello_callback(struct rustls_server_config_builder *builder, rustls_client_hello_callback callback)
rustls_io_result rustls_connection_read_tls(struct rustls_connection *conn, rustls_read_callback callback, void *userdata, size_t *out_n)
uint16_t rustls_accepted_cipher_suite(const struct rustls_accepted *accepted, size_t i)
void rustls_server_config_builder_set_client_verifier(struct rustls_server_config_builder *builder, const struct rustls_client_cert_verifier *verifier)
const size_t RUSTLS_DEFAULT_VERSIONS_LEN
rustls_result rustls_accepted_into_connection(struct rustls_accepted *accepted, const struct rustls_server_config *config, struct rustls_connection **out_conn)
const struct rustls_supported_ciphersuite * RUSTLS_ALL_CIPHER_SUITES[9]
const uint16_t RUSTLS_ALL_VERSIONS[2]
const struct rustls_supported_ciphersuite * RUSTLS_DEFAULT_CIPHER_SUITES[9]
struct rustls_server_config rustls_server_config
Definition: rustls.h:208
const struct rustls_client_config * rustls_client_config_builder_build(struct rustls_client_config_builder *builder)
void rustls_client_config_builder_free(struct rustls_client_config_builder *config)
size_t rustls_slice_slice_bytes_len(const struct rustls_slice_slice_bytes *input)
const struct rustls_certificate * rustls_certified_key_get_certificate(const struct rustls_certified_key *certified_key, size_t i)
void rustls_server_config_free(const struct rustls_server_config *config)
const size_t RUSTLS_DEFAULT_CIPHER_SUITES_LEN
void rustls_connection_free(struct rustls_connection *conn)
const uint16_t RUSTLS_DEFAULT_VERSIONS[2]
rustls_result rustls_client_hello_select_certified_key(const struct rustls_client_hello *hello, const struct rustls_certified_key *const *certified_keys, size_t certified_keys_len, const struct rustls_certified_key **out_key)
rustls_io_result rustls_connection_write_tls_vectored(struct rustls_connection *conn, rustls_write_vectored_callback callback, void *userdata, size_t *out_n)
void * rustls_verify_server_cert_user_data
Definition: rustls.h:325
rustls_result rustls_acceptor_accept(struct rustls_acceptor *acceptor, struct rustls_accepted **out_accepted)
size_t rustls_log_level
Definition: rustls.h:340
const struct rustls_client_cert_verifier_optional * rustls_client_cert_verifier_optional_new(const struct rustls_root_cert_store *store)
uint16_t rustls_accepted_signature_scheme(const struct rustls_accepted *accepted, size_t i)
uint32_t(* rustls_verify_server_cert_callback)(rustls_verify_server_cert_user_data userdata, const struct rustls_verify_server_cert_params *params)
Definition: rustls.h:338
const struct rustls_supported_ciphersuite * rustls_all_ciphersuites_get_entry(size_t i)
rustls_result rustls_server_config_builder_set_alpn_protocols(struct rustls_server_config_builder *builder, const struct rustls_slice_bytes *protocols, size_t len)
void rustls_client_cert_verifier_free(const struct rustls_client_cert_verifier *verifier)
void rustls_client_config_free(const struct rustls_client_config *config)
rustls_io_result(* rustls_read_callback)(void *userdata, uint8_t *buf, size_t n, size_t *out_n)
Definition: rustls.h:301
void rustls_accepted_free(struct rustls_accepted *accepted)
rustls_result rustls_client_config_builder_load_roots_from_file(struct rustls_client_config_builder *config_builder, const char *filename)
int rustls_io_result
Definition: rustls.h:285
rustls_result rustls_connection_read(struct rustls_connection *conn, uint8_t *buf, size_t count, size_t *out_n)
const struct rustls_server_config * rustls_server_config_builder_build(struct rustls_server_config_builder *builder)
const struct rustls_supported_ciphersuite * rustls_connection_get_negotiated_ciphersuite(const struct rustls_connection *conn)
rustls_result rustls_server_config_builder_set_certified_keys(struct rustls_server_config_builder *builder, const struct rustls_certified_key *const *certified_keys, size_t certified_keys_len)
struct rustls_root_cert_store rustls_root_cert_store
Definition: rustls.h:201
struct rustls_str rustls_slice_str_get(const struct rustls_slice_str *input, size_t n)
rustls_result rustls_connection_process_new_packets(struct rustls_connection *conn)
struct rustls_client_cert_verifier_optional rustls_client_cert_verifier_optional
Definition: rustls.h:167
void rustls_error(unsigned int result, char *buf, size_t len, size_t *out_n)
void * rustls_session_store_userdata
Definition: rustls.h:450
uint32_t(* rustls_session_store_put_callback)(rustls_session_store_userdata userdata, const struct rustls_slice_bytes *key, const struct rustls_slice_bytes *val)
Definition: rustls.h:496
struct rustls_str rustls_log_level_str(rustls_log_level level)
rustls_result
Definition: rustls.h:10
@ RUSTLS_RESULT_ALREADY_USED
Definition: rustls.h:24
@ RUSTLS_RESULT_ALERT_BAD_RECORD_MAC
Definition: rustls.h:48
@ RUSTLS_RESULT_PEER_INCOMPATIBLE_ERROR
Definition: rustls.h:40
@ RUSTLS_RESULT_CERT_SCT_UNKNOWN_LOG
Definition: rustls.h:85
@ RUSTLS_RESULT_ALERT_BAD_CERTIFICATE_HASH_VALUE
Definition: rustls.h:76
@ RUSTLS_RESULT_BAD_MAX_FRAGMENT_SIZE
Definition: rustls.h:33
@ RUSTLS_RESULT_ACCEPTOR_NOT_READY
Definition: rustls.h:23
@ RUSTLS_RESULT_ALERT_CLOSE_NOTIFY
Definition: rustls.h:46
@ RUSTLS_RESULT_NOT_FOUND
Definition: rustls.h:19
@ RUSTLS_RESULT_CERT_INVALID_ENCODING
Definition: rustls.h:36
@ RUSTLS_RESULT_ALERT_HANDSHAKE_FAILURE
Definition: rustls.h:52
@ RUSTLS_RESULT_ALERT_UNEXPECTED_MESSAGE
Definition: rustls.h:47
@ RUSTLS_RESULT_IO
Definition: rustls.h:12
@ RUSTLS_RESULT_CERT_SCT_INVALID_SIGNATURE
Definition: rustls.h:82
@ RUSTLS_RESULT_UNSUPPORTED_NAME_TYPE
Definition: rustls.h:34
@ RUSTLS_RESULT_ALERT_CERTIFICATE_REQUIRED
Definition: rustls.h:78
@ RUSTLS_RESULT_ALERT_ACCESS_DENIED
Definition: rustls.h:61
@ RUSTLS_RESULT_ALERT_DECOMPRESSION_FAILURE
Definition: rustls.h:51
@ RUSTLS_RESULT_INAPPROPRIATE_HANDSHAKE_MESSAGE
Definition: rustls.h:43
@ RUSTLS_RESULT_CORRUPT_MESSAGE_PAYLOAD
Definition: rustls.h:44
@ RUSTLS_RESULT_ALERT_NO_APPLICATION_PROTOCOL
Definition: rustls.h:79
@ RUSTLS_RESULT_PANIC
Definition: rustls.h:15
@ RUSTLS_RESULT_NO_APPLICATION_PROTOCOL
Definition: rustls.h:32
@ RUSTLS_RESULT_NULL_PARAMETER
Definition: rustls.h:13
@ RUSTLS_RESULT_ALERT_BAD_CERTIFICATE
Definition: rustls.h:54
@ RUSTLS_RESULT_ALERT_INAPPROPRIATE_FALLBACK
Definition: rustls.h:68
@ RUSTLS_RESULT_ALERT_PROTOCOL_VERSION
Definition: rustls.h:65
@ RUSTLS_RESULT_ALERT_DECRYPT_ERROR
Definition: rustls.h:63
@ RUSTLS_RESULT_CERT_INVALID_SIGNATURE
Definition: rustls.h:38
@ RUSTLS_RESULT_OK
Definition: rustls.h:11
@ RUSTLS_RESULT_ALERT_UNSUPPORTED_CERTIFICATE
Definition: rustls.h:55
@ RUSTLS_RESULT_ENCRYPT_ERROR
Definition: rustls.h:35
@ RUSTLS_RESULT_PEER_SENT_OVERSIZED_RECORD
Definition: rustls.h:31
@ RUSTLS_RESULT_ALERT_ILLEGAL_PARAMETER
Definition: rustls.h:59
@ RUSTLS_RESULT_ALERT_NO_RENEGOTIATION
Definition: rustls.h:70
@ RUSTLS_RESULT_ALERT_BAD_CERTIFICATE_STATUS_RESPONSE
Definition: rustls.h:75
@ RUSTLS_RESULT_CERTIFICATE_PARSE_ERROR
Definition: rustls.h:16
@ RUSTLS_RESULT_HANDSHAKE_NOT_COMPLETE
Definition: rustls.h:30
@ RUSTLS_RESULT_ALERT_CERTIFICATE_EXPIRED
Definition: rustls.h:57
@ RUSTLS_RESULT_CERT_SCT_TIMESTAMP_IN_FUTURE
Definition: rustls.h:83
@ RUSTLS_RESULT_GENERAL
Definition: rustls.h:45
@ RUSTLS_RESULT_INAPPROPRIATE_MESSAGE
Definition: rustls.h:42
@ RUSTLS_RESULT_ALERT_DECRYPTION_FAILED
Definition: rustls.h:49
@ RUSTLS_RESULT_ALERT_UNKNOWN
Definition: rustls.h:80
@ RUSTLS_RESULT_INVALID_PARAMETER
Definition: rustls.h:20
@ RUSTLS_RESULT_ALERT_DECODE_ERROR
Definition: rustls.h:62
@ RUSTLS_RESULT_ALERT_UNSUPPORTED_EXTENSION
Definition: rustls.h:72
@ RUSTLS_RESULT_CERT_SCT_MALFORMED
Definition: rustls.h:81
@ RUSTLS_RESULT_PEER_MISBEHAVED_ERROR
Definition: rustls.h:41
@ RUSTLS_RESULT_ALERT_NO_CERTIFICATE
Definition: rustls.h:53
@ RUSTLS_RESULT_ALERT_UNKNOWN_PSK_IDENTITY
Definition: rustls.h:77
@ RUSTLS_RESULT_PLAINTEXT_EMPTY
Definition: rustls.h:22
@ RUSTLS_RESULT_INSUFFICIENT_SIZE
Definition: rustls.h:18
@ RUSTLS_RESULT_FAILED_TO_GET_CURRENT_TIME
Definition: rustls.h:28
@ RUSTLS_RESULT_CERT_INVALID_SIGNATURE_TYPE
Definition: rustls.h:37
@ RUSTLS_RESULT_ALERT_UNRECOGNISED_NAME
Definition: rustls.h:74
@ RUSTLS_RESULT_CERT_INVALID_DATA
Definition: rustls.h:39
@ RUSTLS_RESULT_ALERT_RECORD_OVERFLOW
Definition: rustls.h:50
@ RUSTLS_RESULT_UNEXPECTED_EOF
Definition: rustls.h:21
@ RUSTLS_RESULT_ALERT_CERTIFICATE_UNOBTAINABLE
Definition: rustls.h:73
@ RUSTLS_RESULT_NO_CERTIFICATES_PRESENTED
Definition: rustls.h:26
@ RUSTLS_RESULT_DECRYPT_ERROR
Definition: rustls.h:27
@ RUSTLS_RESULT_ALERT_MISSING_EXTENSION
Definition: rustls.h:71
@ RUSTLS_RESULT_ALERT_INTERNAL_ERROR
Definition: rustls.h:67
@ RUSTLS_RESULT_FAILED_TO_GET_RANDOM_BYTES
Definition: rustls.h:29
@ RUSTLS_RESULT_INVALID_DNS_NAME_ERROR
Definition: rustls.h:14
@ RUSTLS_RESULT_ALERT_CERTIFICATE_UNKNOWN
Definition: rustls.h:58
@ RUSTLS_RESULT_ALERT_EXPORT_RESTRICTION
Definition: rustls.h:64
@ RUSTLS_RESULT_ALERT_USER_CANCELED
Definition: rustls.h:69
@ RUSTLS_RESULT_CORRUPT_MESSAGE
Definition: rustls.h:25
@ RUSTLS_RESULT_ALERT_CERTIFICATE_REVOKED
Definition: rustls.h:56
@ RUSTLS_RESULT_PRIVATE_KEY_PARSE_ERROR
Definition: rustls.h:17
@ RUSTLS_RESULT_CERT_SCT_UNSUPPORTED_VERSION
Definition: rustls.h:84
@ RUSTLS_RESULT_ALERT_UNKNOWN_CA
Definition: rustls.h:60
@ RUSTLS_RESULT_ALERT_INSUFFICIENT_SECURITY
Definition: rustls.h:66
rustls_result rustls_certificate_get_der(const struct rustls_certificate *cert, const uint8_t **out_der_data, size_t *out_der_len)
void rustls_connection_set_userdata(struct rustls_connection *conn, void *userdata)
struct rustls_slice_bytes rustls_slice_slice_bytes_get(const struct rustls_slice_slice_bytes *input, size_t n)
struct rustls_str rustls_accepted_server_name(const struct rustls_accepted *accepted)
void rustls_certified_key_free(const struct rustls_certified_key *key)
struct rustls_acceptor rustls_acceptor
Definition: rustls.h:133
rustls_result rustls_client_config_builder_use_roots(struct rustls_client_config_builder *config_builder, const struct rustls_root_cert_store *roots)
uint32_t(* rustls_session_store_get_callback)(rustls_session_store_userdata userdata, const struct rustls_slice_bytes *key, int remove_after, uint8_t *buf, size_t count, size_t *out_n)
Definition: rustls.h:479
void rustls_server_config_builder_set_client_verifier_optional(struct rustls_server_config_builder *builder, const struct rustls_client_cert_verifier_optional *verifier)
rustls_io_result rustls_acceptor_read_tls(struct rustls_acceptor *acceptor, rustls_read_callback callback, void *userdata, size_t *out_n)
struct rustls_client_cert_verifier rustls_client_cert_verifier
Definition: rustls.h:156
const struct rustls_client_cert_verifier * rustls_client_cert_verifier_new(const struct rustls_root_cert_store *store)
const struct rustls_supported_ciphersuite * rustls_default_ciphersuites_get_entry(size_t i)
rustls_result rustls_client_config_builder_new_custom(const struct rustls_supported_ciphersuite *const *cipher_suites, size_t cipher_suites_len, const uint16_t *tls_versions, size_t tls_versions_len, struct rustls_client_config_builder **builder_out)
struct rustls_slice_slice_bytes rustls_slice_slice_bytes
Definition: rustls.h:235
rustls_result rustls_certified_key_build(const uint8_t *cert_chain, size_t cert_chain_len, const uint8_t *private_key, size_t private_key_len, const struct rustls_certified_key **certified_key_out)
struct rustls_str rustls_supported_ciphersuite_get_name(const struct rustls_supported_ciphersuite *supported_ciphersuite)
rustls_result rustls_server_connection_new(const struct rustls_server_config *config, struct rustls_connection **conn_out)
rustls_result rustls_server_connection_get_sni_hostname(const struct rustls_connection *conn, uint8_t *buf, size_t count, size_t *out_n)
bool rustls_connection_wants_read(const struct rustls_connection *conn)
struct rustls_connection rustls_connection
Definition: rustls.h:187
bool rustls_connection_is_handshaking(const struct rustls_connection *conn)
rustls_io_result(* rustls_write_callback)(void *userdata, const uint8_t *buf, size_t n, size_t *out_n)
Definition: rustls.h:363
const struct rustls_certified_key *(* rustls_client_hello_callback)(rustls_client_hello_userdata userdata, const struct rustls_client_hello *hello)
Definition: rustls.h:445
rustls_result rustls_certified_key_clone_with_ocsp(const struct rustls_certified_key *certified_key, const struct rustls_slice_bytes *ocsp_response, const struct rustls_certified_key **cloned_key_out)
rustls_result rustls_server_config_builder_new_custom(const struct rustls_supported_ciphersuite *const *cipher_suites, size_t cipher_suites_len, const uint16_t *tls_versions, size_t tls_versions_len, struct rustls_server_config_builder **builder_out)
void rustls_connection_get_alpn_protocol(const struct rustls_connection *conn, const uint8_t **protocol_out, size_t *protocol_out_len)
const size_t RUSTLS_ALL_VERSIONS_LEN
struct rustls_accepted rustls_accepted
Definition: rustls.h:107
struct rustls_server_config_builder * rustls_server_config_builder_new(void)
void rustls_client_cert_verifier_optional_free(const struct rustls_client_cert_verifier_optional *verifier)
rustls_io_result rustls_connection_write_tls(struct rustls_connection *conn, rustls_write_callback callback, void *userdata, size_t *out_n)
rustls_result rustls_client_config_builder_set_alpn_protocols(struct rustls_client_config_builder *builder, const struct rustls_slice_bytes *protocols, size_t len)
size_t rustls_slice_str_len(const struct rustls_slice_str *input)
rustls_result rustls_client_connection_new(const struct rustls_client_config *config, const char *hostname, struct rustls_connection **conn_out)
const size_t RUSTLS_ALL_CIPHER_SUITES_LEN
rustls_result rustls_client_config_builder_dangerous_set_certificate_verifier(struct rustls_client_config_builder *config_builder, rustls_verify_server_cert_callback callback)
bool rustls_result_is_cert_error(unsigned int result)
bool rustls_connection_wants_write(const struct rustls_connection *conn)
struct rustls_client_config rustls_client_config
Definition: rustls.h:174
void rustls_connection_set_log_callback(struct rustls_connection *conn, rustls_log_callback cb)
uint16_t rustls_supported_ciphersuite_get_suite(const struct rustls_supported_ciphersuite *supported_ciphersuite)
void rustls_root_cert_store_free(struct rustls_root_cert_store *store)
struct rustls_iovec rustls_iovec
Definition: rustls.h:195
void rustls_server_config_builder_free(struct rustls_server_config_builder *config)
void(* rustls_log_callback)(void *userdata, const struct rustls_log_params *params)
Definition: rustls.h:347
struct rustls_str rustls_version(void)
struct rustls_root_cert_store * rustls_root_cert_store_new(void)
void * rustls_client_hello_userdata
Definition: rustls.h:384
void rustls_connection_send_close_notify(struct rustls_connection *conn)
struct rustls_supported_ciphersuite rustls_supported_ciphersuite
Definition: rustls.h:259
rustls_io_result(* rustls_write_vectored_callback)(void *userdata, const struct rustls_iovec *iov, size_t count, size_t *out_n)
Definition: rustls.h:379
size_t rustls_default_ciphersuites_len(void)
rustls_tls_version
Definition: rustls.h:92
@ RUSTLS_TLS_VERSION_TLSV1_0
Definition: rustls.h:95
@ RUSTLS_TLS_VERSION_TLSV1_2
Definition: rustls.h:97
@ RUSTLS_TLS_VERSION_SSLV2
Definition: rustls.h:93
@ RUSTLS_TLS_VERSION_TLSV1_1
Definition: rustls.h:96
@ RUSTLS_TLS_VERSION_TLSV1_3
Definition: rustls.h:98
@ RUSTLS_TLS_VERSION_SSLV3
Definition: rustls.h:94
void rustls_client_config_builder_set_enable_sni(struct rustls_client_config_builder *config, bool enable)
void rustls_acceptor_free(struct rustls_acceptor *acceptor)
uint16_t rustls_connection_get_protocol_version(const struct rustls_connection *conn)
struct rustls_acceptor * rustls_acceptor_new(void)
rustls_result rustls_connection_write(struct rustls_connection *conn, const uint8_t *buf, size_t count, size_t *out_n)
void rustls_connection_set_buffer_limit(struct rustls_connection *conn, size_t n)
rustls_result rustls_client_config_builder_set_certified_key(struct rustls_client_config_builder *builder, const struct rustls_certified_key *const *certified_keys, size_t certified_keys_len)
struct rustls_slice_u16 signature_schemes
Definition: rustls.h:423
const struct rustls_slice_slice_bytes * alpn
Definition: rustls.h:424
struct rustls_str sni_name
Definition: rustls.h:422
struct rustls_str message
Definition: rustls.h:344
rustls_log_level level
Definition: rustls.h:343
size_t len
Definition: rustls.h:318
const uint8_t * data
Definition: rustls.h:317
const uint16_t * data
Definition: rustls.h:400
size_t len
Definition: rustls.h:401
size_t len
Definition: rustls.h:276
const char * data
Definition: rustls.h:275
struct rustls_slice_bytes ocsp_response
Definition: rustls.h:335
struct rustls_str dns_name
Definition: rustls.h:334
struct rustls_slice_bytes end_entity_cert_der
Definition: rustls.h:332
const struct rustls_slice_slice_bytes * intermediate_certs_der
Definition: rustls.h:333