Skip to content

Commit

Permalink
GOST external tests
Browse files Browse the repository at this point in the history
[extended tests]

Reviewed-by: Nicola Tuveri <nic.tuv@gmail.com>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from #11792)
  • Loading branch information
beldmit committed May 23, 2020
1 parent 712e8de commit aa2cb51
Show file tree
Hide file tree
Showing 6 changed files with 102 additions and 1 deletion.
5 changes: 5 additions & 0 deletions .gitmodules
Expand Up @@ -9,3 +9,8 @@
[submodule "krb5"]
path = krb5
url = https://github.com/krb5/krb5

[submodule "gost-engine"]
path = gost-engine
url = https://github.com/gost-engine/engine
update = rebase
4 changes: 3 additions & 1 deletion .travis.yml
Expand Up @@ -93,9 +93,11 @@ jobs:
apt:
packages:
- golang-1.10
- cmake
- libtest2-suite-perl
compiler: gcc
# External test pyca-cryptography temporarily disabled due to long term travis failures
env: EXTENDED_TEST="yes" CONFIG_OPTS="--debug enable-ssl3 enable-ssl3-method enable-weak-ssl-ciphers enable-external-tests enable-buildtest-c++" BORINGSSL_TESTS="yes" CXX="g++" TESTS="test_external_boringssl test_external_krb5"
env: EXTENDED_TEST="yes" CONFIG_OPTS="--debug enable-ssl3 enable-ssl3-method enable-weak-ssl-ciphers enable-external-tests enable-buildtest-c++" BORINGSSL_TESTS="yes" CXX="g++" TESTS="test_external_boringssl test_external_krb5 test_external_gost_engine"
- os: linux
compiler: clang
env: EXTENDED_TEST="yes" CONFIG_OPTS="enable-msan disable-afalgeng -Wno-unused-command-line-argument"
Expand Down
1 change: 1 addition & 0 deletions gost-engine
Submodule gost-engine added at 7f055b
22 changes: 22 additions & 0 deletions test/README.external
Expand Up @@ -134,6 +134,28 @@ of your system. Certain tests may require more installed packages to run. No
tests are expected to fail.


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:

$ git submodule update --init

Then configure/build OpenSSL enabling external tests:

$ ./config shared enable-external-tests
$ make

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):

$ make test VERBOSE=1 TESTS=test_external_gost_engine

Updating test suites
====================

Expand Down
26 changes: 26 additions & 0 deletions test/recipes/95-test_external_gost_engine.t
@@ -0,0 +1,26 @@
#! /usr/bin/env perl
# Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
# in the file LICENSE in the source distribution or at
# https://www.openssl.org/source/license.html


use OpenSSL::Test;
use OpenSSL::Test::Utils;
use OpenSSL::Test qw/:DEFAULT bldtop_file data_file srctop_file cmdstr/;

setup("test_external");

plan skip_all => "No external tests in this configuration"
if disabled("external-tests");
plan skip_all => "GOST engine tests not available on Windows or VMS"
if $^O =~ /^(VMS|MSWin32)$/;
plan skip_all => "GOST engine tests only available in a shared build"
if disabled("shared");

plan tests => 1;

ok(run(cmd(["sh", data_file("gost_engine.sh")])),
"running GOST engine tests");
45 changes: 45 additions & 0 deletions test/recipes/95-test_external_gost_engine_data/gost_engine.sh
@@ -0,0 +1,45 @@
#!/bin/sh
#
# Copyright 2020 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
# in the file LICENSE in the source distribution or at
# https://www.openssl.org/source/license.html

#
# OpenSSL external testing using the GOST engine
#
set -e

O_EXE=`pwd`/$BLDTOP/apps
O_BINC=`pwd`/$BLDTOP/include
O_SINC=`pwd`/$SRCTOP/include
O_LIB=`pwd`/$BLDTOP

export PATH=$O_EXE:$PATH
export LD_LIBRARY_PATH=$O_LIB:$LD_LIBRARY_PATH
export OPENSSL_ROOT_DIR=$O_LIB

# Check/Set openssl version
OPENSSL_VERSION=`openssl version | cut -f 2 -d ' '`

echo "------------------------------------------------------------------"
echo "Testing OpenSSL using GOST engine:"
echo " CWD: $PWD"
echo " SRCTOP: $SRCTOP"
echo " BLDTOP: $BLDTOP"
echo " OPENSSL_ROOT_DIR: $OPENSSL_ROOT_DIR"
echo " OpenSSL version: $OPENSSL_VERSION"
echo "------------------------------------------------------------------"

cd $SRCTOP/gost-engine
rm -rf build
mkdir -p build
cd build
cmake ..
make
CTEST_OUTPUT_ON_FAILURE=1 HARNESS_OSSL_PREFIX='' OPENSSL_ENGINES=$OPENSSL_ROOT_DIR/gost-engine/build/bin make test

exit 0

0 comments on commit aa2cb51

Please sign in to comment.