Merge pull request #9299 from ronald-cron-arm/move-mbedtls-crypto-headers

Move mbedtls crypto headers
diff --git a/3rdparty/everest/CMakeLists.txt b/3rdparty/everest/CMakeLists.txt
index 8c8e8db..356931e 100644
--- a/3rdparty/everest/CMakeLists.txt
+++ b/3rdparty/everest/CMakeLists.txt
@@ -9,6 +9,7 @@
   PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
          $<BUILD_INTERFACE:${MBEDTLS_DIR}/include>
          $<BUILD_INTERFACE:${MBEDTLS_DIR}/tf-psa-crypto/include>
+         $<BUILD_INTERFACE:${MBEDTLS_DIR}/tf-psa-crypto/drivers/builtin/include>
          $<INSTALL_INTERFACE:include>
   PRIVATE include/everest
           include/everest/kremlib
diff --git a/3rdparty/p256-m/CMakeLists.txt b/3rdparty/p256-m/CMakeLists.txt
index bd302a7..d3dc813 100644
--- a/3rdparty/p256-m/CMakeLists.txt
+++ b/3rdparty/p256-m/CMakeLists.txt
@@ -9,6 +9,7 @@
          $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/p256-m>
          $<BUILD_INTERFACE:${MBEDTLS_DIR}/include>
          $<BUILD_INTERFACE:${MBEDTLS_DIR}/tf-psa-crypto/include>
+         $<BUILD_INTERFACE:${MBEDTLS_DIR}/tf-psa-crypto/drivers/builtin/include>
          $<INSTALL_INTERFACE:include>
   PRIVATE ${MBEDTLS_DIR}/library/)
 
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 35b8d48..28d4b83 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -356,6 +356,7 @@
         PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tests/include
         PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
         PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tf-psa-crypto/include
+        PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tf-psa-crypto/drivers/builtin/include
         PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/library)
     # Request C11, needed for memory poisoning tests
     set_target_properties(mbedtls_test PROPERTIES C_STANDARD 11)
@@ -367,6 +368,7 @@
         PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tests/include
         PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
         PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tf-psa-crypto/include
+        PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tf-psa-crypto/drivers/builtin/include
         PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/library
         PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/everest/include)
 
diff --git a/Makefile b/Makefile
index 0f1f3da..67ad0b7 100644
--- a/Makefile
+++ b/Makefile
@@ -95,6 +95,7 @@
 install: no_test
 	mkdir -p $(DESTDIR)/include/mbedtls
 	cp -rp include/mbedtls $(DESTDIR)/include
+	cp -rp tf-psa-crypto/drivers/builtin/include/mbedtls $(DESTDIR)/include
 	mkdir -p $(DESTDIR)/include/psa
 	cp -rp tf-psa-crypto/include/psa $(DESTDIR)/include
 
@@ -198,6 +199,7 @@
 	include/*/*.h \
 	library/*.[hc] \
 	tf-psa-crypto/include/*/*.h \
+	tf-psa-crypto/drivers/builtin/include/*/*.h \
 	programs/*/*.[hc] \
 	tests/include/*/*.h tests/include/*/*/*.h \
 	tests/src/*.c tests/src/*/*.c \
@@ -214,5 +216,7 @@
 	ls $(C_SOURCE_FILES) | gtags -f - --gtagsconf .globalrc
 cscope: cscope.in.out cscope.po.out cscope.out
 cscope.in.out cscope.po.out cscope.out: $(C_SOURCE_FILES)
-	cscope -bq -u -Iinclude -Ilibrary -Itf-psa-crypto/include $(patsubst %,-I%,$(wildcard 3rdparty/*/include)) -Itests/include $(C_SOURCE_FILES)
+	cscope -bq -u -Iinclude -Ilibrary -Itf-psa-crypto/include \
+	-Itf-psa-crypto/drivers/builtin/include \
+	$(patsubst %,-I%,$(wildcard 3rdparty/*/include)) -Itests/include $(C_SOURCE_FILES)
 .PHONY: cscope global
diff --git a/doxygen/mbedtls.doxyfile b/doxygen/mbedtls.doxyfile
index 847deb0..1e494a0 100644
--- a/doxygen/mbedtls.doxyfile
+++ b/doxygen/mbedtls.doxyfile
@@ -6,7 +6,7 @@
 EXTRACT_PRIVATE        = YES
 EXTRACT_STATIC         = YES
 CASE_SENSE_NAMES       = NO
-INPUT                  = ../include ../tf-psa-crypto/include input ../tests/include/alt-dummy
+INPUT                  = ../include ../tf-psa-crypto/include input ../tf-psa-crypto/drivers/builtin/include ../tests/include/alt-dummy
 FILE_PATTERNS          = *.h
 RECURSIVE              = YES
 EXCLUDE_SYMLINKS       = YES
@@ -21,7 +21,7 @@
 GENERATE_XML           = YES
 MACRO_EXPANSION        = YES
 EXPAND_ONLY_PREDEF     = YES
-INCLUDE_PATH           = ../include ../tf-psa-crypto/include
+INCLUDE_PATH           = ../include ../tf-psa-crypto/include ../tf-psa-crypto/drivers/builtin/include
 EXPAND_AS_DEFINED      = MBEDTLS_PRIVATE
 CLASS_DIAGRAMS         = NO
 HAVE_DOT               = YES
diff --git a/framework b/framework
index 0484721..423e41e 160000
--- a/framework
+++ b/framework
@@ -1 +1 @@
-Subproject commit 04847216ab964b9bdce41f1e61ccc6d8f5d2a139
+Subproject commit 423e41ec8044a797eca7ac3a36497963fc4e5606
diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt
index 9b26b6b..e2562df 100644
--- a/library/CMakeLists.txt
+++ b/library/CMakeLists.txt
@@ -129,19 +129,22 @@
 if(GEN_FILES)
     find_package(Perl REQUIRED)
 
-    file(GLOB error_headers ${CMAKE_CURRENT_SOURCE_DIR}/../include/mbedtls/*.h)
+    file(GLOB crypto_error_headers ${CMAKE_CURRENT_SOURCE_DIR}/../tf-psa-crypto/drivers/builtin/include/mbedtls/*.h)
+    file(GLOB tls_error_headers ${CMAKE_CURRENT_SOURCE_DIR}/../include/mbedtls/*.h)
     add_custom_command(
         OUTPUT
             ${CMAKE_CURRENT_BINARY_DIR}/error.c
         COMMAND
             ${PERL_EXECUTABLE}
                 ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/generate_errors.pl
+                ${CMAKE_CURRENT_SOURCE_DIR}/../tf-psa-crypto/drivers/builtin/include/mbedtls
                 ${CMAKE_CURRENT_SOURCE_DIR}/../include/mbedtls
                 ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/data_files
                 ${CMAKE_CURRENT_BINARY_DIR}/error.c
         DEPENDS
             ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/generate_errors.pl
-            ${error_headers}
+            ${crypto_error_headers}
+            ${tls_error_headers}
             ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/data_files/error.fmt
     )
 
@@ -170,7 +173,7 @@
                 ${CMAKE_CURRENT_BINARY_DIR}
         DEPENDS
             ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/generate_ssl_debug_helpers.py
-            ${error_headers}
+            ${tls_error_headers}
     )
 
     add_custom_command(
@@ -329,6 +332,7 @@
     target_include_directories(${target}
         PUBLIC $<BUILD_INTERFACE:${MBEDTLS_DIR}/include/>
                $<BUILD_INTERFACE:${MBEDTLS_DIR}/tf-psa-crypto/include/>
+               $<BUILD_INTERFACE:${MBEDTLS_DIR}/tf-psa-crypto/drivers/builtin/include/>
                $<INSTALL_INTERFACE:include/>
         PRIVATE ${MBEDTLS_DIR}/library/
                 # Needed to include psa_crypto_driver_wrappers.h
diff --git a/library/Makefile b/library/Makefile
index 014e0ca..e4fb643 100644
--- a/library/Makefile
+++ b/library/Makefile
@@ -28,11 +28,13 @@
 WARNING_CFLAGS ?=  -Wall -Wextra -Wformat=2 -Wno-format-nonliteral
 LDFLAGS ?=
 
-# Include ../include, ../tf-psa-crypto/include for public headers and . for
+# Include ../include, ../tf-psa-crypto/include and
+# ../tf-psa-crypto/drivers/builtin/include for public headers and . for
 # private headers. Note that . needs to be included explicitly for the sake of
 # library files that are not in the /library directory (which currently means
 # under /3rdparty).
-LOCAL_CFLAGS = $(WARNING_CFLAGS) -I. -I../include -I../tf-psa-crypto/include -D_FILE_OFFSET_BITS=64
+LOCAL_CFLAGS = $(WARNING_CFLAGS) -I. -I../include -I../tf-psa-crypto/include \
+               -I../tf-psa-crypto/drivers/builtin/include -D_FILE_OFFSET_BITS=64
 LOCAL_LDFLAGS =
 
 ifdef DEBUG
diff --git a/programs/test/CMakeLists.txt b/programs/test/CMakeLists.txt
index 08fb321..20cdf41 100644
--- a/programs/test/CMakeLists.txt
+++ b/programs/test/CMakeLists.txt
@@ -27,7 +27,8 @@
     add_executable(cpp_dummy_build "${cpp_dummy_build_cpp}")
     target_include_directories(cpp_dummy_build
         PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../include
-        PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tf-psa-crypto/include)
+        PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tf-psa-crypto/include
+        PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tf-psa-crypto/drivers/builtin/include)
     target_link_libraries(cpp_dummy_build ${mbedcrypto_target} ${CMAKE_THREAD_LIBS_INIT})
 endif()
 
@@ -36,7 +37,8 @@
     add_executable(dlopen "dlopen.c")
     target_include_directories(dlopen
         PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../include
-        PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tf-psa-crypto/include)
+        PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tf-psa-crypto/include
+        PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tf-psa-crypto/drivers/builtin/include)
     target_link_libraries(dlopen ${CMAKE_DL_LIBS})
 endif()
 
diff --git a/programs/test/generate_cpp_dummy_build.sh b/programs/test/generate_cpp_dummy_build.sh
index ef9996e..d27c7ae 100755
--- a/programs/test/generate_cpp_dummy_build.sh
+++ b/programs/test/generate_cpp_dummy_build.sh
@@ -45,6 +45,13 @@
         esac
     done
 
+    for header in tf-psa-crypto/drivers/builtin/include/mbedtls/*.h; do
+        case ${header#tf-psa-crypto/drivers/builtin/include/} in
+            mbedtls/config_*.h) :;; # not meant for direct inclusion
+            *) echo "#include \"${header#tf-psa-crypto/drivers/builtin/include/}\"";;
+        esac
+    done
+
     for header in tf-psa-crypto/include/psa/*.h; do
         case ${header#tf-psa-crypto/include/} in
             psa/crypto_config.h) :;; # not meant for direct inclusion
diff --git a/scripts/common.make b/scripts/common.make
index 702ef5c..ead1334 100644
--- a/scripts/common.make
+++ b/scripts/common.make
@@ -21,7 +21,10 @@
 WARNING_CXXFLAGS ?= -Wall -Wextra -Wformat=2 -Wno-format-nonliteral
 LDFLAGS ?=
 
-LOCAL_CFLAGS = $(WARNING_CFLAGS) -I$(MBEDTLS_TEST_PATH)/include -I$(MBEDTLS_PATH)/include -I$(MBEDTLS_PATH)/tf-psa-crypto/include -D_FILE_OFFSET_BITS=64
+LOCAL_CFLAGS = $(WARNING_CFLAGS) -I$(MBEDTLS_TEST_PATH)/include \
+               -I$(MBEDTLS_PATH)/include -I$(MBEDTLS_PATH)/tf-psa-crypto/include \
+               -I$(MBEDTLS_PATH)/tf-psa-crypto/drivers/builtin/include \
+               -D_FILE_OFFSET_BITS=64
 LOCAL_CXXFLAGS = $(WARNING_CXXFLAGS) -I$(MBEDTLS_PATH)/include -I$(MBEDTLS_PATH)/tests/include -D_FILE_OFFSET_BITS=64
 LOCAL_LDFLAGS = ${MBEDTLS_TEST_OBJS} 		\
 		-L$(MBEDTLS_PATH)/library			\
diff --git a/scripts/generate_errors.pl b/scripts/generate_errors.pl
index b3acb0e..fb95c0d 100755
--- a/scripts/generate_errors.pl
+++ b/scripts/generate_errors.pl
@@ -3,7 +3,7 @@
 # Generate error.c
 #
 # Usage: ./generate_errors.pl or scripts/generate_errors.pl without arguments,
-# or generate_errors.pl include_dir data_dir error_file
+# or generate_errors.pl crypto_include_dir tls_include_dir data_dir error_file
 #
 # Copyright The Mbed TLS Contributors
 # SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
@@ -11,22 +11,24 @@
 use strict;
 use warnings;
 
-my ($include_dir, $data_dir, $error_file);
+my ($crypto_include_dir, $tls_include_dir, $data_dir, $error_file);
 
 if( @ARGV ) {
-    die "Invalid number of arguments" if scalar @ARGV != 3;
-    ($include_dir, $data_dir, $error_file) = @ARGV;
+    die "Invalid number of arguments" if scalar @ARGV != 4;
+    ($crypto_include_dir, $tls_include_dir, $data_dir, $error_file) = @ARGV;
 
-    -d $include_dir or die "No such directory: $include_dir\n";
+    -d $crypto_include_dir or die "No such directory: $crypto_include_dir\n";
+    -d $tls_include_dir or die "No such directory: $tls_include_dir\n";
     -d $data_dir or die "No such directory: $data_dir\n";
 } else {
-    $include_dir = 'include/mbedtls';
+    $crypto_include_dir = 'tf-psa-crypto/drivers/builtin/include/mbedtls';
+    $tls_include_dir = 'include/mbedtls';
     $data_dir = 'scripts/data_files';
     $error_file = 'library/error.c';
 
-    unless( -d $include_dir && -d $data_dir ) {
+    unless( -d $crypto_include_dir && -d $tls_include_dir && -d $data_dir ) {
         chdir '..' or die;
-        -d $include_dir && -d $data_dir
+        -d $crypto_include_dir && -d $tls_include_dir && -d $data_dir
             or die "Without arguments, must be run from root or scripts\n"
     }
 }
@@ -48,7 +50,8 @@
 my $error_format = <FORMAT_FILE>;
 close(FORMAT_FILE);
 
-my @files = glob qq("$include_dir/*.h");
+my @files = glob qq("$crypto_include_dir/*.h");
+push(@files, glob qq("$tls_include_dir/*.h"));
 my @necessary_include_files;
 my @matches;
 foreach my $file (@files) {
diff --git a/scripts/generate_visualc_files.pl b/scripts/generate_visualc_files.pl
index b566372..e9267eb 100755
--- a/scripts/generate_visualc_files.pl
+++ b/scripts/generate_visualc_files.pl
@@ -23,6 +23,7 @@
 
 my $programs_dir = 'programs';
 my $mbedtls_header_dir = 'include/mbedtls';
+my $drivers_builtin_header_dir = 'tf-psa-crypto/drivers/builtin/include/mbedtls';
 my $psa_header_dir = 'tf-psa-crypto/include/psa';
 my $source_dir = 'library';
 my $test_source_dir = 'tests/src';
@@ -45,6 +46,7 @@
 my @include_directories = qw(
     include
     tf-psa-crypto/include
+    tf-psa-crypto/drivers/builtin/include
     3rdparty/everest/include/
     3rdparty/everest/include/everest
     3rdparty/everest/include/everest/vs2013
@@ -102,6 +104,7 @@
     }
     return -d $vsx_dir
         && -d $mbedtls_header_dir
+        && -d $drivers_builtin_header_dir
         && -d $psa_header_dir
         && -d $source_dir
         && -d $test_source_dir
@@ -258,6 +261,7 @@
     my @app_list = get_app_list();
     my @header_dirs = (
                        $mbedtls_header_dir,
+                       $drivers_builtin_header_dir,
                        $psa_header_dir,
                        $test_header_dir,
                        $test_drivers_header_dir,
diff --git a/tests/Makefile b/tests/Makefile
index d1d5ed9..7ab4d9c 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -209,6 +209,8 @@
 	perl -p -e 's/^(# *(define|ifndef) +\w+_)H\b/$${1}ALT_H/' $< >$@
 include/alt-extra/%_alt.h: ../tf-psa-crypto/include/%.h
 	perl -p -e 's/^(# *(define|ifndef) +\w+_)H\b/$${1}ALT_H/' $< >$@
+include/alt-extra/%_alt.h: ../tf-psa-crypto/drivers/builtin/include/%.h
+	perl -p -e 's/^(# *(define|ifndef) +\w+_)H\b/$${1}ALT_H/' $< >$@
 
 # Generate test library
 
@@ -217,7 +219,13 @@
 # library. Add a LIBTESTDRIVER1_/libtestdriver1_ to mbedtls_xxx and psa_xxx
 # symbols.
 define libtestdriver1_rewrite :=
-	s!^(\s*#\s*include\s*[\"<])mbedtls/!$${1}libtestdriver1/include/mbedtls/!; \
+	s!^(\s*#\s*include\s*[\"<])mbedtls/build_info.h!$${1}libtestdriver1/include/mbedtls/build_info.h!; \
+	s!^(\s*#\s*include\s*[\"<])mbedtls/mbedtls_config.h!$${1}libtestdriver1/include/mbedtls/mbedtls_config.h!; \
+	s!^(\s*#\s*include\s*[\"<])mbedtls/config_adjust_legacy_crypto.h!$${1}libtestdriver1/include/mbedtls/config_adjust_legacy_crypto.h!; \
+	s!^(\s*#\s*include\s*[\"<])mbedtls/config_adjust_x509.h!$${1}libtestdriver1/include/mbedtls/config_adjust_x509.h!; \
+	s!^(\s*#\s*include\s*[\"<])mbedtls/config_adjust_ssl.h!$${1}libtestdriver1/include/mbedtls/config_adjust_ssl.h!; \
+	s!^(\s*#\s*include\s*[\"<])mbedtls/check_config.h!$${1}libtestdriver1/include/mbedtls/check_config.h!; \
+	s!^(\s*#\s*include\s*[\"<])mbedtls/!$${1}libtestdriver1/tf-psa-crypto/drivers/builtin/include/mbedtls/!; \
 	s!^(\s*#\s*include\s*[\"<])psa/!$${1}libtestdriver1/tf-psa-crypto/include/psa/!; \
 	next if /^\s*#\s*include/; \
 	s/\b(?=MBEDTLS_|PSA_)/LIBTESTDRIVER1_/g; \
@@ -255,6 +263,7 @@
 	perl -pi -e '$(libtestdriver1_rewrite)' ./libtestdriver1/library/*.[ch]
 	perl -pi -e '$(libtestdriver1_rewrite)' ./libtestdriver1/include/*/*.h
 	perl -pi -e '$(libtestdriver1_rewrite)' ./libtestdriver1/tf-psa-crypto/include/*/*.h
+	perl -pi -e '$(libtestdriver1_rewrite)' ./libtestdriver1/tf-psa-crypto/drivers/builtin/include/*/*.h
 
 	$(MAKE) -C ./libtestdriver1/library CFLAGS="-I../../ $(CFLAGS)" LDFLAGS="$(LDFLAGS)" libmbedcrypto.a
 	cp ./libtestdriver1/library/libmbedcrypto.a ../library/libtestdriver1.a
diff --git a/tests/psa-client-server/psasim/Makefile b/tests/psa-client-server/psasim/Makefile
index 4b0c46e..02b639f 100644
--- a/tests/psa-client-server/psasim/Makefile
+++ b/tests/psa-client-server/psasim/Makefile
@@ -8,7 +8,9 @@
 LIBPSASERVER := -Llibpsaserver/ -lmbedcrypto
 
 MBEDTLS_ROOT_PATH = ../../..
-COMMON_INCLUDE := -I./include -I$(MBEDTLS_ROOT_PATH)/include -I$(MBEDTLS_ROOT_PATH)/tf-psa-crypto/include
+COMMON_INCLUDE := -I./include -I$(MBEDTLS_ROOT_PATH)/include \
+                  -I$(MBEDTLS_ROOT_PATH)/tf-psa-crypto/include \
+                  -I$(MBEDTLS_ROOT_PATH)/tf-psa-crypto/drivers/builtin/include
 
 GENERATED_H_FILES =	include/psa_manifest/manifest.h \
 					include/psa_manifest/pid.h \
diff --git a/tests/scripts/check_names.py b/tests/scripts/check_names.py
index 01c3f3c..142233c 100755
--- a/tests/scripts/check_names.py
+++ b/tests/scripts/check_names.py
@@ -239,6 +239,7 @@
             "include/mbedtls/*.h",
             "include/psa/*.h",
             "tf-psa-crypto/include/psa/*.h",
+            "tf-psa-crypto/drivers/builtin/include/mbedtls/*.h",
             "3rdparty/everest/include/everest/everest.h",
             "3rdparty/everest/include/everest/x25519.h"
         ])
