From 10512fc50e6184397206a41c157c09d9b02e9e1a Mon Sep 17 00:00:00 2001 From: David Timber Date: Sat, 11 Jan 2020 18:03:47 +1100 Subject: staged resolv_worker * replaced RNG from `rnd` to `mbedtls_ctr_drbg` * use of `uint_fastN_t` where appropriate * heartbeat protocol draft * improved worker scheduling mech --- src/mbedtls.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/mbedtls.c (limited to 'src/mbedtls.c') diff --git a/src/mbedtls.c b/src/mbedtls.c new file mode 100644 index 0000000..518da1f --- /dev/null +++ b/src/mbedtls.c @@ -0,0 +1,52 @@ +#include "mbedtls.h" + +#include +#include + +#include + + +int prne_mbedtls_x509_crt_verify_cb (void *param, mbedtls_x509_crt *crt, int crt_depth, uint32_t *flags) { + *flags &= ~MBEDTLS_X509_BADCERT_EXPIRED; + return 0; +} + +int prne_mbedtls_ssl_send_cb (void *ctx, const unsigned char *buf, size_t len) { + const int fd = *(int*)ctx; + ssize_t ret; + + ret = write(fd, buf, len); + if (ret < 0) { + switch (errno) { +#if EAGAIN == EWOULDBLOCK + case EAGAIN: +#else + case EAGAIN: + case EWOULDBLOCK: +#endif + return MBEDTLS_ERR_SSL_WANT_WRITE; + } + } + + return ret; +} + +int prne_mbedtls_ssl_recv_cb (void *ctx, unsigned char *buf, size_t len) { + const int fd = *(int*)ctx; + ssize_t ret; + + ret = read(fd, buf, len); + if (ret < 0) { + switch (errno) { +#if EAGAIN == EWOULDBLOCK + case EAGAIN: +#else + case EAGAIN: + case EWOULDBLOCK: +#endif + return MBEDTLS_ERR_SSL_WANT_READ; + } + } + + return ret; +} -- cgit