首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从用户空间使用Linux密码API实现RSA

问从用户空间使用Linux密码API实现RSA
EN

Stack Overflow用户
提问于 2019-08-05 13:14:43
回答 1查看 1.1K关注 0票数 1

我正在寻找一种从用户空间调用Linux内核密码API的方法,用于RSA加密/解密。RSA函数是在linux内核上实现的。

目前,我找到了从用户空间调用crypto的两种方法:

不幸的是,加密设备不支持RSA这样的非对称算法。

如果AF_ALG像RSA那样支持密码,我就不放心了。cat /proc/crypto的结果是:

代码语言:javascript
复制
...
name         : rsa
driver       : rsa-generic
module       : kernel
priority     : 100
refcnt       : 1
selftest     : passed
internal     : no
type         : akcipher

但是,我尝试将AF_ALG套接字绑定到:

代码语言:javascript
复制
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吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-05 13:37:23

从文件中:

内核密码API可以从用户空间访问。目前,可使用下列密码:

  • 消息摘要,包括键控消息摘要(HMAC,CMAC)
  • 对称密码
  • AEAD密码
  • 随机数发生器

这意味着,akcipher密码系列在用户空间中不可用,因此绑定到它的ENOENT失败。事实上,与linux内核源代码的检查表明,不存在algif_akcipher.c,其中将实现akcipher系列的用户空间接口。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57359394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档