Linux 内核模块与SSL

Linux 内核模块与SSL,linux,linux-kernel,openssl,kernel-module,Linux,Linux Kernel,Openssl,Kernel Module,目前,我正在研究ccn lite()的内核模块。 为此,我需要一些安全功能(sha1和公钥/私钥身份验证)。 对于用户空间,我使用openssl库,但不能在内核模块中使用库 从OpenSSL中挑选函数并将其添加到内核模块也很困难,因为它们大多数都依赖于libc linux内核中有我可以使用的安全功能吗 编辑: 我可以计算通过以太网接收的数据的哈希函数: struct scatterlist sg[1]; struct crypto_hash *tfm; struct hash_desc desc

目前,我正在研究ccn lite()的内核模块。 为此,我需要一些安全功能(sha1和公钥/私钥身份验证)。 对于用户空间,我使用openssl库,但不能在内核模块中使用库

从OpenSSL中挑选函数并将其添加到内核模块也很困难,因为它们大多数都依赖于libc

linux内核中有我可以使用的安全功能吗

编辑: 我可以计算通过以太网接收的数据的哈希函数:

struct scatterlist sg[1];
struct crypto_hash *tfm;
struct hash_desc desc;

tfm = crypto_alloc_hash("sha1", 0, CRYPTO_ALG_ASYNC);

desc.tfm = tfm;
desc.flags = 0;

crypto_hash_init(&desc);
sg_init_table(sg, ARRAY_SIZE(sg));
sg_set_buf(&sg[0], input, length);

crypto_hash_digest(&desc, sg, length, md);

crypto_free_hash(tfm);
现在我想使用函数digsig_verify来验证数据的签名字段

verified = digsig_verify(keyring, sig, sig_len, md, md_len);
就我所见,第二个参数是签名,第三个是签名的len,第四个是数据的散列,最后一个是散列的长度

第一个字段的类型为“struct key”,并且应该包含公钥,这是验证签名所必需的

如何初始化此参数,即如何获取系统公钥?
在linux内核中是否还有一种对字符*进行签名的方法?

linux内核附带了一系列加密函数


请参阅:

您可以使用类似ipc的netlink将数据从内核发送到用户空间,并让用户空间openssl执行安全实现并将数据还原回内核。

什么内核?对于linux:谢谢,我想这就是我想要的!好的,我回答了。