diff options
author | Jerome Forissier <jerome.forissier@linaro.org> | 2019-02-14 14:54:34 +0100 |
---|---|---|
committer | Jérôme Forissier <jerome.forissier@linaro.org> | 2019-02-25 14:23:58 +0100 |
commit | 48e106048dce669b9e5f334f08397923f94b2c67 (patch) | |
tree | f8812ac8d52f89dced6b159230723c6ba7eaa42f /core | |
parent | 65551e69a006c496fb18d8374389b7b3617c2076 (diff) |
libutils: remove buf_compare_ct()
Now that we have consttime_memcmp(), buf_compare_ct() is redundant.
Every time buf_compare_ct() is used, consttime_memcmp() may be used
instead.
This commit removes buf_compare_ct(). A compatibility wrapper is kept
in <string_ext.h> to avoid knowingly breaking the build of any TA that
may use it.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Diffstat (limited to 'core')
-rw-r--r-- | core/arch/arm/pta/secstor_ta_mgmt.c | 2 | ||||
-rw-r--r-- | core/crypto/aes-gcm.c | 2 | ||||
-rw-r--r-- | core/lib/libtomcrypt/include/tomcrypt_custom.h | 2 | ||||
-rw-r--r-- | core/lib/libtomcrypt/src/tee_ltc_provider.c | 6 | ||||
-rw-r--r-- | core/tee/fs_htree.c | 2 | ||||
-rw-r--r-- | core/tee/tee_rpmb_fs.c | 6 |
6 files changed, 10 insertions, 10 deletions
diff --git a/core/arch/arm/pta/secstor_ta_mgmt.c b/core/arch/arm/pta/secstor_ta_mgmt.c index c3744a02..6ea093a5 100644 --- a/core/arch/arm/pta/secstor_ta_mgmt.c +++ b/core/arch/arm/pta/secstor_ta_mgmt.c @@ -121,7 +121,7 @@ static TEE_Result install_ta(struct shdr *shdr, const uint8_t *nw, res = crypto_hash_final(hash_ctx, hash_algo, buf, shdr->hash_size); if (res) goto err_ta_finalize; - if (buf_compare_ct(buf, SHDR_GET_HASH(shdr), shdr->hash_size)) { + if (consttime_memcmp(buf, SHDR_GET_HASH(shdr), shdr->hash_size)) { res = TEE_ERROR_SECURITY; goto err_ta_finalize; } diff --git a/core/crypto/aes-gcm.c b/core/crypto/aes-gcm.c index 464369c8..0cc1e99f 100644 --- a/core/crypto/aes-gcm.c +++ b/core/crypto/aes-gcm.c @@ -328,7 +328,7 @@ static TEE_Result __gcm_dec_final(struct internal_aes_gcm_state *state, if (res) return res; - if (buf_compare_ct(state->buf_tag, tag, tag_len)) + if (consttime_memcmp(state->buf_tag, tag, tag_len)) return TEE_ERROR_MAC_INVALID; return TEE_SUCCESS; diff --git a/core/lib/libtomcrypt/include/tomcrypt_custom.h b/core/lib/libtomcrypt/include/tomcrypt_custom.h index 1bb2f024..fef2035a 100644 --- a/core/lib/libtomcrypt/include/tomcrypt_custom.h +++ b/core/lib/libtomcrypt/include/tomcrypt_custom.h @@ -83,7 +83,7 @@ #endif #ifndef XMEM_NEQ #include <string_ext.h> -#define XMEM_NEQ buf_compare_ct +#define XMEM_NEQ consttime_memcmp #endif #ifndef XSTRCMP #ifdef strcmp diff --git a/core/lib/libtomcrypt/src/tee_ltc_provider.c b/core/lib/libtomcrypt/src/tee_ltc_provider.c index a679898c..8df13f80 100644 --- a/core/lib/libtomcrypt/src/tee_ltc_provider.c +++ b/core/lib/libtomcrypt/src/tee_ltc_provider.c @@ -2501,7 +2501,7 @@ TEE_Result crypto_aes_ccm_dec_final(void *ctx, const uint8_t *src_data, if (ltc_res != CRYPT_OK) return TEE_ERROR_BAD_STATE; - if (buf_compare_ct(dst_tag, tag, tag_len) != 0) + if (consttime_memcmp(dst_tag, tag, tag_len) != 0) res = TEE_ERROR_MAC_INVALID; else res = TEE_SUCCESS; @@ -2675,7 +2675,7 @@ TEE_Result crypto_aes_gcm_dec_final(void *ctx, const uint8_t *src_data, if (ltc_res != CRYPT_OK) return TEE_ERROR_BAD_STATE; - if (buf_compare_ct(dst_tag, tag, tag_len) != 0) + if (consttime_memcmp(dst_tag, tag, tag_len) != 0) res = TEE_ERROR_MAC_INVALID; else res = TEE_SUCCESS; @@ -2723,7 +2723,7 @@ TEE_Result hash_sha256_check(const uint8_t *hash, const uint8_t *data, return TEE_ERROR_GENERIC; if (sha256_done(&hs, digest) != CRYPT_OK) return TEE_ERROR_GENERIC; - if (buf_compare_ct(digest, hash, sizeof(digest)) != 0) + if (consttime_memcmp(digest, hash, sizeof(digest)) != 0) return TEE_ERROR_SECURITY; return TEE_SUCCESS; } diff --git a/core/tee/fs_htree.c b/core/tee/fs_htree.c index 30f01ba8..8e817c28 100644 --- a/core/tee/fs_htree.c +++ b/core/tee/fs_htree.c @@ -577,7 +577,7 @@ static TEE_Result verify_node(struct traverse_arg *targ, else res = calc_node_hash(node, &targ->ht->imeta.meta, ctx, digest); if (res == TEE_SUCCESS && - buf_compare_ct(digest, node->node.hash, sizeof(digest))) + consttime_memcmp(digest, node->node.hash, sizeof(digest))) return TEE_ERROR_CORRUPT_OBJECT; return res; diff --git a/core/tee/tee_rpmb_fs.c b/core/tee/tee_rpmb_fs.c index 9fd397b9..0d123484 100644 --- a/core/tee/tee_rpmb_fs.c +++ b/core/tee/tee_rpmb_fs.c @@ -870,9 +870,9 @@ static TEE_Result tee_rpmb_resp_unpack_verify(struct rpmb_data_frame *datafrm, } #ifndef CFG_RPMB_FS_NO_MAC - if (buf_compare_ct(rawdata->key_mac, - (datafrm + nbr_frms - 1)->key_mac, - RPMB_KEY_MAC_SIZE) != 0) { + if (consttime_memcmp(rawdata->key_mac, + (datafrm + nbr_frms - 1)->key_mac, + RPMB_KEY_MAC_SIZE) != 0) { DMSG("MAC mismatched:"); #ifdef CFG_RPMB_FS_DEBUG_DATA DHEXDUMP((uint8_t *)rawdata->key_mac, 32); |