From 028a408d57cfcc891b9b88f1d56bc130980e11d0 Mon Sep 17 00:00:00 2001
From: Dan Fandrich <dan@coneharvesters.com>
Date: Thu, 31 Jul 2014 01:03:30 +0200
Subject: [PATCH] axtls: define curlssl_random using axTLS's PRNG

---
 lib/vtls/axtls.c | 17 +++++++++++++++++
 lib/vtls/axtls.h |  4 ++++
 2 files changed, 21 insertions(+)

diff --git a/lib/vtls/axtls.c b/lib/vtls/axtls.c
index 36cb7ad65a..1b577b1529 100644
--- a/lib/vtls/axtls.c
+++ b/lib/vtls/axtls.c
@@ -664,4 +664,21 @@ size_t Curl_axtls_version(char *buffer, size_t size)
   return snprintf(buffer, size, "axTLS/%s", ssl_version());
 }
 
+int Curl_axtls_random(struct SessionHandle *data,
+                      unsigned char *entropy,
+                      size_t length)
+{
+  static bool ssl_seeded = FALSE;
+  (void)data;
+  if(!ssl_seeded) {
+    ssl_seeded = TRUE;
+    /* Initialize the seed if not already done. This call is not exactly thread
+     * safe (and neither is the ssl_seeded check), but the worst effect of a
+     * race condition is that some global resources will leak. */
+    RNG_initialize();
+  }
+  get_random(length, entropy);
+  return 0;
+}
+
 #endif /* USE_AXTLS */
diff --git a/lib/vtls/axtls.h b/lib/vtls/axtls.h
index db91365976..55247b8eca 100644
--- a/lib/vtls/axtls.h
+++ b/lib/vtls/axtls.h
@@ -46,6 +46,9 @@ void Curl_axtls_session_free(void *ptr);
 size_t Curl_axtls_version(char *buffer, size_t size);
 int Curl_axtls_shutdown(struct connectdata *conn, int sockindex);
 int Curl_axtls_check_cxn(struct connectdata *conn);
+int Curl_axtls_random(struct SessionHandle *data,
+                      unsigned char *entropy,
+                      size_t length);
 
 /* API setup for axTLS */
 #define curlssl_init Curl_axtls_init
@@ -62,6 +65,7 @@ int Curl_axtls_check_cxn(struct connectdata *conn);
 #define curlssl_version Curl_axtls_version
 #define curlssl_check_cxn(x) Curl_axtls_check_cxn(x)
 #define curlssl_data_pending(x,y) (x=x, y=y, 0)
+#define curlssl_random(x,y,z) Curl_axtls_random(x,y,z)
 
 #endif /* USE_AXTLS */
 #endif /* HEADER_CURL_AXTLS_H */
-- 
GitLab