【问题标题】:Linux AF_ALG Crypto API: algorithm nameLinux AF_ALG Crypto API:算法名称
【发布时间】:2017-11-22 15:07:21
【问题描述】:

我已经在内核驱动程序中注册了名为 my-cbc(aes) 的加密算法。它在 /proc/crypto 中列出。 但是,当我尝试通过 AF_ALG 使用它时,我会在绑定时得到 ENOENT,但是,如果我将内核空间和用户空间中的算法重命名为 cbc(aes),一切都会按预期工作并且我的算法会被调用。

struct sockaddr_alg sa = {
  .salg_family = AF_ALG,
  .salg_type = "skcipher",
  .salg_name = "cbc(aes)" // works
  .salg_name = "my-cbc(aes)" // does not work
};

在 /proc/crypto 中:

name         : my-cbc(aes)
driver       : my-cbc-aes-dcp
module       : mxs_dcp
priority     : 400
refcnt       : 1
selftest     : passed
internal     : no
type         : ablkcipher
async        : yes
blocksize    : 16
min keysize  : 16
max keysize  : 32
ivsize       : 16
geniv        : <default>

但我不想隐藏与我同名的现有 AES 实现。 AF_ALG中算法命名有什么限制吗?

【问题讨论】:

    标签: linux linux-kernel cryptography


    【解决方案1】:

    似乎内核找到了我的算法实现,但随后尝试找到另一个同名的实现,尽管我在注册元信息中删除了 CRYPTO_ALG_NEED_FALLBACK 标志。但是在内核源代码检查期间,我发现我可以将驱动程序名称 (my-cbc-aes-dcp) 指定为 salg_name 而不仅仅是名称,所以我将我的算法重新命名为 cbc(aes),降低它的优先级并选择它通过驱动程序名称。

    【讨论】:

      猜你喜欢
      • 2021-10-16
      • 1970-01-01
      • 2021-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-16
      • 1970-01-01
      • 2012-04-26
      相关资源
      最近更新 更多