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