diff options
author | Albert Schwarzkopf <a.schwarzkopf@phytec.de> | 2020-04-02 09:28:51 +0200 |
---|---|---|
committer | Jérôme Forissier <jerome@forissier.org> | 2020-04-02 15:21:08 +0200 |
commit | 7c76743463bc33bcc058f7d8f745fb04fcfc95ee (patch) | |
tree | 01431d58dfc6d35e97884f980162bdb2e3e9434b /core/tee | |
parent | 2e5e6460eb3668746004d0a91f41e3659daee4f7 (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.c | 2 | ||||
-rw-r--r-- | core/tee/tee_cryp_hkdf.c | 6 | ||||
-rw-r--r-- | core/tee/tee_cryp_pbkdf2.c | 2 | ||||
-rw-r--r-- | core/tee/tee_cryp_utl.c | 68 | ||||
-rw-r--r-- | core/tee/tee_svc_cryp.c | 8 |
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; /* |