2017-03-11 03:42:12 +08:00
|
|
|
Running external test suites with OpenSSL
|
|
|
|
=========================================
|
2016-10-15 18:09:20 +08:00
|
|
|
|
2020-06-10 23:49:25 +08:00
|
|
|
It is possible to integrate external test suites into OpenSSL's `make test`.
|
2017-03-09 08:50:55 +08:00
|
|
|
This capability is considered a developer option and does not work on all
|
2016-10-15 18:09:20 +08:00
|
|
|
platforms.
|
|
|
|
|
2017-03-09 08:50:55 +08:00
|
|
|
Python PYCA/Cryptography test suite
|
|
|
|
===================================
|
|
|
|
|
|
|
|
This python test suite runs cryptographic tests with a local OpenSSL build as
|
|
|
|
the implementation.
|
|
|
|
|
2020-06-10 23:49:25 +08:00
|
|
|
First checkout the `PYCA/Cryptography` module into `./pyca-cryptography` using:
|
2017-03-09 08:50:55 +08:00
|
|
|
|
2020-06-10 23:49:25 +08:00
|
|
|
$ git submodule update --init
|
2017-03-09 08:50:55 +08:00
|
|
|
|
|
|
|
Then configure/build OpenSSL compatible with the python module:
|
|
|
|
|
2020-06-10 23:49:25 +08:00
|
|
|
$ ./config shared enable-external-tests
|
|
|
|
$ make
|
2017-03-09 08:50:55 +08:00
|
|
|
|
|
|
|
The tests will run in a python virtual environment which requires virtualenv
|
|
|
|
to be installed.
|
|
|
|
|
2020-06-10 23:49:25 +08:00
|
|
|
$ make test VERBOSE=1 TESTS=test_external_pyca
|
2017-03-09 08:50:55 +08:00
|
|
|
|
|
|
|
Test failures and suppressions
|
2017-04-06 00:50:07 +08:00
|
|
|
------------------------------
|
2017-03-09 08:50:55 +08:00
|
|
|
|
|
|
|
Some tests target older (<=1.0.2) versions so will not run. Other tests target
|
|
|
|
other crypto implementations so are not relevant. Currently no tests fail.
|
|
|
|
|
2017-04-06 00:49:27 +08:00
|
|
|
krb5 test suite
|
|
|
|
===============
|
|
|
|
|
|
|
|
Much like the PYCA/Cryptography test suite, this builds and runs the krb5
|
|
|
|
tests against the local OpenSSL build.
|
|
|
|
|
|
|
|
You will need a git checkout of krb5 at the top level:
|
|
|
|
|
2020-06-10 23:49:25 +08:00
|
|
|
$ git clone https://github.com/krb5/krb5
|
2017-04-06 00:49:27 +08:00
|
|
|
|
|
|
|
krb5's master has to pass this same CI, but a known-good version is
|
|
|
|
krb5-1.15.1-final if you want to be sure.
|
|
|
|
|
2020-06-10 23:49:25 +08:00
|
|
|
$ cd krb5
|
|
|
|
$ git checkout krb5-1.15.1-final
|
|
|
|
$ cd ..
|
2017-04-06 00:49:27 +08:00
|
|
|
|
|
|
|
OpenSSL must be built with external tests enabled:
|
|
|
|
|
2020-06-10 23:49:25 +08:00
|
|
|
$ ./config enable-external-tests
|
|
|
|
$ make
|
2017-04-06 00:49:27 +08:00
|
|
|
|
|
|
|
krb5's tests will then be run as part of the rest of the suite, or can be
|
|
|
|
explicitly run (with more debugging):
|
|
|
|
|
2020-06-10 23:49:25 +08:00
|
|
|
$ VERBOSE=1 make TESTS=test_external_krb5 test
|
2017-04-06 00:49:27 +08:00
|
|
|
|
2017-08-11 22:15:22 +08:00
|
|
|
Test-failures suppressions
|
2017-11-12 08:03:10 +08:00
|
|
|
--------------------------
|
2017-04-06 00:49:27 +08:00
|
|
|
|
|
|
|
krb5 will automatically adapt its test suite to account for the configuration
|
|
|
|
of your system. Certain tests may require more installed packages to run. No
|
|
|
|
tests are expected to fail.
|
2017-08-11 08:48:40 +08:00
|
|
|
|
2020-05-11 22:08:48 +08:00
|
|
|
GOST engine test suite
|
|
|
|
===============
|
|
|
|
|
|
|
|
Much like the PYCA/Cryptography test suite, this builds and runs the GOST engine
|
|
|
|
tests against the local OpenSSL build.
|
|
|
|
|
|
|
|
You will need a git checkout of gost-engine at the top level:
|
|
|
|
|
2020-06-10 23:49:25 +08:00
|
|
|
$ git submodule update --init
|
2020-05-11 22:08:48 +08:00
|
|
|
|
|
|
|
Then configure/build OpenSSL enabling external tests:
|
|
|
|
|
2020-06-10 23:49:25 +08:00
|
|
|
$ ./config shared enable-external-tests
|
|
|
|
$ make
|
2020-05-11 22:08:48 +08:00
|
|
|
|
|
|
|
GOST engine requires CMake for the build process.
|
|
|
|
|
|
|
|
GOST engine tests will then be run as part of the rest of the suite, or can be
|
|
|
|
explicitly run (with more debugging):
|
|
|
|
|
2020-06-10 23:49:25 +08:00
|
|
|
$ make test VERBOSE=1 TESTS=test_external_gost_engine
|
2020-05-11 22:08:48 +08:00
|
|
|
|
2022-03-08 14:46:05 +08:00
|
|
|
OQSprovider test suite
|
|
|
|
======================
|
|
|
|
|
|
|
|
Much like the PYCA/Cryptography test suite, this builds and runs the OQS
|
|
|
|
(OpenQuantumSafe -- www.openquantumsafe.org) provider tests against the
|
|
|
|
local OpenSSL build.
|
|
|
|
|
|
|
|
You will need a git checkout of oqsprovider at the top level:
|
|
|
|
|
|
|
|
$ git submodule update --init
|
|
|
|
|
|
|
|
Then configure/build OpenSSL enabling external tests:
|
|
|
|
|
|
|
|
$ ./config shared enable-external-tests
|
|
|
|
$ make
|
|
|
|
|
|
|
|
oqsprovider requires CMake for the build process.
|
|
|
|
|
|
|
|
OQSprovider tests will then be run as part of the rest of the suite, or can be
|
|
|
|
explicitly run (with more debugging):
|
|
|
|
|
|
|
|
$ make test VERBOSE=1 TESTS=test_external_oqsprovider
|
|
|
|
|
|
|
|
The environment variable `OQS_SKIP_TESTS` can be set to select tests and
|
|
|
|
algorithms to be skipped. If not set, the "rainbow" algorithm set as well as
|
|
|
|
the (OQS-)OpenSSL1.1.1 compatibility tests will not be executed. So, for
|
|
|
|
example to exclude the "mceliece" and "kyber" algorithms execute
|
|
|
|
|
|
|
|
OQS_SKIP_TESTS=mceliece,kyber make test TESTS=test_external_oqsprovider
|
|
|
|
|
|
|
|
The names of all supported quantum-safe algorithms are available at
|
|
|
|
<https://github.com/open-quantum-safe/openssl#supported-algorithms>
|
|
|
|
|
2017-08-11 08:48:40 +08:00
|
|
|
Updating test suites
|
|
|
|
====================
|
|
|
|
|
|
|
|
To update the commit for any of the above test suites:
|
|
|
|
|
|
|
|
- Make sure the submodules are cloned locally:
|
|
|
|
|
2020-06-10 23:49:25 +08:00
|
|
|
$ git submodule update --init --recursive
|
2017-08-11 08:48:40 +08:00
|
|
|
|
|
|
|
- Enter subdirectory and pull from the repository (use a specific branch/tag if required):
|
|
|
|
|
2020-06-10 23:49:25 +08:00
|
|
|
$ cd `<submodule-dir>`
|
|
|
|
$ git pull origin master
|
2017-08-11 08:48:40 +08:00
|
|
|
|
|
|
|
- Go to root directory, there should be a new git status:
|
|
|
|
|
2020-06-10 23:49:25 +08:00
|
|
|
$ cd ../
|
|
|
|
$ git status
|
|
|
|
...
|
|
|
|
# modified: `<submodule-dir>` (new commits)
|
|
|
|
...
|
2017-08-11 08:48:40 +08:00
|
|
|
|
|
|
|
- Add/commit/push the update
|
|
|
|
|
2020-06-10 23:49:25 +08:00
|
|
|
$ git add `<submodule-dir>`
|
|
|
|
$ git commit -m `"Updated <submodule> to latest commit"`
|
|
|
|
$ git push
|