public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 6.1&6.6 V3 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0
@ 2025-03-19  6:40 Huacai Chen
  2025-03-19  6:40 ` [PATCH 6.1&6.6 V3 1/3] sign-file,extract-cert: move common SSL helper functions to a header Huacai Chen
                   ` (2 more replies)
  0 siblings, 3 replies; 17+ messages in thread
From: Huacai Chen @ 2025-03-19  6:40 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Sasha Levin, Huacai Chen
  Cc: Xuerui Wang, stable, David Howells, David Woodhouse, Jan Stancek,
	Jarkko Sakkinen, keyrings, linux-kernel, loongarch, Huacai Chen

Backport this series to 6.1&6.6 because we get build errors with GCC14
and OpenSSL3 (or later):

certs/extract-cert.c: In function 'main':
certs/extract-cert.c:124:17: error: implicit declaration of function 'ENGINE_load_builtin_engines' [-Wimplicit-function-declaration]
  124 |                 ENGINE_load_builtin_engines();
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
certs/extract-cert.c:126:21: error: implicit declaration of function 'ENGINE_by_id' [-Wimplicit-function-declaration]
  126 |                 e = ENGINE_by_id("pkcs11");
      |                     ^~~~~~~~~~~~
certs/extract-cert.c:126:19: error: assignment to 'ENGINE *' {aka 'struct engine_st *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
  126 |                 e = ENGINE_by_id("pkcs11");
      |                   ^
certs/extract-cert.c:128:21: error: implicit declaration of function 'ENGINE_init' [-Wimplicit-function-declaration]
  128 |                 if (ENGINE_init(e))
      |                     ^~~~~~~~~~~
certs/extract-cert.c:133:30: error: implicit declaration of function 'ENGINE_ctrl_cmd_string' [-Wimplicit-function-declaration]
  133 |                         ERR(!ENGINE_ctrl_cmd_string(e, "PIN", key_pass, 0), "Set PKCS#11 PIN");
      |                              ^~~~~~~~~~~~~~~~~~~~~~
certs/extract-cert.c:64:32: note: in definition of macro 'ERR'
   64 |                 bool __cond = (cond);                   \
      |                                ^~~~
certs/extract-cert.c:134:17: error: implicit declaration of function 'ENGINE_ctrl_cmd' [-Wimplicit-function-declaration]
  134 |                 ENGINE_ctrl_cmd(e, "LOAD_CERT_CTRL", 0, &parms, NULL, 1);
      |                 ^~~~~~~~~~~~~~~

In theory 5.4&5.10&5.15 also need this, but they need more efforts because
file paths are different.

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.

V1 -> V2:
Add upstream commit id.

V2 -> V3:
Add correct version id.

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

Signed-off-by: Jan Stancek <jstancek@redhat.com>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
---
 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.27.0


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 6.1&6.6 V3 1/3] sign-file,extract-cert: move common SSL helper functions to a header
  2025-03-19  6:40 [PATCH 6.1&6.6 V3 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0 Huacai Chen
@ 2025-03-19  6:40 ` Huacai Chen
  2025-03-19 10:54   ` Sasha Levin
  2025-03-19  6:40 ` [PATCH 6.1&6.6 V3 2/3] sign-file,extract-cert: avoid using deprecated ERR_get_error_line() Huacai Chen
  2025-03-19  6:40 ` [PATCH 6.1&6.6 V3 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3 Huacai Chen
  2 siblings, 1 reply; 17+ messages in thread
From: Huacai Chen @ 2025-03-19  6:40 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Sasha Levin, Huacai Chen
  Cc: Xuerui Wang, stable, David Howells, David Woodhouse, Jan Stancek,
	Jarkko Sakkinen, keyrings, linux-kernel, loongarch,
	R Nageswara Sastry, Neal Gompa, Huacai Chen

From: Jan Stancek <jstancek@redhat.com>

commit 300e6d4116f956b035281ec94297dc4dc8d4e1d3 upstream.

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>
Tested-by: R Nageswara Sastry <rnsastry@linux.ibm.com>
Reviewed-by: Neal Gompa <neal@gompa.dev>
Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
---
 MAINTAINERS          |  1 +
 certs/Makefile       |  2 +-
 certs/extract-cert.c | 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 ae4c0cec5073..294d2ce29b73 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -4784,6 +4784,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 799ad7b9e68a..67e1f2707c2f 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)
diff --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.47.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 6.1&6.6 V3 2/3] sign-file,extract-cert: avoid using deprecated ERR_get_error_line()
  2025-03-19  6:40 [PATCH 6.1&6.6 V3 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0 Huacai Chen
  2025-03-19  6:40 ` [PATCH 6.1&6.6 V3 1/3] sign-file,extract-cert: move common SSL helper functions to a header Huacai Chen
@ 2025-03-19  6:40 ` Huacai Chen
  2025-03-19 10:54   ` Sasha Levin
  2025-03-19  6:40 ` [PATCH 6.1&6.6 V3 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3 Huacai Chen
  2 siblings, 1 reply; 17+ messages in thread
From: Huacai Chen @ 2025-03-19  6:40 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Sasha Levin, Huacai Chen
  Cc: Xuerui Wang, stable, David Howells, David Woodhouse, Jan Stancek,
	Jarkko Sakkinen, keyrings, linux-kernel, loongarch,
	R Nageswara Sastry, Neal Gompa, Huacai Chen

From: Jan Stancek <jstancek@redhat.com>

commit 467d60eddf55588add232feda325da7215ddaf30 upstream.

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>
Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
Tested-by: R Nageswara Sastry <rnsastry@linux.ibm.com>
Reviewed-by: Neal Gompa <neal@gompa.dev>
Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
---
 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__);	\
 		}					\
