Add _AT_LEAST_THIS_LENGTH_ macros to PSA constants test

Signed-off-by: Steven Cooreman <steven.cooreman@silabs.com>
This commit is contained in:
Steven Cooreman 2021-02-22 18:53:07 +01:00
parent 7de9e2db1f
commit 4400c3a44a
3 changed files with 55 additions and 19 deletions

View file

@ -150,13 +150,29 @@ static int psa_snprint_algorithm(char *buffer, size_t buffer_size,
unsigned long length_modifier = NO_LENGTH_MODIFIER; unsigned long length_modifier = NO_LENGTH_MODIFIER;
if (PSA_ALG_IS_MAC(alg)) { if (PSA_ALG_IS_MAC(alg)) {
core_alg = PSA_ALG_TRUNCATED_MAC(alg, 0); core_alg = PSA_ALG_TRUNCATED_MAC(alg, 0);
if (alg & PSA_ALG_MAC_MINIMUM_LENGTH_FLAG) {
append(&buffer, buffer_size, &required_size,
"PSA_ALG_AT_LEAST_THIS_LENGTH_MAC(", 33);
length_modifier = PSA_MAC_TRUNCATED_LENGTH(alg);
} else {
if (core_alg != alg) { if (core_alg != alg) {
append(&buffer, buffer_size, &required_size, append(&buffer, buffer_size, &required_size,
"PSA_ALG_TRUNCATED_MAC(", 22); "PSA_ALG_TRUNCATED_MAC(", 22);
length_modifier = PSA_MAC_TRUNCATED_LENGTH(alg); length_modifier = PSA_MAC_TRUNCATED_LENGTH(alg);
} }
}
} else if (PSA_ALG_IS_AEAD(alg)) { } else if (PSA_ALG_IS_AEAD(alg)) {
core_alg = PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(alg); core_alg = PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(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) { if (core_alg == 0) {
/* For unknown AEAD algorithms, there is no "default tag length". */ /* For unknown AEAD algorithms, there is no "default tag length". */
core_alg = alg; core_alg = alg;
@ -165,6 +181,7 @@ static int psa_snprint_algorithm(char *buffer, size_t buffer_size,
"PSA_ALG_AEAD_WITH_SHORTENED_TAG(", 32); "PSA_ALG_AEAD_WITH_SHORTENED_TAG(", 32);
length_modifier = PSA_AEAD_TAG_LENGTH(alg); length_modifier = PSA_AEAD_TAG_LENGTH(alg);
} }
}
} else if (PSA_ALG_IS_KEY_AGREEMENT(alg) && } else if (PSA_ALG_IS_KEY_AGREEMENT(alg) &&
!PSA_ALG_IS_RAW_KEY_AGREEMENT(alg)) { !PSA_ALG_IS_RAW_KEY_AGREEMENT(alg)) {
core_alg = PSA_ALG_KEY_AGREEMENT_GET_KDF(alg); core_alg = PSA_ALG_KEY_AGREEMENT_GET_KDF(alg);

View file

@ -100,13 +100,29 @@ static int psa_snprint_algorithm(char *buffer, size_t buffer_size,
unsigned long length_modifier = NO_LENGTH_MODIFIER; unsigned long length_modifier = NO_LENGTH_MODIFIER;
if (PSA_ALG_IS_MAC(alg)) { if (PSA_ALG_IS_MAC(alg)) {
core_alg = PSA_ALG_TRUNCATED_MAC(alg, 0); core_alg = PSA_ALG_TRUNCATED_MAC(alg, 0);
if (alg & PSA_ALG_MAC_MINIMUM_LENGTH_FLAG) {
append(&buffer, buffer_size, &required_size,
"PSA_ALG_AT_LEAST_THIS_LENGTH_MAC(", 33);
length_modifier = PSA_MAC_TRUNCATED_LENGTH(alg);
} else {
if (core_alg != alg) { if (core_alg != alg) {
append(&buffer, buffer_size, &required_size, append(&buffer, buffer_size, &required_size,
"PSA_ALG_TRUNCATED_MAC(", 22); "PSA_ALG_TRUNCATED_MAC(", 22);
length_modifier = PSA_MAC_TRUNCATED_LENGTH(alg); length_modifier = PSA_MAC_TRUNCATED_LENGTH(alg);
} }
}
} else if (PSA_ALG_IS_AEAD(alg)) { } else if (PSA_ALG_IS_AEAD(alg)) {
core_alg = PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(alg); core_alg = PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(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) { if (core_alg == 0) {
/* For unknown AEAD algorithms, there is no "default tag length". */ /* For unknown AEAD algorithms, there is no "default tag length". */
core_alg = alg; core_alg = alg;
@ -115,6 +131,7 @@ static int psa_snprint_algorithm(char *buffer, size_t buffer_size,
"PSA_ALG_AEAD_WITH_SHORTENED_TAG(", 32); "PSA_ALG_AEAD_WITH_SHORTENED_TAG(", 32);
length_modifier = PSA_AEAD_TAG_LENGTH(alg); length_modifier = PSA_AEAD_TAG_LENGTH(alg);
} }
}
} else if (PSA_ALG_IS_KEY_AGREEMENT(alg) && } else if (PSA_ALG_IS_KEY_AGREEMENT(alg) &&
!PSA_ALG_IS_RAW_KEY_AGREEMENT(alg)) { !PSA_ALG_IS_RAW_KEY_AGREEMENT(alg)) {
core_alg = PSA_ALG_KEY_AGREEMENT_GET_KDF(alg); core_alg = PSA_ALG_KEY_AGREEMENT_GET_KDF(alg);

View file

@ -101,7 +101,7 @@ class Inputs:
# PSA_ALG_IS_xxx macros, but are also not currently assigned and are # PSA_ALG_IS_xxx macros, but are also not currently assigned and are
# not likely to be assigned in the near future. # not likely to be assigned in the near future.
self.hash_algorithms = set(['0x020000fe']) # 0x020000ff is PSA_ALG_ANY_HASH self.hash_algorithms = set(['0x020000fe']) # 0x020000ff is PSA_ALG_ANY_HASH
self.mac_algorithms = set(['0x0300ffff']) self.mac_algorithms = set(['0x03007fff'])
self.ka_algorithms = set(['0x09fc0000']) self.ka_algorithms = set(['0x09fc0000'])
self.kdf_algorithms = set(['0x080000ff']) self.kdf_algorithms = set(['0x080000ff'])
# For AEAD algorithms, the only variability is over the tag length, # For AEAD algorithms, the only variability is over the tag length,
@ -146,6 +146,8 @@ class Inputs:
self.arguments_for = { self.arguments_for = {
'mac_length': ['1', '63'], 'mac_length': ['1', '63'],
'tag_length': ['1', '63'], 'tag_length': ['1', '63'],
'min_mac_length': ['1', '63'],
'min_tag_length': ['1', '63'],
} }
def get_names(self, type_word): def get_names(self, type_word):