summaryrefslogtreecommitdiffstats
path: root/engines/e_devcrypto.c
diff options
context:
space:
mode:
Diffstat (limited to 'engines/e_devcrypto.c')
-rw-r--r--engines/e_devcrypto.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/engines/e_devcrypto.c b/engines/e_devcrypto.c
index d54ca3bbc1..6715ef408e 100644
--- a/engines/e_devcrypto.c
+++ b/engines/e_devcrypto.c
@@ -1172,10 +1172,12 @@ static int devcrypto_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f) (void))
*/
static int open_devcrypto(void)
{
+ int fd;
+
if (cfd >= 0)
return 1;
- if ((cfd = open("/dev/crypto", O_RDWR, 0)) < 0) {
+ if ((fd = open("/dev/crypto", O_RDWR, 0)) < 0) {
#ifndef ENGINE_DEVCRYPTO_DEBUG
if (errno != ENOENT)
#endif
@@ -1183,6 +1185,16 @@ static int open_devcrypto(void)
return 0;
}
+#ifdef CRIOGET
+ if (ioctl(fd, CRIOGET, &cfd) < 0) {
+ fprintf(stderr, "Could not create crypto fd: %s\n", strerror(errno));
+ cfd = -1;
+ return 0;
+ }
+#else
+ cfd = fd;
+#endif
+
return 1;
}