On OpenBSD, use arc4random_buf() instead of rand() to prevent warnings
diff --git a/ChangeLog b/ChangeLog
index cddf071..d7d7004 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -52,6 +52,7 @@
    * Improve interoperability by not writing extension length in ClientHello
      when no extensions are present (found by Matthew Page)
    * rsa_check_pubkey() now allows an E up to N
+   * On OpenBSD, use arc4random_buf() instead of rand() to prevent warnings
 
 = Version 1.2.10 released 2013-10-07
 Changes
diff --git a/library/rsa.c b/library/rsa.c
index 98d7770..75e7a9a 100644
--- a/library/rsa.c
+++ b/library/rsa.c
@@ -1408,6 +1408,7 @@
 
 static int myrand( void *rng_state, unsigned char *output, size_t len )
 {
+#if !defined(__OpenBSD__)
     size_t i;
 
     if( rng_state != NULL )
@@ -1415,6 +1416,12 @@
 
     for( i = 0; i < len; ++i )
         output[i] = rand();
+#else
+    if( rng_state != NULL )
+        rng_state = NULL;
+
+    arc4random_buf( output, len );
+#endif /* !OpenBSD */
 
     return( 0 );
 }
diff --git a/tests/suites/helpers.function b/tests/suites/helpers.function
index c289cc8..7f70083 100644
--- a/tests/suites/helpers.function
+++ b/tests/suites/helpers.function
@@ -97,6 +97,7 @@
  */
 static int rnd_std_rand( void *rng_state, unsigned char *output, size_t len )
 {
+#if !defined(__OpenBSD__)
     size_t i;
 
     if( rng_state != NULL )
@@ -104,6 +105,12 @@
 
     for( i = 0; i < len; ++i )
         output[i] = rand();
+#else
+    if( rng_state != NULL )
+        rng_state = NULL;
+
+    arc4random_buf( output, len );
+#endif /* !OpenBSD */
 
     return( 0 );
 }