[optee]-optee的加解密接口的介绍
目录
- 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的加解密接口的介绍相关推荐
- AES方式加解密的简单介绍
上面一篇文章介绍了使用DES方式进行加解密( DES方式加解密的简单介绍),我们说了DES由于使用8个字节(64bit)密钥进行加解密,所以安全性不够(当然这里的不够都是相对的),所以现在使用了密钥更 ...
- AES128加解密流程详细介绍
AES128加解密流程详细介绍 公司想要对嵌入式设备里的文本进行加密,只能用AES128试试,经过一上午的了解,整理了下流程. 参考文章: AES加密 https://zhuanlan.zhihu.c ...
- 软件测试 接口测试 接口鉴权 token鉴权 Mock Server 接口加解密 接口签名sign
文章目录 1 接口鉴权 1.1 cookie鉴权 1.2 session鉴权 1.3 token鉴权 1.4 Postman的鉴权方式 2 Mock Server 3 接口加解密 3.1 加密方式 3 ...
- DES方式加解密的简单介绍
其实本来想好好研究下DES.AES.MD5等这些加解密方式的,于是就最先研究了比较早使用的DES,去看了相关文档后发现,我去这变换也太多了吧,这这这,真要细细研究下来,那不得花很长的时间,于是准备先放 ...
- 数据加解密基础知识介绍,及Java实现Base64加密(详细)
加密流程涉及的一些关键词: 明文:准备加密的信息 加密:把明文处理为密文的过程 加密算法:具体实现明文转为密文的算法 加密密钥:通过加密算法进行加密操作需要的密钥 密文:被加密的明文 解密:将密文转为 ...
- 算法实现: OTP(One-Time Pad) 一次一密密码本 加解密
按照<<密码学导引>>上描述的OTP算法, 实现了一个OTP算法加解密工具~ src : srcOtpCipher_V2013_0111_0517.rar, 这版的明文只能是 ...
- Postman-APP登入模拟请求-数据加解密
Postman-APP登入模拟请求-数据加解密 简单说明一下 对于Postman的使用,一般情况下只要发发确定的请求与参数就可以的了.这个大家都会的 ,灰常的简单. 然而,在使用的时候,尤其是接口测试 ...
- JAVA实现PGP/GPG加解密
注:文章皆为个人纪录,可用性请以最终结果为准,若有错还请大佬们指出,谢谢! 一.加解密的准备资料 1.1 公钥 (用于加密) 1.2 私钥(用于解密) 1.3 私钥key (用于验证私钥) 导 ...
- 利用ENGINE替换OPENSSL中的加解密算法
一:ENGINE的目的: ENGINE是OPENSSL预留的加载第三方加密库,主要包括了动态库加载的代码和加密函数指针管理的一系列接口.如果要使用Engine(假设你已经加载上该Engine了),那么 ...
最新文章
- 判断SIM卡属于哪个移动运营商
- 浙江大学计算机与机械工程,中国26所“机械工程”大学经调整、合并,浙大、西交、同济升级...
- 东平县农民丰收节-农业大健康·万祥军:功能性谋定生态品牌
- 后端需要掌握的技术_何小伟:软件测试需要掌握的技术?
- wchar_t 的输出问题
- 网络TCp数据的传输设计(黏包处理)
- 再见2006,奋斗2007
- 小米路由器刷梅林教程_小米路由器3刷X-Wrt固件教程
- Python多人聊天室
- FaceWarehouse 3DMM形状拟合
- 电脑如何通过USB连接PPC手机上网
- 华为ne20路由器登陆密码_很好的文章,主要是关于密码学和NE的基础知识
- Python Couldn‘t find any class folder
- Java学习-面向对象基础
- 华为P40系列手机camera特性分析
- 微信小程序仿照微信拖动缩放图片和截取头像
- Montgomery reduction——多精度模乘法运算算法
- Yii框架下使用redis做缓存,读写分离
- vue-render
- “xxx”does not name a type 错误
热门文章
- 一图解码数据中心数字化运维管理之道
- 2020年全球十大数据中心趋势
- 液冷模块是什么?有什么作用与意义?
- python multiprocessing lock_python多进程Lock锁
- 卓越性能代码_编程语言性能实测,Go比Python更胜一筹?
- mysql+影响的行数+获取_我们如何获得受MySQL查询影响的总行数?
- easypoi教程_SpringBoot图文教程17—上手就会 RestTemplate 使用指南
- ML之LiRLasso:基于datasets糖尿病数据集利用LiR和Lasso算法进行(9→1)回归预测(三维图散点图可视化)
- 成功解决SQL Server软件中出现的18470问题
- DL之Keras: Keras深度学习框架的注意事项(默认下载存放路径等)、使用方法之详细攻略