Commit c00cee00 authored by Richard Levitte's avatar Richard Levitte
Browse files

FreeBSD has /dev/crypto as well.

PR: 462
parent 8228f302
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -97,19 +97,19 @@ void ENGINE_load_builtin_engines(void)
	ENGINE_load_4758cca();
#endif
#endif
#ifdef __OpenBSD__
#if defined(__OpenBSD__) || defined(__FreeBSD__)
	ENGINE_load_cryptodev();
#endif
#endif
	}

#ifdef __OpenBSD__
void ENGINE_setup_openbsd(void) {
	static int openbsd_default_loaded = 0;
	if (!openbsd_default_loaded) {
#if defined(__OpenBSD__) || defined(__FreeBSD__)
void ENGINE_setup_bsd_cryptodev(void) {
	static int bsd_cryptodev_default_loaded = 0;
	if (!bsd_cryptodev_default_loaded) {
		ENGINE_load_cryptodev();
		ENGINE_register_all_complete();
	}
	openbsd_default_loaded=1;
	bsd_cryptodev_default_loaded=1;
}
#endif
+21 −19
Original line number Diff line number Diff line
@@ -33,31 +33,28 @@
#include <openssl/engine.h>
#include <openssl/evp.h>

#ifndef __OpenBSD__

void
ENGINE_load_cryptodev(void)
{
	/* This is a NOP unless __OpenBSD__ is defined */
	return;
}

#else /* __OpenBSD__ */

#include <sys/types.h>
#if (defined(__unix__) || defined(unix)) && !defined(USG)
#include <sys/param.h>
# if (OpenBSD >= 200112) || ((__FreeBSD_version >= 470101 && __FreeBSD_version < 50000) || __FreeBSD_version >= 50041)
#  define HAVE_CRYPTODEV
# endif
# if (OpenBSD >= 200110)
#  define HAVE_SYSLOG_R
# endif
#endif

#if OpenBSD < 200112
#ifndef HAVE_CRYPTODEV

void
ENGINE_load_cryptodev(void)
{
	/* This is a NOP unless we have release 3.0 (released december 2001) */
	/* This is a NOP on platforms without /dev/crypto */
	return;
}

#else /* OpenBSD 3.0 or above */
#else 
 
#include <sys/types.h>
#include <crypto/cryptodev.h>
#include <sys/ioctl.h>
#include <errno.h>
@@ -1032,12 +1029,18 @@ static DH_METHOD cryptodev_dh = {
static int
cryptodev_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)())
{
#ifdef HAVE_SYSLOG_R
	struct syslog_data sd = SYSLOG_DATA_INIT;
#endif

	switch (cmd) {
	default:
#ifdef HAVE_SYSLOG_R
		syslog_r(LOG_ERR, &sd,
		    "cryptodev_ctrl: unknown command %d", cmd);
#else
		syslog(LOG_ERR, "cryptodev_ctrl: unknown command %d", cmd);
#endif
		break;
	}
	return (1);
@@ -1064,7 +1067,7 @@ ENGINE_load_cryptodev(void)
	close(fd);

	if (!ENGINE_set_id(engine, "cryptodev") ||
	    !ENGINE_set_name(engine, "OpenBSD cryptodev engine") ||
	    !ENGINE_set_name(engine, "BSD cryptodev engine") ||
	    !ENGINE_set_ciphers(engine, cryptodev_engine_ciphers) ||
	    !ENGINE_set_digests(engine, cryptodev_engine_digests) ||
	    !ENGINE_set_ctrl_function(engine, cryptodev_ctrl) ||
@@ -1126,5 +1129,4 @@ ENGINE_load_cryptodev(void)
	ERR_clear_error();
}

#endif /* OpenBSD 3.0 or above */
#endif /* __OpenBSD__ */
#endif /* HAVE_CRYPTODEV */
+2 −2
Original line number Diff line number Diff line
@@ -73,7 +73,7 @@ void OPENSSL_add_all_algorithms_noconf(void)
	{
	OpenSSL_add_all_ciphers();
	OpenSSL_add_all_digests();
#ifdef __OpenBSD__
	ENGINE_setup_openbsd();
#if defined(__OpenBSD__) || defined(__FreeBSD__)
	ENGINE_setup_bsd_cryptodev();
#endif
	}