Linux AF_ALG加密API:算法名称

时间:2017-11-22 15:07:21

标签: linux linux-kernel cryptography

我在内核驱动程序中使用名称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中的算法命名是否有任何限制?

1 个答案:

答案 0 :(得分:0)

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