TLS_LOAD_FILE(3) Library Functions Manual TLS_LOAD_FILE(3) NAME tls_load_file, tls_unload_file, tls_config_set_ca_file, tls_config_set_ca_path, tls_config_set_ca_mem, tls_config_set_cert_file, tls_config_set_cert_mem, tls_config_set_crl_file, tls_config_set_crl_mem, tls_config_set_key_file, tls_config_set_key_mem, tls_config_set_ocsp_staple_mem, tls_config_set_ocsp_staple_file, tls_config_set_keypair_file, tls_config_set_keypair_mem, tls_config_set_keypair_ocsp_file, tls_config_set_keypair_ocsp_mem, tls_config_add_keypair_file, tls_config_add_keypair_ocsp_mem, tls_config_add_keypair_ocsp_file, tls_config_add_keypair_mem, tls_config_clear_keys, tls_config_set_verify_depth, tls_config_verify_client, tls_config_verify_client_optional, tls_default_ca_cert_file - TLS certificate and key configuration SYNOPSIS #include uint8_t * tls_load_file(const char *file, size_t *len, char *password); void tls_unload_file(uint8_t *buf, size_t len); int tls_config_set_ca_file(struct tls_config *config, const char *ca_file); int tls_config_set_ca_path(struct tls_config *config, const char *ca_path); int tls_config_set_ca_mem(struct tls_config *config, const uint8_t *cert, size_t len); int tls_config_set_cert_file(struct tls_config *config, const char *cert_file); int tls_config_set_cert_mem(struct tls_config *config, const uint8_t *cert, size_t len); int tls_config_set_crl_file(struct tls_config *config, const char *crl_file); int tls_config_set_crl_mem(struct tls_config *config, const uint8_t *crl, size_t len); int tls_config_set_key_file(struct tls_config *config, const char *key_file); int tls_config_set_key_mem(struct tls_config *config, const uint8_t *key, size_t len); int tls_config_set_ocsp_staple_mem(struct tls_config *config, const uint8_t *staple, size_t len); int tls_config_set_ocsp_staple_file(struct tls_config *config, const char *staple_file); int tls_config_set_keypair_file(struct tls_config *config, const char *cert_file, const char *key_file); int tls_config_set_keypair_mem(struct tls_config *config, const uint8_t *cert, size_t cert_len, const uint8_t *key, size_t key_len); int tls_config_set_keypair_ocsp_file(struct tls_config *config, const char *cert_file, const char *key_file, const char *staple_file); int tls_config_set_keypair_ocsp_mem(struct tls_config *config, const uint8_t *cert, size_t cert_len, const uint8_t *key, size_t key_len, const uint8_t *staple, size_t staple_len); int tls_config_add_keypair_file(struct tls_config *config, const char *cert_file, const char *key_file); int tls_config_add_keypair_mem(struct tls_config *config, const uint8_t *cert, size_t cert_len, const uint8_t *key, size_t key_len); int tls_config_add_keypair_ocsp_file(struct tls_config *config, const char *cert_file, const char *key_file, const char *staple_file); int tls_config_add_keypair_ocsp_mem(struct tls_config *config, const uint8_t *cert, size_t cert_len, const uint8_t *key, size_t key_len, const uint8_t *staple, size_t staple_len); void tls_config_clear_keys(struct tls_config *config); int tls_config_set_verify_depth(struct tls_config *config, int verify_depth); void tls_config_verify_client(struct tls_config *config); void tls_config_verify_client_optional(struct tls_config *config); const char * tls_default_ca_cert_file(void); DESCRIPTION tls_load_file() loads a certificate or key from disk into memory to be used with tls_config_set_ca_mem(), tls_config_set_cert_mem(), tls_config_set_crl_mem() or tls_config_set_key_mem(). A private key will be decrypted if the optional password argument is specified. tls_unload_file() unloads the memory that was returned from an earlier tls_load_file() call, ensuring that the memory contents is discarded. tls_default_ca_cert_file() returns the path of the file that contains the default root certificates. tls_config_set_ca_file() loads a file containing the root certificates. tls_config_set_ca_path() sets the path (directory) which should be searched for root certificates. tls_config_set_ca_mem() sets the root certificates directly from memory. tls_config_set_cert_file() loads a file containing the public certificate. tls_config_set_cert_mem() sets the public certificate directly from memory. tls_config_set_crl_file() loads a file containing the Certificate Revocation List (CRL). tls_config_set_crl_mem() sets the CRL directly from memory. tls_config_set_key_file() loads a file containing the private key. tls_config_set_key_mem() directly sets the private key from memory. tls_config_set_ocsp_staple_file() loads a file containing a DER-encoded OCSP response to be stapled during the TLS handshake. tls_config_set_ocsp_staple_mem() sets a DER-encoded OCSP response to be stapled during the TLS handshake from memory. tls_config_set_keypair_file() loads two files from which the public certificate and private key will be read. tls_config_set_keypair_mem() directly sets the public certificate and private key from memory. tls_config_set_keypair_ocsp_file() loads three files containing the public certificate, private key, and DER-encoded OCSP staple. tls_config_set_keypair_ocsp_mem() directly sets the public certificate, private key, and DER-encoded OCSP staple from memory. tls_config_add_keypair_file() adds an additional public certificate and private key from the specified files, used as an alternative certificate for Server Name Indication (server only). tls_config_add_keypair_mem() adds an additional public certificate and private key from memory, used as an alternative certificate for Server Name Indication (server only). tls_config_add_keypair_ocsp_file() adds an additional public certificate, private key, and DER-encoded OCSP staple from the specified files, used as an alternative certificate for Server Name Indication (server only). tls_config_add_keypair_ocsp_mem() adds an additional public certificate, private key, and DER-encoded OCSP staple from memory, used as an alternative certificate for Server Name Indication (server only). tls_config_clear_keys() clears any secret keys from memory. tls_config_set_verify_depth() limits the number of intermediate certificates that will be followed during certificate validation. tls_config_verify_client() enables client certificate verification, requiring the client to send a certificate (server only). tls_config_verify_client_optional() enables client certificate verification, without requiring the client to send a certificate (server only). RETURN VALUES tls_load_file() returns NULL on error or an out of memory condition. The other functions return 0 on success or -1 on error. SEE ALSO tls_config_ocsp_require_stapling(3), tls_config_set_protocols(3), tls_config_set_session_id(3), tls_configure(3), tls_init(3) HISTORY tls_config_set_ca_file(), tls_config_set_ca_path(), tls_config_set_cert_file(), tls_config_set_cert_mem(), tls_config_set_key_file(), tls_config_set_key_mem(), and tls_config_set_verify_depth() appeared in OpenBSD 5.6 and got their final names in OpenBSD 5.7. tls_load_file(), tls_config_set_ca_mem(), and tls_config_clear_keys() appeared in OpenBSD 5.7. tls_config_verify_client() and tls_config_verify_client_optional() appeared in OpenBSD 5.9. tls_config_set_keypair_file() and tls_config_set_keypair_mem() appeared in OpenBSD 6.0, and tls_config_add_keypair_file() and tls_config_add_keypair_mem() in OpenBSD 6.1. tls_config_set_crl_file() and tls_config_set_crl_mem() appeared in OpenBSD 6.2. AUTHORS Joel Sing with contributions from Ted Unangst and Bob Beck . tls_load_file() and tls_config_set_ca_mem() were written by Reyk Floeter . Linux 6.8.7-arch1-1 January 1, 2022 Linux 6.8.7-arch1-1