*
*/
+#include <openssl/engine.h>
+#include <openssl/evp.h>
+#include "eng_int.h"
+/* Maybe this is needed? ... */
+#ifdef FLAT_INC
+#include "evp_locl.h"
+#else
+#include "../evp/evp_locl.h"
+#endif
+
#ifndef OPENSSL_OPENBSD_DEV_CRYPTO
-static void *dummy=&dummy;
+void ENGINE_load_openbsd_dev_crypto(void)
+ {
+ /* This is a NOP unless OPENSSL_OPENBSD_DEV_CRYPTO is defined */
+ return;
+ }
#else /* OPENSSL_OPENBSD_DEV_CRYPTO */
#include <fcntl.h>
#include <stdio.h>
#include <errno.h>
+#include <assert.h>
+#include <unistd.h>
#include <sys/ioctl.h>
+
#include <crypto/cryptodev.h>
-#include <openssl/engine.h>
-#include <openssl/evp.h>
-#include "eng_int.h"
-/* Maybe this is needed? ... */
-#include "../evp/evp_locl.h"
/****************************************************/
/* Declare the normal generic ENGINE stuff here ... */
static int dev_crypto_digests(ENGINE *e, const EVP_MD **digest,
const int **nids, int nid);
-static const char *dev_crypto_id = "openbsd_dev_crypto";
-static const char *dev_crypto_name = "OpenBSD /dev/crypto";
+static const char dev_crypto_id[] = "openbsd_dev_crypto";
+static const char dev_crypto_name[] = "OpenBSD /dev/crypto";
static ENGINE *engine_openbsd_dev_crypto(void)
{
static int dev_crypto_cleanup(EVP_CIPHER_CTX *ctx)
{
+ fprintf(stderr,"cleanup %d\n",CDATA(ctx)->ses);
if(ioctl(fd,CIOCFSESSION,&CDATA(ctx)->ses) == -1)
err("CIOCFSESSION failed");
err("CIOCGSESSION failed");
return 0;
}
+ fprintf(stderr,"opened %d\n",md_data->sess.ses);
return 1;
}
static int dev_crypto_cleanup_digest(MD_DATA *md_data)
{
+ fprintf(stderr,"cleanup %d\n",md_data->sess.ses);
if (ioctl(fd,CIOCFSESSION,&md_data->sess.ses) == -1)
{
err("CIOCFSESSION failed");