Merge pull request #10548 from gilles-peskine-arm/config-checks-generator-current-mbedtls

mbedtls: generate_config_checks.py: use current data
This commit is contained in:
Gilles Peskine
2026-01-06 10:07:34 +00:00
committed by GitHub
6 changed files with 141 additions and 10 deletions

View File

@@ -0,0 +1,79 @@
MBEDTLS_CONFIG_FILE
MBEDTLS_CONFIG_VERSION
MBEDTLS_DEBUG_C
MBEDTLS_ERROR_C
MBEDTLS_ERROR_STRERROR_DUMMY
MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
MBEDTLS_NET_C
MBEDTLS_PKCS7_C
MBEDTLS_PSK_MAX_LEN
MBEDTLS_SSL_ALL_ALERT_MESSAGES
MBEDTLS_SSL_ALPN
MBEDTLS_SSL_ASYNC_PRIVATE
MBEDTLS_SSL_CACHE_C
MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES
MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT
MBEDTLS_SSL_CID_IN_LEN_MAX
MBEDTLS_SSL_CID_OUT_LEN_MAX
MBEDTLS_SSL_CID_TLS1_3_PADDING_GRANULARITY
MBEDTLS_SSL_CIPHERSUITES
MBEDTLS_SSL_CLI_C
MBEDTLS_SSL_CONTEXT_SERIALIZATION
MBEDTLS_SSL_COOKIE_C
MBEDTLS_SSL_COOKIE_TIMEOUT
MBEDTLS_SSL_DEBUG_ALL
MBEDTLS_SSL_DTLS_ANTI_REPLAY
MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE
MBEDTLS_SSL_DTLS_CONNECTION_ID
MBEDTLS_SSL_DTLS_HELLO_VERIFY
MBEDTLS_SSL_DTLS_MAX_BUFFERING
MBEDTLS_SSL_DTLS_SRTP
MBEDTLS_SSL_EARLY_DATA
MBEDTLS_SSL_ENCRYPT_THEN_MAC
MBEDTLS_SSL_EXTENDED_MASTER_SECRET
MBEDTLS_SSL_IN_CONTENT_LEN
MBEDTLS_SSL_KEEP_PEER_CERTIFICATE
MBEDTLS_SSL_KEYING_MATERIAL_EXPORT
MBEDTLS_SSL_MAX_EARLY_DATA_SIZE
MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
MBEDTLS_SSL_NULL_CIPHERSUITES
MBEDTLS_SSL_OUT_CONTENT_LEN
MBEDTLS_SSL_PROTO_DTLS
MBEDTLS_SSL_PROTO_TLS1_2
MBEDTLS_SSL_PROTO_TLS1_3
MBEDTLS_SSL_RECORD_SIZE_LIMIT
MBEDTLS_SSL_RENEGOTIATION
MBEDTLS_SSL_SERVER_NAME_INDICATION
MBEDTLS_SSL_SESSION_TICKETS
MBEDTLS_SSL_SRV_C
MBEDTLS_SSL_TICKET_C
MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
MBEDTLS_SSL_TLS1_3_DEFAULT_NEW_SESSION_TICKETS
MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
MBEDTLS_SSL_TLS1_3_TICKET_AGE_TOLERANCE
MBEDTLS_SSL_TLS1_3_TICKET_NONCE_LENGTH
MBEDTLS_SSL_TLS_C
MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
MBEDTLS_TIMING_ALT
MBEDTLS_TIMING_C
MBEDTLS_USER_CONFIG_FILE
MBEDTLS_VERSION_C
MBEDTLS_VERSION_FEATURES
MBEDTLS_X509_CREATE_C
MBEDTLS_X509_CRL_PARSE_C
MBEDTLS_X509_CRT_PARSE_C
MBEDTLS_X509_CRT_WRITE_C
MBEDTLS_X509_CSR_PARSE_C
MBEDTLS_X509_CSR_WRITE_C
MBEDTLS_X509_MAX_FILE_PATH_LEN
MBEDTLS_X509_MAX_INTERMEDIATE_CA
MBEDTLS_X509_REMOVE_INFO
MBEDTLS_X509_RSASSA_PSS_SUPPORT
MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
MBEDTLS_X509_USE_C

View File

@@ -8,7 +8,7 @@ from typing import Iterator
import framework_scripts_path # pylint: disable=unused-import
from mbedtls_framework.config_checks_generator import * \
#pylint: disable=wildcard-import,unused-wildcard-import
from mbedtls_framework import config_history
from mbedtls_framework import config_macros
class CryptoInternal(SubprojectInternal):
SUBPROJECT = 'TF-PSA-Crypto'
@@ -23,20 +23,23 @@ ALWAYS_ENABLED_SINCE_4_0 = frozenset([
def checkers_for_removed_options() -> Iterator[Checker]:
"""Discover removed options. Yield corresponding checkers."""
history = config_history.ConfigHistory()
old_public = history.options('mbedtls', '3.6')
new_public = history.options('mbedtls', '4.0')
crypto_public = history.options('tfpsacrypto', '1.0')
crypto_internal = history.internal('tfpsacrypto', '1.0')
previous_major = config_macros.History('mbedtls', '3.6')
current = config_macros.Current()
crypto = config_macros.Current('tf-psa-crypto')
old_public = previous_major.options()
new_public = current.options()
for option in sorted(old_public - new_public):
if option in ALWAYS_ENABLED_SINCE_4_0:
continue
if option in crypto_public:
if option in crypto.options():
yield CryptoOption(option)
elif option in crypto_internal:
elif option in crypto.internal():
yield CryptoInternal(option)
else:
yield Removed(option, 'Mbed TLS 4.0')
for option in (current.internal() - new_public - old_public -
crypto.options() - crypto.internal()):
yield Internal(option)
def all_checkers() -> Iterator[Checker]:
"""Yield all checkers."""

View File

@@ -0,0 +1,46 @@
#!/usr/bin/env python3
"""
Check that files with lists of config options are up-to-date, or update them.
This script checks the following file:
scripts/data_files/config-options-current.txt
"""
# Copyright The Mbed TLS Contributors
# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
import argparse
import sys
import scripts_path # pylint: disable=unused-import
from mbedtls_framework import config_macros
def main():
parser = argparse.ArgumentParser(description=__doc__)
# For now this script only acts on one target file.
# If we check/update more files, we should add a way to select which
# file(s) to operate on.
parser.add_argument('--always-update', '-U',
action='store_true',
help=('Update target files unconditionally '
'(overrides --update)'))
parser.add_argument('--update', '-u',
action='store_true',
help='Update target files if needed')
args = parser.parse_args()
data = config_macros.Current(shadow_missing_ok=True)
if args.update or args.always_update:
data.update_shadow_file(args.always_update)
else:
up_to_date = True
if not data.is_shadow_file_up_to_date():
print(f'{data.shadow_file_path()} is out of date')
print(f'After adding or removing a config option, you need to run')
print(f'{sys.argv[0]} -u and commit the result.')
up_to_date = False
sys.exit(0 if up_to_date else 1)
if __name__ == "__main__":
main()

View File

@@ -46,6 +46,9 @@ component_check_generated_files () {
# This component ends with the generated files present in the source tree.
# This is necessary for subsequent components!
msg "Check committed generated files"
tests/scripts/check_option_lists.py
}
component_check_doxy_blocks () {