123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- /*
- * Copyright (c) 2018 Nordic Semiconductor ASA
- *
- * SPDX-License-Identifier: Apache-2.0
- */
- /** @file
- * @brief TLS credentials management
- *
- * An API for applications to configure TLS credentials.
- */
- #ifndef ZEPHYR_INCLUDE_NET_TLS_CREDENTIALS_H_
- #define ZEPHYR_INCLUDE_NET_TLS_CREDENTIALS_H_
- /**
- * @brief TLS credentials management
- * @defgroup tls_credentials TLS credentials management
- * @ingroup networking
- * @{
- */
- #ifdef __cplusplus
- extern "C" {
- #endif
- /** TLS credential types */
- enum tls_credential_type {
- /** Unspecified credential. */
- TLS_CREDENTIAL_NONE,
- /** A trusted CA certificate. Use this to authenticate remote servers.
- * Used with certificate-based ciphersuites.
- */
- TLS_CREDENTIAL_CA_CERTIFICATE,
- /** A public server certificate. Use this to register your own server
- * certificate. Should be registered together with a corresponding
- * private key. Used with certificate-based ciphersuites.
- */
- TLS_CREDENTIAL_SERVER_CERTIFICATE,
- /** Private key. Should be registered together with a corresponding
- * public certificate. Used with certificate-based ciphersuites.
- */
- TLS_CREDENTIAL_PRIVATE_KEY,
- /** Pre-shared key. Should be registered together with a corresponding
- * PSK identity. Used with PSK-based ciphersuites.
- */
- TLS_CREDENTIAL_PSK,
- /** Pre-shared key identity. Should be registered together with a
- * corresponding PSK. Used with PSK-based ciphersuites.
- */
- TLS_CREDENTIAL_PSK_ID
- };
- /** Secure tag, a reference to TLS credential
- *
- * Secure tag can be used to reference credential after it was registered
- * in the system.
- *
- * @note Some TLS credentials come in pairs:
- * - TLS_CREDENTIAL_SERVER_CERTIFICATE with TLS_CREDENTIAL_PRIVATE_KEY,
- * - TLS_CREDENTIAL_PSK with TLS_CREDENTIAL_PSK_ID.
- * Such pairs of credentials must be assigned the same secure tag to be
- * correctly handled in the system.
- */
- typedef int sec_tag_t;
- /**
- * @brief Add a TLS credential.
- *
- * @details This function adds a TLS credential, that can be used
- * by TLS/DTLS for authentication.
- *
- * @param tag A security tag that credential will be referenced with.
- * @param type A TLS/DTLS credential type.
- * @param cred A TLS/DTLS credential.
- * @param credlen A TLS/DTLS credential length.
- *
- * @retval 0 TLS credential successfully added.
- * @retval -EACCES Access to the TLS credential subsystem was denied.
- * @retval -ENOMEM Not enough memory to add new TLS credential.
- * @retval -EEXIST TLS credential of specific tag and type already exists.
- */
- int tls_credential_add(sec_tag_t tag, enum tls_credential_type type,
- const void *cred, size_t credlen);
- /**
- * @brief Get a TLS credential.
- *
- * @details This function gets an already registered TLS credential,
- * referenced by @p tag secure tag of @p type.
- *
- * @param tag A security tag of requested credential.
- * @param type A TLS/DTLS credential type of requested credential.
- * @param cred A buffer for TLS/DTLS credential.
- * @param credlen A buffer size on input. TLS/DTLS credential length on output.
- *
- * @retval 0 TLS credential successfully obtained.
- * @retval -EACCES Access to the TLS credential subsystem was denied.
- * @retval -ENOENT Requested TLS credential was not found.
- * @retval -EFBIG Requested TLS credential does not fit in the buffer provided.
- */
- int tls_credential_get(sec_tag_t tag, enum tls_credential_type type,
- void *cred, size_t *credlen);
- /**
- * @brief Delete a TLS credential.
- *
- * @details This function removes a TLS credential, referenced by @p tag
- * secure tag of @p type.
- *
- * @param tag A security tag corresponding to removed credential.
- * @param type A TLS/DTLS credential type of removed credential.
- *
- * @retval 0 TLS credential successfully deleted.
- * @retval -EACCES Access to the TLS credential subsystem was denied.
- * @retval -ENOENT Requested TLS credential was not found.
- */
- int tls_credential_delete(sec_tag_t tag, enum tls_credential_type type);
- #ifdef __cplusplus
- }
- #endif
- /**
- * @}
- */
- #endif /* ZEPHYR_INCLUDE_NET_TLS_CREDENTIALS_H_ */
|