summaryrefslogtreecommitdiff
blob: 7cf126782379a59080fb3b54865dae93d3c194d6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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 <string.h>
 #include <arpa/inet.h>
 #include "crypt.h"
+#include "ssl.h"
 
 #ifdef USE_POLARSSL
 #include <polarssl/havege.h>
-#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