diff --git a/CMakeLists.txt b/CMakeLists.txt index 565e92e7a7..cf004f4f38 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -334,96 +334,8 @@ if(ENABLE_TESTING OR ENABLE_PROGRAMS) "${CMAKE_CURRENT_SOURCE_DIR}/tests/scripts/generate_test_cert_macros.py" "--output" "${CMAKE_CURRENT_SOURCE_DIR}/tests/src/test_certs.h" - "--string" - "TEST_CA_CRT_EC_PEM=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/test-ca2.crt" - "--binary" - "TEST_CA_CRT_EC_DER=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/test-ca2.crt.der" - "--string" - "TEST_CA_KEY_EC_PEM=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/test-ca2.key.enc" - "--password" - "TEST_CA_PWD_EC_PEM=PolarSSLTest" - "--binary" - "TEST_CA_KEY_EC_DER=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/test-ca2.key.der" - "--string" - "TEST_CA_CRT_RSA_SHA256_PEM=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/test-ca-sha256.crt" - "--binary" - "TEST_CA_CRT_RSA_SHA256_DER=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/test-ca-sha256.crt.der" - "--string" - "TEST_CA_CRT_RSA_SHA1_PEM=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/test-ca-sha1.crt" - "--binary" - "TEST_CA_CRT_RSA_SHA1_DER=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/test-ca-sha1.crt.der" - "--string" - "TEST_CA_KEY_RSA_PEM=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/test-ca.key" - "--password" - "TEST_CA_PWD_RSA_PEM=PolarSSLTest" - "--binary" - "TEST_CA_KEY_RSA_DER=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/test-ca.key.der" - "--string" - "TEST_SRV_CRT_EC_PEM=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/server5.crt" - "--binary" - "TEST_SRV_CRT_EC_DER=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/server5.crt.der" - "--string" - "TEST_SRV_KEY_EC_PEM=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/server5.key" - "--binary" - "TEST_SRV_KEY_EC_DER=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/server5.key.der" - "--string" - "TEST_SRV_CRT_RSA_SHA256_PEM=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/server2-sha256.crt" - "--binary" - "TEST_SRV_CRT_RSA_SHA256_DER=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/server2-sha256.crt.der" - "--string" - "TEST_SRV_CRT_RSA_SHA1_PEM=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/server2.crt" - "--binary" - "TEST_SRV_CRT_RSA_SHA1_DER=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/server2.crt.der" - "--string" - "TEST_SRV_KEY_RSA_PEM=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/server2.key" - "--binary" - "TEST_SRV_KEY_RSA_DER=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/server2.key.der" - "--string" - "TEST_CLI_CRT_EC_PEM=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/cli2.crt" - "--binary" - "TEST_CLI_CRT_EC_DER=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/cli2.crt.der" - "--string" - "TEST_CLI_KEY_EC_PEM=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/cli2.key" - "--binary" - "TEST_CLI_KEY_EC_DER=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/cli2.key.der" - "--string" - "TEST_CLI_CRT_RSA_PEM=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/cli-rsa-sha256.crt" - "--binary" - "TEST_CLI_CRT_RSA_DER=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/cli-rsa-sha256.crt.der" - "--string" - "TEST_CLI_KEY_RSA_PEM=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/cli-rsa.key" - "--binary" - "TEST_CLI_KEY_RSA_DER=${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/cli-rsa.key.der" DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tests/scripts/generate_test_cert_macros.py - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/test-ca2.crt - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/test-ca2.crt.der - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/test-ca2.key.enc - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/test-ca2.key.der - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/test-ca-sha256.crt - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/test-ca-sha256.crt.der - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/test-ca-sha1.crt - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/test-ca-sha1.crt.der - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/test-ca.key - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/test-ca.key.der - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/server5.crt - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/server5.crt.der - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/server5.key - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/server5.key.der - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/server2-sha256.crt - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/server2-sha256.crt.der - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/server2.crt - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/server2.crt.der - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/server2.key - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/server2.key.der - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/cli2.crt - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/cli2.crt.der - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/cli2.key - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/cli2.key.der - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/cli-rsa-sha256.crt - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/cli-rsa-sha256.crt.der - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/cli-rsa.key - ${CMAKE_CURRENT_SOURCE_DIR}/tests/data_files/cli-rsa.key.der ) file(GLOB MBEDTLS_TEST_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tests/src/*.c diff --git a/scripts/make_generated_files.bat b/scripts/make_generated_files.bat index 6be0de7ee5..11bcb1ae0b 100644 --- a/scripts/make_generated_files.bat +++ b/scripts/make_generated_files.bat @@ -14,34 +14,4 @@ python tests\scripts\generate_bignum_tests.py || exit /b 1 python tests\scripts\generate_ecp_tests.py || exit /b 1 python tests\scripts\generate_psa_tests.py || exit /b 1 python tests\scripts\generate_test_keys.py --output tests\src\test_keys.h || exit /b 1 -python tests\scripts\generate_test_cert_macros.py --output tests\src\test_certs.h ^ - --string TEST_CA_CRT_EC_PEM=tests\data_files\test-ca2.crt ^ - --binary TEST_CA_CRT_EC_DER=tests\data_files\test-ca2.crt.der ^ - --string TEST_CA_KEY_EC_PEM=tests\data_files\test-ca2.key.enc ^ - --password TEST_CA_PWD_EC_PEM=PolarSSLTest ^ - --binary TEST_CA_KEY_EC_DER=tests\data_files\test-ca2.key.der ^ - --string TEST_CA_CRT_RSA_SHA256_PEM=tests\data_files\test-ca-sha256.crt ^ - --binary TEST_CA_CRT_RSA_SHA256_DER=tests\data_files\test-ca-sha256.crt.der ^ - --string TEST_CA_CRT_RSA_SHA1_PEM=tests\data_files\test-ca-sha1.crt ^ - --binary TEST_CA_CRT_RSA_SHA1_DER=tests\data_files\test-ca-sha1.crt.der ^ - --string TEST_CA_KEY_RSA_PEM=tests\data_files\test-ca.key ^ - --password TEST_CA_PWD_RSA_PEM=PolarSSLTest ^ - --binary TEST_CA_KEY_RSA_DER=tests\data_files\test-ca.key.der ^ - --string TEST_SRV_CRT_EC_PEM=tests\data_files\server5.crt ^ - --binary TEST_SRV_CRT_EC_DER=tests\data_files\server5.crt.der ^ - --string TEST_SRV_KEY_EC_PEM=tests\data_files\server5.key ^ - --binary TEST_SRV_KEY_EC_DER=tests\data_files\server5.key.der ^ - --string TEST_SRV_CRT_RSA_SHA256_PEM=tests\data_files\server2-sha256.crt ^ - --binary TEST_SRV_CRT_RSA_SHA256_DER=tests\data_files\server2-sha256.crt.der ^ - --string TEST_SRV_CRT_RSA_SHA1_PEM=tests\data_files\server2.crt ^ - --binary TEST_SRV_CRT_RSA_SHA1_DER=tests\data_files\server2.crt.der ^ - --string TEST_SRV_KEY_RSA_PEM=tests\data_files\server2.key ^ - --binary TEST_SRV_KEY_RSA_DER=tests\data_files\server2.key.der ^ - --string TEST_CLI_CRT_EC_PEM=tests\data_files\cli2.crt ^ - --binary TEST_CLI_CRT_EC_DER=tests\data_files\cli2.crt.der ^ - --string TEST_CLI_KEY_EC_PEM=tests\data_files\cli2.key ^ - --binary TEST_CLI_KEY_EC_DER=tests\data_files\cli2.key.der ^ - --string TEST_CLI_CRT_RSA_PEM=tests\data_files\cli-rsa-sha256.crt ^ - --binary TEST_CLI_CRT_RSA_DER=tests\data_files\cli-rsa-sha256.crt.der ^ - --string TEST_CLI_KEY_RSA_PEM=tests\data_files\cli-rsa.key ^ - --binary TEST_CLI_KEY_RSA_DER=tests\data_files\cli-rsa.key.der || exit /b 1 +python tests\scripts\generate_test_cert_macros.py --output tests\src\test_certs.h || exit /b 1 diff --git a/tests/Makefile b/tests/Makefile index ad7affb9e4..7fb4f357cc 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -112,68 +112,9 @@ all: $(BINARIES) mbedtls_test: $(MBEDTLS_TEST_OBJS) -TEST_CERTS_H_INPUT_FILES=\ - data_files/test-ca2.crt \ - data_files/test-ca2.crt.der \ - data_files/test-ca2.key.enc \ - data_files/test-ca2.key.der \ - data_files/test-ca-sha256.crt \ - data_files/test-ca-sha256.crt.der \ - data_files/test-ca-sha1.crt \ - data_files/test-ca-sha1.crt.der \ - data_files/test-ca.key \ - data_files/test-ca.key.der \ - data_files/server5.crt \ - data_files/server5.crt.der \ - data_files/server5.key \ - data_files/server5.key.der \ - data_files/server2-sha256.crt \ - data_files/server2-sha256.crt.der \ - data_files/server2.crt \ - data_files/server2.crt.der \ - data_files/server2.key \ - data_files/server2.key.der \ - data_files/cli2.crt \ - data_files/cli2.crt.der \ - data_files/cli2.key \ - data_files/cli2.key.der \ - data_files/cli-rsa-sha256.crt \ - data_files/cli-rsa-sha256.crt.der \ - data_files/cli-rsa.key \ - data_files/cli-rsa.key.der src/test_certs.h: scripts/generate_test_cert_macros.py \ - $(TEST_CERTS_H_INPUT_FILES) - $(PYTHON) scripts/generate_test_cert_macros.py --output $@ \ - --string TEST_CA_CRT_EC_PEM=data_files/test-ca2.crt \ - --binary TEST_CA_CRT_EC_DER=data_files/test-ca2.crt.der \ - --string TEST_CA_KEY_EC_PEM=data_files/test-ca2.key.enc \ - --password TEST_CA_PWD_EC_PEM=PolarSSLTest \ - --binary TEST_CA_KEY_EC_DER=data_files/test-ca2.key.der \ - --string TEST_CA_CRT_RSA_SHA256_PEM=data_files/test-ca-sha256.crt \ - --binary TEST_CA_CRT_RSA_SHA256_DER=data_files/test-ca-sha256.crt.der \ - --string TEST_CA_CRT_RSA_SHA1_PEM=data_files/test-ca-sha1.crt \ - --binary TEST_CA_CRT_RSA_SHA1_DER=data_files/test-ca-sha1.crt.der \ - --string TEST_CA_KEY_RSA_PEM=data_files/test-ca.key \ - --password TEST_CA_PWD_RSA_PEM=PolarSSLTest \ - --binary TEST_CA_KEY_RSA_DER=data_files/test-ca.key.der \ - --string TEST_SRV_CRT_EC_PEM=data_files/server5.crt \ - --binary TEST_SRV_CRT_EC_DER=data_files/server5.crt.der \ - --string TEST_SRV_KEY_EC_PEM=data_files/server5.key \ - --binary TEST_SRV_KEY_EC_DER=data_files/server5.key.der \ - --string TEST_SRV_CRT_RSA_SHA256_PEM=data_files/server2-sha256.crt \ - --binary TEST_SRV_CRT_RSA_SHA256_DER=data_files/server2-sha256.crt.der \ - --string TEST_SRV_CRT_RSA_SHA1_PEM=data_files/server2.crt \ - --binary TEST_SRV_CRT_RSA_SHA1_DER=data_files/server2.crt.der \ - --string TEST_SRV_KEY_RSA_PEM=data_files/server2.key \ - --binary TEST_SRV_KEY_RSA_DER=data_files/server2.key.der \ - --string TEST_CLI_CRT_EC_PEM=data_files/cli2.crt \ - --binary TEST_CLI_CRT_EC_DER=data_files/cli2.crt.der \ - --string TEST_CLI_KEY_EC_PEM=data_files/cli2.key \ - --binary TEST_CLI_KEY_EC_DER=data_files/cli2.key.der \ - --string TEST_CLI_CRT_RSA_PEM=data_files/cli-rsa-sha256.crt \ - --binary TEST_CLI_CRT_RSA_DER=data_files/cli-rsa-sha256.crt.der \ - --string TEST_CLI_KEY_RSA_PEM=data_files/cli-rsa.key \ - --binary TEST_CLI_KEY_RSA_DER=data_files/cli-rsa.key.der + $($(PYTHON) scripts/generate_test_cert_macros.py --list-dependencies) + $(PYTHON) scripts/generate_test_cert_macros.py --output $@ src/test_keys.h: scripts/generate_test_keys.py $(PYTHON) scripts/generate_test_keys.py --output $@ diff --git a/tests/scripts/generate_test_cert_macros.py b/tests/scripts/generate_test_cert_macros.py index a3bca7e6f6..e612f626b9 100755 --- a/tests/scripts/generate_test_cert_macros.py +++ b/tests/scripts/generate_test_cert_macros.py @@ -14,51 +14,61 @@ import sys import argparse import jinja2 -class MacroDefineAction(argparse.Action): - #pylint: disable=signature-differs, too-few-public-methods - def __call__(self, parser, namespace, values, option_string): - if not hasattr(namespace, 'values'): - setattr(namespace, 'values', []) - macro_name, filename = values - if self.dest in ('string', 'binary') and not os.path.exists(filename): - raise argparse.ArgumentError( - None, '`{}`: Input file does not exist.'.format(filename)) - namespace.values.append((self.dest, macro_name, filename)) - - -def macro_define_type(value): - ret = value.split('=', 1) - if len(ret) != 2: - raise argparse.ArgumentTypeError( - '`{}` is not MACRO=value format'.format(value)) - return ret - - -def build_argparser(parser): - parser.description = __doc__ - parser.add_argument('--string', type=macro_define_type, action=MacroDefineAction, - metavar='MACRO_NAME=path/to/file', help='PEM to C string. ') - parser.add_argument('--binary', type=macro_define_type, action=MacroDefineAction, - metavar='MACRO_NAME=path/to/file', - help='DER to C arrary.') - parser.add_argument('--password', type=macro_define_type, action=MacroDefineAction, - metavar='MACRO_NAME=password', help='Password to C string.') - parser.add_argument('--output', type=str, required=True) +this_dir = os.path.dirname(os.path.abspath(__file__)) +data_files_path = os.path.join(this_dir, '..', 'data_files') +INPUT_ARGS = [ + ("string", "TEST_CA_CRT_EC_PEM", data_files_path + "/test-ca2.crt"), + ("binary", "TEST_CA_CRT_EC_DER", data_files_path + "/test-ca2.crt.der"), + ("string", "TEST_CA_KEY_EC_PEM", data_files_path + "/test-ca2.key.enc"), + ("password", "TEST_CA_PWD_EC_PEM", "PolarSSLTest"), + ("binary", "TEST_CA_KEY_EC_DER", data_files_path + "/test-ca2.key.der"), + ("string", "TEST_CA_CRT_RSA_SHA256_PEM", data_files_path + "/test-ca-sha256.crt"), + ("binary", "TEST_CA_CRT_RSA_SHA256_DER", data_files_path + "/test-ca-sha256.crt.der"), + ("string", "TEST_CA_CRT_RSA_SHA1_PEM", data_files_path + "/test-ca-sha1.crt"), + ("binary", "TEST_CA_CRT_RSA_SHA1_DER", data_files_path + "/test-ca-sha1.crt.der"), + ("string", "TEST_CA_KEY_RSA_PEM", data_files_path + "/test-ca.key"), + ("password", "TEST_CA_PWD_RSA_PEM", "PolarSSLTest"), + ("binary", "TEST_CA_KEY_RSA_DER", data_files_path + "/test-ca.key.der"), + ("string", "TEST_SRV_CRT_EC_PEM", data_files_path + "/server5.crt"), + ("binary", "TEST_SRV_CRT_EC_DER", data_files_path + "/server5.crt.der"), + ("string", "TEST_SRV_KEY_EC_PEM", data_files_path + "/server5.key"), + ("binary", "TEST_SRV_KEY_EC_DER", data_files_path + "/server5.key.der"), + ("string", "TEST_SRV_CRT_RSA_SHA256_PEM", data_files_path + "/server2-sha256.crt"), + ("binary", "TEST_SRV_CRT_RSA_SHA256_DER", data_files_path + "/server2-sha256.crt.der"), + ("string", "TEST_SRV_CRT_RSA_SHA1_PEM", data_files_path + "/server2.crt"), + ("binary", "TEST_SRV_CRT_RSA_SHA1_DER", data_files_path + "/server2.crt.der"), + ("string", "TEST_SRV_KEY_RSA_PEM", data_files_path + "/server2.key"), + ("binary", "TEST_SRV_KEY_RSA_DER", data_files_path + "/server2.key.der"), + ("string", "TEST_CLI_CRT_EC_PEM", data_files_path + "/cli2.crt"), + ("binary", "TEST_CLI_CRT_EC_DER", data_files_path + "/cli2.crt.der"), + ("string", "TEST_CLI_KEY_EC_PEM", data_files_path + "/cli2.key"), + ("binary", "TEST_CLI_KEY_EC_DER", data_files_path + "/cli2.key.der"), + ("string", "TEST_CLI_CRT_RSA_PEM", data_files_path + "/cli-rsa-sha256.crt"), + ("binary", "TEST_CLI_CRT_RSA_DER", data_files_path + "/cli-rsa-sha256.crt.der"), + ("string", "TEST_CLI_KEY_RSA_PEM", data_files_path + "/cli-rsa.key"), + ("binary", "TEST_CLI_KEY_RSA_DER", data_files_path + "/cli-rsa.key.der"), +] def main(): parser = argparse.ArgumentParser() - build_argparser(parser) + default_output_path = os.path.join(this_dir, '..', 'test_certs.h') + parser.add_argument('--output', type=str, default=default_output_path) + parser.add_argument('--list-dependencies', action='store_true') args = parser.parse_args() - return generate(**vars(args)) + + if (args.list_dependencies is True): + files_list = [arg[2] for arg in INPUT_ARGS] + print(" ".join(files_list)) + return + + return generate(INPUT_ARGS, output=args.output) #pylint: disable=dangerous-default-value, unused-argument -def generate(values=[], output=None, **kwargs): +def generate(values=[], output=None): """Generate C header file. """ - this_dir = os.path.dirname(os.path.abspath(__file__)) - template_loader = jinja2.FileSystemLoader( - searchpath=os.path.join(this_dir, '..', 'data_files')) + template_loader = jinja2.FileSystemLoader(data_files_path) template_env = jinja2.Environment( loader=template_loader, lstrip_blocks=True, trim_blocks=True)