Linux加密框架 crypto算法模板 以及HMAC算法模板實例

HMAC算法模板實例

  • HMAC算法模板的創建實例的接口是hmac_create函數
  • hmac.c - crypto/hmac.c - Linux source code (v5.15.11) - Bootlin? hmac_create
  • 輸入的參數包括? 算法模板 tmpl? 和? 算法模板實例參數? tb
  • hmac_cretae函數返回的結果為0表示算法模板實例已經創建注冊
  • 算法模板 tmpl
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];
};
  • 算法模板實例參數? tb 顯示如下
struct rtattr {unsigned short	rta_len;unsigned short	rta_type;
};
  • ?hmac_cretae函數顯示如下
static int hmac_create(struct crypto_template *tmpl, struct rtattr **tb)
{struct shash_instance *inst;struct crypto_shash_spawn *spawn;struct crypto_alg *alg;struct shash_alg *salg;u32 mask;int err;int ds;int ss;err = crypto_check_attr_type(tb, CRYPTO_ALG_TYPE_SHASH, &mask);if (err)return err;inst = kzalloc(sizeof(*inst) + sizeof(*spawn), GFP_KERNEL);if (!inst)return -ENOMEM;spawn = shash_instance_ctx(inst);err = crypto_grab_shash(spawn, shash_crypto_instance(inst),crypto_attr_alg_name(tb[1]), 0, mask);if (err)goto err_free_inst;salg = crypto_spawn_shash_alg(spawn);alg = &salg->base;/* The underlying hash algorithm must not require a key */err = -EINVAL;if (crypto_shash_alg_needs_key(salg))goto err_free_inst;ds = salg->digestsize;ss = salg->statesize;if (ds > alg->cra_blocksize ||ss < alg->cra_blocksize)goto err_free_inst;err = crypto_inst_setname(shash_crypto_instance(inst), tmpl->name, alg);if (err)goto err_free_inst;inst->alg.base.cra_priority = alg->cra_priority;inst->alg.base.cra_blocksize = alg->cra_blocksize;inst->alg.base.cra_alignmask = alg->cra_alignmask;ss = ALIGN(ss, alg->cra_alignmask + 1);inst->alg.digestsize = ds;inst->alg.statesize = ss;inst->alg.base.cra_ctxsize = sizeof(struct hmac_ctx) +ALIGN(ss * 2, crypto_tfm_ctx_alignment());inst->alg.init = hmac_init;inst->alg.update = hmac_update;inst->alg.final = hmac_final;inst->alg.finup = hmac_finup;inst->alg.export = hmac_export;inst->alg.import = hmac_import;inst->alg.setkey = hmac_setkey;inst->alg.init_tfm = hmac_init_tfm;inst->alg.exit_tfm = hmac_exit_tfm;inst->free = shash_free_singlespawn_instance;err = shash_register_instance(tmpl, inst);if (err) {
err_free_inst:shash_free_singlespawn_instance(inst);}return err;
}

hmac_create函數創建并且注冊的流程如下圖所示?

創建并注冊HMAC模板實例

hmac_create函數的調用流程?

?

參考鏈接

  • ?Linux加密框架中的主要數據結構(四)_家有一希的博客-CSDN博客

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/446085.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446085.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446085.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python判斷密碼強度并輸出_密碼強度判斷

