]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - libratbox/src/nossl.c
Fix up grammar in ShadowIRCd MOTD for great good!
[irc/rqf/shadowircd.git] / libratbox / src / nossl.c
index c27a0c76a79b7f7855ba46141c43b50e90ef6f5b..d077c3fd0adf9eb39af3f7e58cb090305c1bab0e 100644 (file)
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
  *  USA
  * 
- *  $Id: commio.c 24808 2008-01-02 08:17:05Z androsyn $
  */
 
 
 #include <libratbox_config.h>
 #include <ratbox_lib.h>
-
 #if !defined(HAVE_OPENSSL) && !defined(HAVE_GNUTLS)
 
+#include "arc4random.h"
+
 #include <commio-int.h>
 #include <commio-ssl.h>
 
-int 
+int
 rb_setup_ssl_server(const char *cert, const char *keyfile, const char *dhfile)
 {
        errno = ENOSYS;
@@ -54,17 +54,44 @@ rb_ssl_listen(rb_fde_t *F, int backlog)
        return -1;
 }
 
-int rb_init_prng(const char *path, prng_seed_t seed_type)
+static void
+rb_stir_arc4random(void *unused)
 {
-       return -1;
+       arc4random_stir();
+}
+
+
+int
+rb_init_prng(const char *path, prng_seed_t seed_type)
+{
+       /* xxx this ignores the parameters above */
+       arc4random_stir();
+       rb_event_addish("rb_stir_arc4random", rb_stir_arc4random, NULL, 300);
+       return 1;
 }
 
 int
 rb_get_random(void *buf, size_t length)
 {
-       return -1;
+       uint32_t rnd = 0, i;
+       uint8_t *xbuf = buf;
+       for(i = 0; i < length; i++)
+       {
+               if(i % 4 == 0)
+                       rnd = arc4random();
+               xbuf[i] = rnd;
+               rnd >>= 8;
+       }
+       return 1;
 }
 
+int
+rb_get_pseudo_random(void *buf, size_t length)
+{
+       return rb_get_random(buf, length);
+}
+
+
 const char *
 rb_get_ssl_strerror(rb_fde_t *F)
 {
@@ -72,21 +99,27 @@ rb_get_ssl_strerror(rb_fde_t *F)
        return nosupport;
 }
 
-void 
-rb_ssl_start_accepted(rb_fde_t *new_F, ACCB *cb, void *data, int timeout)
+int
+rb_get_ssl_certfp(rb_fde_t *F, uint8_t certfp[RB_SSL_CERTFP_LEN])
+{
+       return 0;
+}
+
+void
+rb_ssl_start_accepted(rb_fde_t *new_F, ACCB * cb, void *data, int timeout)
 {
        return;
 }
 
-void 
-rb_ssl_start_connected(rb_fde_t *F, CNCB *callback, void *data, int timeout)
+void
+rb_ssl_start_connected(rb_fde_t *F, CNCB * callback, void *data, int timeout)
 {
        return;
 }
 
 void
-rb_connect_tcp_ssl(rb_fde_t *F, struct sockaddr *dest, 
-                     struct sockaddr *clocal, int socklen, CNCB *callback, void *data, int timeout)
+rb_connect_tcp_ssl(rb_fde_t *F, struct sockaddr *dest,
+                  struct sockaddr *clocal, int socklen, CNCB * callback, void *data, int timeout)
 {
        return;
 }
@@ -98,28 +131,47 @@ rb_supports_ssl(void)
 }
 
 void
-rb_ssl_shutdown(rb_fde_t * F)
-{  
+rb_ssl_shutdown(rb_fde_t *F)
+{
        return;
-}        
+}
 
 void
-rb_ssl_accept_setup(rb_fde_t * F, int new_fd, struct sockaddr *st, int addrlen)
+rb_ssl_accept_setup(rb_fde_t *F, rb_fde_t *new_F, struct sockaddr *st, int addrlen)
 {
        return;
 }
 
 ssize_t
-rb_ssl_read(rb_fde_t * F, void *buf, size_t count)
+rb_ssl_read(rb_fde_t *F, void *buf, size_t count)
 {
-       return 0;
+       errno = ENOSYS;
+       return -1;
 }
 
 ssize_t
-rb_ssl_write(rb_fde_t * F, const void *buf, size_t count)
+rb_ssl_write(rb_fde_t *F, const void *buf, size_t count)
+{
+       errno = ENOSYS;
+       return -1;
+}
+
+unsigned int
+rb_ssl_handshake_count(rb_fde_t *F)
 {
        return 0;
 }
 
-#endif /* !HAVE_OPENSSL */
+void
+rb_ssl_clear_handshake_count(rb_fde_t *F)
+{
+       return;
+}
 
+void
+rb_get_ssl_info(char *buf, size_t len)
+{
+        rb_snprintf(buf, len, "Not compiled with SSL support"); 
+}
+                                                
+#endif /* !HAVE_OPENSSL */