-- 
2.47.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 6.1&6.6 V3 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
  2025-03-19  6:40 [PATCH 6.1&6.6 V3 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0 Huacai Chen
  2025-03-19  6:40 ` [PATCH 6.1&6.6 V3 1/3] sign-file,extract-cert: move common SSL helper functions to a header Huacai Chen
  2025-03-19  6:40 ` [PATCH 6.1&6.6 V3 2/3] sign-file,extract-cert: avoid using deprecated ERR_get_error_line() Huacai Chen
@ 2025-03-19  6:40 ` Huacai Chen
  2025-03-19 10:54   ` Sasha Levin
  2025-03-19 14:13   ` Greg Kroah-Hartman
  2 siblings, 2 replies; 17+ messages in thread
From: Huacai Chen @ 2025-03-19  6:40 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Sasha Levin, Huacai Chen
  Cc: Xuerui Wang, stable, David Howells, David Woodhouse, Jan Stancek,
	Jarkko Sakkinen, keyrings, linux-kernel, loongarch,
	R Nageswara Sastry, Neal Gompa, Huacai Chen

From: Jan Stancek <jstancek@redhat.com>

commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream.

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

[jarkko: fixed up alignment issues reported by checkpatch.pl --strict]

Signed-off-by: Jan Stancek <jstancek@redhat.com>
Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
Tested-by: R Nageswara Sastry <rnsastry@linux.ibm.com>
Reviewed-by: Neal Gompa <neal@gompa.dev>
Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
---
 certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++-------------
 scripts/sign-file.c  |  93 ++++++++++++++++++++++++++------------
 2 files changed, 138 insertions(+), 58 deletions(-)

diff --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..7070245edfc1 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,64 @@ 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 +173,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.47.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH 6.1&6.6 V3 2/3] sign-file,extract-cert: avoid using deprecated ERR_get_error_line()
  2025-03-19  6:40 ` [PATCH 6.1&6.6 V3 2/3] sign-file,extract-cert: avoid using deprecated ERR_get_error_line() Huacai Chen
@ 2025-03-19 10:54   ` Sasha Levin
  0 siblings, 0 replies; 17+ messages in thread
From: Sasha Levin @ 2025-03-19 10:54 UTC (permalink / raw)
  To: stable; +Cc: Huacai Chen, Sasha Levin

[ Sasha's backport helper bot ]

Hi,

The upstream commit SHA1 provided is correct: 467d60eddf55588add232feda325da7215ddaf30

WARNING: Author mismatch between patch and upstream commit:
Backport author: Huacai Chen<chenhuacai@loongson.cn>
Commit author: Jan Stancek<jstancek@redhat.com>

Status in newer kernel trees:
6.13.y | Present (exact SHA1)
6.12.y | Present (exact SHA1)
6.6.y | Not found

Note: The patch differs from the upstream commit:
---
1:  467d60eddf555 ! 1:  9c23463f15459 sign-file,extract-cert: avoid using deprecated ERR_get_error_line()
    @@ Metadata
      ## Commit message ##
         sign-file,extract-cert: avoid using deprecated ERR_get_error_line()
     
    +    commit 467d60eddf55588add232feda325da7215ddaf30 upstream.
    +
         ERR_get_error_line() is deprecated since OpenSSL 3.0.
     
         Use ERR_peek_error_line() instead, and combine display_openssl_errors()
    @@ Commit message
         Tested-by: R Nageswara Sastry <rnsastry@linux.ibm.com>
         Reviewed-by: Neal Gompa <neal@gompa.dev>
         Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
    +    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
     
      ## certs/extract-cert.c ##
     @@ certs/extract-cert.c: int main(int argc, char **argv)
---

Results of testing on various branches:

| Branch                    | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| Current branch            |  Success    |  Success   |

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 6.1&6.6 V3 1/3] sign-file,extract-cert: move common SSL helper functions to a header
  2025-03-19  6:40 ` [PATCH 6.1&6.6 V3 1/3] sign-file,extract-cert: move common SSL helper functions to a header Huacai Chen
@ 2025-03-19 10:54   ` Sasha Levin
  0 siblings, 0 replies; 17+ messages in thread
From: Sasha Levin @ 2025-03-19 10:54 UTC (permalink / raw)
  To: stable; +Cc: Huacai Chen, Sasha Levin

[ Sasha's backport helper bot ]

Hi,

The upstream commit SHA1 provided is correct: 300e6d4116f956b035281ec94297dc4dc8d4e1d3

WARNING: Author mismatch between patch and upstream commit:
Backport author: Huacai Chen<chenhuacai@loongson.cn>
Commit author: Jan Stancek<jstancek@redhat.com>

Status in newer kernel trees:
6.13.y | Present (exact SHA1)
6.12.y | Present (exact SHA1)
6.6.y | Not found

Note: The patch differs from the upstream commit:
---
1:  300e6d4116f95 ! 1:  feb32525515c2 sign-file,extract-cert: move common SSL helper functions to a header
    @@ Metadata
      ## Commit message ##
         sign-file,extract-cert: move common SSL helper functions to a header
     
    +    commit 300e6d4116f956b035281ec94297dc4dc8d4e1d3 upstream.
    +
         Couple error handling helpers are repeated in both tools, so
         move them to a common header.
     
    @@ Commit message
         Tested-by: R Nageswara Sastry <rnsastry@linux.ibm.com>
         Reviewed-by: Neal Gompa <neal@gompa.dev>
         Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
    +    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
     
      ## MAINTAINERS ##
     @@ MAINTAINERS: S:	Maintained
---

Results of testing on various branches:

| Branch                    | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| Current branch            |  Success    |  Success   |

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 6.1&6.6 V3 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
  2025-03-19  6:40 ` [PATCH 6.1&6.6 V3 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3 Huacai Chen
@ 2025-03-19 10:54   ` Sasha Levin
  2025-03-19 14:13   ` Greg Kroah-Hartman
  1 sibling, 0 replies; 17+ messages in thread
From: Sasha Levin @ 2025-03-19 10:54 UTC (permalink / raw)
  To: stable; +Cc: Huacai Chen, Sasha Levin

[ Sasha's backport helper bot ]

Hi,

The upstream commit SHA1 provided is correct: 558bdc45dfb2669e1741384a0c80be9c82fa052c

WARNING: Author mismatch between patch and upstream commit:
Backport author: Huacai Chen<chenhuacai@loongson.cn>
Commit author: Jan Stancek<jstancek@redhat.com>

Status in newer kernel trees:
6.13.y | Present (exact SHA1)
6.12.y | Present (exact SHA1)
6.6.y | Not found

Note: The patch differs from the upstream commit:
---
1:  558bdc45dfb26 ! 1:  170b80ba5ce0b sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
    @@ Metadata
      ## Commit message ##
         sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
     
    +    commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream.
    +
         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.
    @@ Commit message
         Tested-by: R Nageswara Sastry <rnsastry@linux.ibm.com>
         Reviewed-by: Neal Gompa <neal@gompa.dev>
         Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
    +    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
     
      ## certs/extract-cert.c ##
     @@
    @@ certs/extract-cert.c: static void write_cert(X509 *x509)
      		fprintf(stderr, "Extracted cert: %s\n", buf);
      }
      
    +-int main(int argc, char **argv)
     +static X509 *load_cert_pkcs11(const char *cert_src)
    -+{
    + {
    +-	char *cert_src;
    +-
    +-	OpenSSL_add_all_algorithms();
    +-	ERR_load_crypto_strings();
    +-	ERR_clear_error();
     +	X509 *cert = NULL;
     +#ifdef USE_PKCS11_PROVIDER
     +	OSSL_STORE_CTX *store;
    -+
    + 
    +-	kbuild_verbose = atoi(getenv("KBUILD_VERBOSE")?:"0");
     +	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)");
    -+
    + 
    +-        key_pass = getenv("KBUILD_SIGN_PIN");
    +-
    +-	if (argc != 3)
    +-		format();
     +	store = OSSL_STORE_open(cert_src, NULL, NULL, NULL, NULL);
     +	ERR(!store, "OSSL_STORE_open");
    -+
    + 
    +-	cert_src = argv[1];
    +-	cert_dst = argv[2];
     +	while (!OSSL_STORE_eof(store)) {
     +		OSSL_STORE_INFO *info = OSSL_STORE_load(store);
    -+
    + 
    +-	if (!cert_src[0]) {
    +-		/* Invoked with no input; create empty file */
    +-		FILE *f = fopen(cert_dst, "wb");
    +-		ERR(!f, "%s", cert_dst);
    +-		fclose(f);
    +-		exit(0);
    +-	} else if (!strncmp(cert_src, "pkcs11:", 7)) {
     +		if (!info) {
     +			drain_openssl_errors(__LINE__, 0);
     +			continue;
    @@ certs/extract-cert.c: static void write_cert(X509 *x509)
     +	}
     +	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");
    + 		ENGINE *e;
    + 		struct {
    + 			const char *cert_id;
    +@@ certs/extract-cert.c: int main(int argc, char **argv)
    + 			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);
     +		cert = parms.cert;
     +#else
     +		fprintf(stderr, "no pkcs11 engine/provider available\n");
    @@ certs/extract-cert.c: static void write_cert(X509 *x509)
     +	return cert;
     +}
     +
    - int main(int argc, char **argv)
    - {
    - 	char *cert_src;
    -@@ certs/extract-cert.c: 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;
    ++int main(int argc, char **argv)
    ++{
    ++	char *cert_src;
    ++
    ++	OpenSSL_add_all_algorithms();
    ++	ERR_load_crypto_strings();
    ++	ERR_clear_error();
    ++
    ++	kbuild_verbose = atoi(getenv("KBUILD_VERBOSE")?:"0");
    ++
    ++        key_pass = getenv("KBUILD_SIGN_PIN");
    ++
    ++	if (argc != 3)
    ++		format();
    ++
    ++	cert_src = argv[1];
    ++	cert_dst = argv[2];
    ++
    ++	if (!cert_src[0]) {
    ++		/* Invoked with no input; create empty file */
    ++		FILE *f = fopen(cert_dst, "wb");
    ++		ERR(!f, "%s", cert_dst);
    ++		fclose(f);
    ++		exit(0);
    ++	} else if (!strncmp(cert_src, "pkcs11:", 7)) {
     +		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 {
---

Results of testing on various branches:

| Branch                    | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| Current branch            |  Success    |  Success   |

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 6.1&6.6 V3 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
  2025-03-19  6:40 ` [PATCH 6.1&6.6 V3 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3 Huacai Chen
  2025-03-19 10:54   ` Sasha Levin
@ 2025-03-19 14:13   ` Greg Kroah-Hartman
  2025-03-19 14:44     ` Jan Stancek
  1 sibling, 1 reply; 17+ messages in thread
From: Greg Kroah-Hartman @ 2025-03-19 14:13 UTC (permalink / raw)
  To: Huacai Chen
  Cc: Sasha Levin, Huacai Chen, Xuerui Wang, stable, David Howells,
	David Woodhouse, Jan Stancek, Jarkko Sakkinen, keyrings,
	linux-kernel, loongarch, R Nageswara Sastry, Neal Gompa

On Wed, Mar 19, 2025 at 02:40:31PM +0800, Huacai Chen wrote:
> From: Jan Stancek <jstancek@redhat.com>
> 
> commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream.
> 
> 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
> 
> [jarkko: fixed up alignment issues reported by checkpatch.pl --strict]
> 
> Signed-off-by: Jan Stancek <jstancek@redhat.com>
> Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
> Tested-by: R Nageswara Sastry <rnsastry@linux.ibm.com>
> Reviewed-by: Neal Gompa <neal@gompa.dev>
> Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
> Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
> ---
>  certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++-------------
>  scripts/sign-file.c  |  93 ++++++++++++++++++++++++++------------
>  2 files changed, 138 insertions(+), 58 deletions(-)

This seems to differ from what is upstream by a lot, please document
what you changed from it and why when you resend this series again.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 6.1&6.6 V3 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
  2025-03-19 14:13   ` Greg Kroah-Hartman
@ 2025-03-19 14:44     ` Jan Stancek
  2025-03-19 16:25       ` Greg Kroah-Hartman
  0 siblings, 1 reply; 17+ messages in thread
From: Jan Stancek @ 2025-03-19 14:44 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Huacai Chen, Sasha Levin, Huacai Chen, Xuerui Wang, stable,
	David Howells, David Woodhouse, Jarkko Sakkinen, keyrings,
	linux-kernel, loongarch, R Nageswara Sastry, Neal Gompa

On Wed, Mar 19, 2025 at 07:13:13AM -0700, Greg Kroah-Hartman wrote:
>On Wed, Mar 19, 2025 at 02:40:31PM +0800, Huacai Chen wrote:
>> From: Jan Stancek <jstancek@redhat.com>
>>
>> commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream.
>>
>> 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
>>
>> [jarkko: fixed up alignment issues reported by checkpatch.pl --strict]
>>
>> Signed-off-by: Jan Stancek <jstancek@redhat.com>
>> Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
>> Tested-by: R Nageswara Sastry <rnsastry@linux.ibm.com>
>> Reviewed-by: Neal Gompa <neal@gompa.dev>
>> Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
>> Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
>> ---
>>  certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++-------------
>>  scripts/sign-file.c  |  93 ++++++++++++++++++++++++++------------
>>  2 files changed, 138 insertions(+), 58 deletions(-)
>
>This seems to differ from what is upstream by a lot, please document
>what you changed from it and why when you resend this series again.

Hunks are arranged differently, but code appears to be identical.
When I apply the series to v6.6.83 and compare with upstream I get:

$ git range-diff HEAD~3..HEAD 558bdc45dfb2~3..558bdc45dfb2
1:  02ea9f7368c6 ! 1:  300e6d4116f9 sign-file,extract-cert: move common SSL helper functions to a header
     @@ Metadata
       ## Commit message ##
          sign-file,extract-cert: move common SSL helper functions to a header

     -    commit 300e6d4116f956b035281ec94297dc4dc8d4e1d3 upstream.
     -
          Couple error handling helpers are repeated in both tools, so
          move them to a common header.

     @@ Commit message
          Tested-by: R Nageswara Sastry <rnsastry@linux.ibm.com>
          Reviewed-by: Neal Gompa <neal@gompa.dev>
          Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
     -    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>

       ## MAINTAINERS ##
      @@ MAINTAINERS: S: Maintained
2:  0a81fb059cfd ! 2:  467d60eddf55 sign-file,extract-cert: avoid using deprecated ERR_get_error_line()
     @@ Metadata
       ## Commit message ##
          sign-file,extract-cert: avoid using deprecated ERR_get_error_line()

     -    commit 467d60eddf55588add232feda325da7215ddaf30 upstream.
     -
          ERR_get_error_line() is deprecated since OpenSSL 3.0.

          Use ERR_peek_error_line() instead, and combine display_openssl_errors()
     @@ Commit message
          Tested-by: R Nageswara Sastry <rnsastry@linux.ibm.com>
          Reviewed-by: Neal Gompa <neal@gompa.dev>
          Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
     -    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>

       ## certs/extract-cert.c ##
      @@ certs/extract-cert.c: int main(int argc, char **argv)
3:  0882f379a1f5 ! 3:  558bdc45dfb2 sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
     @@ Metadata
       ## Commit message ##
          sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3

     -    commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream.
     -
          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.
     @@ Commit message
          Tested-by: R Nageswara Sastry <rnsastry@linux.ibm.com>
          Reviewed-by: Neal Gompa <neal@gompa.dev>
          Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
     -    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>

       ## certs/extract-cert.c ##
      @@

Regards,
Jan


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 6.1&6.6 V3 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
  2025-03-19 14:44     ` Jan Stancek
@ 2025-03-19 16:25       ` Greg Kroah-Hartman
  2025-03-19 16:53         ` Jan Stancek
  0 siblings, 1 reply; 17+ messages in thread
From: Greg Kroah-Hartman @ 2025-03-19 16:25 UTC (permalink / raw)
  To: Jan Stancek
  Cc: Huacai Chen, Sasha Levin, Huacai Chen, Xuerui Wang, stable,
	David Howells, David Woodhouse, Jarkko Sakkinen, keyrings,
	linux-kernel, loongarch, R Nageswara Sastry, Neal Gompa

On Wed, Mar 19, 2025 at 03:44:19PM +0100, Jan Stancek wrote:
> On Wed, Mar 19, 2025 at 07:13:13AM -0700, Greg Kroah-Hartman wrote:
> > On Wed, Mar 19, 2025 at 02:40:31PM +0800, Huacai Chen wrote:
> > > From: Jan Stancek <jstancek@redhat.com>
> > > 
> > > commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream.
> > > 
> > > 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
> > > 
> > > [jarkko: fixed up alignment issues reported by checkpatch.pl --strict]
> > > 
> > > Signed-off-by: Jan Stancek <jstancek@redhat.com>
> > > Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
> > > Tested-by: R Nageswara Sastry <rnsastry@linux.ibm.com>
> > > Reviewed-by: Neal Gompa <neal@gompa.dev>
> > > Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
> > > Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
> > > ---
> > >  certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++-------------
> > >  scripts/sign-file.c  |  93 ++++++++++++++++++++++++++------------
> > >  2 files changed, 138 insertions(+), 58 deletions(-)
> > 
> > This seems to differ from what is upstream by a lot, please document
> > what you changed from it and why when you resend this series again.
> 
> Hunks are arranged differently, but code appears to be identical.
> When I apply the series to v6.6.83 and compare with upstream I get:

If so, why is the diffstat different?  Also why are the hunks arranged
differently, that's a hint to me that something went wrong and I can't
trust the patch at all.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 6.1&6.6 V3 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
  2025-03-19 16:25       ` Greg Kroah-Hartman
@ 2025-03-19 16:53         ` Jan Stancek
  2025-03-20  3:01           ` Huacai Chen
  2025-03-30 13:07           ` Huacai Chen
  0 siblings, 2 replies; 17+ messages in thread
From: Jan Stancek @ 2025-03-19 16:53 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Huacai Chen, Sasha Levin, Huacai Chen, Xuerui Wang, stable,
	David Howells, David Woodhouse, Jarkko Sakkinen, keyrings,
	linux-kernel, loongarch, R Nageswara Sastry, Neal Gompa

On Wed, Mar 19, 2025 at 5:26 PM Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
> On Wed, Mar 19, 2025 at 03:44:19PM +0100, Jan Stancek wrote:
> > On Wed, Mar 19, 2025 at 07:13:13AM -0700, Greg Kroah-Hartman wrote:
> > > On Wed, Mar 19, 2025 at 02:40:31PM +0800, Huacai Chen wrote:
> > > > From: Jan Stancek <jstancek@redhat.com>
> > > >
> > > > commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream.
> > > >
> > > > 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
> > > >
> > > > [jarkko: fixed up alignment issues reported by checkpatch.pl --strict]
> > > >
> > > > Signed-off-by: Jan Stancek <jstancek@redhat.com>
> > > > Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
> > > > Tested-by: R Nageswara Sastry <rnsastry@linux.ibm.com>
> > > > Reviewed-by: Neal Gompa <neal@gompa.dev>
> > > > Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
> > > > Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
> > > > ---
> > > >  certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++-------------
> > > >  scripts/sign-file.c  |  93 ++++++++++++++++++++++++++------------
> > > >  2 files changed, 138 insertions(+), 58 deletions(-)
> > >
> > > This seems to differ from what is upstream by a lot, please document
> > > what you changed from it and why when you resend this series again.
> >
> > Hunks are arranged differently, but code appears to be identical.
> > When I apply the series to v6.6.83 and compare with upstream I get:
>
> If so, why is the diffstat different?  Also why are the hunks arranged
> differently,

He appears to be using "--diff-algorithm=minimal", while you probably
patience or histogram.

$ git format-patch -1 --stdout --diff-algorithm=minimal 558bdc45dfb2 |
grep -A3 -m1 -- "---"
---
 certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++-------------
 scripts/sign-file.c  |  93 ++++++++++++++++++++++++++------------
 2 files changed, 138 insertions(+), 58 deletions(-)

Should be easy to regenerate with different diff-alg for v4.

Regards,
Jan

> that's a hint to me that something went wrong and I can't
> trust the patch at all.
>
> thanks,
>
> greg k-h
>


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 6.1&6.6 V3 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
  2025-03-19 16:53         ` Jan Stancek
@ 2025-03-20  3:01           ` Huacai Chen
  2025-03-30 13:07           ` Huacai Chen
  1 sibling, 0 replies; 17+ messages in thread
From: Huacai Chen @ 2025-03-20  3:01 UTC (permalink / raw)
  To: Jan Stancek
  Cc: Greg Kroah-Hartman, Huacai Chen, Sasha Levin, Xuerui Wang, stable,
	David Howells, David Woodhouse, Jarkko Sakkinen, keyrings,
	linux-kernel, loongarch, R Nageswara Sastry, Neal Gompa

Hi, all,

On Thu, Mar 20, 2025 at 12:53 AM Jan Stancek <jstancek@redhat.com> wrote:
>
> On Wed, Mar 19, 2025 at 5:26 PM Greg Kroah-Hartman
> <gregkh@linuxfoundation.org> wrote:
> >
> > On Wed, Mar 19, 2025 at 03:44:19PM +0100, Jan Stancek wrote:
> > > On Wed, Mar 19, 2025 at 07:13:13AM -0700, Greg Kroah-Hartman wrote:
> > > > On Wed, Mar 19, 2025 at 02:40:31PM +0800, Huacai Chen wrote:
> > > > > From: Jan Stancek <jstancek@redhat.com>
> > > > >
> > > > > commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream.
> > > > >
> > > > > 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
> > > > >
> > > > > [jarkko: fixed up alignment issues reported by checkpatch.pl --strict]
> > > > >
> > > > > Signed-off-by: Jan Stancek <jstancek@redhat.com>
> > > > > Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
> > > > > Tested-by: R Nageswara Sastry <rnsastry@linux.ibm.com>
> > > > > Reviewed-by: Neal Gompa <neal@gompa.dev>
> > > > > Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
> > > > > Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
> > > > > ---
> > > > >  certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++-------------
> > > > >  scripts/sign-file.c  |  93 ++++++++++++++++++++++++++------------
> > > > >  2 files changed, 138 insertions(+), 58 deletions(-)
> > > >
> > > > This seems to differ from what is upstream by a lot, please document
> > > > what you changed from it and why when you resend this series again.
> > >
> > > Hunks are arranged differently, but code appears to be identical.
> > > When I apply the series to v6.6.83 and compare with upstream I get:
> >
> > If so, why is the diffstat different?  Also why are the hunks arranged
> > differently,
>
> He appears to be using "--diff-algorithm=minimal", while you probably
> patience or histogram.
>
> $ git format-patch -1 --stdout --diff-algorithm=minimal 558bdc45dfb2 |
> grep -A3 -m1 -- "---"
> ---
>  certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++-------------
>  scripts/sign-file.c  |  93 ++++++++++++++++++++++++++------------
>  2 files changed, 138 insertions(+), 58 deletions(-)
>
> Should be easy to regenerate with different diff-alg for v4.
I use the default configuration to generate patches, and since the
code is identical, should I really send a V4?

Huacai

>
> Regards,
> Jan
>
> > that's a hint to me that something went wrong and I can't
> > trust the patch at all.
> >
> > thanks,
> >
> > greg k-h
> >
>

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 6.1&6.6 V3 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
  2025-03-19 16:53         ` Jan Stancek
  2025-03-20  3:01           ` Huacai Chen
@ 2025-03-30 13:07           ` Huacai Chen
  2025-03-30 13:40             ` Jan Stancek
  1 sibling, 1 reply; 17+ messages in thread
From: Huacai Chen @ 2025-03-30 13:07 UTC (permalink / raw)
  To: Jan Stancek
  Cc: Greg Kroah-Hartman, Huacai Chen, Sasha Levin, Xuerui Wang, stable,
	David Howells, David Woodhouse, Jarkko Sakkinen, keyrings,
	linux-kernel, loongarch, R Nageswara Sastry, Neal Gompa

On Thu, Mar 20, 2025 at 12:53 AM Jan Stancek <jstancek@redhat.com> wrote:
>
> On Wed, Mar 19, 2025 at 5:26 PM Greg Kroah-Hartman
> <gregkh@linuxfoundation.org> wrote:
> >
> > On Wed, Mar 19, 2025 at 03:44:19PM +0100, Jan Stancek wrote:
> > > On Wed, Mar 19, 2025 at 07:13:13AM -0700, Greg Kroah-Hartman wrote:
> > > > On Wed, Mar 19, 2025 at 02:40:31PM +0800, Huacai Chen wrote:
> > > > > From: Jan Stancek <jstancek@redhat.com>
> > > > >
> > > > > commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream.
> > > > >
> > > > > 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
> > > > >
> > > > > [jarkko: fixed up alignment issues reported by checkpatch.pl --strict]
> > > > >
> > > > > Signed-off-by: Jan Stancek <jstancek@redhat.com>
> > > > > Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
> > > > > Tested-by: R Nageswara Sastry <rnsastry@linux.ibm.com>
> > > > > Reviewed-by: Neal Gompa <neal@gompa.dev>
> > > > > Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
> > > > > Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
> > > > > ---
> > > > >  certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++-------------
> > > > >  scripts/sign-file.c  |  93 ++++++++++++++++++++++++++------------
> > > > >  2 files changed, 138 insertions(+), 58 deletions(-)
> > > >
> > > > This seems to differ from what is upstream by a lot, please document
> > > > what you changed from it and why when you resend this series again.
> > >
> > > Hunks are arranged differently, but code appears to be identical.
> > > When I apply the series to v6.6.83 and compare with upstream I get:
> >
> > If so, why is the diffstat different?  Also why are the hunks arranged
> > differently,
>
> He appears to be using "--diff-algorithm=minimal", while you probably
> patience or histogram.
Hi, Jan,

I tried --diff-algorithm=minimal/patience/histogram from the upstream
commit, they all give the same result as this patch. But Sasha said
the upstream diffstat is different, so how does he generate the patch?

Huacai

>
> $ git format-patch -1 --stdout --diff-algorithm=minimal 558bdc45dfb2 |
> grep -A3 -m1 -- "---"
> ---
>  certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++-------------
>  scripts/sign-file.c  |  93 ++++++++++++++++++++++++++------------
>  2 files changed, 138 insertions(+), 58 deletions(-)
>
> Should be easy to regenerate with different diff-alg for v4.
>
> Regards,
> Jan
>
> > that's a hint to me that something went wrong and I can't
> > trust the patch at all.
> >
> > thanks,
> >
> > greg k-h
> >
>

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 6.1&6.6 V3 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
  2025-03-30 13:07           ` Huacai Chen
@ 2025-03-30 13:40             ` Jan Stancek
  2025-04-14 13:52               ` Huacai Chen
  0 siblings, 1 reply; 17+ messages in thread
From: Jan Stancek @ 2025-03-30 13:40 UTC (permalink / raw)
  To: Huacai Chen
  Cc: Greg Kroah-Hartman, Huacai Chen, Sasha Levin, Xuerui Wang, stable,
	David Howells, David Woodhouse, Jarkko Sakkinen, keyrings,
	linux-kernel, loongarch, R Nageswara Sastry, Neal Gompa

On Sun, Mar 30, 2025 at 3:08 PM Huacai Chen <chenhuacai@kernel.org> wrote:
>
> On Thu, Mar 20, 2025 at 12:53 AM Jan Stancek <jstancek@redhat.com> wrote:
> >
> > On Wed, Mar 19, 2025 at 5:26 PM Greg Kroah-Hartman
> > <gregkh@linuxfoundation.org> wrote:
> > >
> > > On Wed, Mar 19, 2025 at 03:44:19PM +0100, Jan Stancek wrote:
> > > > On Wed, Mar 19, 2025 at 07:13:13AM -0700, Greg Kroah-Hartman wrote:
> > > > > On Wed, Mar 19, 2025 at 02:40:31PM +0800, Huacai Chen wrote:
> > > > > > From: Jan Stancek <jstancek@redhat.com>
> > > > > >
> > > > > > commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream.
> > > > > >
> > > > > > 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
> > > > > >
> > > > > > [jarkko: fixed up alignment issues reported by checkpatch.pl --strict]
> > > > > >
> > > > > > Signed-off-by: Jan Stancek <jstancek@redhat.com>
> > > > > > Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
> > > > > > Tested-by: R Nageswara Sastry <rnsastry@linux.ibm.com>
> > > > > > Reviewed-by: Neal Gompa <neal@gompa.dev>
> > > > > > Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
> > > > > > Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
> > > > > > ---
> > > > > >  certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++-------------
> > > > > >  scripts/sign-file.c  |  93 ++++++++++++++++++++++++++------------
> > > > > >  2 files changed, 138 insertions(+), 58 deletions(-)
> > > > >
> > > > > This seems to differ from what is upstream by a lot, please document
> > > > > what you changed from it and why when you resend this series again.
> > > >
> > > > Hunks are arranged differently, but code appears to be identical.
> > > > When I apply the series to v6.6.83 and compare with upstream I get:
> > >
> > > If so, why is the diffstat different?  Also why are the hunks arranged
> > > differently,
> >
> > He appears to be using "--diff-algorithm=minimal", while you probably
> > patience or histogram.
> Hi, Jan,
>
> I tried --diff-algorithm=minimal/patience/histogram from the upstream
> commit, they all give the same result as this patch. But Sasha said
> the upstream diffstat is different, so how does he generate the patch?

Hi,

I don't know how he generates the patch, but with git-2.43 I get noticable
different patches and diff stats for minimal vs. histogram. "minimal" one
matches your v3 patch. I don't know details of Greg's workflow, just offered
one possible explanation that would allow this series to progress further.

$ git format-patch -1 --stdout --diff-algorithm=minimal 558bdc45dfb2 |
grep -A3 -m1 -- "---"
---
 certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++-------------
 scripts/sign-file.c  |  93 ++++++++++++++++++++++++++------------
 2 files changed, 138 insertions(+), 58 deletions(-)

$ git format-patch -1 --stdout --diff-algorithm=histogram 558bdc45dfb2
| grep -A3 -m1 -- "---"
---
 certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++-------------
 scripts/sign-file.c  |  95 +++++++++++++++++++++++++++------------
 2 files changed, 139 insertions(+), 59 deletions(-)

Regards,
Jan

>
> Huacai
>
> >
> > $ git format-patch -1 --stdout --diff-algorithm=minimal 558bdc45dfb2 |
> > grep -A3 -m1 -- "---"
> > ---
> >  certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++-------------
> >  scripts/sign-file.c  |  93 ++++++++++++++++++++++++++------------
> >  2 files changed, 138 insertions(+), 58 deletions(-)
> >
> > Should be easy to regenerate with different diff-alg for v4.
> >
> > Regards,
> > Jan
> >
> > > that's a hint to me that something went wrong and I can't
> > > trust the patch at all.
> > >
> > > thanks,
> > >
> > > greg k-h
> > >
> >
>


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 6.1&6.6 V3 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
  2025-03-30 13:40             ` Jan Stancek
@ 2025-04-14 13:52               ` Huacai Chen
  2025-04-22  7:53                 ` Greg Kroah-Hartman
  0 siblings, 1 reply; 17+ messages in thread
From: Huacai Chen @ 2025-04-14 13:52 UTC (permalink / raw)
  To: Jan Stancek
  Cc: Greg Kroah-Hartman, Huacai Chen, Sasha Levin, Xuerui Wang, stable,
	David Howells, David Woodhouse, Jarkko Sakkinen, keyrings,
	linux-kernel, loongarch, R Nageswara Sastry, Neal Gompa

Hi, Greg and Sasha,

On Sun, Mar 30, 2025 at 9:40 PM Jan Stancek <jstancek@redhat.com> wrote:
>
> On Sun, Mar 30, 2025 at 3:08 PM Huacai Chen <chenhuacai@kernel.org> wrote:
> >
> > On Thu, Mar 20, 2025 at 12:53 AM Jan Stancek <jstancek@redhat.com> wrote:
> > >
> > > On Wed, Mar 19, 2025 at 5:26 PM Greg Kroah-Hartman
> > > <gregkh@linuxfoundation.org> wrote:
> > > >
> > > > On Wed, Mar 19, 2025 at 03:44:19PM +0100, Jan Stancek wrote:
> > > > > On Wed, Mar 19, 2025 at 07:13:13AM -0700, Greg Kroah-Hartman wrote:
> > > > > > On Wed, Mar 19, 2025 at 02:40:31PM +0800, Huacai Chen wrote:
> > > > > > > From: Jan Stancek <jstancek@redhat.com>
> > > > > > >
> > > > > > > commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream.
> > > > > > >
> > > > > > > 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
> > > > > > >
> > > > > > > [jarkko: fixed up alignment issues reported by checkpatch.pl --strict]
> > > > > > >
> > > > > > > Signed-off-by: Jan Stancek <jstancek@redhat.com>
> > > > > > > Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
> > > > > > > Tested-by: R Nageswara Sastry <rnsastry@linux.ibm.com>
> > > > > > > Reviewed-by: Neal Gompa <neal@gompa.dev>
> > > > > > > Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
> > > > > > > Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
> > > > > > > ---
> > > > > > >  certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++-------------
> > > > > > >  scripts/sign-file.c  |  93 ++++++++++++++++++++++++++------------
> > > > > > >  2 files changed, 138 insertions(+), 58 deletions(-)
> > > > > >
> > > > > > This seems to differ from what is upstream by a lot, please document
> > > > > > what you changed from it and why when you resend this series again.
> > > > >
> > > > > Hunks are arranged differently, but code appears to be identical.
> > > > > When I apply the series to v6.6.83 and compare with upstream I get:
> > > >
> > > > If so, why is the diffstat different?  Also why are the hunks arranged
> > > > differently,
> > >
> > > He appears to be using "--diff-algorithm=minimal", while you probably
> > > patience or histogram.
> > Hi, Jan,
> >
> > I tried --diff-algorithm=minimal/patience/histogram from the upstream
> > commit, they all give the same result as this patch. But Sasha said
> > the upstream diffstat is different, so how does he generate the patch?
>
> Hi,
>
> I don't know how he generates the patch, but with git-2.43 I get noticable
> different patches and diff stats for minimal vs. histogram. "minimal" one
> matches your v3 patch. I don't know details of Greg's workflow, just offered
> one possible explanation that would allow this series to progress further.
>
> $ git format-patch -1 --stdout --diff-algorithm=minimal 558bdc45dfb2 |
> grep -A3 -m1 -- "---"
Could you please tell me how you generate patches? I always get the
same result from the upstream repo.

Huacai

> ---
>  certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++-------------
>  scripts/sign-file.c  |  93 ++++++++++++++++++++++++++------------
>  2 files changed, 138 insertions(+), 58 deletions(-)
>
> $ git format-patch -1 --stdout --diff-algorithm=histogram 558bdc45dfb2
> | grep -A3 -m1 -- "---"
> ---
>  certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++-------------
>  scripts/sign-file.c  |  95 +++++++++++++++++++++++++++------------
>  2 files changed, 139 insertions(+), 59 deletions(-)
>
> Regards,
> Jan
>
> >
> > Huacai
> >
> > >
> > > $ git format-patch -1 --stdout --diff-algorithm=minimal 558bdc45dfb2 |
> > > grep -A3 -m1 -- "---"
> > > ---
> > >  certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++-------------
> > >  scripts/sign-file.c  |  93 ++++++++++++++++++++++++++------------
> > >  2 files changed, 138 insertions(+), 58 deletions(-)
> > >
> > > Should be easy to regenerate with different diff-alg for v4.
> > >
> > > Regards,
> > > Jan
> > >
> > > > that's a hint to me that something went wrong and I can't
> > > > trust the patch at all.
> > > >
> > > > thanks,
> > > >
> > > > greg k-h
> > > >
> > >
> >
>
>

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 6.1&6.6 V3 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
  2025-04-14 13:52               ` Huacai Chen
@ 2025-04-22  7:53                 ` Greg Kroah-Hartman
  2025-04-22 12:30                   ` Huacai Chen
  0 siblings, 1 reply; 17+ messages in thread
From: Greg Kroah-Hartman @ 2025-04-22  7:53 UTC (permalink / raw)
  To: Huacai Chen
  Cc: Jan Stancek, Huacai Chen, Sasha Levin, Xuerui Wang, stable,
	David Howells, David Woodhouse, Jarkko Sakkinen, keyrings,
	linux-kernel, loongarch, R Nageswara Sastry, Neal Gompa

On Mon, Apr 14, 2025 at 09:52:35PM +0800, Huacai Chen wrote:
> Hi, Greg and Sasha,
> 
> On Sun, Mar 30, 2025 at 9:40 PM Jan Stancek <jstancek@redhat.com> wrote:
> >
> > On Sun, Mar 30, 2025 at 3:08 PM Huacai Chen <chenhuacai@kernel.org> wrote:
> > >
> > > On Thu, Mar 20, 2025 at 12:53 AM Jan Stancek <jstancek@redhat.com> wrote:
> > > >
> > > > On Wed, Mar 19, 2025 at 5:26 PM Greg Kroah-Hartman
> > > > <gregkh@linuxfoundation.org> wrote:
> > > > >
> > > > > On Wed, Mar 19, 2025 at 03:44:19PM +0100, Jan Stancek wrote:
> > > > > > On Wed, Mar 19, 2025 at 07:13:13AM -0700, Greg Kroah-Hartman wrote:
> > > > > > > On Wed, Mar 19, 2025 at 02:40:31PM +0800, Huacai Chen wrote:
> > > > > > > > From: Jan Stancek <jstancek@redhat.com>
> > > > > > > >
> > > > > > > > commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream.
> > > > > > > >
> > > > > > > > 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
> > > > > > > >
> > > > > > > > [jarkko: fixed up alignment issues reported by checkpatch.pl --strict]
> > > > > > > >
> > > > > > > > Signed-off-by: Jan Stancek <jstancek@redhat.com>
> > > > > > > > Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
> > > > > > > > Tested-by: R Nageswara Sastry <rnsastry@linux.ibm.com>
> > > > > > > > Reviewed-by: Neal Gompa <neal@gompa.dev>
> > > > > > > > Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
> > > > > > > > Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
> > > > > > > > ---
> > > > > > > >  certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++-------------
> > > > > > > >  scripts/sign-file.c  |  93 ++++++++++++++++++++++++++------------
> > > > > > > >  2 files changed, 138 insertions(+), 58 deletions(-)
> > > > > > >
> > > > > > > This seems to differ from what is upstream by a lot, please document
> > > > > > > what you changed from it and why when you resend this series again.
> > > > > >
> > > > > > Hunks are arranged differently, but code appears to be identical.
> > > > > > When I apply the series to v6.6.83 and compare with upstream I get:
> > > > >
> > > > > If so, why is the diffstat different?  Also why are the hunks arranged
> > > > > differently,
> > > >
> > > > He appears to be using "--diff-algorithm=minimal", while you probably
> > > > patience or histogram.
> > > Hi, Jan,
> > >
> > > I tried --diff-algorithm=minimal/patience/histogram from the upstream
> > > commit, they all give the same result as this patch. But Sasha said
> > > the upstream diffstat is different, so how does he generate the patch?
> >
> > Hi,
> >
> > I don't know how he generates the patch, but with git-2.43 I get noticable
> > different patches and diff stats for minimal vs. histogram. "minimal" one
> > matches your v3 patch. I don't know details of Greg's workflow, just offered
> > one possible explanation that would allow this series to progress further.
> >
> > $ git format-patch -1 --stdout --diff-algorithm=minimal 558bdc45dfb2 |
> > grep -A3 -m1 -- "---"
> Could you please tell me how you generate patches? I always get the
> same result from the upstream repo.a

A simple 'git show' is all I use.  Try it again and submit what you have
if you can't get anything different here.

Note, my algorithm is set to "algorithm = histogram" in my .gitconfig
file.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 6.1&6.6 V3 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3
  2025-04-22  7:53                 ` Greg Kroah-Hartman
@ 2025-04-22 12:30                   ` Huacai Chen
  0 siblings, 0 replies; 17+ messages in thread
From: Huacai Chen @ 2025-04-22 12:30 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Jan Stancek, Huacai Chen, Sasha Levin, Xuerui Wang, stable,
	David Howells, David Woodhouse, Jarkko Sakkinen, keyrings,
	linux-kernel, loongarch, R Nageswara Sastry, Neal Gompa

On Tue, Apr 22, 2025 at 3:53 PM Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
> On Mon, Apr 14, 2025 at 09:52:35PM +0800, Huacai Chen wrote:
> > Hi, Greg and Sasha,
> >
> > On Sun, Mar 30, 2025 at 9:40 PM Jan Stancek <jstancek@redhat.com> wrote:
> > >
> > > On Sun, Mar 30, 2025 at 3:08 PM Huacai Chen <chenhuacai@kernel.org> wrote:
> > > >
> > > > On Thu, Mar 20, 2025 at 12:53 AM Jan Stancek <jstancek@redhat.com> wrote:
> > > > >
> > > > > On Wed, Mar 19, 2025 at 5:26 PM Greg Kroah-Hartman
> > > > > <gregkh@linuxfoundation.org> wrote:
> > > > > >
> > > > > > On Wed, Mar 19, 2025 at 03:44:19PM +0100, Jan Stancek wrote:
> > > > > > > On Wed, Mar 19, 2025 at 07:13:13AM -0700, Greg Kroah-Hartman wrote:
> > > > > > > > On Wed, Mar 19, 2025 at 02:40:31PM +0800, Huacai Chen wrote:
> > > > > > > > > From: Jan Stancek <jstancek@redhat.com>
> > > > > > > > >
> > > > > > > > > commit 558bdc45dfb2669e1741384a0c80be9c82fa052c upstream.
> > > > > > > > >
> > > > > > > > > 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
> > > > > > > > >
> > > > > > > > > [jarkko: fixed up alignment issues reported by checkpatch.pl --strict]
> > > > > > > > >
> > > > > > > > > Signed-off-by: Jan Stancek <jstancek@redhat.com>
> > > > > > > > > Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
> > > > > > > > > Tested-by: R Nageswara Sastry <rnsastry@linux.ibm.com>
> > > > > > > > > Reviewed-by: Neal Gompa <neal@gompa.dev>
> > > > > > > > > Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
> > > > > > > > > Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
> > > > > > > > > ---
> > > > > > > > >  certs/extract-cert.c | 103 ++++++++++++++++++++++++++++++-------------
> > > > > > > > >  scripts/sign-file.c  |  93 ++++++++++++++++++++++++++------------
> > > > > > > > >  2 files changed, 138 insertions(+), 58 deletions(-)
> > > > > > > >
> > > > > > > > This seems to differ from what is upstream by a lot, please document
> > > > > > > > what you changed from it and why when you resend this series again.
> > > > > > >
> > > > > > > Hunks are arranged differently, but code appears to be identical.
> > > > > > > When I apply the series to v6.6.83 and compare with upstream I get:
> > > > > >
> > > > > > If so, why is the diffstat different?  Also why are the hunks arranged
> > > > > > differently,
> > > > >
> > > > > He appears to be using "--diff-algorithm=minimal", while you probably
> > > > > patience or histogram.
> > > > Hi, Jan,
> > > >
> > > > I tried --diff-algorithm=minimal/patience/histogram from the upstream
> > > > commit, they all give the same result as this patch. But Sasha said
> > > > the upstream diffstat is different, so how does he generate the patch?
> > >
> > > Hi,
> > >
> > > I don't know how he generates the patch, but with git-2.43 I get noticable
> > > different patches and diff stats for minimal vs. histogram. "minimal" one
> > > matches your v3 patch. I don't know details of Greg's workflow, just offered
> > > one possible explanation that would allow this series to progress further.
> > >
> > > $ git format-patch -1 --stdout --diff-algorithm=minimal 558bdc45dfb2 |
> > > grep -A3 -m1 -- "---"
> > Could you please tell me how you generate patches? I always get the
> > same result from the upstream repo.a
>
> A simple 'git show' is all I use.  Try it again and submit what you have
> if you can't get anything different here.
>
> Note, my algorithm is set to "algorithm = histogram" in my .gitconfig
> file.
OK, it seems I can generate the correct patches as yours now, I will
send V4 later.

Huacai

>
> thanks,
>
> greg k-h

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2025-04-22 12:30 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-19  6:40 [PATCH 6.1&6.6 V3 0/3] sign-file,extract-cert: switch to PROVIDER API for OpenSSL >= 3.0 Huacai Chen
2025-03-19  6:40 ` [PATCH 6.1&6.6 V3 1/3] sign-file,extract-cert: move common SSL helper functions to a header Huacai Chen
2025-03-19 10:54   ` Sasha Levin
2025-03-19  6:40 ` [PATCH 6.1&6.6 V3 2/3] sign-file,extract-cert: avoid using deprecated ERR_get_error_line() Huacai Chen
2025-03-19 10:54   ` Sasha Levin
2025-03-19  6:40 ` [PATCH 6.1&6.6 V3 3/3] sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3 Huacai Chen
2025-03-19 10:54   ` Sasha Levin
2025-03-19 14:13   ` Greg Kroah-Hartman
2025-03-19 14:44     ` Jan Stancek
2025-03-19 16:25       ` Greg Kroah-Hartman
2025-03-19 16:53         ` Jan Stancek
2025-03-20  3:01           ` Huacai Chen
2025-03-30 13:07           ` Huacai Chen
2025-03-30 13:40             ` Jan Stancek
2025-04-14 13:52               ` Huacai Chen
2025-04-22  7:53                 ` Greg Kroah-Hartman
2025-04-22 12:30                   ` Huacai Chen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox