Skip to content

Commit

Permalink
bpo-40479: Test with latest OpenSSL versions (GH-20108)
Browse files Browse the repository at this point in the history
* 1.0.2u (EOL)
* 1.1.0l (EOL)
* 1.1.1g
* 3.0.0-alpha2 (disabled for now)

Build the FIPS provider and create a FIPS configuration file for OpenSSL
3.0.0.

Signed-off-by: Christian Heimes <[email protected]>

Automerge-Triggered-By: @tiran
(cherry picked from commit 62d618c)

Co-authored-by: Christian Heimes <[email protected]>
  • Loading branch information
miss-islington and tiran authored May 15, 2020
1 parent 4e6545b commit 5a06cf0
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 3 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Update multissltest helper to test with latest OpenSSL 1.0.2, 1.1.0, 1.1.1,
and 3.0.0-alpha.
61 changes: 58 additions & 3 deletions Tools/ssl/multissltests.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,13 @@
log = logging.getLogger("multissl")

OPENSSL_OLD_VERSIONS = [
"1.0.2",
]

OPENSSL_RECENT_VERSIONS = [
"1.0.2t",
"1.0.2u",
"1.1.0l",
"1.1.1f",
"1.1.1g",
# "3.0.0-alpha2"
]

LIBRESSL_OLD_VERSIONS = [
Expand Down Expand Up @@ -143,6 +143,23 @@
help="Keep original sources for debugging."
)

OPENSSL_FIPS_CNF = """\
openssl_conf = openssl_init
.include {self.install_dir}/ssl/fipsinstall.cnf
# .include {self.install_dir}/ssl/openssl.cnf
[openssl_init]
providers = provider_sect
[provider_sect]
fips = fips_sect
default = default_sect
[default_sect]
activate = 1
"""


class AbstractBuilder(object):
library = None
Expand Down Expand Up @@ -291,9 +308,13 @@ def _make_install(self):
["make", "-j1", self.install_target],
cwd=self.build_dir
)
self._post_install()
if not self.args.keep_sources:
shutil.rmtree(self.build_dir)

def _post_install(self):
pass

def install(self):
log.info(self.openssl_cli)
if not self.has_openssl or self.args.force:
Expand Down Expand Up @@ -365,6 +386,40 @@ class BuildOpenSSL(AbstractBuilder):
# only install software, skip docs
install_target = 'install_sw'

def _post_install(self):
if self.version.startswith("3.0"):
self._post_install_300()

def _post_install_300(self):
# create ssl/ subdir with example configs
self._subprocess_call(
["make", "-j1", "install_ssldirs"],
cwd=self.build_dir
)
# Install FIPS module
# https://wiki.openssl.org/index.php/OpenSSL_3.0#Completing_the_installation_of_the_FIPS_Module
fipsinstall_cnf = os.path.join(
self.install_dir, "ssl", "fipsinstall.cnf"
)
openssl_fips_cnf = os.path.join(
self.install_dir, "ssl", "openssl-fips.cnf"
)
fips_mod = os.path.join(self.lib_dir, "ossl-modules/fips.so")
self._subprocess_call(
[
self.openssl_cli, "fipsinstall",
"-out", fipsinstall_cnf,
"-module", fips_mod,
"-provider_name", "fips",
"-mac_name", "HMAC",
"-macopt", "digest:SHA256",
"-macopt", "hexkey:00",
"-section_name", "fips_sect"
]
)
with open(openssl_fips_cnf, "w") as f:
f.write(OPENSSL_FIPS_CNF.format(self=self))


class BuildLibreSSL(AbstractBuilder):
library = "LibreSSL"
Expand Down

0 comments on commit 5a06cf0

Please sign in to comment.