使用带有openssl的CAPI引擎

时间:2016-01-17 12:39:31

标签: openssl cryptoapi

要动态加载capi引擎,请使用以下代码:

chown -R www-data:www-data /home/aaron/dev/apwd-flask/app/static/

在我检查调试时,EVP_PKEY *key = NULL; ENGINE_load_builtin_engines(); ENGINE *engine = ENGINE_by_id("dynamic"); ENGINE_ctrl_cmd_string(engine, "SO_PATH", "./capi.dll", 0); ENGINE_ctrl_cmd_string(engine, "LOAD", NULL, 0); ENGINE_init(engine); 失败了。那可能是什么原因呢?

我没有使用ENGINE_ctrl_cmd_string(engine, "LOAD", NULL, 0)构建openssl,我使用的是openssl附带的默认capi。 我应该在openssl.cfg文件中启用capi的情况下再次构建openssl,还是我还有其他错误?

3 个答案:

答案 0 :(得分:0)

我在命令行上使用android:background="@color/colorPrimary"/>基本上遇到了同样的问题:

capi.dll

经过大量的反复试验,我发现我使用的DLL是假的!它基本上包含一个始终返回0的bind_engine函数(这意味着失败)。使用在Windows下本机编译的CAPI DLL,它可以工作。

答案 1 :(得分:0)

引擎加载可能失败的另一个(相当模糊的)原因是库本身需要另一个未找到的库。在这种情况下,只需获取通用No such file or directory错误(尽管库的路径,例如./capi.dll)是正确的。

要检查这是否是问题,请尝试

ldd ./capi.dll

cygcheck ./capi.dll

如果是,请将缺少的库依赖项(例如libeay32.dll)复制到当前目录。

答案 2 :(得分:-1)

我花时间试图找到capi.dll只是意识到它已经编译成Windows openssl组件。

从命令行:

openssl engine capi