@@ -253,6 +254,7 @@
             "include/mbedtls/*.h",
             "include/psa/*.h",
             "tf-psa-crypto/include/psa/*.h",
+            "tf-psa-crypto/drivers/builtin/include/mbedtls/*.h",
             "library/*.h",
             "library/*.c",
             "3rdparty/everest/include/everest/everest.h",
@@ -262,6 +264,7 @@
             "include/mbedtls/*.h",
             "include/psa/*.h",
             "tf-psa-crypto/include/psa/*.h",
+            "tf-psa-crypto/drivers/builtin/include/mbedtls/*.h",
             "library/*.h",
             "3rdparty/everest/include/everest/everest.h",
             "3rdparty/everest/include/everest/x25519.h"
@@ -270,6 +273,7 @@
             "include/mbedtls/*.h",
             "include/psa/*.h",
             "tf-psa-crypto/include/psa/*.h",
+            "tf-psa-crypto/drivers/builtin/include/mbedtls/*.h",
             "library/*.h",
             "3rdparty/everest/include/everest/everest.h",
             "3rdparty/everest/include/everest/x25519.h",
diff --git a/tests/scripts/depends.py b/tests/scripts/depends.py
index 1990cd2..fa17e13 100755
--- a/tests/scripts/depends.py
+++ b/tests/scripts/depends.py
@@ -369,7 +369,11 @@
     """Collect data about cipher.h."""
     def __init__(self):
         self.base_symbols = set()
