在lib/libmbedtls/core/tomcrypt.c中定义了加解密算法的入口,
TEE_Result crypto_init(void)
{
tomcrypt_init();
return TEE_SUCCESS;
}
在tomcrypt_init 中我们就可以明确知道optee中支持了哪些软算的算法
void tomcrypt_init(void)
{
ltc_init();
}
static void ltc_init(void)
{
#if defined(_CFG_CORE_LTC_ACIPHER)
init_mp_tomcrypt();
#endif
tee_ltc_reg_algs();
}
static void tee_ltc_reg_algs(void)
{
#if defined(_CFG_CORE_LTC_AES) || defined(_CFG_CORE_LTC_AES_DESC)
register_cipher(&aes_desc);
#endif
#if defined(_CFG_CORE_LTC_DES)
register_cipher(&des_desc);
register_cipher(&des3_desc);
#endif
#if defined(_CFG_CORE_LTC_MD5)
register_hash(&md5_desc);
#endif
#if defined(_CFG_CORE_LTC_SHA1)
register_hash(&sha1_desc);
#endif
#if defined(_CFG_CORE_LTC_SHA224)
register_hash(&sha224_desc);
#endif
#if defined(_CFG_CORE_LTC_SHA256) || defined(_CFG_CORE_LTC_SHA256_DESC)
register_hash(&sha256_desc);
#endif
#if defined(_CFG_CORE_LTC_SHA384) || defined(_CFG_CORE_LTC_SHA384_DESC)
register_hash(&sha384_desc);
#endif
#if defined(_CFG_CORE_LTC_SHA512) || defined(_CFG_CORE_LTC_SHA512_DESC)
register_hash(&sha512_desc);
#endif
#if defined(_CFG_CORE_LTC_ACIPHER)
register_prng(&prng_crypto_desc);
#endif
}
最终在tee_ltc_reg_algs中调用的算法都是optee支持的,这些都是用宏来隔开的,需要在配置文件中开这些宏才能支持这些算法。