X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/db137867934884554ef0fd77ed16b62923f4f467..c1725bda3c9e6dc57cceedb2e867982ec2d4a509:/libratbox/src/nossl.c diff --git a/libratbox/src/nossl.c b/libratbox/src/nossl.c index aff870e1..6164bbe7 100644 --- a/libratbox/src/nossl.c +++ b/libratbox/src/nossl.c @@ -1,4 +1,4 @@ -/* +/* * libratbox: a library used by ircd-ratbox and other things * nossl.c: ssl stub code * @@ -14,26 +14,27 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA - * + * * $Id: commio.c 24808 2008-01-02 08:17:05Z androsyn $ */ #include #include +#if !defined(HAVE_OPENSSL) && !defined(HAVE_GNUTLS) && !defined(HAVE_MBEDTLS) -#ifndef HAVE_OPENSSL +#include "arc4random.h" #include #include -int -rb_setup_ssl_server(const char *cert, const char *keyfile, const char *dhfile) +int +rb_setup_ssl_server(const char *cert, const char *keyfile, const char *dhfile, const char *cipher_list) { errno = ENOSYS; return 0; @@ -48,21 +49,41 @@ rb_init_ssl(void) } int -rb_ssl_listen(rb_fde_t *F, int backlog) +rb_ssl_listen(rb_fde_t *F, int backlog, int defer_accept) { errno = ENOSYS; 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; } const char * @@ -72,21 +93,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], int method) +{ + 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,9 +125,61 @@ rb_supports_ssl(void) } void -rb_ssl_shutdown(rb_fde_t * F) -{ +rb_ssl_shutdown(rb_fde_t *F) +{ return; -} -#endif /* !HAVE_OPENSSL */ +} + +void +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) +{ + errno = ENOSYS; + return -1; +} +ssize_t +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; +} + +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"); +} + +int +rb_ssl_get_certfp(rb_fde_t *F, uint8_t certfp[RB_SSL_CERTFP_LEN]) +{ + errno = ENOSYS; + return -1; +} + +const char * +rb_ssl_get_cipher(rb_fde_t *F) +{ + errno = ENOSYS; + return NULL; +} + +#endif /* !HAVE_OPENSSL */