【问题标题】:Use Kernel functions in userspace在用户空间中使用内核函数
【发布时间】:2015-08-27 14:18:39
【问题描述】:

我目前正在尝试使用

的功能
/usr/src/linux/crypto/aes_generic.c 

在用户空间程序中 我想对分配的内存进行编码,并使用上述文件的 ecnrypt 函数。

如何在用户空间程序中使用这些内核函数?

我尝试在我的用户空间程序中包含所需的内核头文件

-I /usr/src/linux/include/

但是我得到了 asm/irqflags.h, file or directory not found 的错误。

这里是包含

#include <asm-generic/irqflags.h> 

我没有 asm 目录,并且其他两个带有上述错误的标头被包含在 asm-generic 作为目录中

提前致谢

【问题讨论】:

  • 内核函数通常不能不费力气就编译到用户空间程序中。您可能会将其源代码复制到您的项目中并根据需要进行调整,从而使任务变得更加容易。

标签: c++ kernel


【解决方案1】:

User-space interface for Crypto API。所以你可以使用 AF_ALG 接口来访问内核加密 API(Linux 内核 2.6.38 版本之后)。

以下是cryptsetup 源代码中的一些工作示例。

【讨论】:

    【解决方案2】:

    Cryptodev-linux module 允许您通过/dev/crypto 从用户空间访问 Linux 内核加密驱动程序。可以找到示例,例如here。优点是您可以从它可能使用的硬件加速中受益。

    否则,您需要使用 AES 库的众多衍生工具之一来链接您的用户应用程序。列表见here

    【讨论】:

      猜你喜欢
      • 2011-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多