-        with open('include/mbedtls/cipher.h', encoding="utf-8") as fh:
+        if os.path.isdir('tf-psa-crypto'):
+            cipher_h_path = 'tf-psa-crypto/drivers/builtin/include/mbedtls/cipher.h'
+        else:
+            cipher_h_path = 'include/mbedtls/cipher.h'
+        with open(cipher_h_path, encoding="utf-8") as fh:
             for line in fh:
                 m = re.match(r' *MBEDTLS_CIPHER_ID_(\w+),', line)
                 if m and m.group(1) not in ['NONE', 'NULL', '3DES']:
diff --git a/tests/scripts/test_psa_compliance.py b/tests/scripts/test_psa_compliance.py
index b500fe5..d4e4979 100755
--- a/tests/scripts/test_psa_compliance.py
+++ b/tests/scripts/test_psa_compliance.py
@@ -73,9 +73,14 @@
         os.mkdir(build_dir)
         os.chdir(build_dir)
 
-        extra_includes = (';{}/drivers/builtin/include'.format(root_dir)
-                          if in_tf_psa_crypto_repo else
-                          ';{}/tf-psa-crypto/include'.format(root_dir))
+        # Temporary while the PSA compliance test suite is still run as part
+        # of Mbed TLS testing. When it is not the case anymore, the second case
+        # can be removed.
+        if in_tf_psa_crypto_repo:
+            extra_includes = ';{}/drivers/builtin/include'.format(root_dir)
+        elif os.path.isdir(os.path.join(root_dir, 'tf-psa-crypto')):
+            extra_includes = ';{}/tf-psa-crypto/include'.format(root_dir) + \
+                             (';{}/tf-psa-crypto/drivers/builtin/include'.format(root_dir))
 
         #pylint: disable=bad-continuation
         subprocess.check_call([
diff --git a/tests/scripts/test_psa_constant_names.py b/tests/scripts/test_psa_constant_names.py
index 6c9d905..f35351c 100755
--- a/tests/scripts/test_psa_constant_names.py
+++ b/tests/scripts/test_psa_constant_names.py
@@ -161,7 +161,9 @@
 def main():
     parser = argparse.ArgumentParser(description=globals()['__doc__'])
     parser.add_argument('--include', '-I',
-                        action='append', default=['tf-psa-crypto/include', 'include'],
+                        action='append', default=['tf-psa-crypto/include',
+                                                  'tf-psa-crypto/drivers/builtin/include',
+                                                  'include'],
                         help='Directory for header files')
     parser.add_argument('--keep-c',
                         action='store_true', dest='keep_c', default=False,
diff --git a/include/mbedtls/aes.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/aes.h
similarity index 100%
rename from include/mbedtls/aes.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/aes.h
diff --git a/include/mbedtls/aria.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/aria.h
similarity index 100%
rename from include/mbedtls/aria.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/aria.h
diff --git a/include/mbedtls/asn1.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/asn1.h
similarity index 100%
rename from include/mbedtls/asn1.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/asn1.h
diff --git a/include/mbedtls/asn1write.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/asn1write.h
similarity index 100%
rename from include/mbedtls/asn1write.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/asn1write.h
diff --git a/include/mbedtls/base64.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/base64.h
similarity index 100%
rename from include/mbedtls/base64.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/base64.h
diff --git a/include/mbedtls/bignum.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/bignum.h
similarity index 100%
rename from include/mbedtls/bignum.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/bignum.h
diff --git a/include/mbedtls/block_cipher.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/block_cipher.h
similarity index 100%
rename from include/mbedtls/block_cipher.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/block_cipher.h
diff --git a/include/mbedtls/camellia.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/camellia.h
similarity index 100%
rename from include/mbedtls/camellia.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/camellia.h
diff --git a/include/mbedtls/ccm.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/ccm.h
similarity index 100%
rename from include/mbedtls/ccm.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/ccm.h
diff --git a/include/mbedtls/chacha20.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/chacha20.h
similarity index 100%
rename from include/mbedtls/chacha20.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/chacha20.h
diff --git a/include/mbedtls/chachapoly.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/chachapoly.h
similarity index 100%
rename from include/mbedtls/chachapoly.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/chachapoly.h
diff --git a/include/mbedtls/cipher.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/cipher.h
similarity index 100%
rename from include/mbedtls/cipher.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/cipher.h
diff --git a/include/mbedtls/cmac.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/cmac.h
similarity index 100%
rename from include/mbedtls/cmac.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/cmac.h
diff --git a/include/mbedtls/config_adjust_legacy_from_psa.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/config_adjust_legacy_from_psa.h
similarity index 100%
rename from include/mbedtls/config_adjust_legacy_from_psa.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/config_adjust_legacy_from_psa.h
diff --git a/include/mbedtls/config_adjust_psa_superset_legacy.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/config_adjust_psa_superset_legacy.h
similarity index 100%
rename from include/mbedtls/config_adjust_psa_superset_legacy.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/config_adjust_psa_superset_legacy.h
diff --git a/include/mbedtls/config_psa.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/config_psa.h
similarity index 100%
rename from include/mbedtls/config_psa.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/config_psa.h
diff --git a/include/mbedtls/constant_time.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/constant_time.h
similarity index 100%
rename from include/mbedtls/constant_time.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/constant_time.h
diff --git a/include/mbedtls/ctr_drbg.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/ctr_drbg.h
similarity index 100%
rename from include/mbedtls/ctr_drbg.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/ctr_drbg.h
diff --git a/include/mbedtls/des.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/des.h
similarity index 100%
rename from include/mbedtls/des.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/des.h
diff --git a/include/mbedtls/dhm.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/dhm.h
similarity index 100%
rename from include/mbedtls/dhm.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/dhm.h
diff --git a/include/mbedtls/ecdh.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/ecdh.h
similarity index 100%
rename from include/mbedtls/ecdh.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/ecdh.h
diff --git a/include/mbedtls/ecdsa.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/ecdsa.h
similarity index 100%
rename from include/mbedtls/ecdsa.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/ecdsa.h
diff --git a/include/mbedtls/ecjpake.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/ecjpake.h
similarity index 100%
rename from include/mbedtls/ecjpake.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/ecjpake.h
diff --git a/include/mbedtls/ecp.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/ecp.h
similarity index 100%
rename from include/mbedtls/ecp.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/ecp.h
diff --git a/include/mbedtls/entropy.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/entropy.h
similarity index 100%
rename from include/mbedtls/entropy.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/entropy.h
diff --git a/include/mbedtls/error.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/error.h
similarity index 100%
rename from include/mbedtls/error.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/error.h
diff --git a/include/mbedtls/gcm.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/gcm.h
similarity index 100%
rename from include/mbedtls/gcm.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/gcm.h
diff --git a/include/mbedtls/hmac_drbg.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/hmac_drbg.h
similarity index 100%
rename from include/mbedtls/hmac_drbg.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/hmac_drbg.h
diff --git a/include/mbedtls/lms.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/lms.h
similarity index 100%
rename from include/mbedtls/lms.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/lms.h
diff --git a/include/mbedtls/md.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/md.h
similarity index 100%
rename from include/mbedtls/md.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/md.h
diff --git a/include/mbedtls/md5.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/md5.h
similarity index 100%
rename from include/mbedtls/md5.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/md5.h
diff --git a/include/mbedtls/memory_buffer_alloc.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/memory_buffer_alloc.h
similarity index 100%
rename from include/mbedtls/memory_buffer_alloc.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/memory_buffer_alloc.h
diff --git a/include/mbedtls/nist_kw.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/nist_kw.h
similarity index 100%
rename from include/mbedtls/nist_kw.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/nist_kw.h
diff --git a/include/mbedtls/oid.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/oid.h
similarity index 100%
rename from include/mbedtls/oid.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/oid.h
diff --git a/include/mbedtls/pem.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/pem.h
similarity index 100%
rename from include/mbedtls/pem.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/pem.h
diff --git a/include/mbedtls/pk.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/pk.h
similarity index 100%
rename from include/mbedtls/pk.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/pk.h
diff --git a/include/mbedtls/pkcs12.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/pkcs12.h
similarity index 100%
rename from include/mbedtls/pkcs12.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/pkcs12.h
diff --git a/include/mbedtls/pkcs5.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/pkcs5.h
similarity index 100%
rename from include/mbedtls/pkcs5.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/pkcs5.h
diff --git a/include/mbedtls/platform.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/platform.h
similarity index 100%
rename from include/mbedtls/platform.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/platform.h
diff --git a/include/mbedtls/platform_time.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/platform_time.h
similarity index 100%
rename from include/mbedtls/platform_time.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/platform_time.h
diff --git a/include/mbedtls/platform_util.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/platform_util.h
similarity index 100%
rename from include/mbedtls/platform_util.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/platform_util.h
diff --git a/include/mbedtls/poly1305.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/poly1305.h
similarity index 100%
rename from include/mbedtls/poly1305.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/poly1305.h
diff --git a/include/mbedtls/private_access.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/private_access.h
similarity index 100%
rename from include/mbedtls/private_access.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/private_access.h
diff --git a/include/mbedtls/psa_util.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/psa_util.h
similarity index 100%
rename from include/mbedtls/psa_util.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/psa_util.h
diff --git a/include/mbedtls/ripemd160.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/ripemd160.h
similarity index 100%
rename from include/mbedtls/ripemd160.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/ripemd160.h
diff --git a/include/mbedtls/rsa.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/rsa.h
similarity index 100%
rename from include/mbedtls/rsa.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/rsa.h
diff --git a/include/mbedtls/sha1.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/sha1.h
similarity index 100%
rename from include/mbedtls/sha1.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/sha1.h
diff --git a/include/mbedtls/sha256.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/sha256.h
similarity index 100%
rename from include/mbedtls/sha256.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/sha256.h
diff --git a/include/mbedtls/sha3.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/sha3.h
similarity index 100%
rename from include/mbedtls/sha3.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/sha3.h
diff --git a/include/mbedtls/sha512.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/sha512.h
similarity index 100%
rename from include/mbedtls/sha512.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/sha512.h
diff --git a/include/mbedtls/threading.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/threading.h
similarity index 100%
rename from include/mbedtls/threading.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/threading.h
diff --git a/include/mbedtls/timing.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/timing.h
similarity index 100%
rename from include/mbedtls/timing.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/timing.h
diff --git a/include/mbedtls/version.h b/tf-psa-crypto/drivers/builtin/include/mbedtls/version.h
similarity index 100%
rename from include/mbedtls/version.h
rename to tf-psa-crypto/drivers/builtin/include/mbedtls/version.h
diff --git a/tf-psa-crypto/include/CMakeLists.txt b/tf-psa-crypto/include/CMakeLists.txt
index dea92fe..bca86ff 100644
--- a/tf-psa-crypto/include/CMakeLists.txt
+++ b/tf-psa-crypto/include/CMakeLists.txt
@@ -1,14 +1,17 @@
-option(INSTALL_PSA_CRYPTO_HEADERS "Install PSA Crypto headers." ON)
+option(INSTALL_TF_PSA_CRYPTO_HEADERS "Install TF PSA Crypto headers." ON)
 
-if(INSTALL_PSA_CRYPTO_HEADERS)
-
+if(INSTALL_TF_PSA_CRYPTO_HEADERS)
     file(GLOB psa_headers "psa/*.h")
+    file(GLOB mbedtls_crypto_headers "../drivers/builtin/include/mbedtls/*.h")
 
     install(FILES ${psa_headers}
         DESTINATION include/psa
         PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
 
-endif(INSTALL_PSA_CRYPTO_HEADERS)
+    install(FILES ${mbedtls_crypto_headers}
+        DESTINATION include/mbedtls
+        PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
+endif(INSTALL_TF_PSA_CRYPTO_HEADERS)
 
 # Make includes available in an out-of-source build. ssl-opt.sh requires it.
 if (ENABLE_TESTING AND NOT ${CMAKE_CURRENT_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})