Linux加密框架 crypto 算法模板
生活随笔
收集整理的這篇文章主要介紹了
Linux加密框架 crypto 算法模板
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
參考鏈接
- Linux加密框架中的主要數(shù)據(jù)結(jié)構(gòu)(三)_家有一希的博客-CSDN博客
- algapi.h - include/crypto/algapi.h - Linux source code (v5.15.11) - Bootlin
定義
struct crypto_template {struct list_head list;struct hlist_head instances;struct module *module;int (*create)(struct crypto_template *tmpl, struct rtattr **tb);char name[CRYPTO_MAX_ALG_NAME]; };crypto_template各成員變量含義
- 1)list:算法模板鏈表節(jié)點。
- 2)instance:算法模板實例哈希鏈表的頭節(jié)點。算法模板通過實例哈希鏈表管理由該模板創(chuàng)建的所有算法模板實例。
- 3)module:算法模板所屬的模塊,一般為THIS_MODULE,編譯時確定。
- 4)name:算法模板名,最多包含64個字符。
- 5)alloc:創(chuàng)建算法模板實例(struct crypto_instance)的接口,返回值為新創(chuàng)建的算法模板實例。創(chuàng)建完需要調(diào)用注冊接口完成算法模板實例注冊。? 刪除
- 6)free:算法模板實例的析構(gòu)函數(shù),用于釋放算法模板實例占用的內(nèi)存資源? ?刪除
- 7)create:創(chuàng)建算法模板實例的接口。與alloc接口不同,create接口不會顯式地創(chuàng)建一個算法模板實例(無論返回值還是輸出參數(shù)都不是struct crypto_instance類型),而是隱式地創(chuàng)建一個算法模板實例,同時將注冊新創(chuàng)建的算法模板實例? (源碼可知)。
- 一般情況下,分組算法模式的實例地創(chuàng)建接口為alloc接口,哈希算法模式的實例創(chuàng)建接口為create接口。
- 無論是通過alloc接口還是create接口創(chuàng)建算法模板實例,輸入?yún)?shù)tb為創(chuàng)建算法模板實例的相關(guān)參數(shù),至少包括算法類型及屏蔽位(tb[0])和基礎(chǔ)算法的算法名(tb[1])。每個參數(shù)都是TLV格式,類型T有CRYPTOA_TYPE(算法類型)、CRYPTOA_ALG(基礎(chǔ)算法名)、CRYPTOA_U32等多種類型,而每種類型的參數(shù)值不同,因此接口輸入?yún)?shù)tb的數(shù)據(jù)類型struct rtattr只包括rta_len和rta_type兩個成員變量,分別對應著TLV結(jié)構(gòu)的L和T,參數(shù)值數(shù)據(jù)結(jié)構(gòu)根據(jù)參數(shù)類型定義。
- ?參數(shù)類型為CRYPTOA_TYPE時,算法類型TLV結(jié)構(gòu)(即tb[0])如下所示,通過函數(shù)crypto_get_attr_type可以獲取算法類型和屏蔽位。
- algapi.c - crypto/algapi.c - Linux source code (v5.15.11) - Bootlin
- #define RTA_DATA(rta) ? ((void*)(((char*)(rta)) + RTA_LENGTH(0)))? ?返回空指針指向一個結(jié)構(gòu)體,第一個參數(shù)char*指向的是type,第二個參數(shù)int是mask屏蔽位
- #define RTA_LENGTH(len)?? ?(RTA_ALIGN(sizeof(struct rtattr)) + (len))
- ?參數(shù)類型為CRYPTOA_ALG時,基礎(chǔ)算法名TLV結(jié)構(gòu)(即tb[1])如下所示,通過函數(shù)crypto_attr_alg_name獲取基礎(chǔ)算法名
- algapi.c - crypto/algapi.c - Linux source code (v5.15.11) - Bootlin?
參考鏈接
- C/C++ struct初始化/復制/內(nèi)存分配技巧_wys的專欄-CSDN博客?
總結(jié)
以上是生活随笔為你收集整理的Linux加密框架 crypto 算法模板的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 操作GridFS
- 下一篇: linux 其他常用命令