* Add CA certificate in example SHA1 fingerprint is broken now: more info: https://shattered.io * Best error handling When occur an error in WiFiClientSecure library just return the error message and clean the context avoiding crash - fix for https://github.com/espressif/arduino-esp32/issues/211 Translate MbedTLS error codes in messages for best understanding * Declarate certificates as const mbedtls_pk_parse_key needs a const unsigned char * certificate. In old implementation the certificate was declarated as char * so first it converts to unsigned and after to const. When we convert signed to unsigned it may result in a +1 larger output. Fix issue https://github.com/espressif/arduino-esp32/issues/223
38 lines
1.2 KiB
C
38 lines
1.2 KiB
C
/* Provide SSL/TLS functions to ESP32 with Arduino IDE
|
|
* by Evandro Copercini - 2017 - Apache 2.0 License
|
|
*/
|
|
|
|
#ifndef ARD_SSL_H
|
|
#define ARD_SSL_H
|
|
#include "mbedtls/platform.h"
|
|
#include "mbedtls/net.h"
|
|
#include "mbedtls/debug.h"
|
|
#include "mbedtls/ssl.h"
|
|
#include "mbedtls/entropy.h"
|
|
#include "mbedtls/ctr_drbg.h"
|
|
#include "mbedtls/error.h"
|
|
|
|
typedef struct sslclient_context {
|
|
int socket;
|
|
mbedtls_net_context net_ctx;
|
|
mbedtls_ssl_context ssl_ctx;
|
|
mbedtls_ssl_config ssl_conf;
|
|
|
|
mbedtls_ctr_drbg_context drbg_ctx;
|
|
mbedtls_entropy_context entropy_ctx;
|
|
|
|
mbedtls_x509_crt ca_cert;
|
|
mbedtls_x509_crt client_cert;
|
|
mbedtls_pk_context client_key;
|
|
} sslclient_context;
|
|
|
|
|
|
void ssl_init(sslclient_context *ssl_client);
|
|
int start_ssl_client(sslclient_context *ssl_client, uint32_t ipAddress, uint32_t port, const char *rootCABuff, const char *cli_cert, const char *cli_key);
|
|
void stop_ssl_socket(sslclient_context *ssl_client, const char *rootCABuff, const char *cli_cert, const char *cli_key);
|
|
int data_to_read(sslclient_context *ssl_client);
|
|
int send_ssl_data(sslclient_context *ssl_client, const uint8_t *data, uint16_t len);
|
|
int get_ssl_receive(sslclient_context *ssl_client, uint8_t *data, int length);
|
|
|
|
#endif
|