]> granicus.if.org Git - curl/commitdiff
cyassl: use RNG_GenerateBlock to generate a good random number
authorDan Fandrich <dan@coneharvesters.com>
Wed, 30 Jul 2014 22:09:13 +0000 (00:09 +0200)
committerDan Fandrich <dan@coneharvesters.com>
Wed, 30 Jul 2014 22:09:13 +0000 (00:09 +0200)
lib/vtls/cyassl.c
lib/vtls/cyassl.h

index 56e56e45e5ee1c7b0ec726032646a7f40ed3dbe6..0de589e1639a590f3a994ede03046d29e7e3be55 100644 (file)
@@ -54,6 +54,7 @@
 #else
 #include <cyassl/error.h>
 #endif
+#include <cyassl/ctaocrypt/random.h>
 
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -638,4 +639,17 @@ Curl_cyassl_connect(struct connectdata *conn,
   return CURLE_OK;
 }
 
+int Curl_cyassl_random(struct SessionHandle *data,
+                       unsigned char *entropy,
+                       size_t length)
+{
+  RNG rng;
+  (void)data;
+  if(InitRng(&rng))
+    return 1;
+  if(RNG_GenerateBlock(&rng, entropy, length))
+    return 1;
+  return 0;
+}
+
 #endif
index eb6145905dee752567624c6c0c52a29c5e9c7d02..78cba2ff8df037f5939f5853700e67541bec90f1 100644 (file)
@@ -43,6 +43,9 @@ int Curl_cyassl_init(void);
 CURLcode Curl_cyassl_connect_nonblocking(struct connectdata *conn,
                                          int sockindex,
                                          bool *done);
+int Curl_cyassl_random(struct SessionHandle *data,
+                       unsigned char *entropy,
+                       size_t length);
 
 /* API setup for CyaSSL */
 #define curlssl_init Curl_cyassl_init
@@ -59,9 +62,7 @@ CURLcode Curl_cyassl_connect_nonblocking(struct connectdata *conn,
 #define curlssl_version Curl_cyassl_version
 #define curlssl_check_cxn(x) (x=x, -1)
 #define curlssl_data_pending(x,y) Curl_cyassl_data_pending(x,y)
-
-/* this might cause libcurl to use a weeker random! */
-#define curlssl_random(x,y,z) (x=x, y=y, z=z, CURLE_NOT_BUILT_IN)
+#define curlssl_random(x,y,z) Curl_cyassl_random(x,y,z)
 
 #endif /* USE_CYASSL */
 #endif /* HEADER_CURL_CYASSL_H */