提交 c00cee00 编写于 作者: R Richard Levitte

FreeBSD has /dev/crypto as well.

PR: 462
上级 8228f302
...@@ -97,19 +97,19 @@ void ENGINE_load_builtin_engines(void) ...@@ -97,19 +97,19 @@ void ENGINE_load_builtin_engines(void)
ENGINE_load_4758cca(); ENGINE_load_4758cca();
#endif #endif
#endif #endif
#ifdef __OpenBSD__ #if defined(__OpenBSD__) || defined(__FreeBSD__)
ENGINE_load_cryptodev(); ENGINE_load_cryptodev();
#endif #endif
#endif #endif
} }
#ifdef __OpenBSD__ #if defined(__OpenBSD__) || defined(__FreeBSD__)
void ENGINE_setup_openbsd(void) { void ENGINE_setup_bsd_cryptodev(void) {
static int openbsd_default_loaded = 0; static int bsd_cryptodev_default_loaded = 0;
if (!openbsd_default_loaded) { if (!bsd_cryptodev_default_loaded) {
ENGINE_load_cryptodev(); ENGINE_load_cryptodev();
ENGINE_register_all_complete(); ENGINE_register_all_complete();
} }
openbsd_default_loaded=1; bsd_cryptodev_default_loaded=1;
} }
#endif #endif
...@@ -33,31 +33,28 @@ ...@@ -33,31 +33,28 @@
#include <openssl/engine.h> #include <openssl/engine.h>
#include <openssl/evp.h> #include <openssl/evp.h>
#ifndef __OpenBSD__ #if (defined(__unix__) || defined(unix)) && !defined(USG)
void
ENGINE_load_cryptodev(void)
{
/* This is a NOP unless __OpenBSD__ is defined */
return;
}
#else /* __OpenBSD__ */
#include <sys/types.h>
#include <sys/param.h> #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 void
ENGINE_load_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; return;
} }
#else /* OpenBSD 3.0 or above */ #else
#include <sys/types.h>
#include <crypto/cryptodev.h> #include <crypto/cryptodev.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
#include <errno.h> #include <errno.h>
...@@ -1032,12 +1029,18 @@ static DH_METHOD cryptodev_dh = { ...@@ -1032,12 +1029,18 @@ static DH_METHOD cryptodev_dh = {
static int static int
cryptodev_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)()) cryptodev_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)())
{ {
#ifdef HAVE_SYSLOG_R
struct syslog_data sd = SYSLOG_DATA_INIT; struct syslog_data sd = SYSLOG_DATA_INIT;
#endif
switch (cmd) { switch (cmd) {
default: default:
#ifdef HAVE_SYSLOG_R
syslog_r(LOG_ERR, &sd, syslog_r(LOG_ERR, &sd,
"cryptodev_ctrl: unknown command %d", cmd); "cryptodev_ctrl: unknown command %d", cmd);
#else
syslog(LOG_ERR, "cryptodev_ctrl: unknown command %d", cmd);
#endif
break; break;
} }
return (1); return (1);
...@@ -1064,7 +1067,7 @@ ENGINE_load_cryptodev(void) ...@@ -1064,7 +1067,7 @@ ENGINE_load_cryptodev(void)
close(fd); close(fd);
if (!ENGINE_set_id(engine, "cryptodev") || 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_ciphers(engine, cryptodev_engine_ciphers) ||
!ENGINE_set_digests(engine, cryptodev_engine_digests) || !ENGINE_set_digests(engine, cryptodev_engine_digests) ||
!ENGINE_set_ctrl_function(engine, cryptodev_ctrl) || !ENGINE_set_ctrl_function(engine, cryptodev_ctrl) ||
...@@ -1126,5 +1129,4 @@ ENGINE_load_cryptodev(void) ...@@ -1126,5 +1129,4 @@ ENGINE_load_cryptodev(void)
ERR_clear_error(); ERR_clear_error();
} }
#endif /* OpenBSD 3.0 or above */ #endif /* HAVE_CRYPTODEV */
#endif /* __OpenBSD__ */
...@@ -73,7 +73,7 @@ void OPENSSL_add_all_algorithms_noconf(void) ...@@ -73,7 +73,7 @@ void OPENSSL_add_all_algorithms_noconf(void)
{ {
OpenSSL_add_all_ciphers(); OpenSSL_add_all_ciphers();
OpenSSL_add_all_digests(); OpenSSL_add_all_digests();
#ifdef __OpenBSD__ #if defined(__OpenBSD__) || defined(__FreeBSD__)
ENGINE_setup_openbsd(); ENGINE_setup_bsd_cryptodev();
#endif #endif
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册