#include "iec_include.h" struct sTLSConfiguration { mbedtls_entropy_context entropy; mbedtls_ctr_drbg_context ctr_drbg; mbedtls_x509_crt ownCertificate; mbedtls_pk_context ownKey; mbedtls_x509_crt cacerts; mbedtls_x509_crl crl; mbedtls_ssl_config conf; LinkedList /* */ allowedCertificates; /* session cache for server */ mbedtls_ssl_cache_context cache; /* client side cached session */ mbedtls_ssl_session* savedSession; uint64_t savedSessionTime; bool chainValidation; bool allowOnlyKnownCertificates; /* TLS session renegotiation interval in milliseconds */ int renegotiationTimeInMs; /* TLS minimum version allowed (default: TLS_VERSION_TLS_1_0) */ TLSConfigVersion minVersion; /* TLS minimum version allowed (default: TLS_VERSION_TLS_1_2) */ TLSConfigVersion maxVersion; TLSConfiguration_EventHandler eventHandler; void* eventHandlerParameter; /* time of the last CRL update */ uint64_t crlUpdated; bool setupComplete; bool useSessionResumption; int sessionResumptionInterval; /* session resumption interval in seconds */ }; struct sTLSSocket { mbedtls_ssl_context ssl; Socket socket; mbedtls_ssl_config conf; TLSConfiguration tlsConfig; bool storePeerCert; uint8_t* peerCert; int peerCertLength; /* time of last session renegotiation (used to calculate next renegotiation time) */ uint64_t lastRenegotiationTime; /* time of the last CRL update */ uint64_t crlUpdated; };