日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[optee]-optee的加解密接口的介绍

發布時間:2025/3/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [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的加解密接口的介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。