Michael Kelley <[email protected]> wrote:

> Pardon my ignorance of the signing details, but I don't see an indication
> of having selected PKCS#7 with SHA1 in my .config. What am I looking for?

Actually, if you have openssl >= 1.0.0 then it sign-file will be built to use
CMS rather than PKCS#7, and will use the configured hash algo, so you can
ignore this.

> The symbols CMS_NO_SIGNING_TIME,

I can probably just not add that.

> EVP_PKEY_is_a()

I guess I can probably make this contingent on >= 3.0.0.

> and OPENSSL_VERSION_MAJOR don't exist in the include/openssl/* files for
> that old version.

I should probably use OPENSSL_VERSION_NUMBER instead - though we already use
it for selecting #includes (I guess #if doesn't complain).

Do the attached changes work for you?

David
---
diff --git a/scripts/sign-file.c b/scripts/sign-file.c
index 547b97097230..78276b15ab23 100644
--- a/scripts/sign-file.c
+++ b/scripts/sign-file.c
@@ -27,7 +27,7 @@
 #include <openssl/evp.h>
 #include <openssl/pem.h>
 #include <openssl/err.h>
-#if OPENSSL_VERSION_MAJOR >= 3
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
 # define USE_PKCS11_PROVIDER
 # include <openssl/provider.h>
 # include <openssl/store.h>
@@ -323,18 +323,21 @@ int main(int argc, char **argv)
                        CMS_DETACHED |
                        CMS_STREAM  |
                        CMS_NOSMIMECAP |
+#ifdef CMS_NO_SIGNING_TIME
                        CMS_NO_SIGNING_TIME |
+#endif
                        use_keyid;
 
-               if ((EVP_PKEY_is_a(private_key, "ML-DSA-44") ||
-                    EVP_PKEY_is_a(private_key, "ML-DSA-65") ||
-                    EVP_PKEY_is_a(private_key, "ML-DSA-87")) &&
-                   OPENSSL_VERSION_MAJOR < 4) {
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L && OPENSSL_VERSION_NUMBER < 
0x40000000L
+               if (EVP_PKEY_is_a(private_key, "ML-DSA-44") ||
+                   EVP_PKEY_is_a(private_key, "ML-DSA-65") ||
+                   EVP_PKEY_is_a(private_key, "ML-DSA-87")) {
                         /* ML-DSA + CMS_NOATTR is not supported in openssl-3.5
                          * and before.
                          */
                        use_signed_attrs = 0;
                }
+#endif
 
                flags |= use_signed_attrs;
 

Reply via email to