目录

  • 1、算法的注册
  • 2、算法的实现 --- 举例
    • (1)、aes
    • (2)、hash
  • 3、在TA中使用这些算法
    • (1)、rsa-encrypt/rsa-decrypt
    • (2)、rsa-sign\rsa-verify
    • (3)、hash

★★★ 友情链接 : 个人博客导读首页—点击此处 ★★★

1、算法的注册

再service_init阶段,调用了tee_ltc_reg_algs()注册系统的各类算法.(ltc是libtomcrypt的缩写)
service_init(tee_cryp_init) --> tee_cryp_init() --> crypto_init() --> tee_ltc_reg_algs()

(core/lib/libtomcrypt/src/tee_ltc_provider.c)
static void tee_ltc_reg_algs(void)
{#if defined(CFG_CRYPTO_AES)register_cipher(&aes_desc);
#endif
#if defined(CFG_CRYPTO_DES)register_cipher(&des_desc);register_cipher(&des3_desc);
#endif
#if defined(CFG_CRYPTO_MD5)register_hash(&md5_desc);
#endif
#if defined(CFG_CRYPTO_SHA1)register_hash(&sha1_desc);
#endif
#if defined(CFG_CRYPTO_SHA224)register_hash(&sha224_desc);
#endif
#if defined(CFG_CRYPTO_SHA256)register_hash(&sha256_desc);
#endif
#if defined(CFG_CRYPTO_SHA384)register_hash(&sha384_desc);
#endif
#if defined(CFG_CRYPTO_SHA512)register_hash(&sha512_desc);
#endif#if defined(CFG_WITH_SOFTWARE_PRNG)
#if defined(_CFG_CRYPTO_WITH_FORTUNA_PRNG)register_prng(&fortuna_desc);
#elseregister_prng(&rc4_desc);
#endif
#else
#if defined(CFG_WITH_MT19937_PRNG)register_prng(&mt19937_desc);
#endif
#endif
}

2、算法的实现 — 举例

如果SOC增加一个硬件crypto engion,可参照此方法实现和注册.

(1)、aes
(core/lib/libtomcrypt/src/ciphers/aes_armv8a_ce.c)
const struct ltc_cipher_descriptor aes_desc = {.name = "aes",.ID = 6,.min_key_length = 16,.max_key_length = 32,.block_length = 16,.default_rounds = 10,.setup = rijndael_setup,.ecb_encrypt = rijndael_ecb_encrypt,.ecb_decrypt = rijndael_ecb_decrypt,.done = rijndael_done,.keysize = rijndael_keysize,.accel_ecb_encrypt = aes_ecb_encrypt_nblocks,.accel_ecb_decrypt = aes_ecb_decrypt_nblocks,.accel_cbc_encrypt = aes_cbc_encrypt_nblocks,.accel_cbc_decrypt = aes_cbc_decrypt_nblocks,.accel_ctr_encrypt = aes_ctr_encrypt_nblocks,.accel_xts_encrypt = aes_xts_encrypt_nblocks,.accel_xts_decrypt = aes_xts_decrypt_nblocks,
};
(2)、hash
(core/lib/libtomcrypt/src/hashes/sha2.c)
const struct ltc_hash_descriptor sha256_desc =
{"sha256",0,32,64,/* OID */{ 2, 16, 840, 1, 101, 3, 4, 2, 1,  },9,&sha256_init,&sha256_process,&sha256_done,&sha256_test,NULL
};

3、在TA中使用这些算法

(1)、rsa-encrypt/rsa-decrypt
TEE_AllocateOperation()
TEE_SetOperationKey()
TEE_AsymmetricEncrypt()
TEE_AsymmetricDecrypt()
TEE_FreeOperation()
(2)、rsa-sign\rsa-verify
TEE_AllocateOperation()
TEE_SetOperationKey()
TEE_AsymmetricSignDigest()
TEE_AsymmetricVerifyDigest()
TEE_FreeOperation()
(3)、hash
TEE_AllocateOperation(...,hash_algo,...)
TEE_DigestDoFinal()
TEE_FreeOperation()

