我试着用制作简单的内核模块。
我从https://www.kernel.org/doc/html/v4.17/crypto/api-samples.html (对称密钥密码操作的代码示例)获得了这个例子。
我的问题是变量“划痕”(输入日期)在启动之前和之后都是相同的值。
此外,bracnh从未被使用过:
if (rc)
pr_info("skcipher encrypt returned with result %d\n", rc);我肯定做错什么了?
发布于 2019-09-21 19:46:20
关于问题的第一部分:
我的问题是变量“划痕”(输入日期)在启动之前和之后都是相同的值。
由于您正试图通过传递与目标相同的散射/聚集列表来对本地进行加密,因此这是一个问题。它们不应该是一样的。
要调试,可以:
/proc/crypto文件中看到,您有__cbc-aes-aesni。您可能需要尝试这一点和其他方法,以测试模块的逻辑。/dev/crypto)进行加密。它通过使用加密设备测试和检查dmesg,使调试变得更加容易。将enable_stats=1添加到模块选项也有帮助。当您的应用程序在用户空间上稳定时,就由您返回内核。第二部分:
此外,bracnh从未被使用过: 如果(rc) pr_info("skcipher返回结果%d\n",rc);
我想说这不是问题。
按照代码序列(引用与文档链接相同的内核版本v4.17 ):
crypto_wait_req接受一个错误代码,在我们的例子中是由crypto_skcipher_encrypt()传递的。除非错误是-EBUSY或-EINPROGRESS,否则此错误代码将返回给rc,而零是完全正常的。crypto_skcipher_encrypt返回0;如果发生错误,则返回<0。既然您已经设置了一个键,那么应该返回0。__cbc-aes-aesni作为驱动程序。通过检查cbc_encrypt(),您可以看到零是成功时的返回值,在成功状态下skcipher_walk_done()的返回值就是证明。因此,预期在成功操作时不调用分支的行为。
https://stackoverflow.com/questions/58040517
复制相似问题