參考鏈接
- Linux加密框架的算法管理(一)_家有一希的博客-CSDN博客_linux加密框架設計與實現
- shash.c - crypto/shash.c - Linux source code (v5.15.12) - Bootlin
函數介紹
- crypto_register_shash函數實現向加密框架注冊靜態哈希算法的功能,輸入參數為待注冊哈希算法的哈希算法說明alg,返回值為0表示注冊成功,否則表示注冊過程中出現異常。
執行流程
?函數詳解
- 函數shash_prepare_alg實現哈希算法說明alg的有效性(包括摘要長度、描述符長度和上下文空間大小等)檢查和注冊前的準備工作(主要是統一設置部分成員變量值)。
- 以MD5算法的哈希算法說明md5_salg在注冊前后各成員變量變化情況如下所示。
- 函數shash_prepare_alg中最重要的一點是設置了通用算法說明中的成員變量cra_type,(這一步具體是在 shash_prepare_alg函數中設定的)設置為crypto_shash_type,這樣外部應用就可以訪問到已注冊的哈希算法了。
- shash.c - crypto/shash.c - Linux source code (v5.15.11) - Bootlin
- 2)準備工作完成后,靜態哈希算法的注冊流程也是由靜態算法注冊函數crypto_register_alg完成,注意的是crypto_register_shash函數的輸入參數為哈希算法說明alg,而調用crypto_register_alg函數時的輸入參數為哈希算法說明對應的通用算法說明base(=&alg->base)。
- 3)crypto_register_shash函數中接口調用情況如下所示,其中salg為待注冊哈希算法的同步哈希算法說明,alg為待注冊哈希算法的通用算法說明。?
- ?4)MD5算法注冊成功后,算法管理鏈表上已注冊算法情況如下所示。