Merge pull request #5340 from gilles-peskine-arm/ssl_debug_helpers_generated.h-commit-header

Commit ssl_debug_helpers.h
This commit is contained in:
Gilles Peskine 2021-12-16 11:57:07 +01:00 committed by GitHub
commit cb4dc37a2a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 75 additions and 48 deletions

1
library/.gitignore vendored
View file

@ -7,4 +7,3 @@ libmbed*
/error.c /error.c
/version_features.c /version_features.c
/ssl_debug_helpers_generated.c /ssl_debug_helpers_generated.c
/ssl_debug_helpers_generated.h

View file

@ -147,7 +147,6 @@ if(GEN_FILES)
add_custom_command( add_custom_command(
OUTPUT OUTPUT
${CMAKE_CURRENT_BINARY_DIR}/ssl_debug_helpers_generated.h
${CMAKE_CURRENT_BINARY_DIR}/ssl_debug_helpers_generated.c ${CMAKE_CURRENT_BINARY_DIR}/ssl_debug_helpers_generated.c
COMMAND COMMAND
${MBEDTLS_PYTHON_EXECUTABLE} ${MBEDTLS_PYTHON_EXECUTABLE}
@ -162,7 +161,6 @@ else()
link_to_source(error.c) link_to_source(error.c)
link_to_source(version_features.c) link_to_source(version_features.c)
link_to_source(ssl_debug_helpers_generated.c) link_to_source(ssl_debug_helpers_generated.c)
link_to_source(ssl_debug_helpers_generated.h)
endif() endif()
if(CMAKE_COMPILER_IS_GNUCC) if(CMAKE_COMPILER_IS_GNUCC)

View file

@ -290,7 +290,7 @@ libmbedcrypto.dll: $(OBJS_CRYPTO)
.PHONY: generated_files .PHONY: generated_files
GENERATED_FILES = \ GENERATED_FILES = \
error.c version_features.c \ error.c version_features.c \
ssl_debug_helpers_generated.c ssl_debug_helpers_generated.h ssl_debug_helpers_generated.c
generated_files: $(GENERATED_FILES) generated_files: $(GENERATED_FILES)
error.c: ../scripts/generate_errors.pl error.c: ../scripts/generate_errors.pl
@ -300,10 +300,9 @@ error.c:
echo " Gen $@" echo " Gen $@"
$(PERL) ../scripts/generate_errors.pl $(PERL) ../scripts/generate_errors.pl
ssl_debug_helpers_generated.c: | ssl_debug_helpers_generated.h ssl_debug_helpers_generated.c: ../scripts/generate_ssl_debug_helpers.py
ssl_debug_helpers_generated.h: ../scripts/generate_ssl_debug_helpers.py ssl_debug_helpers_generated.c: $(filter-out %config%,$(wildcard ../include/mbedtls/*.h))
ssl_debug_helpers_generated.h: $(filter-out %config%,$(wildcard ../include/mbedtls/*.h)) ssl_debug_helpers_generated.c:
ssl_debug_helpers_generated.h:
echo " Gen $@" echo " Gen $@"
$(PYTHON) ../scripts/generate_ssl_debug_helpers.py --mbedtls-root .. . $(PYTHON) ../scripts/generate_ssl_debug_helpers.py --mbedtls-root .. .

View file

@ -0,0 +1,44 @@
/**
* \file ssl_debug_helpers.h
*
* \brief Automatically generated helper functions for debugging
*/
/*
* Copyright The Mbed TLS Contributors
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef MBEDTLS_SSL_DEBUG_HELPERS_H
#define MBEDTLS_SSL_DEBUG_HELPERS_H
#include "common.h"
#if defined(MBEDTLS_DEBUG_C)
#include "mbedtls/ssl.h"
#include "ssl_misc.h"
const char *mbedtls_ssl_states_str( mbedtls_ssl_states in );
const char *mbedtls_tls_prf_types_str( mbedtls_tls_prf_types in );
const char *mbedtls_ssl_key_export_type_str( mbedtls_ssl_key_export_type in );
#endif /* MBEDTLS_DEBUG_C */
#endif /* SSL_DEBUG_HELPERS_H */

View file

@ -34,7 +34,7 @@
#include "ssl_misc.h" #include "ssl_misc.h"
#include "ecdh_misc.h" #include "ecdh_misc.h"
#include "ssl_tls13_keys.h" #include "ssl_tls13_keys.h"
#include "ssl_debug_helpers_generated.h" #include "ssl_debug_helpers.h"
/* Write extensions */ /* Write extensions */

View file

@ -26,7 +26,7 @@
#include "mbedtls/debug.h" #include "mbedtls/debug.h"
#include "ssl_misc.h" #include "ssl_misc.h"
#include "ssl_debug_helpers_generated.h" #include "ssl_debug_helpers.h"
int mbedtls_ssl_tls13_handshake_server_step( mbedtls_ssl_context *ssl ) int mbedtls_ssl_tls13_handshake_server_step( mbedtls_ssl_context *ssl )
{ {

View file

@ -232,46 +232,43 @@ class EnumDefinition:
body = body.format(translation_table='\n'.join(translation_table), body = body.format(translation_table='\n'.join(translation_table),
name=self._name, name=self._name,
prototype=self._prototype) prototype=self._prototype)
prototype = 'const char *{name}_str( {prototype} in );\n' return body
prototype = prototype.format(name=self._name,
prototype=self._prototype)
return body, prototype
OUTPUT_C_TEMPLATE = '''\ OUTPUT_C_TEMPLATE = '''\
/* Automatically generated by generate_ssl_debug_helpers.py. DO NOT EDIT. */ /* Automatically generated by generate_ssl_debug_helpers.py. DO NOT EDIT. */
#include "common.h" /**
* \file ssl_debug_helpers_generated.c
#if defined(MBEDTLS_DEBUG_C) *
* \brief Automatically generated helper functions for debugging
#include "ssl_debug_helpers_generated.h" */
/*
{functions} * Copyright The Mbed TLS Contributors
* SPDX-License-Identifier: Apache-2.0
#endif /* MBEDTLS_DEBUG_C */ *
/* End of automatically generated file. */ * Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
''' * You may obtain a copy of the License at
*
OUTPUT_H_TEMPLATE = '''\ * http://www.apache.org/licenses/LICENSE-2.0
/* Automatically generated by generate_ssl_debug_helpers.py. DO NOT EDIT. */ *
#ifndef MBEDTLS_SSL_DEBUG_HELPERS_H * Unless required by applicable law or agreed to in writing, software
#define MBEDTLS_SSL_DEBUG_HELPERS_H * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "common.h" #include "common.h"
#if defined(MBEDTLS_DEBUG_C) #if defined(MBEDTLS_DEBUG_C)
#include "mbedtls/ssl.h" #include "ssl_debug_helpers.h"
#include "ssl_misc.h"
{functions} {functions}
#endif /* MBEDTLS_DEBUG_C */ #endif /* MBEDTLS_DEBUG_C */
#endif /* SSL_DEBUG_HELPERS_H */
/* End of automatically generated file. */ /* End of automatically generated file. */
''' '''
@ -286,23 +283,17 @@ def generate_ssl_debug_helpers(output_directory, mbedtls_root):
source_code = remove_c_comments(f.read()) source_code = remove_c_comments(f.read())
definitions = dict() definitions = dict()
prototypes = dict()
for start, instance in preprocess_c_source_code(source_code, EnumDefinition): for start, instance in preprocess_c_source_code(source_code, EnumDefinition):
if start in definitions: if start in definitions:
continue continue
if isinstance(instance, EnumDefinition): if isinstance(instance, EnumDefinition):
definition, prototype = instance.generate_tranlation_function() definition = instance.generate_tranlation_function()
else: else:
definition = instance definition = instance
prototype = instance
definitions[start] = definition definitions[start] = definition
prototypes[start] = prototype
function_definitions = [str(v) for _, v in sorted(definitions.items())] function_definitions = [str(v) for _, v in sorted(definitions.items())]
function_prototypes = [str(v) for _, v in sorted(prototypes.items())]
if output_directory == sys.stdout: if output_directory == sys.stdout:
sys.stdout.write(OUTPUT_H_TEMPLATE.format(
functions='\n'.join(function_prototypes)))
sys.stdout.write(OUTPUT_C_TEMPLATE.format( sys.stdout.write(OUTPUT_C_TEMPLATE.format(
functions='\n'.join(function_definitions))) functions='\n'.join(function_definitions)))
else: else:
@ -310,10 +301,6 @@ def generate_ssl_debug_helpers(output_directory, mbedtls_root):
f.write(OUTPUT_C_TEMPLATE.format( f.write(OUTPUT_C_TEMPLATE.format(
functions='\n'.join(function_definitions))) functions='\n'.join(function_definitions)))
with open(os.path.join(output_directory, 'ssl_debug_helpers_generated.h'), 'w') as f:
f.write(OUTPUT_H_TEMPLATE.format(
functions='\n'.join(function_prototypes)))
def main(): def main():
""" """

View file

@ -118,7 +118,7 @@ check()
check scripts/generate_errors.pl library/error.c check scripts/generate_errors.pl library/error.c
check scripts/generate_query_config.pl programs/test/query_config.c check scripts/generate_query_config.pl programs/test/query_config.c
check scripts/generate_features.pl library/version_features.c check scripts/generate_features.pl library/version_features.c
check scripts/generate_ssl_debug_helpers.py library/ssl_debug_helpers_generated.h library/ssl_debug_helpers_generated.c check scripts/generate_ssl_debug_helpers.py library/ssl_debug_helpers_generated.c
# generate_visualc_files enumerates source files (library/*.c). It doesn't # generate_visualc_files enumerates source files (library/*.c). It doesn't
# care about their content, but the files must exist. So it must run after # care about their content, but the files must exist. So it must run after
# the step that creates or updates these files. # the step that creates or updates these files.