gpt4 book ai didi

c - Linux 内核加密 API

转载 作者:太空宇宙 更新时间:2023-11-04 04:10:37 26 4
gpt4 key购买 nike

我尝试使用 Linux Kernel Crypto API 制作简单的内核模块。
我从https://www.kernel.org/doc/html/v4.17/crypto/api-samples.html得到了例子(对称 key 密码操作的代码示例)

我的问题是变量“scratchpad”(输入日期)在启动前后是相同的值。
也从未使用过bracnh:

if (rc)
pr_info("skcipher encrypt returned with result %d\n", rc);

我肯定做错了什么?

最佳答案

关于问题的第一部分:

My problem is variable "scratchpad" (Input date) is the same value before and after launching it.

由于您试图通过将相同的分散/聚集列表作为目标传递来就地加密,所以这是一个问题。它们不应该相同。

要调试,您可以:

  1. 尝试其他算法。我从你的 /proc/crypto 文件中看到你有 __cbc-aes-aesni。您可能想尝试这个和其他人,以测试您的模块的逻辑。
  2. 从用户空间 (/dev/crypto) 尝试 cryptodev。通过使用 cryptodev tests,它使调试变得更加容易并检查 dmesg。添加 enable_stats=1 到模块选项也有帮助。当您的应用程序在用户空间稳定后,是否返回内核取决于您。

第二部分:

Also bracnh is never used:

if (rc)
pr_info("skcipher encrypt returned with result %d\n", rc);

我会说这不是问题。

按照代码序列(引用与您的文档链接相同的内核版本 v4.17):

  1. crypto_wait_req接受一个错误代码,在我们的例子中由 crypto_skcipher_encrypt() 传递。除非错误是-EBUSY-EINPROGRESS,否则此错误代码将返回到rc,零是完全正常的。
  2. 反过来,crypto_skcipher_encrypt如果密码操作成功则返回 0; < 0 如果发生错误。由于您设置了 key ,因此应返回 0。
  3. 我将引用 Intel 的 __cbc-aes-aesni 作为驱动程序。检查cbc_encrypt() ,你可以看到零是成功的返回值,如 skcipher_walk_done() 的返回值所示。处于成功状态。

因此,不调用分支是成功操作的预期行为。

关于c - Linux 内核加密 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58040517/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com