summaryrefslogtreecommitdiff
path: root/security/xmlsec1/files/patch-src-openssl-app.c
blob: c723cad64dad2785c18e80dd143c9aecbeced423 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
--- src/openssl/app.c.orig	2022-05-03 23:36:17.000000000 +0900
+++ src/openssl/app.c	2022-05-07 05:18:46.065103000 +0900
@@ -43,6 +43,29 @@
 
 #include "openssl_compat.h"
 
+#if defined(XMLSEC_OPENSSL_API_110) && defined(LIBRESSL_VERSION_NUMBER)
+static UI_METHOD *
+ui_null_create(void)
+{
+	return (UI_create_method("OpenSSL NULL UI"));
+}
+static void
+ui_null_destroy(UI_METHOD *ui)
+{
+	UI_destroy_method(ui);
+}
+#else
+static const UI_METHOD *
+ui_null_create(void)
+{
+	return (UI_null());
+}
+static void
+ui_null_destroy(const UI_METHOD *ui)
+{
+}
+#endif
+
 static int      xmlSecOpenSSLAppLoadRANDFile            (const char *filename);
 static int      xmlSecOpenSSLAppSaveRANDFile            (const char *filename);
 static int      xmlSecOpenSSLDefaultPasswordCallback    (char *buf,
@@ -415,6 +438,11 @@
     EVP_PKEY* pKey = NULL;
     int engineInit = 0;
     int ret;
+#if defined(XMLSEC_OPENSSL_API_110) && defined(LIBRESSL_VERSION_NUMBER)
+    UI_METHOD *ui_null = ui_null_create();
+#else
+    const UI_METHOD *ui_null = ui_null_create();
+#endif
 
 #ifndef OPENSSL_NO_ENGINE
     xmlSecAssert2(engineName != NULL, NULL);
@@ -437,7 +465,7 @@
         }
     }
 
-    if(ENGINE_ctrl_cmd(engine, "SET_USER_INTERFACE", 0, (void *)UI_null(), 0, 1) < 0) {
+    if(ENGINE_ctrl_cmd(engine, "SET_USER_INTERFACE", 0, (void *)ui_null, 0, 1) < 0) {
         xmlSecOpenSSLError("ENGINE_ctrl_cmd_string(SET_USER_INTERFACE)", NULL);
         goto done;
     }
@@ -453,7 +481,7 @@
 
     /* load private key */
     pKey = ENGINE_load_private_key(engine, engineKeyId,
-                                   (UI_METHOD *)UI_null(),
+                                   (UI_METHOD *)ui_null,
                                    NULL);
     if(pKey == NULL) {
         xmlSecOpenSSLError("ENGINE_load_private_key", NULL);
@@ -484,6 +512,7 @@
     data = NULL;
 
 done:
+    ui_null_destroy(ui_null);
     /* cleanup */
     if(pKey != NULL) {
         EVP_PKEY_free(pKey);