[python]代碼庫def pdsz(cd):nnnn Falsefor c in cd:if c.isnumeric():nnnn Truebreakreturn nnnndef pdzm(cd):nnnn Falsefor c in cd:if c.isupper():nnnn Truebreakreturn nnnndef pdhh(cd):nnnn Falsefor c in cd:if c.islower():nnnn Truebreakreturn nnnndef main(…

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

算法注冊流程 靜態算法模塊初始化 分組算法模塊初始化 AES算法模塊&#xff08;aes_generic.c&#xff09;的初始化接口aes_init實現向加密框架注冊AES算法的功能&#xff0c;如下所示。aes_generic.c - crypto/aes_generic.c - Linux source code (v5.15.12) - Bootlin sta…

python 方法的實例_python調用自定義函數的實例操作

在python中&#xff0c;想要調用自定義函數必須先聲明&#xff0c;然后才能調用。使用函數時&#xff0c;只要按照函數定義的形式&#xff0c;向函數傳遞必需的參數&#xff0c;就可以調用函數完成相應的功能或者獲得函數返回的處理結果。(1)聲明函數python中使用 def 可以聲明…

linux加密框架 crypto 靜態哈希算法crypto_register_shash注冊流程

參考鏈接 Linux加密框架的算法管理&#xff08;一&#xff09;_家有一希的博客-CSDN博客_linux加密框架設計與實現shash.c - crypto/shash.c - Linux source code (v5.15.12) - Bootlin 函數介紹 crypto_register_shash函數實現向加密框架注冊靜態哈希算法的功能&#xff0c;…

多個線程訪問統一對象的不同方法_C#多線程讀寫同一文件處理

在多線程訪問讀寫同一個文件時&#xff0c;經常遇到異常&#xff1a;“文件正在由另一進程使用&#xff0c;因此該進程無法訪問此文件”。多線程訪問統一資源的異常&#xff0c;解決方案1&#xff0c;保證讀寫操作單線程執行&#xff0c;可以使用lock解決方案2&#xff0c;使用…

linux加密框架 crypto 通用算法注冊接口__crypto_register_alg注冊流程

函數介紹 __crypto_register_alg函數實現向加密框架注冊算法&#xff08;包括靜態算法和動態算法&#xff09;的功能&#xff0c;輸入參數為算法說明alg&#xff0c;注冊成功時返回算法注冊用的算法幼蟲larval&#xff0c;注冊失敗時返回失敗原因。__crypto_register_alg函數執…

spark官方文檔_Spark整合Ray思路漫談

什么是Ray之前花了大概兩到三天把Ray相關的論文&#xff0c;官網文檔看了一遍&#xff0c;同時特意去找了一些中文資料看Ray當前在國內的發展情況(以及目前國內大部分人對Ray的認知程度)。先來簡單介紹下我對Ray的認知。首先基因很重要&#xff0c;所以我們先需要探查下Ray最初…

python用http協議傳數據_python基礎 -- 簡單實現HTTP協議

標簽&#xff1a;一、直接代碼# -*- coding: utf-8 -*-import socket__author__ ‘lpe234‘__date__ ‘2015-03-12‘if __name__ ‘__main__‘:sock socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.bind((‘127.0.0.1‘, 8001))sock.listen(5)while True:connecti…

linux加密框架 crypto 算法管理 - 算法查找接口 crypto_find_alg

算法查找接口crypto_find_alg 算法實例tfm是算法的一個可運行的副本&#xff0c;因此在創建算法實例前首先要查找確認算法是否已經注冊有效&#xff0c;此時算法查找由函數crypto_find_alg實現。補充&#xff1a; struct crypto_tfm *tfm; crypto_tfm類型指針tfm可以理解為指代…

linux加密框架 crypto 算法管理 - 算法查找接口 crypto_alg_mod_lookup

參考鏈接 Linux加密框架的算法管理&#xff08;二&#xff09;_家有一希的博客-CSDN博客linux加密框架 crypto 算法管理 - 算法查找接口 crypto_find_alg_CHYabc123456hh的博客-CSDN博客 函數介紹 crypto_alg_mod_lookup函數輸入參數包括待查找的算法名name、算法類型type和算…

qt triggered信號_Qt之網絡編程UDP通信

點擊上方“Qt學視覺”&#xff0c;選擇“星標”公眾號重磅干貨&#xff0c;第一時間送達想要學習的同學們還請認真閱讀每篇文章&#xff0c;相信你一定會有所收獲UDP通信概述UDP(UserDatagramProtocol&#xff0c;用戶數據報協議)是輕量的、不可靠的、面向數據報(datagram)、無…

adguard沒有核心 core no_面試官:線程池如何按照core、max、queue的執行順序去執行?...

前言這是一個真實的面試題。前幾天一個朋友在群里分享了他剛剛面試候選者時問的問題&#xff1a;"線程池如何按照core、max、queue的執行循序去執行&#xff1f;"。我們都知道線程池中代碼執行順序是&#xff1a;corePool->workQueue->maxPool&#xff0c;源碼…

linux加密框架 crypto 算法管理 - 算法查找接口 crypto_larval_lookup

參考鏈接 Linux加密框架的算法管理&#xff08;二&#xff09;_家有一希的博客-CSDN博客 crypto_larval_lookup函數介紹 crypto_larval_lookup函數的輸入參數包括待查找的算法名name、算法類型type和算法類型屏蔽位mask&#xff0c;查找命中時返回查找到的算法或注冊用算法幼…

python ssh 遠程登錄路由器執行命令_ssh批量登錄并執行命令(python實現)

局域網內有一百多臺電腦&#xff0c;全部都是linux操作系統&#xff0c;所有電腦配置相同&#xff0c;系統完全相同(包括用戶名和密碼)&#xff0c;ip地址是自動分配的。現在有個任務是在這些電腦上執行某些命令&#xff0c;者說進行某些操作&#xff0c;比如安裝某些軟件&…

linux加密框架 crypto 算法管理 - 算法查找接口 crypto_alg_lookup函數

參考鏈接 Linux加密框架的算法管理&#xff08;二&#xff09;_家有一希的博客-CSDN博客 函數介紹 static struct crypto_alg *crypto_alg_lookup(const char *name, u32 type,u32 mask) {struct crypto_alg *alg;u32 test 0;if (!((type | mask) & CRYPTO_ALG_TESTED))…

linux加密框架 crypto 算法管理 - 動態和靜態算法管理

參考鏈接 Linux加密框架的算法管理&#xff08;三&#xff09;_家有一希的博客-CSDN博客 動態和靜態算法管理 靜態算法 加密框架中的算法分為靜態算法和動態算法兩種&#xff0c;其中靜態算法指的是以"算法名.ko"形式存在的靜態編譯的算法模塊&#xff0c;如aes.k…

3分鐘入門python_3分鐘帶你了解世界第一語言Python 入門上手也這么簡單!

一、Python入門1. Python爬蟲入門一之綜述Python爬蟲入門二之爬蟲基礎了解Python爬蟲入門三之Urllib庫的基本使用Python爬蟲入門四之Urllib庫的高級用法Python爬蟲入門五之URLError異常處理Python爬蟲入門六之Cookie的使用Python爬蟲入門七之正則表達式Python爬蟲入門八之Beaut…

linux加密框架 crypto 算法管理 - 算法檢測

參考鏈接 Linux加密框架的算法管理&#xff08;四&#xff09;_家有一希的博客-CSDN博客 函數介紹 如前所述&#xff0c;無論是靜態算法還是動態算法&#xff0c;算法注冊的最后一步都是進行算法正確性檢驗&#xff0c;一般流程是先調用__crypto_register_alg函數進行通用的算…

select選中的值_selenium下拉框處理(select)

前言 web自動化中&#xff0c;常見的場景還有一個下拉框的選擇&#xff0c;哪么在selenium中如何做下拉框的操作呢&#xff1f;selectselect在HTML中表示元素名&#xff0c;可創建單選或多選菜單。HTML中select長什么樣子&#xff1a;select在HTML中元素名&#xff0c;下面有選…

linux加密框架 crypto 算法管理 - 創建哈希算法實例

crypto_alloc_ahash函數 加密框架中的哈希算法可以是同步方式實現的也可以是異步方式實現的&#xff0c;但是算法應用不關注哈希算法的實現方式&#xff0c;關注的是哈希算法提供的算法接口。為實現統一管理&#xff0c;加密框架默認哈希算法的實現方式為異步方式&#xff0c;…