linux加密框架 crypto 算法管理 - 算法查找接口 crypto_alg_mod_lookup
參考鏈接
- Linux加密框架的算法管理(二)_家有一希的博客-CSDN博客
- linux加密框架 crypto 算法管理 - 算法查找接口 crypto_find_alg_CHYabc123456hh的博客-CSDN博客
函數介紹
- crypto_alg_mod_lookup函數輸入參數包括待查找的算法名name、算法類型type和算法類型屏蔽位mask,查找命中時返回查找到的算法alg,查找未命中時返回異常。
- api.c - crypto/api.c - Linux source code (v5.15.12) - Bootlin

crypto_alg_mod_lookup函數執行流程

- 1)crypto_alg_mod_lookup函數的基本邏輯為要么從算法管理鏈表已注冊的算法中查找到符合條件的算法,要么按照查找條件動態創建并注冊新的算法。從外部調用者角度看,這兩種情況都是查找命中。
- 2)外部應用使用的算法必須是經過正確性檢驗(即算法標志中已置CRYPTO_ALG_TESTED狀態位)的,因此在查找前更新待查找算法的算法類型type和算法類型屏蔽位mask,確保后續查找到的算法是經過正確性檢驗的、可用的算法。
- 3)算法查找流程由crypto_larval_lookup函數實現,其基本邏輯為要么從算法管理鏈表已注冊的算法中查找到符合條件的算法,要么按照查找條件創建與待查找算法同名的算法幼蟲。crypto_larval_lookup函數的返回值為通用算法說明alg,通過檢查其算法標志cra_flags的CRYPTO_ALG_LARVAL狀態位確認alg是否為算法幼蟲(由內聯函數crypto_is_larval實現)
- 如果想查找名為"md5"的哈希算法,查找返回的是MD5算法的通用算法說明md5_alg;如果想查找名為"hmac(md5)"的哈希算法,假設第一次使用該算法,算法管理鏈表中未注冊該算法,因此查找返回的是同名的算法幼蟲對應的通用算法說明。
- 4)如果查找到的是算法幼蟲,即當前線程創建的注冊用算法幼蟲,在加密通知鏈發布創建動態算法的通知,由專門的內核線程負責創建并注冊動態算法,算法查找線程調用crypto_larval_wait函數等待算法注冊完成,然后調用crypto_larval_kill函數清理注冊用算法幼蟲。
- 5)crypto_alg_mod_lookup函數中接口調用情況如下所示

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/446075.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446075.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446075.shtml
如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!