diff --git a/scripts/config.py b/scripts/config.py
index 0d65e77..929aee6 100755
--- a/scripts/config.py
+++ b/scripts/config.py
@@ -172,22 +172,28 @@
         return active
     return True
 
-UNSUPPORTED_FEATURE = frozenset([
+PSA_UNSUPPORTED_FEATURE = frozenset([
     'PSA_WANT_ALG_CBC_MAC',
     'PSA_WANT_ALG_XTS',
     'PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_DERIVE',
     'PSA_WANT_KEY_TYPE_DH_KEY_PAIR_DERIVE'
 ])
 
-DEPRECATED_FEATURE = frozenset([
+PSA_DEPRECATED_FEATURE = frozenset([
     'PSA_WANT_KEY_TYPE_ECC_KEY_PAIR',
     'PSA_WANT_KEY_TYPE_RSA_KEY_PAIR'
 ])
 
-UNSTABLE_FEATURE = frozenset([
+PSA_UNSTABLE_FEATURE = frozenset([
     'PSA_WANT_ECC_SECP_K1_224'
 ])
 
+EXCLUDE_FROM_CRYPTO = frozenset(
+    PSA_UNSUPPORTED_FEATURE |
+    PSA_DEPRECATED_FEATURE |
+    PSA_UNSTABLE_FEATURE
+)
+
 # The goal of the full configuration is to have everything that can be tested
 # together. This includes deprecated or insecure options. It excludes:
 # * Options that require additional build dependencies or unusual hardware.
@@ -230,6 +236,9 @@
     'MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN', # build dependency (clang+memsan)
     'MBEDTLS_TEST_CONSTANT_FLOW_VALGRIND', # build dependency (valgrind headers)
     'MBEDTLS_X509_REMOVE_INFO', # removes a feature
+    *PSA_UNSUPPORTED_FEATURE,
+    *PSA_DEPRECATED_FEATURE,
+    *PSA_UNSTABLE_FEATURE
 ])
 
 def is_seamless_alt(name):
@@ -256,8 +265,7 @@
 
 def include_in_full(name):
     """Rules for symbols in the "full" configuration."""
-    if name in (EXCLUDE_FROM_FULL | UNSUPPORTED_FEATURE |
-                DEPRECATED_FEATURE | UNSTABLE_FEATURE):
+    if name in EXCLUDE_FROM_FULL:
         return False
     if name.endswith('_ALT'):
         return is_seamless_alt(name)
@@ -337,6 +345,8 @@
             'MBEDTLS_PKCS7_C', # part of libmbedx509
     ]:
         return False
+    if name in EXCLUDE_FROM_CRYPTO:
+        return False
     return True
 
 def crypto_adapter(adapter):
@@ -355,6 +365,7 @@
 
 DEPRECATED = frozenset([
     'MBEDTLS_PSA_CRYPTO_SE_C',
+    *PSA_DEPRECATED_FEATURE
 ])
 def no_deprecated_adapter(adapter):
     """Modify an adapter to disable deprecated symbols.
@@ -600,9 +611,9 @@
                               in self.configfile.parse_file()})
 
     def set(self, name, value='1'):
-        if name in UNSUPPORTED_FEATURE:
+        if name in PSA_UNSUPPORTED_FEATURE:
             raise ValueError(f'Feature is unsupported: \'{name}\'')
-        if name in UNSTABLE_FEATURE:
+        if name in PSA_UNSTABLE_FEATURE:
             raise ValueError(f'Feature is unstable: \'{name}\'')
 
         # The default value in the crypto config is '1'
@@ -654,9 +665,9 @@
         configfile = self._get_configfile(name)
 
         if configfile == self.crypto_configfile:
-            if name in UNSUPPORTED_FEATURE:
+            if name in PSA_UNSUPPORTED_FEATURE:
                 raise ValueError(f'Feature is unsupported: \'{name}\'')
-            if name in UNSTABLE_FEATURE:
+            if name in PSA_UNSTABLE_FEATURE:
                 raise ValueError(f'Feature is unstable: \'{name}\'')
 
             # The default value in the crypto config is '1'
