我正在寻找一种从用户空间调用Linux内核密码API的方法,用于RSA加密/解密。RSA函数是在linux内核上实现的。
目前,我找到了从用户空间调用crypto的两种方法:
不幸的是,加密设备不支持RSA这样的非对称算法。
如果AF_ALG像RSA那样支持密码,我就不放心了。cat /proc/crypto的结果是:
...
name : rsa
driver : rsa-generic
module : kernel
priority : 100
refcnt : 1
selftest : passed
internal : no
type : akcipher但是,我尝试将AF_ALG套接字绑定到:
int sockfd = socket(AF_ALG, SOCK_SEQPACKET, 0);
struct sockaddr_alg sa = {
.salg_family = AF_ALG,
.salg_type = "akcipher",
.salg_name = "rsa"
};绑定与***ERROR : bind socket failed (2) : No such file or directory失败。
我错过了什么吗?还有其他方法从用户空间调用加密API吗?
发布于 2019-08-05 13:37:23
从文件中:
内核密码API可以从用户空间访问。目前,可使用下列密码:
这意味着,akcipher密码系列在用户空间中不可用,因此绑定到它的ENOENT失败。事实上,与linux内核源代码的检查表明,不存在algif_akcipher.c,其中将实现akcipher系列的用户空间接口。
https://stackoverflow.com/questions/57359394
复制相似问题