linux加密框架 crypto 算法crypto_register_alg的注册流程
生活随笔
收集整理的這篇文章主要介紹了
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
哈希算法模塊初始化
- MD5算法模塊(md5.c)的初始化接口md5_mod_init實現(xiàn)向加密框架注冊MD5算法的功能,如下所示。?
- md5.c - crypto/md5.c - Linux source code (v5.15.12) - Bootlin
靜態(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
- 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的注册流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pictureselector 图片路径
- 下一篇: linux 其他常用命令