summaryrefslogtreecommitdiff
path: root/core/tee
diff options
context:
space:
mode:
authorAlbert Schwarzkopf <a.schwarzkopf@phytec.de>2020-04-02 09:28:51 +0200
committerJérôme Forissier <jerome@forissier.org>2020-04-02 15:21:08 +0200
commit7c76743463bc33bcc058f7d8f745fb04fcfc95ee (patch)
tree01431d58dfc6d35e97884f980162bdb2e3e9434b /core/tee
parent2e5e6460eb3668746004d0a91f41e3659daee4f7 (diff)
core: merge tee_*_get_digest_size() into a single function
Rename tee_hash_get_digest_size() to tee_alg_get_digest_size(). Change tee_alg_get_digest_size() to use new libutee macro TEE_ALG_GET_DIGEST_SIZE. Remove tee_mac_get_digest_size() as its functionality is handled by tee_alg_get_digest_size() now. Signed-off-by: Albert Schwarzkopf <a.schwarzkopf@phytec.de> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Diffstat (limited to 'core/tee')
-rw-r--r--core/tee/tee_cryp_concat_kdf.c2
-rw-r--r--core/tee/tee_cryp_hkdf.c6
-rw-r--r--core/tee/tee_cryp_pbkdf2.c2
-rw-r--r--core/tee/tee_cryp_utl.c68
-rw-r--r--core/tee/tee_svc_cryp.c8
5 files changed, 15 insertions, 71 deletions
diff --git a/core/tee/tee_cryp_concat_kdf.c b/core/tee/tee_cryp_concat_kdf.c
index ae3d0d52..8e74ec39 100644
--- a/core/tee/tee_cryp_concat_kdf.c
+++ b/core/tee/tee_cryp_concat_kdf.c
@@ -28,7 +28,7 @@ TEE_Result tee_cryp_concat_kdf(uint32_t hash_id, const uint8_t *shared_secret,
if (res != TEE_SUCCESS)
return res;
- res = tee_hash_get_digest_size(hash_algo, &hash_len);
+ res = tee_alg_get_digest_size(hash_algo, &hash_len);
if (res != TEE_SUCCESS)
goto out;
diff --git a/core/tee/tee_cryp_hkdf.c b/core/tee/tee_cryp_hkdf.c
index 1713ccf5..c62f22b1 100644
--- a/core/tee/tee_cryp_hkdf.c
+++ b/core/tee/tee_cryp_hkdf.c
@@ -29,7 +29,7 @@ static TEE_Result hkdf_extract(uint32_t hash_id, const uint8_t *ikm,
* zeros
*/
salt = zero_salt;
- res = tee_hash_get_digest_size(hash_algo, &salt_len);
+ res = tee_alg_get_digest_size(hash_algo, &salt_len);
if (res != TEE_SUCCESS)
goto out;
}
@@ -56,7 +56,7 @@ static TEE_Result hkdf_extract(uint32_t hash_id, const uint8_t *ikm,
if (res != TEE_SUCCESS)
goto out;
- res = tee_hash_get_digest_size(hash_algo, prk_len);
+ res = tee_alg_get_digest_size(hash_algo, prk_len);
out:
crypto_mac_free_ctx(ctx);
return res;
@@ -73,7 +73,7 @@ static TEE_Result hkdf_expand(uint32_t hash_id, const uint8_t *prk,
uint32_t hash_algo = TEE_ALG_HASH_ALGO(hash_id);
uint32_t hmac_algo = TEE_ALG_HMAC_ALGO(hash_id);
- res = tee_hash_get_digest_size(hash_algo, &hash_len);
+ res = tee_alg_get_digest_size(hash_algo, &hash_len);
if (res != TEE_SUCCESS)
goto out;
diff --git a/core/tee/tee_cryp_pbkdf2.c b/core/tee/tee_cryp_pbkdf2.c
index f6ab74a4..1a7dd572 100644
--- a/core/tee/tee_cryp_pbkdf2.c
+++ b/core/tee/tee_cryp_pbkdf2.c
@@ -81,7 +81,7 @@ TEE_Result tee_cryp_pbkdf2(uint32_t hash_id, const uint8_t *password,
hmac_parms.algo = TEE_ALG_HMAC_ALGO(hash_id);
- res = tee_mac_get_digest_size(hmac_parms.algo, &hmac_parms.hash_len);
+ res = tee_alg_get_digest_size(hmac_parms.algo, &hmac_parms.hash_len);
if (res != TEE_SUCCESS)
return res;
diff --git a/core/tee/tee_cryp_utl.c b/core/tee/tee_cryp_utl.c
index 00a87bf7..b37d1db7 100644
--- a/core/tee/tee_cryp_utl.c
+++ b/core/tee/tee_cryp_utl.c
@@ -15,43 +15,14 @@
#include <trace.h>
#include <utee_defines.h>
-TEE_Result tee_hash_get_digest_size(uint32_t algo, size_t *size)
+TEE_Result tee_alg_get_digest_size(uint32_t algo, size_t *size)
{
- switch (algo) {
- case TEE_ALG_MD5:
- case TEE_ALG_HMAC_MD5:
- *size = TEE_MD5_HASH_SIZE;
- break;
- case TEE_ALG_SHA1:
- case TEE_ALG_HMAC_SHA1:
- case TEE_ALG_DSA_SHA1:
- *size = TEE_SHA1_HASH_SIZE;
- break;
- case TEE_ALG_SHA224:
- case TEE_ALG_HMAC_SHA224:
- case TEE_ALG_DSA_SHA224:
- *size = TEE_SHA224_HASH_SIZE;
- break;
- case TEE_ALG_SHA256:
- case TEE_ALG_HMAC_SHA256:
- case TEE_ALG_DSA_SHA256:
- *size = TEE_SHA256_HASH_SIZE;
- break;
- case TEE_ALG_SHA384:
- case TEE_ALG_HMAC_SHA384:
- *size = TEE_SHA384_HASH_SIZE;
- break;
- case TEE_ALG_SHA512:
- case TEE_ALG_HMAC_SHA512:
- *size = TEE_SHA512_HASH_SIZE;
- break;
- case TEE_ALG_SM3:
- case TEE_ALG_HMAC_SM3:
- *size = TEE_SM3_HASH_SIZE;
- break;
- default:
+ size_t digest_size = TEE_ALG_GET_DIGEST_SIZE(algo);
+
+ if (!digest_size)
return TEE_ERROR_NOT_SUPPORTED;
- }
+
+ *size = digest_size;
return TEE_SUCCESS;
}
@@ -84,33 +55,6 @@ out:
return res;
}
-TEE_Result tee_mac_get_digest_size(uint32_t algo, size_t *size)
-{
- switch (algo) {
- case TEE_ALG_HMAC_MD5:
- case TEE_ALG_HMAC_SHA224:
- case TEE_ALG_HMAC_SHA1:
- case TEE_ALG_HMAC_SHA256:
- case TEE_ALG_HMAC_SHA384:
- case TEE_ALG_HMAC_SHA512:
- case TEE_ALG_HMAC_SM3:
- return tee_hash_get_digest_size(algo, size);
- case TEE_ALG_AES_CBC_MAC_NOPAD:
- case TEE_ALG_AES_CBC_MAC_PKCS5:
- case TEE_ALG_AES_CMAC:
- *size = TEE_AES_BLOCK_SIZE;
- return TEE_SUCCESS;
- case TEE_ALG_DES_CBC_MAC_NOPAD:
- case TEE_ALG_DES_CBC_MAC_PKCS5:
- case TEE_ALG_DES3_CBC_MAC_NOPAD:
- case TEE_ALG_DES3_CBC_MAC_PKCS5:
- *size = TEE_DES_BLOCK_SIZE;
- return TEE_SUCCESS;
- default:
- return TEE_ERROR_NOT_SUPPORTED;
- }
-}
-
TEE_Result tee_cipher_get_block_size(uint32_t algo, size_t *size)
{
switch (algo) {
diff --git a/core/tee/tee_svc_cryp.c b/core/tee/tee_svc_cryp.c
index 081a7168..347013b7 100644
--- a/core/tee/tee_svc_cryp.c
+++ b/core/tee/tee_svc_cryp.c
@@ -2442,7 +2442,7 @@ TEE_Result syscall_hash_final(unsigned long state, const void *chunk,
switch (TEE_ALG_GET_CLASS(cs->algo)) {
case TEE_OPERATION_DIGEST:
- res = tee_hash_get_digest_size(cs->algo, &hash_size);
+ res = tee_alg_get_digest_size(cs->algo, &hash_size);
if (res != TEE_SUCCESS)
return res;
if (hlen < hash_size) {
@@ -2462,7 +2462,7 @@ TEE_Result syscall_hash_final(unsigned long state, const void *chunk,
break;
case TEE_OPERATION_MAC:
- res = tee_mac_get_digest_size(cs->algo, &hash_size);
+ res = tee_alg_get_digest_size(cs->algo, &hash_size);
if (res != TEE_SUCCESS)
return res;
if (hlen < hash_size) {
@@ -3774,7 +3774,7 @@ TEE_Result syscall_asymm_verify(unsigned long state,
case TEE_MAIN_ALGO_RSA:
if (cs->algo != TEE_ALG_RSASSA_PKCS1_V1_5) {
hash_algo = TEE_DIGEST_HASH_TO_ALGO(cs->algo);
- res = tee_hash_get_digest_size(hash_algo, &hash_size);
+ res = tee_alg_get_digest_size(hash_algo, &hash_size);
if (res != TEE_SUCCESS)
break;
if (data_len != hash_size) {
@@ -3791,7 +3791,7 @@ TEE_Result syscall_asymm_verify(unsigned long state,
case TEE_MAIN_ALGO_DSA:
hash_algo = TEE_DIGEST_HASH_TO_ALGO(cs->algo);
- res = tee_hash_get_digest_size(hash_algo, &hash_size);
+ res = tee_alg_get_digest_size(hash_algo, &hash_size);
if (res != TEE_SUCCESS)
break;
/*