Configure/Makefile: separate install of the FIPS module
authorDr. Matthias St. Pierre <matthias.st.pierre@ncp-e.com>
Thu, 7 Jan 2021 17:47:01 +0000 (18:47 +0100)
committerDr. Matthias St. Pierre <matthias.st.pierre@ncp-e.com>
Thu, 29 Apr 2021 09:26:57 +0000 (11:26 +0200)
Fixes #13693

Co-authored-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/13684)

Configurations/unix-Makefile.tmpl
Configurations/windows-makefile.tmpl

index 9d5bfe0bd17022b04cda8a843eecd6a293f4151d..778c19897225100a0659214a4859212d28fd3ba1 100644 (file)
@@ -164,12 +164,21 @@ INSTALL_ENGINES={-
                                && $unified_info{attributes}->{modules}->{$_}->{engine} }
                         @{$unified_info{modules}}))
 -}
+INSTALL_FIPS={-
+        join(" \\\n" . ' ' x 16,
+             fill_lines(" ", $COLUMNS - 16,
+                        map { platform->dso($_) }
+                        grep { !$unified_info{attributes}->{modules}->{$_}->{noinst}
+                               && $unified_info{attributes}->{modules}->{$_}->{fips} }
+                        @{$unified_info{modules}}))
+-}
 INSTALL_MODULES={-
         join(" \\\n" . ' ' x 16,
              fill_lines(" ", $COLUMNS - 16,
                         map { platform->dso($_) }
                         grep { !$unified_info{attributes}->{modules}->{$_}->{noinst}
-                               && !$unified_info{attributes}->{modules}->{$_}->{engine} }
+                               && !$unified_info{attributes}->{modules}->{$_}->{engine}
+                               && !$unified_info{attributes}->{modules}->{$_}->{fips} }
                         @{$unified_info{modules}}))
 -}
 INSTALL_PROGRAMS={-
@@ -585,7 +594,15 @@ install_docs: install_man_docs install_html_docs
 uninstall_docs: uninstall_man_docs uninstall_html_docs
        $(RM) -r $(DESTDIR)$(DOCDIR)
 
-install_fips: install_sw
+install_fips:
+       @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1)
+       @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(MODULESDIR)
+       @$(ECHO) "*** Installing FIPS module"
+       @$(ECHO) "install $(INSTALL_FIPS) -> $(DESTDIR)$(MODULESDIR)/$(FIPSMODULENAME)"
+       @cp "$(INSTALL_FIPS)" $(DESTDIR)$(MODULESDIR)/$(FIPSMODULENAME).new
+       @chmod 755 $(DESTDIR)$(MODULESDIR)/$(FIPSMODULENAME).new
+       @mv -f $(DESTDIR)$(MODULESDIR)/$(FIPSMODULENAME).new \
+              $(DESTDIR)$(MODULESDIR)/$(FIPSMODULENAME)
        @$(ECHO) "*** Installing FIPS module configuration"
        @$(ECHO) "fipsinstall $(DESTDIR)$(OPENSSLDIR)/fipsmodule.cnf"
        @$(PERL) $(BLDDIR)/util/wrap.pl $(BLDDIR)/apps/openssl fipsinstall \
@@ -593,9 +610,11 @@ install_fips: install_sw
                -out $(DESTDIR)$(OPENSSLDIR)/fipsmodule.cnf \
                -macopt 'hexkey:$(FIPSKEY)'
 
-uninstall_fips: uninstall_sw
+uninstall_fips:
        @$(ECHO) "*** Uninstalling FIPS module configuration"
        $(RM) $(DESTDIR)$(OPENSSLDIR)/fipsmodule.cnf
+       @$(ECHO) "*** Uninstalling FIPS module"
+       $(RM) $(DESTDIR)$(MODULESDIR)/$(FIPSMODULENAME)
 
 install_ssldirs:
        @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(OPENSSLDIR)/certs
index 3b08b6dd299d8bdcf87a38eba0b9932232d94e77..3685b4fa7a1e701bb96f24608886223f09ff1c47 100644 (file)
@@ -103,10 +103,17 @@ INSTALL_ENGINEPDBS={-
                          && $unified_info{attributes}->{modules}->{$_}->{engine} }
                   @{$unified_info{modules}})
 -}
+INSTALL_FIPS={-
+        join(" ", map { quotify1(platform->dso($_)) }
+                  grep { !$unified_info{attributes}->{modules}->{$_}->{noinst}
+                          && $unified_info{attributes}->{modules}->{$_}->{fips} }
+                  @{$unified_info{modules}})
+-}
 INSTALL_MODULES={-
-        join(" ", map { platform->dso($_) }
+        join(" ", map { quotify1(platform->dso($_)) }
                   grep { !$unified_info{attributes}->{modules}->{$_}->{noinst}
-                          && !$unified_info{attributes}->{modules}->{$_}->{engine} }
+                          && !$unified_info{attributes}->{modules}->{$_}->{engine}
+                          && !$unified_info{attributes}->{modules}->{$_}->{fips} }
                   @{$unified_info{modules}})
 -}
 INSTALL_MODULEPDBS={-
@@ -470,17 +477,26 @@ install_docs: install_html_docs
 
 uninstall_docs: uninstall_html_docs
 
-install_fips: install_sw
+install_fips:
+#      @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1)
+       @$(PERL) $(SRCDIR)\util\mkdir-p.pl $(MODULESDIR)
+       @$(ECHO) "*** Installing FIPS module"
+       @$(ECHO) "install $(INSTALL_FIPS) -> $(MODULESDIR)\$(FIPSMODULENAME)"
+       @copy "$(INSTALL_FIPS)" $(MODULESDIR)\$(FIPSMODULENAME).new
+       @move /Y $(MODULESDIR)\$(FIPSMODULENAME).new \
+              $(MODULESDIR)\$(FIPSMODULENAME)
        @$(ECHO) "*** Installing FIPS module configuration"
-       @$(ECHO) "fipsinstall $(MODULESDIR)\$(FIPSMODULENAME).cnf"
+       @$(ECHO) "fipsinstall $(OPENSSLDIR)\fipsmodule.cnf"
        @$(PERL) "$(BLDDIR)\util\wrap.pl" "$(BLDDIR)\apps\openssl" fipsinstall \
                -module "$(MODULESDIR)\$(FIPSMODULENAME)" \
                -out "$(OPENSSLDIR)\fipsmodule.cnf" \
                -macopt "hexkey:$(FIPSKEY)"
 
-uninstall_fips: uninstall_sw
+uninstall_fips:
        @$(ECHO) "*** Uninstalling FIPS module configuration"
        $(RM) "$(OPENSSLDIR)\fipsmodule.cnf"
+       @$(ECHO) "*** Uninstalling FIPS module"
+       $(RM) "$(MODULESDIR)\$(FIPSMODULENAME)"
 
 install_ssldirs:
        @"$(PERL)" "$(SRCDIR)\util\mkdir-p.pl" "$(OPENSSLDIR)\certs"