diff --git a/scripts/generate_psa_constants.py b/scripts/generate_psa_constants.py
index 01c5a32..ddcf625 100755
--- a/scripts/generate_psa_constants.py
+++ b/scripts/generate_psa_constants.py
@@ -100,20 +100,37 @@
     unsigned long length_modifier = NO_LENGTH_MODIFIER;
     if (PSA_ALG_IS_MAC(alg)) {
         core_alg = PSA_ALG_TRUNCATED_MAC(alg, 0);
-        if (core_alg != alg) {
+        if (alg & PSA_ALG_MAC_MINIMUM_LENGTH_FLAG) {
             append(&buffer, buffer_size, &required_size,
-                   "PSA_ALG_TRUNCATED_MAC(", 22);
+                   "PSA_ALG_AT_LEAST_THIS_LENGTH_MAC(", 33);
             length_modifier = PSA_MAC_TRUNCATED_LENGTH(alg);
+        } else {
+            if (core_alg != alg) {
+                append(&buffer, buffer_size, &required_size,
+                       "PSA_ALG_TRUNCATED_MAC(", 22);
+                length_modifier = PSA_MAC_TRUNCATED_LENGTH(alg);
+            }
         }
     } else if (PSA_ALG_IS_AEAD(alg)) {
         core_alg = PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(alg);
-        if (core_alg == 0) {
-            /* For unknown AEAD algorithms, there is no "default tag length". */
-            core_alg = alg;
-        } else if (core_alg != alg) {
-            append(&buffer, buffer_size, &required_size,
-                   "PSA_ALG_AEAD_WITH_SHORTENED_TAG(", 32);
-            length_modifier = PSA_AEAD_TAG_LENGTH(alg);
+        if (alg & PSA_ALG_AEAD_MINIMUM_LENGTH_FLAG) {
+            if (core_alg == 0) {
+                /* For unknown AEAD algorithms, there is no "default tag length". */
+                core_alg = alg;
+            } else {
+                append(&buffer, buffer_size, &required_size,
+                       "PSA_ALG_AEAD_WITH_AT_LEAST_THIS_LENGTH_TAG(", 43);
+                length_modifier = PSA_AEAD_TAG_LENGTH(alg);
+            }
+        } else {
+            if (core_alg == 0) {
+                /* For unknown AEAD algorithms, there is no "default tag length". */
+                core_alg = alg;
+            } else if (core_alg != alg) {
+                append(&buffer, buffer_size, &required_size,
+                       "PSA_ALG_AEAD_WITH_SHORTENED_TAG(", 32);
+                length_modifier = PSA_AEAD_TAG_LENGTH(alg);
+            }
         }
     } else if (PSA_ALG_IS_KEY_AGREEMENT(alg) &&
                !PSA_ALG_IS_RAW_KEY_AGREEMENT(alg)) {
