diff --git a/src/crypt.c b/src/crypt.c index 7188c2d..5025ba7 100644 --- a/src/crypt.c +++ b/src/crypt.c @@ -41,16 +41,10 @@ #include #include #include "crypt.h" +#include "ssl.h" #ifdef USE_POLARSSL #include -#define RAND_bytes(_dst_, _size_) do { \ - int i; \ - for (i = 0; i < _size_; i++) { \ - _dst_[i] = havege_rand(&hs); \ - } \ - } while (0); - extern havege_state hs; #endif diff --git a/src/ssl.c b/src/ssl.c index ab953f3..1f2ef6a 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -187,7 +187,7 @@ SSL_handle_t *SSLi_newconnection(int *fd, bool_t *SSLready) ssl_set_endpoint(ssl, SSL_IS_SERVER); ssl_set_authmode(ssl, SSL_VERIFY_NONE); - ssl_set_rng(ssl, havege_rand, &hs); + ssl_set_rng(ssl, HAVEGE_RAND, &hs); ssl_set_dbg(ssl, pssl_debug, NULL); ssl_set_bio(ssl, net_recv, fd, net_send, fd); diff --git a/src/ssl.h b/src/ssl.h index 5629c4c..8aa3f30 100644 --- a/src/ssl.h +++ b/src/ssl.h @@ -45,8 +45,29 @@ #else #if (POLARSSL_VERSION_MAJOR == 0) #define POLARSSL_API_V0 + #define HAVEGE_RAND (havege_rand) + #define RAND_bytes(_dst_, _size_) do { \ + int i; \ + for (i = 0; i < _size_; i++) { \ + _dst_[i] = havege_rand(&hs); \ + } \ + } while (0) #else #define POLARSSL_API_V1 + #if (POLARSSL_VERSION_MINOR >= 1) + #define HAVEGE_RAND (havege_random) + #define RAND_bytes(_dst_, _size_) do { \ + havege_random(&hs, _dst_, _size_); \ + } while (0) + #else + #define HAVEGE_RAND (havege_rand) + #define RAND_bytes(_dst_, _size_) do { \ + int i; \ + for (i = 0; i < _size_; i++) { \ + _dst_[i] = havege_rand(&hs); \ + } \ + } while (0) + #endif #endif #endif