0

我正在使用内核 raspberrypi 5.10.17-v7l+ 的 Raspberry Pi 4 硬件平台上的 libkcapi 从用户空间使用 Linux Kernel Crypto API。我正在使用在 LKCF 中​​注册并在用户空间中可用的 cmac(aes) 算法:

#more /proc/crypto
name         : cmac(aes)
driver       : cmac(aes-generic)
module       : cmac
priority     : 100
refcnt       : 2
selftest     : passed
internal     : no
type         : shash
blocksize    : 16
digestsize   : 16

一切正常,但我必须在 initramfs 中使用这个应用程序的一部分。所以我构建了 initramfs,添加了下面列出的内核模块(有很多不必要的,但我试图通过添加更多模块来让事情正常工作):

aes-generic
seqiv
echainiv
crypto_user
cmac
xcbc
sha256_generic
ctr
ccm
cryptd
authenc
ghash-generic
af_alg
algif_hash
algif_skcipher
algif_aead
ecc
ecdh_generic

并确认上面的模块是通过lsmod命令加载到initramfs中的。问题是在 initramfs 中 /proc/crypto 中没有 cmac(aes) 条目,因此使用此 LKCF API 失败,并在套接字绑定时出错。我的问题是为什么在正常启动中 API 可用而 initramfs 中不可用。?我怎样才能让它在 initramfs 中工作?我厌倦了用 aes_arm 模块代替 aes-generic 没有运气。

  1. 我想以与上述相同的方式在用户空间中使用 hmac(sha256) 算法。我在 /proc/crypto 中没有看到这个算法,所以我决定用适当的模块重新编译内核。但是 HMAC 默认编译到内核中。无论如何,我使用所需的配置构建内核,使用它运行系统(更改内核名称并通过 uname 检查),但在 /proc/crypto 中没有找到 hmac(sha256) 算法。查看内核源代码,我看到外部硬件加速器正在导出此算法,但默认情况下,软件实现对用户空间不可用。有没有机会在用户空间中通过 LKCF 使用 hmac(sha256) 而无需编写自己的实现来导出可用的实现?
4

0 回答 0