[optee]-optee的加解密接口的介绍相关推荐

  1. AES方式加解密的简单介绍

    上面一篇文章介绍了使用DES方式进行加解密( DES方式加解密的简单介绍),我们说了DES由于使用8个字节(64bit)密钥进行加解密,所以安全性不够(当然这里的不够都是相对的),所以现在使用了密钥更 ...

  2. AES128加解密流程详细介绍

    AES128加解密流程详细介绍 公司想要对嵌入式设备里的文本进行加密,只能用AES128试试,经过一上午的了解,整理了下流程. 参考文章: AES加密 https://zhuanlan.zhihu.c ...

  3. 软件测试 接口测试 接口鉴权 token鉴权 Mock Server 接口加解密 接口签名sign

    文章目录 1 接口鉴权 1.1 cookie鉴权 1.2 session鉴权 1.3 token鉴权 1.4 Postman的鉴权方式 2 Mock Server 3 接口加解密 3.1 加密方式 3 ...

  4. DES方式加解密的简单介绍

    其实本来想好好研究下DES.AES.MD5等这些加解密方式的,于是就最先研究了比较早使用的DES,去看了相关文档后发现,我去这变换也太多了吧,这这这,真要细细研究下来,那不得花很长的时间,于是准备先放 ...

  5. 数据加解密基础知识介绍,及Java实现Base64加密(详细)

    加密流程涉及的一些关键词: 明文:准备加密的信息 加密:把明文处理为密文的过程 加密算法:具体实现明文转为密文的算法 加密密钥:通过加密算法进行加密操作需要的密钥 密文:被加密的明文 解密:将密文转为 ...

  6. 算法实现: OTP(One-Time Pad) 一次一密密码本 加解密

    按照<<密码学导引>>上描述的OTP算法, 实现了一个OTP算法加解密工具~ src : srcOtpCipher_V2013_0111_0517.rar, 这版的明文只能是 ...

  7. Postman-APP登入模拟请求-数据加解密

    Postman-APP登入模拟请求-数据加解密 简单说明一下 对于Postman的使用,一般情况下只要发发确定的请求与参数就可以的了.这个大家都会的 ,灰常的简单. 然而,在使用的时候,尤其是接口测试 ...

  8. JAVA实现PGP/GPG加解密

    注:文章皆为个人纪录,可用性请以最终结果为准,若有错还请大佬们指出,谢谢! 一.加解密的准备资料 1.1  公钥 (用于加密) 1.2  私钥(用于解密) 1.3   私钥key (用于验证私钥) 导 ...

  9. 利用ENGINE替换OPENSSL中的加解密算法

    一:ENGINE的目的: ENGINE是OPENSSL预留的加载第三方加密库,主要包括了动态库加载的代码和加密函数指针管理的一系列接口.如果要使用Engine(假设你已经加载上该Engine了),那么 ...

最新文章

  1. 判断SIM卡属于哪个移动运营商
  2. 浙江大学计算机与机械工程,中国26所“机械工程”大学经调整、合并,浙大、西交、同济升级...
  3. 东平县农民丰收节-农业大健康·万祥军:功能性谋定生态品牌
  4. 后端需要掌握的技术_何小伟:软件测试需要掌握的技术?
  5. wchar_t 的输出问题
  6. 网络TCp数据的传输设计(黏包处理)
  7. 再见2006,奋斗2007
  8. 小米路由器刷梅林教程_小米路由器3刷X-Wrt固件教程
  9. Python多人聊天室
  10. FaceWarehouse 3DMM形状拟合
  11. 电脑如何通过USB连接PPC手机上网
  12. 华为ne20路由器登陆密码_很好的文章,主要是关于密码学和NE的基础知识
  13. Python Couldn‘t find any class folder
  14. Java学习-面向对象基础
  15. 华为P40系列手机camera特性分析
  16. 微信小程序仿照微信拖动缩放图片和截取头像
  17. Montgomery reduction——多精度模乘法运算算法
  18. Yii框架下使用redis做缓存,读写分离
  19. vue-render
  20. “xxx”does not name a type 错误

热门文章

  1. 一图解码数据中心数字化运维管理之道
  2. 2020年全球十大数据中心趋势
  3. 液冷模块是什么?有什么作用与意义?
  4. python multiprocessing lock_python多进程Lock锁
  5. 卓越性能代码_编程语言性能实测,Go比Python更胜一筹?
  6. mysql+影响的行数+获取_我们如何获得受MySQL查询影响的总行数?
  7. easypoi教程_SpringBoot图文教程17—上手就会 RestTemplate 使用指南
  8. ML之LiRLasso:基于datasets糖尿病数据集利用LiR和Lasso算法进行(9→1)回归预测(三维图散点图可视化)
  9. 成功解决SQL Server软件中出现的18470问题
  10. DL之Keras: Keras深度学习框架的注意事项(默认下载存放路径等)、使用方法之详细攻略