linux内核hmac-sha1使用

原创 2013年12月05日 21:14:30

最近开发IPSec模块时,需要用到内核中hmac-sha1算法下面为hmac-sha1的简单使用方式

#include <linux/crypto.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <crypto/hash.h>
#include <linux/scatterlist.h>

static void hexdump(char *data, int len)
{
	int i = 0;
	for(; i < len; i++){
		if((len % 16) == 0)
			printk("\n");
		printk("%2x ", data[i]);
	}	
	printk("\n");
}

static int __init hmac_sha1(void) 
{
	struct crypto_hash  *hash;
	struct hash_desc *desc;

	char key[20];
	struct scatterlist sg;
	char data[100];
	char digest[20];

	memset(data, 0 ,100);
	memset(key, 0 ,20);
		
	hash = crypto_alloc_hash("hmac(sha1)", 0, CRYPTO_ALG_ASYNC);

	if(IS_ERR(hash)){
		printk(KERN_INFO "Can't alloc hmac\n");
		return -2;
	}

	desc->tfm = hash;
	desc->flags = 0;

	if(crypto_hash_setkey(hash, key, 20)){
		printk(KERN_INFO "crypto_hash_setkey()\n");
		return -1;
	}	

	if((crypto_hash_init(desc))){
		printk("crypto_hash_init failed\n");
		return -1;
	}

	sg_init_table(&sg, 1);
	sg_set_buf(&sg, data, sizeof(data));

	if (crypto_hash_update(desc, &sg, sizeof(data))){
		printk(KERN_INFO "crypto_hash_update()\n");
		return -1;
	}

	if((crypto_hash_final(desc, digest))){
		printk("crypto_hash_final\n");
		return -1;
	}

	hexdump(digest, 20);
}

static void __exit hmac_sha1_exit(void)
{
	printk("hmac_exit\n");
}

module_init(hmac_sha1);
module_exit(hmac_sha1_exit);

MODULE_LICENSE("GPL");

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

hmac-sha1加密算法C源码示例

HMAC: Hash-based Message Authentication Code,即基于Hash的消息鉴别码 在各大开放平台大行其道的互联网开发潮流中,调用各平台的API接口过程中,无一例外...
  • tao_627
  • tao_627
  • 2015年07月01日 17:23
  • 4970

HMAC-SHA1各语言版本实现

在各大开放平台大行其道的互联网开发潮流中,调用各平台的API接口过程中,无一例外都会用到计算签名值(sig值)。而在各种计算签名的方法中,经常被采用的就是HMAC-SHA1,现对HMAC-SHA1做一...

linux下HMAC函数

#include #include #include #include #include"string.h" #include unsigned char...

shell脚本标准输出赋值给变量

方案一: #!/bin/bash string="hello world!" result=$(echo $string) echo $result 方案二: #!/bin/bash st...

Linux内核中的IPSEC实现(4)

Java代码   6. XFRM的其他操作      6.1 HASH处理      关于HASH值的计算方法主要在net/xfrm/xfrm_hash.h中定义:   // ...

Linux块设备加密之dm-crypt分析

相关的分析工作一年前就做完了,一直懒得写下来。现在觉得还是写下来,以来怕自己忘记了,二来可以给大家分享一下自己的研究经验。 这篇文章算是《Device Mapper代码分析》的后续篇,因为dm-...

hmac使用sha1

SHELL python hmac.new(hmackey,str,hashlib.sha1).digest().encode('base64').rstrip() 需要Import hmac,...

hmac_sha1.c源码, C语言中的HMAC_SHA1加密方法

/****************************************************************/ /* 802.11i HMAC-SHA-1 Test Code ...
  • yanzhibo
  • yanzhibo
  • 2013年01月05日 16:48
  • 12675

AES加密解密Windows下跟linux下结果不同的解决方案

AES加密解密Windows下跟linux下结果不同的解决方案

HMAC-SHA1 签名demo

  • 2016年02月20日 21:22
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux内核hmac-sha1使用
举报原因:
原因补充:

(最多只允许输入30个字)