在文件中使用Linux内核中的Crypto API

时间:2011-11-08 22:01:41

标签: linux-kernel cryptoapi

我一直在尝试在linux内核中使用crypto api,我需要做的是打开一个正在打开的文件。我正在使用LSM来捕获那些文件打开。

到目前为止,我正在使用

创建一个struct crypto_shash
struct crypto_shash *tfm;
struct shash_desc desc;
tfm = crypto_alloc_shash("sha1", 0, CRYPTO_ALG_ASYNC);

我假设我应该在使用

后启动它
desc.tfm = tfm;
desc.flags = 0;

err = crypto_shash_init(&desc);

一切正常,但我想用

crypto_shash_digest(&desc, ??, ??, sha_hash);

我意识到它希望将散点列表作为其第二个参数,并将散点列表的长度作为第三个参数。我无法弄清楚我应该如何将文件加载到散点列表中,以便将其提供给加密系统。

我已经完成了相当多的阅读,但到目前为止还无法找到有关将文件内容加载到散点列表中的任何细节。所以任何正确方向的指针都会受到赞赏。

由于

1 个答案:

答案 0 :(得分:2)

前段时间我做过类似的事。唯一的区别是我计算了ELF部分的哈希值。

  1. 可能你的desc.flags应该是CRYPTO_TFM_REQ_MAY_SLEEP,直到你有充分的理由阻止加密操作被阻止。
  2. 您确定没有将crypto_shash_digestcrypto_hash_digest混淆吗?因为crypto _ * s * hash_digest()接收一个指向数据的指针作为其第三个参数。如果你不对,你在说什么linux kenrel版本?