1
0
mirror of https://github.com/Mbed-TLS/mbedtls.git synced 2025-06-25 12:41:56 +03:00

generate_test_cert_macros: embed input args

- Embed input arguments inside the script so as to simplify the
  calls in Makefiles/CMakeLists.
- add a new "--list-dependencies" command line option to print
  out the list of dependencies.
- Modify tests/Makefile accordinlgy.

Signed-off-by: Valerio Setti <valerio.setti@nordicsemi.no>
This commit is contained in:
Valerio Setti
2024-04-15 06:30:18 +02:00
parent 5241f395ec
commit c2293190fe
4 changed files with 49 additions and 216 deletions

View File

@ -334,96 +334,8 @@ if(ENABLE_TESTING OR ENABLE_PROGRAMS)
"${CMAKE_CURRENT_SOURCE_DIR}/tests/scripts/generate_test_cert_macros.py" "${CMAKE_CURRENT_SOURCE_DIR}/tests/scripts/generate_test_cert_macros.py"
"--output" "--output"
"${CMAKE_CURRENT_SOURCE_DIR}/tests/src/test_certs.h" "${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 DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/tests/scripts/generate_test_cert_macros.py ${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 file(GLOB MBEDTLS_TEST_FILES
${CMAKE_CURRENT_SOURCE_DIR}/tests/src/*.c ${CMAKE_CURRENT_SOURCE_DIR}/tests/src/*.c

View File

@ -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_ecp_tests.py || exit /b 1
python tests\scripts\generate_psa_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_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 ^ python tests\scripts\generate_test_cert_macros.py --output tests\src\test_certs.h || exit /b 1
--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

View File

@ -112,68 +112,9 @@ all: $(BINARIES)
mbedtls_test: $(MBEDTLS_TEST_OBJS) 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 \ src/test_certs.h: scripts/generate_test_cert_macros.py \
$(TEST_CERTS_H_INPUT_FILES) $($(PYTHON) scripts/generate_test_cert_macros.py --list-dependencies)
$(PYTHON) scripts/generate_test_cert_macros.py --output $@ \ $(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
src/test_keys.h: scripts/generate_test_keys.py src/test_keys.h: scripts/generate_test_keys.py
$(PYTHON) scripts/generate_test_keys.py --output $@ $(PYTHON) scripts/generate_test_keys.py --output $@

View File

@ -14,51 +14,61 @@ import sys
import argparse import argparse
import jinja2 import jinja2
class MacroDefineAction(argparse.Action): this_dir = os.path.dirname(os.path.abspath(__file__))
#pylint: disable=signature-differs, too-few-public-methods data_files_path = os.path.join(this_dir, '..', 'data_files')
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)
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(): def main():
parser = argparse.ArgumentParser() 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() 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 #pylint: disable=dangerous-default-value, unused-argument
def generate(values=[], output=None, **kwargs): def generate(values=[], output=None):
"""Generate C header file. """Generate C header file.
""" """
this_dir = os.path.dirname(os.path.abspath(__file__)) template_loader = jinja2.FileSystemLoader(data_files_path)
template_loader = jinja2.FileSystemLoader(
searchpath=os.path.join(this_dir, '..', 'data_files'))
template_env = jinja2.Environment( template_env = jinja2.Environment(
loader=template_loader, lstrip_blocks=True, trim_blocks=True) loader=template_loader, lstrip_blocks=True, trim_blocks=True)