apps/pkcs12: Properly detect MAC setup failure
authorTomas Mraz <tomas@openssl.org>
Fri, 5 Mar 2021 16:22:35 +0000 (17:22 +0100)
committerPauli <ppzgs1@gmail.com>
Tue, 9 Mar 2021 01:12:07 +0000 (11:12 +1000)
The MAC requires PKCS12KDF support which is not present
in FIPS provider as it is not an approved KDF algorithm.
Suggest using -nomac if MAC is not required.

Fixes #14057

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/14445)

apps/pkcs12.c
doc/man1/openssl-pkcs12.pod.in

index 241122b76ad8a044d692a67beb2b42dc7b0f9875..00c5a9bc4bbe68fbfa23098c0bd500dd6a85bcad 100644 (file)
@@ -655,7 +655,11 @@ int pkcs12_main(int argc, char **argv)
         }
 
         if (maciter != -1)
-            PKCS12_set_mac(p12, mpass, -1, NULL, 0, maciter, macmd);
+            if (!PKCS12_set_mac(p12, mpass, -1, NULL, 0, maciter, macmd)) {
+                BIO_printf(bio_err, "Error creating PKCS12 MAC; no PKCS12KDF support?\n");
+                BIO_printf(bio_err, "Use -nomac if MAC not required and PKCS12KDF support not available.\n");
+                goto export_end;
+            }
 
         assert(private);
 
index 65c10d1adbd4042df465696403837bd82268e948..b367be2b7f408d7a6d8dd22262cedf351f9a95a1 100644 (file)
@@ -333,7 +333,7 @@ then both, the private key and the certificates are encrypted using triple DES.
 
 =item B<-macalg> I<digest>
 
-Specify the MAC digest algorithm. If not included them SHA1 will be used.
+Specify the MAC digest algorithm. If not included SHA1 will be used.
 
 =item B<-iter> I<count>
 
@@ -362,7 +362,9 @@ to be needed to use MAC iterations counts but they are now used by default.
 
 =item B<-nomac>
 
-Don't attempt to provide the MAC integrity.
+Do not attempt to provide the MAC integrity. This can be useful with the FIPS
+provider as the PKCS12 MAC requires PKCS12KDF which is not an approved FIPS
+algorithm and cannot be supported by the FIPS provider.
 
 =back