aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorJerome Forissier <jerome.forissier@linaro.org>2019-02-14 14:54:34 +0100
committerJérôme Forissier <jerome.forissier@linaro.org>2019-02-25 14:23:58 +0100
commit48e106048dce669b9e5f334f08397923f94b2c67 (patch)
treef8812ac8d52f89dced6b159230723c6ba7eaa42f /core
parent65551e69a006c496fb18d8374389b7b3617c2076 (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.c2
-rw-r--r--core/crypto/aes-gcm.c2
-rw-r--r--core/lib/libtomcrypt/include/tomcrypt_custom.h2
-rw-r--r--core/lib/libtomcrypt/src/tee_ltc_provider.c6
-rw-r--r--core/tee/fs_htree.c2
-rw-r--r--core/tee/tee_rpmb_fs.c6
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);