问题标签 [openssl-engine]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
openssl - Cavium 的 OPENSSL
Cavium 提供了一个已配置的 OPENSSL,以便在其硬件上获得更好的性能。它的使用必须通过加密操作卸载来降低 CPU 利用率。我想问一下我们是否可以在 Linux 操作系统(在 Cavium 硬件上)上安装 Cavium OPENSSL Toolkit,就像我们安装标准 OPENSSL 一样?或者,使用此 Cavium OPENSSL 的唯一方法是制作简单的执行应用程序/用户空间并将提供的 OPENSSL 用作 API。
请指导和分享有关 Cavium OPENSSL 的任何详细信息(自述文件、教程、链接等)。
问候
openssl - 如何使用 openssl 从 HSM 重新加载密钥?
我通过 pkcs11 openssl 引擎使用 HSM。
ENGINE_load_private_key()
用于加载要使用的键。它工作正常,除了在生成密钥对之后:
为 HSM 生成新的密钥对后,ENGINE_load_private_key()
仍返回旧密钥。
显然后来的调用ENGINE_load_private_key()
不会从 HSM 读取密钥。相反ENGINE_load_private_key()
,似乎返回了一些缓存值。
是否有某种方法可以强制 openssl 从 HSM 读取新密钥,而不返回 HSM 中不再存在的旧密钥?
这段代码用于解决问题:
结果:HSM 中的密钥确实发生了变化,但 openssl 仍返回旧密钥:
一些程序将使用 HSM 中的密钥对。并且这些程序还主动使用其他密钥对进行 TLS。因此,重新启动进程不是解决方案。
c - RSA 加密和 BSD cryptodev 引擎
我正在尝试使用 OpenSSL 在 linux 上运行的嵌入式系统上加密字符串。本系统采用imx6ul微处理器。它包含一个硬件加密引擎。
当我在代码中调用 RSA_public_encrypt() 函数时,它会出错。
当我在嵌入式系统启动时删除加载的cryptodev驱动程序然后运行程序时,它工作正常。但我需要 cryptodev 支持我系统中的其他操作。
这是我的代码
有没有办法指定 RSA_public_encrypt() 函数不使用 cryptodev 引擎?
c - RSA 引擎未使用 struct 中提到的功能
我是在 openssl 中制作引擎的新手。基本上我想实现一个 OpenSSL RSA 引擎,它使用我在加密和解密时提到的功能。我的引擎编译并加载,但它似乎没有使用我希望它用于加密和解密的功能。
我正在使用以下命令编译代码。
这里引擎加载但是当我尝试使用以下命令加密文本文件时
似乎它没有使用我在struct_rsa
. 它也没有给出printf
函数中的输出。
c - 从命令行测试自定义 openSSL 引擎
快速提问:如何验证我从命令行编写的自定义 openSSL 引擎的功能?
现在我正在关注这个很棒的教程,并且能够使用我的测试程序(源代码在这里,测试程序位于 test/wssha256engine_test.c)成功地运行引擎(它返回一个全为 2 的摘要值)。
但是,由于某些原因,我还想使用 openssl 命令行界面来练习我刚刚编写的引擎,并让它像在其他教程中一样计算随机字符串的摘要,只使用 sha256 而不是 md5。
但是当我尝试这样做时,引擎不会加载并导致错误告诉我我的摘要的 NID 不存在,而是使用标准算法对字符串进行哈希处理:
为什么我不能在命令行上使用我的引擎,但我可以创建一个 C 程序来加载它?以及如何使用我的引擎从命令行计算摘要?
注意:我可以从命令行加载引擎,只是不使用它。
macos - MAC Keychain 工具与 OpenSSL 的集成
我们已经访问了OpenSSL and Apple Keychain integration的链接,但没有找到任何关于引擎的信息。上面链接中提出的问题也太旧了。
到目前为止,这种类型的引擎是否有任何实现?
c - openssl 配置文件无法加载 RSA 引擎
好吧,我是 openssl 引擎的新手。我已经实现了一个 rsa 引擎。当我通过以下命令使用环境变量加载它时,它可以工作。
引擎的 C 代码是:
我在使用配置文件加载引擎时遇到问题。在openssl.conf
文件中我添加了这个:
我在配置文件中添加了这些行但是当我尝试使用以下命令加密或解密时
我收到以下错误
c - BIO_set_fp() 在 Windows 上崩溃
我有以下 OpenSSL 代码:
在线BIO_set_fp(out, stdout, BIO_NOCLOSE);
程序存在错误 0x1。
我在 Windows 10 上使用 Visual Studio 2015。
ssl - OpenSSL RSA 引擎的正确实现:关于 rsa_meth_st 的问题
概述
我有一些关于在 openSSL 中实现rsa_meth_st
(又名 RSA_METHOD)的具体问题,但是在执行标准 RSA 操作时,我通常也对我的引擎在(或应该)被用户“钩住”的确切位置感到困惑。
背景
我正在尝试为自定义 RSA 硬件加速器开发引擎,并且对 RSA_METHOD 结构实现有一些疑问。
一些上下文:对于加密,我的加速器将基数、公共指数和模数作为输入,并返回结果密文。对于解密,它将基数和模数作为输入。它不需要私钥,因为它存储在硬件中,并且只能通过带外通道进行配置。我已经有一个内核模块,它向用户空间程序公开 API 以使用加速器。现在我只需要将它集成到 openSSL 中。
我已经为 AES 和 SHA256 创建了一个类似的引擎,但是我在 RSA 上苦苦挣扎。理想情况下,除了对预先填充和准备好的数据块执行模幂运算之外,我不必担心其他任何事情。对于 SHA 和 AES,这很简单:所有这些都由 EVP 接口处理,所以我只需要担心将数据传入和传出加速器。但是对于 RSA 来说似乎并不那么简单(如果我错了,请纠正我)。
我的具体问题
我对我的引擎需要实现哪些 RSA_METHOD 函数指针感到困惑。我显示下面的结构以供参考:
所以,三个问题:
- 标准 OpenSSL RSA 实现是否可以使用我的引擎的“模幂”函数,而不必重写
RSA_[public|private]_[encrypt|decrypt]
/include/openssl/rsa.h 中的函数系列? - 如果是这样,只实现 rsa_mod_exp 函数就足够了吗?还是我必须同时实现 public_enc/dec 和 private_enc/dec 函数?我问,因为旧英特尔 RSAX 引擎的源代码执行此操作,但我无法弄清楚在“RSA 流”中如何以及何时调用引擎的函数。
在 /include/openssl/rsa.h 中,我看到了 RSA_METHOD 标志字段的以下宏(第 61 行):
- 这是否意味着如果我在 RSA_METHOD 的“标志”字段中使用此标志,我不需要实现 rsa_pub_enc/dec 和朋友?我想我只是对在 RSA 加密/解密过程中应该在什么时候调用我的引擎感到困惑。
任何智慧之言将不胜感激。
openssl - 链接到 OpenSSL 函数中的 ENGINE_load_private_key
我正在为我的应用程序开发一个示例 OpenSSL 引擎。
我构建了这个 openssl 引擎(sample.so)并共享了我放入 /usr/lib/x86_64-linu-gnu/openssl-1.0.0/engines/ 的库
我创建了一个示例应用程序 sampleTest.c
我运行这个示例应用程序,输出:
在engine_init
为什么不调用 load_key 函数?谁能帮我从我的应用程序链接到 load_key 函数?