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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux加密框架 crypto 算法crypto_register_alg的注册流程

發(fā)布時間:2023/12/13 linux 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux加密框架 crypto 算法crypto_register_alg的注册流程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

算法注冊流程

靜態(tài)算法模塊初始化

分組算法模塊初始化

  • AES算法模塊(aes_generic.c)的初始化接口aes_init實現(xiàn)向加密框架注冊AES算法的功能,如下所示。
  • aes_generic.c - crypto/aes_generic.c - Linux source code (v5.15.12) - Bootlin
static int __init aes_init(void) {return crypto_register_alg(&aes_alg); }

哈希算法模塊初始化

  • MD5算法模塊(md5.c)的初始化接口md5_mod_init實現(xiàn)向加密框架注冊MD5算法的功能,如下所示。?
  • md5.c - crypto/md5.c - Linux source code (v5.15.12) - Bootlin
static int __init md5_mod_init(void) {return crypto_register_shash(&alg); }

靜態(tài)算法注冊接口crypto_register_alg

  • crypto_register_alg函數實現(xiàn)向加密框架注冊靜態(tài)算法的功能,輸入參數為待注冊靜態(tài)算法的算法說明alg,返回值為0表示注冊成功,否則表示注冊過程中出現(xiàn)異常。
  • crypto_register_alg函數執(zhí)行的算法注冊流程如下圖所示

  • ?algapi.c - crypto/algapi.c - Linux source code (v5.15.12) - Bootlin
int crypto_register_alg(struct crypto_alg *alg) {struct crypto_larval *larval;int err;alg->cra_flags &= ~CRYPTO_ALG_DEAD;err = crypto_check_alg(alg);if (err)return err;down_write(&crypto_alg_sem);larval = __crypto_register_alg(alg);up_write(&crypto_alg_sem);if (IS_ERR(larval))return PTR_ERR(larval);crypto_wait_for_test(larval);return 0; } EXPORT_SYMBOL_GPL(crypto_register_alg);
  • 1)crypto_check_alg函數實現(xiàn)檢查算法說明alg的有效性(包括地址對齊要求、塊大小、優(yōu)先級等)和設置算法驅動名cra_driver_name兩項功能其中設置算法驅動名的功能由crypto_set_driver_name函數實現(xiàn),如果未設置算法驅動名,則按照“算法名-generic”格式設置算法驅動名。如果alg無效則退出注冊流程。(未從源碼分析得到這個結論)
  • 2)__crypto_register_alg函數實現(xiàn)通用算法注冊流程,注冊過程由讀寫信號量crypto_alg_sem(操作之前使用 down_write進行加鎖,執(zhí)行操作 __crypto_register_alg,然后使用up_write進行鎖資源的釋放)進行保護。如果注冊過程中出現(xiàn)異常,退出注冊流程,否則函數返回值為待注冊算法的檢驗用算法幼蟲larval(__crypto_register_alg函數返回類型是struct crypto_larvel)。
  • 3)crypto_wait_for_test函數用于觸發(fā)并等待待注冊算法的正確性檢驗(由專門的內核線程負責,通過完成量進行同步),檢驗結束后清理注冊用的算法幼蟲(由crypto_larval_kill函數實現(xiàn))。從流程上看,算法正確性檢驗的結果不影響算法注冊的正常結束,但是通過正確性校驗的算法的算法標志cra_flags會設置算法已檢測狀態(tài)位(CRYPTO_ALG_TESTED)。

  • 4)crypto_register_alg函數中接口調用情況如下所示,其中alg表示待注冊算法的通用算法說明。?

  • ?5)AES算法注冊成功后,算法管理鏈表上已注冊的算法情況如下所示。

?crypto_register_alg函數整體調用流程

?參考鏈接

  • Linux加密框架的算法管理(一)_家有一希的博客-CSDN博客_linux加密框架設計與實現(xiàn)

總結

以上是生活随笔為你收集整理的linux加密框架 crypto 算法crypto_register_alg的注册流程的全部內容,希望文章能夠幫你解決所遇到的問題。

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