* [PATCH 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0
@ 2024-07-12 7:11 Jan Stancek
2024-07-12 7:11 ` [PATCH 1/3] sign-file,extract-cert: move common SSL helper functions to a header Jan Stancek
` (5 more replies)
0 siblings, 6 replies; 17+ messages in thread
From: Jan Stancek @ 2024-07-12 7:11 UTC (permalink / raw)
To: dhowells, dwmw2, zxu, keyrings; +Cc: linux-kernel, jstancek
The ENGINE interface has its limitations and it has been superseded
by the PROVIDER API, it is deprecated in OpenSSL version 3.0.
Some distros have started removing it from header files.
Update sign-file and extract-cert to use PROVIDER API for OpenSSL Major >= 3.
Tested on F39 with openssl-3.1.1, pkcs11-provider-0.5-2, openssl-pkcs11-0.4.12-4
and softhsm-2.6.1-5 by using same key/cert as PEM and PKCS11 and comparing that
the result is identical.
Jan Stancek (3):
sign-file,extract-cert: move common SSL helper functions to a header
sign-file,extract-cert: avoid using deprecated ERR_get_error_line()
sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
MAINTAINERS | 1 +
certs/Makefile | 2 +-
certs/extract-cert.c | 138 +++++++++++++++++++++++--------------------
scripts/sign-file.c | 134 +++++++++++++++++++++--------------------
scripts/ssl-common.h | 32 ++++++++++
5 files changed, 178 insertions(+), 129 deletions(-)
create mode 100644 scripts/ssl-common.h
--
2.39.3
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 1/3] sign-file,extract-cert: move common SSL helper functions to a header
2024-07-12 7:11 [PATCH 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0 Jan Stancek
@ 2024-07-12 7:11 ` Jan Stancek
2024-08-13 10:04 ` Jarkko Sakkinen
2024-07-12 7:11 ` [PATCH 2/3] sign-file,extract-cert: avoid using deprecated ERR_get_error_line() Jan Stancek
` (4 subsequent siblings)
5 siblings, 1 reply; 17+ messages in thread
From: Jan Stancek @ 2024-07-12 7:11 UTC (permalink / raw)
To: dhowells, dwmw2, zxu, keyrings; +Cc: linux-kernel, jstancek
Couple error handling helpers are repeated in both tools, so
move them to a common header.
Signed-off-by: Jan Stancek <jstancek@redhat.com>
---
MAINTAINERS | 1 +
certs/Makefile | 2 +-
| 37 ++-----------------------------------
scripts/sign-file.c | 37 ++-----------------------------------
scripts/ssl-common.h | 39 +++++++++++++++++++++++++++++++++++++++
5 files changed, 45 insertions(+), 71 deletions(-)
create mode 100644 scripts/ssl-common.h
diff --git a/MAINTAINERS b/MAINTAINERS
index 2a4d4b3a9b40..4681e3cd0d20 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -5042,6 +5042,7 @@ S: Maintained
F: Documentation/admin-guide/module-signing.rst
F: certs/
F: scripts/sign-file.c
+F: scripts/ssl-common.h
F: tools/certs/
CFAG12864B LCD DRIVER
diff --git a/certs/Makefile b/certs/Makefile
index 1094e3860c2a..f6fa4d8d75e0 100644
--- a/certs/Makefile
+++ b/certs/Makefile
@@ -84,5 +84,5 @@ targets += x509_revocation_list
hostprogs := extract-cert
-HOSTCFLAGS_extract-cert.o = $(shell $(HOSTPKG_CONFIG) --cflags libcrypto 2> /dev/null)
+HOSTCFLAGS_extract-cert.o = $(shell $(HOSTPKG_CONFIG) --cflags libcrypto 2> /dev/null) -I$(srctree)/scripts
HOSTLDLIBS_extract-cert = $(shell $(HOSTPKG_CONFIG) --libs libcrypto 2> /dev/null || echo -lcrypto)
--git a/certs/extract-cert.c b/certs/extract-cert.c
index 70e9ec89d87d..8e7ba9974a1f 100644
--- a/certs/extract-cert.c
+++ b/certs/extract-cert.c
@@ -23,6 +23,8 @@
#include <openssl/err.h>
#include <openssl/engine.h>
+#include "ssl-common.h"
+
/*
* OpenSSL 3.0 deprecates the OpenSSL's ENGINE API.
*
@@ -40,41 +42,6 @@ void format(void)
exit(2);
}
-static void display_openssl_errors(int l)
-{
- const char *file;
- char buf[120];
- int e, line;
-
- if (ERR_peek_error() == 0)
- return;
- fprintf(stderr, "At main.c:%d:\n", l);
-
- while ((e = ERR_get_error_line(&file, &line))) {
- ERR_error_string(e, buf);
- fprintf(stderr, "- SSL %s: %s:%d\n", buf, file, line);
- }
-}
-
-static void drain_openssl_errors(void)
-{
- const char *file;
- int line;
-
- if (ERR_peek_error() == 0)
- return;
- while (ERR_get_error_line(&file, &line)) {}
-}
-
-#define ERR(cond, fmt, ...) \
- do { \
- bool __cond = (cond); \
- display_openssl_errors(__LINE__); \
- if (__cond) { \
- err(1, fmt, ## __VA_ARGS__); \
- } \
- } while(0)
-
static const char *key_pass;
static BIO *wb;
static char *cert_dst;
diff --git a/scripts/sign-file.c b/scripts/sign-file.c
index 3edb156ae52c..39ba58db5d4e 100644
--- a/scripts/sign-file.c
+++ b/scripts/sign-file.c
@@ -29,6 +29,8 @@
#include <openssl/err.h>
#include <openssl/engine.h>
+#include "ssl-common.h"
+
/*
* OpenSSL 3.0 deprecates the OpenSSL's ENGINE API.
*
@@ -83,41 +85,6 @@ void format(void)
exit(2);
}
-static void display_openssl_errors(int l)
-{
- const char *file;
- char buf[120];
- int e, line;
-
- if (ERR_peek_error() == 0)
- return;
- fprintf(stderr, "At main.c:%d:\n", l);
-
- while ((e = ERR_get_error_line(&file, &line))) {
- ERR_error_string(e, buf);
- fprintf(stderr, "- SSL %s: %s:%d\n", buf, file, line);
- }
-}
-
-static void drain_openssl_errors(void)
-{
- const char *file;
- int line;
-
- if (ERR_peek_error() == 0)
- return;
- while (ERR_get_error_line(&file, &line)) {}
-}
-
-#define ERR(cond, fmt, ...) \
- do { \
- bool __cond = (cond); \
- display_openssl_errors(__LINE__); \
- if (__cond) { \
- errx(1, fmt, ## __VA_ARGS__); \
- } \
- } while(0)
-
static const char *key_pass;
static int pem_pw_cb(char *buf, int len, int w, void *v)
diff --git a/scripts/ssl-common.h b/scripts/ssl-common.h
new file mode 100644
index 000000000000..e6711c75ed91
--- /dev/null
+++ b/scripts/ssl-common.h
@@ -0,0 +1,39 @@
+/* SPDX-License-Identifier: LGPL-2.1+ */
+/*
+ * SSL helper functions shared by sign-file and extract-cert.
+ */
+
+static void display_openssl_errors(int l)
+{
+ const char *file;
+ char buf[120];
+ int e, line;
+
+ if (ERR_peek_error() == 0)
+ return;
+ fprintf(stderr, "At main.c:%d:\n", l);
+
+ while ((e = ERR_get_error_line(&file, &line))) {
+ ERR_error_string(e, buf);
+ fprintf(stderr, "- SSL %s: %s:%d\n", buf, file, line);
+ }
+}
+
+static void drain_openssl_errors(void)
+{
+ const char *file;
+ int line;
+
+ if (ERR_peek_error() == 0)
+ return;
+ while (ERR_get_error_line(&file, &line)) {}
+}
+
+#define ERR(cond, fmt, ...) \
+ do { \
+ bool __cond = (cond); \
+ display_openssl_errors(__LINE__); \
+ if (__cond) { \
+ errx(1, fmt, ## __VA_ARGS__); \
+ } \
+ } while (0)
--
2.39.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 2/3] sign-file,extract-cert: avoid using deprecated ERR_get_error_line()
2024-07-12 7:11 [PATCH 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0 Jan Stancek
2024-07-12 7:11 ` [PATCH 1/3] sign-file,extract-cert: move common SSL helper functions to a header Jan Stancek
@ 2024-07-12 7:11 ` Jan Stancek
2024-08-13 10:12 ` Jarkko Sakkinen
2024-07-12 7:11 ` [PATCH 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3 Jan Stancek
` (3 subsequent siblings)
5 siblings, 1 reply; 17+ messages in thread
From: Jan Stancek @ 2024-07-12 7:11 UTC (permalink / raw)
To: dhowells, dwmw2, zxu, keyrings; +Cc: linux-kernel, jstancek
ERR_get_error_line() is deprecated since OpenSSL 3.0.
Use ERR_peek_error_line() instead, and combine display_openssl_errors()
and drain_openssl_errors() to a single function where parameter decides
if it should consume errors silently.
Signed-off-by: Jan Stancek <jstancek@redhat.com>
---
| 4 ++--
scripts/sign-file.c | 6 +++---
scripts/ssl-common.h | 23 ++++++++---------------
3 files changed, 13 insertions(+), 20 deletions(-)
--git a/certs/extract-cert.c b/certs/extract-cert.c
index 8e7ba9974a1f..61bbe0085671 100644
--- a/certs/extract-cert.c
+++ b/certs/extract-cert.c
@@ -99,11 +99,11 @@ int main(int argc, char **argv)
parms.cert = NULL;
ENGINE_load_builtin_engines();
- drain_openssl_errors();
+ drain_openssl_errors(__LINE__, 1);
e = ENGINE_by_id("pkcs11");
ERR(!e, "Load PKCS#11 ENGINE");
if (ENGINE_init(e))
- drain_openssl_errors();
+ drain_openssl_errors(__LINE__, 1);
else
ERR(1, "ENGINE_init");
if (key_pass)
diff --git a/scripts/sign-file.c b/scripts/sign-file.c
index 39ba58db5d4e..bb3fdf1a617c 100644
--- a/scripts/sign-file.c
+++ b/scripts/sign-file.c
@@ -114,11 +114,11 @@ static EVP_PKEY *read_private_key(const char *private_key_name)
ENGINE *e;
ENGINE_load_builtin_engines();
- drain_openssl_errors();
+ drain_openssl_errors(__LINE__, 1);
e = ENGINE_by_id("pkcs11");
ERR(!e, "Load PKCS#11 ENGINE");
if (ENGINE_init(e))
- drain_openssl_errors();
+ drain_openssl_errors(__LINE__, 1);
else
ERR(1, "ENGINE_init");
if (key_pass)
@@ -273,7 +273,7 @@ int main(int argc, char **argv)
/* Digest the module data. */
OpenSSL_add_all_digests();
- display_openssl_errors(__LINE__);
+ drain_openssl_errors(__LINE__, 0);
digest_algo = EVP_get_digestbyname(hash_algo);
ERR(!digest_algo, "EVP_get_digestbyname");
diff --git a/scripts/ssl-common.h b/scripts/ssl-common.h
index e6711c75ed91..2db0e181143c 100644
--- a/scripts/ssl-common.h
+++ b/scripts/ssl-common.h
@@ -3,7 +3,7 @@
* SSL helper functions shared by sign-file and extract-cert.
*/
-static void display_openssl_errors(int l)
+static void drain_openssl_errors(int l, int silent)
{
const char *file;
char buf[120];
@@ -11,28 +11,21 @@ static void display_openssl_errors(int l)
if (ERR_peek_error() == 0)
return;
- fprintf(stderr, "At main.c:%d:\n", l);
+ if (!silent)
+ fprintf(stderr, "At main.c:%d:\n", l);
- while ((e = ERR_get_error_line(&file, &line))) {
+ while ((e = ERR_peek_error_line(&file, &line))) {
ERR_error_string(e, buf);
- fprintf(stderr, "- SSL %s: %s:%d\n", buf, file, line);
+ if (!silent)
+ fprintf(stderr, "- SSL %s: %s:%d\n", buf, file, line);
+ ERR_get_error();
}
}
-static void drain_openssl_errors(void)
-{
- const char *file;
- int line;
-
- if (ERR_peek_error() == 0)
- return;
- while (ERR_get_error_line(&file, &line)) {}
-}
-
#define ERR(cond, fmt, ...) \
do { \
bool __cond = (cond); \
- display_openssl_errors(__LINE__); \
+ drain_openssl_errors(__LINE__, 0); \
if (__cond) { \
errx(1, fmt, ## __VA_ARGS__); \
} \
--
2.39.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
2024-07-12 7:11 [PATCH 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0 Jan Stancek
2024-07-12 7:11 ` [PATCH 1/3] sign-file,extract-cert: move common SSL helper functions to a header Jan Stancek
2024-07-12 7:11 ` [PATCH 2/3] sign-file,extract-cert: avoid using deprecated ERR_get_error_line() Jan Stancek
@ 2024-07-12 7:11 ` Jan Stancek
2024-08-13 10:23 ` Jarkko Sakkinen
2024-08-02 13:10 ` [PATCH 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0 Herbert Xu
` (2 subsequent siblings)
5 siblings, 1 reply; 17+ messages in thread
From: Jan Stancek @ 2024-07-12 7:11 UTC (permalink / raw)
To: dhowells, dwmw2, zxu, keyrings; +Cc: linux-kernel, jstancek
ENGINE API has been deprecated since OpenSSL version 3.0 [1].
Distros have started dropping support from headers and in future
it will likely disappear also from library.
It has been superseded by the PROVIDER API, so use it instead
for OPENSSL MAJOR >= 3.
[1] https://github.com/openssl/openssl/blob/master/README-ENGINES.md
Signed-off-by: Jan Stancek <jstancek@redhat.com>
---
| 103 ++++++++++++++++++++++++++++++-------------
scripts/sign-file.c | 95 +++++++++++++++++++++++++++------------
2 files changed, 140 insertions(+), 58 deletions(-)
--git a/certs/extract-cert.c b/certs/extract-cert.c
index 61bbe0085671..7d6d468ed612 100644
--- a/certs/extract-cert.c
+++ b/certs/extract-cert.c
@@ -21,17 +21,18 @@
#include <openssl/bio.h>
#include <openssl/pem.h>
#include <openssl/err.h>
-#include <openssl/engine.h>
-
+#if OPENSSL_VERSION_MAJOR >= 3
+# define USE_PKCS11_PROVIDER
+# include <openssl/provider.h>
+# include <openssl/store.h>
+#else
+# if !defined(OPENSSL_NO_ENGINE) && !defined(OPENSSL_NO_DEPRECATED_3_0)
+# define USE_PKCS11_ENGINE
+# include <openssl/engine.h>
+# endif
+#endif
#include "ssl-common.h"
-/*
- * OpenSSL 3.0 deprecates the OpenSSL's ENGINE API.
- *
- * Remove this if/when that API is no longer used
- */
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-
#define PKEY_ID_PKCS7 2
static __attribute__((noreturn))
@@ -61,6 +62,66 @@ static void write_cert(X509 *x509)
fprintf(stderr, "Extracted cert: %s\n", buf);
}
+static X509 *load_cert_pkcs11(const char *cert_src)
+{
+ X509 *cert = NULL;
+#ifdef USE_PKCS11_PROVIDER
+ OSSL_STORE_CTX *store;
+
+ if (!OSSL_PROVIDER_try_load(NULL, "pkcs11", true))
+ ERR(1, "OSSL_PROVIDER_try_load(pkcs11)");
+ if (!OSSL_PROVIDER_try_load(NULL, "default", true))
+ ERR(1, "OSSL_PROVIDER_try_load(default)");
+
+ store = OSSL_STORE_open(cert_src, NULL, NULL, NULL, NULL);
+ ERR(!store, "OSSL_STORE_open");
+
+ while (!OSSL_STORE_eof(store)) {
+ OSSL_STORE_INFO *info = OSSL_STORE_load(store);
+
+ if (!info) {
+ drain_openssl_errors(__LINE__, 0);
+ continue;
+ }
+ if (OSSL_STORE_INFO_get_type(info) == OSSL_STORE_INFO_CERT) {
+ cert = OSSL_STORE_INFO_get1_CERT(info);
+ ERR(!cert, "OSSL_STORE_INFO_get1_CERT");
+ }
+ OSSL_STORE_INFO_free(info);
+ if (cert)
+ break;
+ }
+ OSSL_STORE_close(store);
+#elif defined(USE_PKCS11_ENGINE)
+ ENGINE *e;
+ struct {
+ const char *cert_id;
+ X509 *cert;
+ } parms;
+
+ parms.cert_id = cert_src;
+ parms.cert = NULL;
+
+ ENGINE_load_builtin_engines();
+ drain_openssl_errors(__LINE__, 1);
+ e = ENGINE_by_id("pkcs11");
+ ERR(!e, "Load PKCS#11 ENGINE");
+ if (ENGINE_init(e))
+ drain_openssl_errors(__LINE__, 1);
+ else
+ ERR(1, "ENGINE_init");
+ if (key_pass)
+ ERR(!ENGINE_ctrl_cmd_string(e, "PIN", key_pass, 0), "Set PKCS#11 PIN");
+ ENGINE_ctrl_cmd(e, "LOAD_CERT_CTRL", 0, &parms, NULL, 1);
+ ERR(!parms.cert, "Get X.509 from PKCS#11");
+ cert = parms.cert;
+#else
+ fprintf(stderr, "no pkcs11 engine/provider available\n");
+ exit(1);
+#endif
+ return cert;
+}
+
int main(int argc, char **argv)
{
char *cert_src;
@@ -89,28 +150,10 @@ int main(int argc, char **argv)
fclose(f);
exit(0);
} else if (!strncmp(cert_src, "pkcs11:", 7)) {
- ENGINE *e;
- struct {
- const char *cert_id;
- X509 *cert;
- } parms;
+ X509 *cert = load_cert_pkcs11(cert_src);
- parms.cert_id = cert_src;
- parms.cert = NULL;
-
- ENGINE_load_builtin_engines();
- drain_openssl_errors(__LINE__, 1);
- e = ENGINE_by_id("pkcs11");
- ERR(!e, "Load PKCS#11 ENGINE");
- if (ENGINE_init(e))
- drain_openssl_errors(__LINE__, 1);
- else
- ERR(1, "ENGINE_init");
- if (key_pass)
- ERR(!ENGINE_ctrl_cmd_string(e, "PIN", key_pass, 0), "Set PKCS#11 PIN");
- ENGINE_ctrl_cmd(e, "LOAD_CERT_CTRL", 0, &parms, NULL, 1);
- ERR(!parms.cert, "Get X.509 from PKCS#11");
- write_cert(parms.cert);
+ ERR(!cert, "load_cert_pkcs11 failed");
+ write_cert(cert);
} else {
BIO *b;
X509 *x509;
diff --git a/scripts/sign-file.c b/scripts/sign-file.c
index bb3fdf1a617c..ba413dc69a20 100644
--- a/scripts/sign-file.c
+++ b/scripts/sign-file.c
@@ -27,17 +27,18 @@
#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/err.h>
-#include <openssl/engine.h>
-
+#if OPENSSL_VERSION_MAJOR >= 3
+# define USE_PKCS11_PROVIDER
+# include <openssl/provider.h>
+# include <openssl/store.h>
+#else
+# if !defined(OPENSSL_NO_ENGINE) && !defined(OPENSSL_NO_DEPRECATED_3_0)
+# define USE_PKCS11_ENGINE
+# include <openssl/engine.h>
+# endif
+#endif
#include "ssl-common.h"
-/*
- * OpenSSL 3.0 deprecates the OpenSSL's ENGINE API.
- *
- * Remove this if/when that API is no longer used
- */
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-
/*
* Use CMS if we have openssl-1.0.0 or newer available - otherwise we have to
* assume that it's not available and its header file is missing and that we
@@ -106,28 +107,66 @@ static int pem_pw_cb(char *buf, int len, int w, void *v)
return pwlen;
}
-static EVP_PKEY *read_private_key(const char *private_key_name)
+static EVP_PKEY *read_private_key_pkcs11(const char *private_key_name)
{
- EVP_PKEY *private_key;
+ EVP_PKEY *private_key = NULL;
+#ifdef USE_PKCS11_PROVIDER
+ OSSL_STORE_CTX *store;
- if (!strncmp(private_key_name, "pkcs11:", 7)) {
- ENGINE *e;
+ if (!OSSL_PROVIDER_try_load(NULL, "pkcs11", true))
+ ERR(1, "OSSL_PROVIDER_try_load(pkcs11)");
+ if (!OSSL_PROVIDER_try_load(NULL, "default", true))
+ ERR(1, "OSSL_PROVIDER_try_load(default)");
+
+ store = OSSL_STORE_open(private_key_name, NULL, NULL, NULL, NULL);
+ ERR(!store, "OSSL_STORE_open");
- ENGINE_load_builtin_engines();
+ while (!OSSL_STORE_eof(store)) {
+ OSSL_STORE_INFO *info = OSSL_STORE_load(store);
+
+ if (!info) {
+ drain_openssl_errors(__LINE__, 0);
+ continue;
+ }
+ if (OSSL_STORE_INFO_get_type(info) == OSSL_STORE_INFO_PKEY) {
+ private_key = OSSL_STORE_INFO_get1_PKEY(info);
+ ERR(!private_key, "OSSL_STORE_INFO_get1_PKEY");
+ }
+ OSSL_STORE_INFO_free(info);
+ if (private_key)
+ break;
+ }
+ OSSL_STORE_close(store);
+#elif defined(USE_PKCS11_ENGINE)
+ ENGINE *e;
+
+ ENGINE_load_builtin_engines();
+ drain_openssl_errors(__LINE__, 1);
+ e = ENGINE_by_id("pkcs11");
+ ERR(!e, "Load PKCS#11 ENGINE");
+ if (ENGINE_init(e))
drain_openssl_errors(__LINE__, 1);
- e = ENGINE_by_id("pkcs11");
- ERR(!e, "Load PKCS#11 ENGINE");
- if (ENGINE_init(e))
- drain_openssl_errors(__LINE__, 1);
- else
- ERR(1, "ENGINE_init");
- if (key_pass)
- ERR(!ENGINE_ctrl_cmd_string(e, "PIN", key_pass, 0),
- "Set PKCS#11 PIN");
- private_key = ENGINE_load_private_key(e, private_key_name,
- NULL, NULL);
- ERR(!private_key, "%s", private_key_name);
+ else
+ ERR(1, "ENGINE_init");
+ if (key_pass)
+ ERR(!ENGINE_ctrl_cmd_string(e, "PIN", key_pass, 0),
+ "Set PKCS#11 PIN");
+ private_key = ENGINE_load_private_key(e, private_key_name,
+ NULL, NULL);
+ ERR(!private_key, "%s", private_key_name);
+#else
+ fprintf(stderr, "no pkcs11 engine/provider available\n");
+ exit(1);
+#endif
+ return private_key;
+}
+
+static EVP_PKEY *read_private_key(const char *private_key_name)
+{
+ if (!strncmp(private_key_name, "pkcs11:", 7)) {
+ return read_private_key_pkcs11(private_key_name);
} else {
+ EVP_PKEY *private_key;
BIO *b;
b = BIO_new_file(private_key_name, "rb");
@@ -136,9 +175,9 @@ static EVP_PKEY *read_private_key(const char *private_key_name)
NULL);
ERR(!private_key, "%s", private_key_name);
BIO_free(b);
- }
- return private_key;
+ return private_key;
+ }
}
static X509 *read_x509(const char *x509_name)
--
2.39.3
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0
2024-07-12 7:11 [PATCH 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0 Jan Stancek
` (2 preceding siblings ...)
2024-07-12 7:11 ` [PATCH 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3 Jan Stancek
@ 2024-08-02 13:10 ` Herbert Xu
2024-08-02 17:59 ` Jarkko Sakkinen
2024-08-06 20:27 ` Neal Gompa
2024-09-03 8:11 ` R Nageswara Sastry
5 siblings, 1 reply; 17+ messages in thread
From: Herbert Xu @ 2024-08-02 13:10 UTC (permalink / raw)
To: Jan Stancek; +Cc: dhowells, dwmw2, keyrings, linux-kernel, Jarkko Sakkinen
On Fri, Jul 12, 2024 at 09:11:13AM +0200, Jan Stancek wrote:
> The ENGINE interface has its limitations and it has been superseded
> by the PROVIDER API, it is deprecated in OpenSSL version 3.0.
> Some distros have started removing it from header files.
>
> Update sign-file and extract-cert to use PROVIDER API for OpenSSL Major >= 3.
>
> Tested on F39 with openssl-3.1.1, pkcs11-provider-0.5-2, openssl-pkcs11-0.4.12-4
> and softhsm-2.6.1-5 by using same key/cert as PEM and PKCS11 and comparing that
> the result is identical.
>
> Jan Stancek (3):
> sign-file,extract-cert: move common SSL helper functions to a header
> sign-file,extract-cert: avoid using deprecated ERR_get_error_line()
> sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
>
> MAINTAINERS | 1 +
> certs/Makefile | 2 +-
> certs/extract-cert.c | 138 +++++++++++++++++++++++--------------------
> scripts/sign-file.c | 134 +++++++++++++++++++++--------------------
> scripts/ssl-common.h | 32 ++++++++++
> 5 files changed, 178 insertions(+), 129 deletions(-)
> create mode 100644 scripts/ssl-common.h
Adding Cc to Jarkko Sakkinen <jarkko@kernel.org>.
--
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0
2024-08-02 13:10 ` [PATCH 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0 Herbert Xu
@ 2024-08-02 17:59 ` Jarkko Sakkinen
2024-08-02 18:27 ` Jan Stancek
0 siblings, 1 reply; 17+ messages in thread
From: Jarkko Sakkinen @ 2024-08-02 17:59 UTC (permalink / raw)
To: Herbert Xu, Jan Stancek
Cc: dhowells, dwmw2, keyrings, linux-kernel, Jarkko Sakkinen
On Fri Aug 2, 2024 at 4:10 PM EEST, Herbert Xu wrote:
> On Fri, Jul 12, 2024 at 09:11:13AM +0200, Jan Stancek wrote:
> > The ENGINE interface has its limitations and it has been superseded
> > by the PROVIDER API, it is deprecated in OpenSSL version 3.0.
> > Some distros have started removing it from header files.
> >
> > Update sign-file and extract-cert to use PROVIDER API for OpenSSL Major >= 3.
> >
> > Tested on F39 with openssl-3.1.1, pkcs11-provider-0.5-2, openssl-pkcs11-0.4.12-4
> > and softhsm-2.6.1-5 by using same key/cert as PEM and PKCS11 and comparing that
> > the result is identical.
> >
> > Jan Stancek (3):
> > sign-file,extract-cert: move common SSL helper functions to a header
> > sign-file,extract-cert: avoid using deprecated ERR_get_error_line()
> > sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
> >
> > MAINTAINERS | 1 +
> > certs/Makefile | 2 +-
> > certs/extract-cert.c | 138 +++++++++++++++++++++++--------------------
> > scripts/sign-file.c | 134 +++++++++++++++++++++--------------------
> > scripts/ssl-common.h | 32 ++++++++++
> > 5 files changed, 178 insertions(+), 129 deletions(-)
> > create mode 100644 scripts/ssl-common.h
>
> Adding Cc to Jarkko Sakkinen <jarkko@kernel.org>.
I can download this but is it likely that there will be v2? If so,
I'll hoold on for that. If not, I'll download it.
BR, Jarkko
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0
2024-08-02 17:59 ` Jarkko Sakkinen
@ 2024-08-02 18:27 ` Jan Stancek
2024-08-02 19:54 ` Jarkko Sakkinen
0 siblings, 1 reply; 17+ messages in thread
From: Jan Stancek @ 2024-08-02 18:27 UTC (permalink / raw)
To: Jarkko Sakkinen
Cc: Herbert Xu, dhowells, dwmw2, keyrings, linux-kernel,
Jarkko Sakkinen
On Fri, Aug 2, 2024 at 8:07 PM Jarkko Sakkinen <jarkko.sakkinen@iki.fi> wrote:
>
> On Fri Aug 2, 2024 at 4:10 PM EEST, Herbert Xu wrote:
> > On Fri, Jul 12, 2024 at 09:11:13AM +0200, Jan Stancek wrote:
> > > The ENGINE interface has its limitations and it has been superseded
> > > by the PROVIDER API, it is deprecated in OpenSSL version 3.0.
> > > Some distros have started removing it from header files.
> > >
> > > Update sign-file and extract-cert to use PROVIDER API for OpenSSL Major >= 3.
> > >
> > > Tested on F39 with openssl-3.1.1, pkcs11-provider-0.5-2, openssl-pkcs11-0.4.12-4
> > > and softhsm-2.6.1-5 by using same key/cert as PEM and PKCS11 and comparing that
> > > the result is identical.
> > >
> > > Jan Stancek (3):
> > > sign-file,extract-cert: move common SSL helper functions to a header
> > > sign-file,extract-cert: avoid using deprecated ERR_get_error_line()
> > > sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
> > >
> > > MAINTAINERS | 1 +
> > > certs/Makefile | 2 +-
> > > certs/extract-cert.c | 138 +++++++++++++++++++++++--------------------
> > > scripts/sign-file.c | 134 +++++++++++++++++++++--------------------
> > > scripts/ssl-common.h | 32 ++++++++++
> > > 5 files changed, 178 insertions(+), 129 deletions(-)
> > > create mode 100644 scripts/ssl-common.h
> >
> > Adding Cc to Jarkko Sakkinen <jarkko@kernel.org>.
>
> I can download this but is it likely that there will be v2? If so,
> I'll hoold on for that. If not, I'll download it.
Noone requested any changes to v1 so far, so if you can have a look,
it would be much appreciated.
Thanks,
Jan
>
> BR, Jarkko
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0
2024-08-02 18:27 ` Jan Stancek
@ 2024-08-02 19:54 ` Jarkko Sakkinen
0 siblings, 0 replies; 17+ messages in thread
From: Jarkko Sakkinen @ 2024-08-02 19:54 UTC (permalink / raw)
To: Jan Stancek
Cc: Herbert Xu, dhowells, dwmw2, keyrings, linux-kernel,
Jarkko Sakkinen
On Fri Aug 2, 2024 at 9:27 PM EEST, Jan Stancek wrote:
> On Fri, Aug 2, 2024 at 8:07 PM Jarkko Sakkinen <jarkko.sakkinen@iki.fi> wrote:
> >
> > On Fri Aug 2, 2024 at 4:10 PM EEST, Herbert Xu wrote:
> > > On Fri, Jul 12, 2024 at 09:11:13AM +0200, Jan Stancek wrote:
> > > > The ENGINE interface has its limitations and it has been superseded
> > > > by the PROVIDER API, it is deprecated in OpenSSL version 3.0.
> > > > Some distros have started removing it from header files.
> > > >
> > > > Update sign-file and extract-cert to use PROVIDER API for OpenSSL Major >= 3.
> > > >
> > > > Tested on F39 with openssl-3.1.1, pkcs11-provider-0.5-2, openssl-pkcs11-0.4.12-4
> > > > and softhsm-2.6.1-5 by using same key/cert as PEM and PKCS11 and comparing that
> > > > the result is identical.
> > > >
> > > > Jan Stancek (3):
> > > > sign-file,extract-cert: move common SSL helper functions to a header
> > > > sign-file,extract-cert: avoid using deprecated ERR_get_error_line()
> > > > sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
> > > >
> > > > MAINTAINERS | 1 +
> > > > certs/Makefile | 2 +-
> > > > certs/extract-cert.c | 138 +++++++++++++++++++++++--------------------
> > > > scripts/sign-file.c | 134 +++++++++++++++++++++--------------------
> > > > scripts/ssl-common.h | 32 ++++++++++
> > > > 5 files changed, 178 insertions(+), 129 deletions(-)
> > > > create mode 100644 scripts/ssl-common.h
> > >
> > > Adding Cc to Jarkko Sakkinen <jarkko@kernel.org>.
> >
> > I can download this but is it likely that there will be v2? If so,
> > I'll hoold on for that. If not, I'll download it.
>
> Noone requested any changes to v1 so far, so if you can have a look,
> it would be much appreciated.
OK that is totally fine! I'm just prioritizing and postponing stuff
that I can (WHEN it makes sense pragmatically) to get back in the
phase ;-)
I take a look at this next week.
> Thanks,
> Jan
BR, Jarkko
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0
2024-07-12 7:11 [PATCH 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0 Jan Stancek
` (3 preceding siblings ...)
2024-08-02 13:10 ` [PATCH 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0 Herbert Xu
@ 2024-08-06 20:27 ` Neal Gompa
2024-09-20 11:42 ` Neal Gompa
2024-09-03 8:11 ` R Nageswara Sastry
5 siblings, 1 reply; 17+ messages in thread
From: Neal Gompa @ 2024-08-06 20:27 UTC (permalink / raw)
To: David Howells, dwmw2, zxu, keyrings, Jan Stancek
Cc: linux-kernel, Jan Stancek, Asahi Linux, Hector Martin,
Janne Grunau
On Friday, July 12, 2024 3:11:13 AM EDT Jan Stancek wrote:
> The ENGINE interface has its limitations and it has been superseded
> by the PROVIDER API, it is deprecated in OpenSSL version 3.0.
> Some distros have started removing it from header files.
>
> Update sign-file and extract-cert to use PROVIDER API for OpenSSL Major >=
> 3.
>
> Tested on F39 with openssl-3.1.1, pkcs11-provider-0.5-2,
> openssl-pkcs11-0.4.12-4 and softhsm-2.6.1-5 by using same key/cert as PEM
> and PKCS11 and comparing that the result is identical.
>
> Jan Stancek (3):
> sign-file,extract-cert: move common SSL helper functions to a header
> sign-file,extract-cert: avoid using deprecated ERR_get_error_line()
> sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
>
> MAINTAINERS | 1 +
> certs/Makefile | 2 +-
> certs/extract-cert.c | 138 +++++++++++++++++++++++--------------------
> scripts/sign-file.c | 134 +++++++++++++++++++++--------------------
> scripts/ssl-common.h | 32 ++++++++++
> 5 files changed, 178 insertions(+), 129 deletions(-)
> create mode 100644 scripts/ssl-common.h
The code looks fairly reasonable to me and behaves as expected.
I have been actively using this patch set for several weeks now across
linux-6.9.y and now linux-6.10.y with good success.
It is in use in production for Fedora Asahi Linux kernels with good success.
Thanks for the fixes. :)
Reviewed-by: Neal Gompa <neal@gompa.dev>
--
真実はいつも一つ!/ Always, there's only one truth!
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/3] sign-file,extract-cert: move common SSL helper functions to a header
2024-07-12 7:11 ` [PATCH 1/3] sign-file,extract-cert: move common SSL helper functions to a header Jan Stancek
@ 2024-08-13 10:04 ` Jarkko Sakkinen
0 siblings, 0 replies; 17+ messages in thread
From: Jarkko Sakkinen @ 2024-08-13 10:04 UTC (permalink / raw)
To: Jan Stancek, dhowells, dwmw2, zxu, keyrings; +Cc: linux-kernel
On Fri Jul 12, 2024 at 10:11 AM EEST, Jan Stancek wrote:
> Couple error handling helpers are repeated in both tools, so
> move them to a common header.
>
> Signed-off-by: Jan Stancek <jstancek@redhat.com>
Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
BR, Jarkko
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/3] sign-file,extract-cert: avoid using deprecated ERR_get_error_line()
2024-07-12 7:11 ` [PATCH 2/3] sign-file,extract-cert: avoid using deprecated ERR_get_error_line() Jan Stancek
@ 2024-08-13 10:12 ` Jarkko Sakkinen
0 siblings, 0 replies; 17+ messages in thread
From: Jarkko Sakkinen @ 2024-08-13 10:12 UTC (permalink / raw)
To: Jan Stancek, dhowells, dwmw2, zxu, keyrings; +Cc: linux-kernel
On Fri Jul 12, 2024 at 10:11 AM EEST, Jan Stancek wrote:
> ERR_get_error_line() is deprecated since OpenSSL 3.0.
>
> Use ERR_peek_error_line() instead, and combine display_openssl_errors()
> and drain_openssl_errors() to a single function where parameter decides
> if it should consume errors silently.
>
> Signed-off-by: Jan Stancek <jstancek@redhat.com>
> ---
> certs/extract-cert.c | 4 ++--
> scripts/sign-file.c | 6 +++---
> scripts/ssl-common.h | 23 ++++++++---------------
> 3 files changed, 13 insertions(+), 20 deletions(-)
>
> diff --git a/certs/extract-cert.c b/certs/extract-cert.c
> index 8e7ba9974a1f..61bbe0085671 100644
> --- a/certs/extract-cert.c
> +++ b/certs/extract-cert.c
> @@ -99,11 +99,11 @@ int main(int argc, char **argv)
> parms.cert = NULL;
>
> ENGINE_load_builtin_engines();
> - drain_openssl_errors();
> + drain_openssl_errors(__LINE__, 1);
> e = ENGINE_by_id("pkcs11");
> ERR(!e, "Load PKCS#11 ENGINE");
> if (ENGINE_init(e))
> - drain_openssl_errors();
> + drain_openssl_errors(__LINE__, 1);
> else
> ERR(1, "ENGINE_init");
> if (key_pass)
> diff --git a/scripts/sign-file.c b/scripts/sign-file.c
> index 39ba58db5d4e..bb3fdf1a617c 100644
> --- a/scripts/sign-file.c
> +++ b/scripts/sign-file.c
> @@ -114,11 +114,11 @@ static EVP_PKEY *read_private_key(const char *private_key_name)
> ENGINE *e;
>
> ENGINE_load_builtin_engines();
> - drain_openssl_errors();
> + drain_openssl_errors(__LINE__, 1);
> e = ENGINE_by_id("pkcs11");
> ERR(!e, "Load PKCS#11 ENGINE");
> if (ENGINE_init(e))
> - drain_openssl_errors();
> + drain_openssl_errors(__LINE__, 1);
> else
> ERR(1, "ENGINE_init");
> if (key_pass)
> @@ -273,7 +273,7 @@ int main(int argc, char **argv)
>
> /* Digest the module data. */
> OpenSSL_add_all_digests();
> - display_openssl_errors(__LINE__);
> + drain_openssl_errors(__LINE__, 0);
> digest_algo = EVP_get_digestbyname(hash_algo);
> ERR(!digest_algo, "EVP_get_digestbyname");
>
> diff --git a/scripts/ssl-common.h b/scripts/ssl-common.h
> index e6711c75ed91..2db0e181143c 100644
> --- a/scripts/ssl-common.h
> +++ b/scripts/ssl-common.h
> @@ -3,7 +3,7 @@
> * SSL helper functions shared by sign-file and extract-cert.
> */
>
> -static void display_openssl_errors(int l)
> +static void drain_openssl_errors(int l, int silent)
> {
> const char *file;
> char buf[120];
> @@ -11,28 +11,21 @@ static void display_openssl_errors(int l)
>
> if (ERR_peek_error() == 0)
> return;
> - fprintf(stderr, "At main.c:%d:\n", l);
> + if (!silent)
> + fprintf(stderr, "At main.c:%d:\n", l);
>
> - while ((e = ERR_get_error_line(&file, &line))) {
> + while ((e = ERR_peek_error_line(&file, &line))) {
> ERR_error_string(e, buf);
> - fprintf(stderr, "- SSL %s: %s:%d\n", buf, file, line);
> + if (!silent)
> + fprintf(stderr, "- SSL %s: %s:%d\n", buf, file, line);
> + ERR_get_error();
> }
> }
>
> -static void drain_openssl_errors(void)
> -{
> - const char *file;
> - int line;
> -
> - if (ERR_peek_error() == 0)
> - return;
> - while (ERR_get_error_line(&file, &line)) {}
> -}
> -
> #define ERR(cond, fmt, ...) \
> do { \
> bool __cond = (cond); \
> - display_openssl_errors(__LINE__); \
> + drain_openssl_errors(__LINE__, 0); \
> if (__cond) { \
> errx(1, fmt, ## __VA_ARGS__); \
> } \
Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
BR, Jarkko
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
2024-07-12 7:11 ` [PATCH 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3 Jan Stancek
@ 2024-08-13 10:23 ` Jarkko Sakkinen
0 siblings, 0 replies; 17+ messages in thread
From: Jarkko Sakkinen @ 2024-08-13 10:23 UTC (permalink / raw)
To: Jan Stancek, dhowells, dwmw2, zxu, keyrings; +Cc: linux-kernel
On Fri, 2024-07-12 at 09:11 +0200, Jan Stancek wrote:
> ENGINE API has been deprecated since OpenSSL version 3.0 [1].
> Distros have started dropping support from headers and in future
> it will likely disappear also from library.
>
> It has been superseded by the PROVIDER API, so use it instead
> for OPENSSL MAJOR >= 3.
>
> [1] https://github.com/openssl/openssl/blob/master/README-ENGINES.md
>
> Signed-off-by: Jan Stancek <jstancek@redhat.com>
Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
I think all these somewhat "dead obvious" patches. Not much to comment
on these.
BR, Jarkko
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0
2024-07-12 7:11 [PATCH 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0 Jan Stancek
` (4 preceding siblings ...)
2024-08-06 20:27 ` Neal Gompa
@ 2024-09-03 8:11 ` R Nageswara Sastry
5 siblings, 0 replies; 17+ messages in thread
From: R Nageswara Sastry @ 2024-09-03 8:11 UTC (permalink / raw)
To: jstancek; +Cc: dhowells, dwmw2, keyrings, linux-kernel, zxu, R Nageswara Sastry
>Date: Fri, 12 Jul 2024 09:11:13 +0200 [thread overview]
>Message-ID: <cover.1720728319.git.jstancek@redhat.com> (raw)
>
>The ENGINE interface has its limitations and it has been superseded
>by the PROVIDER API, it is deprecated in OpenSSL version 3.0.
>Some distros have started removing it from header files.
>
>Update sign-file and extract-cert to use PROVIDER API for OpenSSL Major >= 3.
>
>Tested on F39 with openssl-3.1.1, pkcs11-provider-0.5-2, openssl-pkcs11-0.4.12-4
>and softhsm-2.6.1-5 by using same key/cert as PEM and PKCS11 and comparing that
>the result is identical.
>
>Jan Stancek (3):
> sign-file,extract-cert: move common SSL helper functions to a header
> sign-file,extract-cert: avoid using deprecated ERR_get_error_line()
> sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
>
> MAINTAINERS | 1 +
> certs/Makefile | 2 +-
> certs/extract-cert.c | 138 +++++++++++++++++++++++--------------------
> scripts/sign-file.c | 134 +++++++++++++++++++++--------------------
> scripts/ssl-common.h | 32 ++++++++++
> 5 files changed, 178 insertions(+), 129 deletions(-)
> create mode 100644 scripts/ssl-common.h
Tested on a system where openssl-engine package was not available.
With out the patch, couldn't compile upstream kernel (tried 6.11-rc5)
With patch, could compile upstream kernel (tried 6.11-rc5)
Tested-by: R Nageswara Sastry <rnsastry@linux.ibm.com>
>
>--
>2.39.3
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0
2024-08-06 20:27 ` Neal Gompa
@ 2024-09-20 11:42 ` Neal Gompa
2024-09-20 15:34 ` Jarkko Sakkinen
0 siblings, 1 reply; 17+ messages in thread
From: Neal Gompa @ 2024-09-20 11:42 UTC (permalink / raw)
To: Jarkko Sakkinen, David Howells, dwmw2, zxu, keyrings, Jan Stancek
Cc: linux-kernel, Asahi Linux, Hector Martin, Janne Grunau,
Jarkko Sakkinen
On Tue, Aug 6, 2024 at 4:27 PM Neal Gompa <neal@gompa.dev> wrote:
>
> On Friday, July 12, 2024 3:11:13 AM EDT Jan Stancek wrote:
> > The ENGINE interface has its limitations and it has been superseded
> > by the PROVIDER API, it is deprecated in OpenSSL version 3.0.
> > Some distros have started removing it from header files.
> >
> > Update sign-file and extract-cert to use PROVIDER API for OpenSSL Major >=
> > 3.
> >
> > Tested on F39 with openssl-3.1.1, pkcs11-provider-0.5-2,
> > openssl-pkcs11-0.4.12-4 and softhsm-2.6.1-5 by using same key/cert as PEM
> > and PKCS11 and comparing that the result is identical.
> >
> > Jan Stancek (3):
> > sign-file,extract-cert: move common SSL helper functions to a header
> > sign-file,extract-cert: avoid using deprecated ERR_get_error_line()
> > sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
> >
> > MAINTAINERS | 1 +
> > certs/Makefile | 2 +-
> > certs/extract-cert.c | 138 +++++++++++++++++++++++--------------------
> > scripts/sign-file.c | 134 +++++++++++++++++++++--------------------
> > scripts/ssl-common.h | 32 ++++++++++
> > 5 files changed, 178 insertions(+), 129 deletions(-)
> > create mode 100644 scripts/ssl-common.h
>
> The code looks fairly reasonable to me and behaves as expected.
>
> I have been actively using this patch set for several weeks now across
> linux-6.9.y and now linux-6.10.y with good success.
>
> It is in use in production for Fedora Asahi Linux kernels with good success.
> Thanks for the fixes. :)
>
> Reviewed-by: Neal Gompa <neal@gompa.dev>
>
Jarkko, could you please consider submitting this for inclusion into
6.12? I've been carrying this for three Linux kernel rebases now
(6.9.y, 6.10.y, and now 6.11.y) and it seems to be just fine, and
without it, I cannot build kernels anymore with the OpenSSL engine API
disabled in Fedora and CentOS/RHEL. I also expect that the engine API
will disappear on other platforms in the near future given its
deprecated status and recently accelerated conversion of engine
backends to the newer provider API.
Thanks in advance! :)
--
真実はいつも一つ!/ Always, there's only one truth!
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0
2024-09-20 11:42 ` Neal Gompa
@ 2024-09-20 15:34 ` Jarkko Sakkinen
2024-09-20 20:05 ` Jan Stancek
0 siblings, 1 reply; 17+ messages in thread
From: Jarkko Sakkinen @ 2024-09-20 15:34 UTC (permalink / raw)
To: Neal Gompa, David Howells, dwmw2, zxu, keyrings, Jan Stancek
Cc: linux-kernel, Asahi Linux, Hector Martin, Janne Grunau,
Jarkko Sakkinen
On Fri Sep 20, 2024 at 2:42 PM EEST, Neal Gompa wrote:
> On Tue, Aug 6, 2024 at 4:27 PM Neal Gompa <neal@gompa.dev> wrote:
> >
> > On Friday, July 12, 2024 3:11:13 AM EDT Jan Stancek wrote:
> > > The ENGINE interface has its limitations and it has been superseded
> > > by the PROVIDER API, it is deprecated in OpenSSL version 3.0.
> > > Some distros have started removing it from header files.
> > >
> > > Update sign-file and extract-cert to use PROVIDER API for OpenSSL Major >=
> > > 3.
> > >
> > > Tested on F39 with openssl-3.1.1, pkcs11-provider-0.5-2,
> > > openssl-pkcs11-0.4.12-4 and softhsm-2.6.1-5 by using same key/cert as PEM
> > > and PKCS11 and comparing that the result is identical.
> > >
> > > Jan Stancek (3):
> > > sign-file,extract-cert: move common SSL helper functions to a header
> > > sign-file,extract-cert: avoid using deprecated ERR_get_error_line()
> > > sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
> > >
> > > MAINTAINERS | 1 +
> > > certs/Makefile | 2 +-
> > > certs/extract-cert.c | 138 +++++++++++++++++++++++--------------------
> > > scripts/sign-file.c | 134 +++++++++++++++++++++--------------------
> > > scripts/ssl-common.h | 32 ++++++++++
> > > 5 files changed, 178 insertions(+), 129 deletions(-)
> > > create mode 100644 scripts/ssl-common.h
> >
> > The code looks fairly reasonable to me and behaves as expected.
> >
> > I have been actively using this patch set for several weeks now across
> > linux-6.9.y and now linux-6.10.y with good success.
> >
> > It is in use in production for Fedora Asahi Linux kernels with good success.
> > Thanks for the fixes. :)
> >
> > Reviewed-by: Neal Gompa <neal@gompa.dev>
> >
>
> Jarkko, could you please consider submitting this for inclusion into
> 6.12? I've been carrying this for three Linux kernel rebases now
> (6.9.y, 6.10.y, and now 6.11.y) and it seems to be just fine, and
> without it, I cannot build kernels anymore with the OpenSSL engine API
> disabled in Fedora and CentOS/RHEL. I also expect that the engine API
> will disappear on other platforms in the near future given its
> deprecated status and recently accelerated conversion of engine
> backends to the newer provider API.
>
> Thanks in advance! :)
Yes, I think I can. And I've yet to do 6.12 PR because I've been
busy sorting out perf regression in the TPM driver.
ERROR: need consistent spacing around '*' (ctx:WxV)
#66: FILE: certs/extract-cert.c:69:
+ OSSL_STORE_CTX *store;
^
ERROR: need consistent spacing around '*' (ctx:WxV)
#93: FILE: certs/extract-cert.c:96:
+ ENGINE *e;
^
ERROR: need consistent spacing around '*' (ctx:WxV)
#199: FILE: scripts/sign-file.c:114:
+ OSSL_STORE_CTX *store;
^
ERROR: need consistent spacing around '*' (ctx:WxV)
#229: FILE: scripts/sign-file.c:141:
+ ENGINE *e;
^
Any ideas of these? My guess is that they are unfixable and related
to non-kernel-standard code.
BR, Jarkko
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0
2024-09-20 15:34 ` Jarkko Sakkinen
@ 2024-09-20 20:05 ` Jan Stancek
2024-09-20 22:16 ` Jarkko Sakkinen
0 siblings, 1 reply; 17+ messages in thread
From: Jan Stancek @ 2024-09-20 20:05 UTC (permalink / raw)
To: Jarkko Sakkinen
Cc: Neal Gompa, David Howells, dwmw2, zxu, keyrings, linux-kernel,
Asahi Linux, Hector Martin, Janne Grunau, Jarkko Sakkinen
On Fri, Sep 20, 2024 at 5:34 PM Jarkko Sakkinen <jarkko.sakkinen@iki.fi> wrote:
>
> On Fri Sep 20, 2024 at 2:42 PM EEST, Neal Gompa wrote:
> > On Tue, Aug 6, 2024 at 4:27 PM Neal Gompa <neal@gompa.dev> wrote:
> > >
> > > On Friday, July 12, 2024 3:11:13 AM EDT Jan Stancek wrote:
> > > > The ENGINE interface has its limitations and it has been superseded
> > > > by the PROVIDER API, it is deprecated in OpenSSL version 3.0.
> > > > Some distros have started removing it from header files.
> > > >
> > > > Update sign-file and extract-cert to use PROVIDER API for OpenSSL Major >=
> > > > 3.
> > > >
> > > > Tested on F39 with openssl-3.1.1, pkcs11-provider-0.5-2,
> > > > openssl-pkcs11-0.4.12-4 and softhsm-2.6.1-5 by using same key/cert as PEM
> > > > and PKCS11 and comparing that the result is identical.
> > > >
> > > > Jan Stancek (3):
> > > > sign-file,extract-cert: move common SSL helper functions to a header
> > > > sign-file,extract-cert: avoid using deprecated ERR_get_error_line()
> > > > sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
> > > >
> > > > MAINTAINERS | 1 +
> > > > certs/Makefile | 2 +-
> > > > certs/extract-cert.c | 138 +++++++++++++++++++++++--------------------
> > > > scripts/sign-file.c | 134 +++++++++++++++++++++--------------------
> > > > scripts/ssl-common.h | 32 ++++++++++
> > > > 5 files changed, 178 insertions(+), 129 deletions(-)
> > > > create mode 100644 scripts/ssl-common.h
> > >
> > > The code looks fairly reasonable to me and behaves as expected.
> > >
> > > I have been actively using this patch set for several weeks now across
> > > linux-6.9.y and now linux-6.10.y with good success.
> > >
> > > It is in use in production for Fedora Asahi Linux kernels with good success.
> > > Thanks for the fixes. :)
> > >
> > > Reviewed-by: Neal Gompa <neal@gompa.dev>
> > >
> >
> > Jarkko, could you please consider submitting this for inclusion into
> > 6.12? I've been carrying this for three Linux kernel rebases now
> > (6.9.y, 6.10.y, and now 6.11.y) and it seems to be just fine, and
> > without it, I cannot build kernels anymore with the OpenSSL engine API
> > disabled in Fedora and CentOS/RHEL. I also expect that the engine API
> > will disappear on other platforms in the near future given its
> > deprecated status and recently accelerated conversion of engine
> > backends to the newer provider API.
> >
> > Thanks in advance! :)
>
> Yes, I think I can. And I've yet to do 6.12 PR because I've been
> busy sorting out perf regression in the TPM driver.
>
> ERROR: need consistent spacing around '*' (ctx:WxV)
> #66: FILE: certs/extract-cert.c:69:
> + OSSL_STORE_CTX *store;
> ^
>
> ERROR: need consistent spacing around '*' (ctx:WxV)
> #93: FILE: certs/extract-cert.c:96:
> + ENGINE *e;
> ^
>
> ERROR: need consistent spacing around '*' (ctx:WxV)
> #199: FILE: scripts/sign-file.c:114:
> + OSSL_STORE_CTX *store;
> ^
>
> ERROR: need consistent spacing around '*' (ctx:WxV)
> #229: FILE: scripts/sign-file.c:141:
> + ENGINE *e;
> ^
> Any ideas of these? My guess is that they are unfixable and related
> to non-kernel-standard code.
This looks like false-positive. Following will produce same error:
+#if TEST
+ ENGINE *e;
+#endif
+
$ git diff > 1.patch; ./scripts/checkpatch.pl 1.patch
ERROR: need consistent spacing around '*' (ctx:WxV)
#10: FILE: scripts/sign-file.c:217:
+ ENGINE *e;
^
total: 1 errors, 0 warnings, 10 lines checked
but if first type in #if block is something checkpatch recognizes,
then it reports no issues:
+#if TEST
+ int i;
+ ENGINE *e;
+#endif
+
$ git diff > 1.patch; ./scripts/checkpatch.pl 1.patch
total: 0 errors, 0 warnings, 11 lines checked
Regards,
Jan
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0
2024-09-20 20:05 ` Jan Stancek
@ 2024-09-20 22:16 ` Jarkko Sakkinen
0 siblings, 0 replies; 17+ messages in thread
From: Jarkko Sakkinen @ 2024-09-20 22:16 UTC (permalink / raw)
To: Jan Stancek, Jarkko Sakkinen
Cc: Neal Gompa, David Howells, dwmw2, zxu, keyrings, linux-kernel,
Asahi Linux, Hector Martin, Janne Grunau
On Fri Sep 20, 2024 at 11:05 PM EEST, Jan Stancek wrote:
> This looks like false-positive. Following will produce same error:
> +#if TEST
> + ENGINE *e;
> +#endif
> +
> $ git diff > 1.patch; ./scripts/checkpatch.pl 1.patch
> ERROR: need consistent spacing around '*' (ctx:WxV)
> #10: FILE: scripts/sign-file.c:217:
> + ENGINE *e;
> ^
>
> total: 1 errors, 0 warnings, 10 lines checked
>
> but if first type in #if block is something checkpatch recognizes,
> then it reports no issues:
> +#if TEST
> + int i;
> + ENGINE *e;
> +#endif
> +
>
> $ git diff > 1.patch; ./scripts/checkpatch.pl 1.patch
> total: 0 errors, 0 warnings, 11 lines checked
I fixed a couple of alignment issues reported by "checkpatch.pl
--strict" and sent a pull request:
https://lore.kernel.org/keyrings/D4B9WXZC9B9U.34I6BHWMYXOS2@kernel.org/T/#u
> Regards,
> Jan
BR, Jarkko
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2024-09-20 22:16 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-12 7:11 [PATCH 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0 Jan Stancek
2024-07-12 7:11 ` [PATCH 1/3] sign-file,extract-cert: move common SSL helper functions to a header Jan Stancek
2024-08-13 10:04 ` Jarkko Sakkinen
2024-07-12 7:11 ` [PATCH 2/3] sign-file,extract-cert: avoid using deprecated ERR_get_error_line() Jan Stancek
2024-08-13 10:12 ` Jarkko Sakkinen
2024-07-12 7:11 ` [PATCH 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3 Jan Stancek
2024-08-13 10:23 ` Jarkko Sakkinen
2024-08-02 13:10 ` [PATCH 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0 Herbert Xu
2024-08-02 17:59 ` Jarkko Sakkinen
2024-08-02 18:27 ` Jan Stancek
2024-08-02 19:54 ` Jarkko Sakkinen
2024-08-06 20:27 ` Neal Gompa
2024-09-20 11:42 ` Neal Gompa
2024-09-20 15:34 ` Jarkko Sakkinen
2024-09-20 20:05 ` Jan Stancek
2024-09-20 22:16 ` Jarkko Sakkinen
2024-09-03 8:11 ` R Nageswara Sastry
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox