【问题标题】:How to use OpenSSL dll for UWP Apps如何为 UWP 应用程序使用 OpenSSL dll
【发布时间】:2019-08-20 00:00:33
【问题描述】:

我想使用 OpenSSL API 而不是来自 Windows.Security.Cryptogrpahy 的 API,原因如下链接所述:

AES Encryption Not Working Properly in UWP

我提到了许多 nuget 包,但都没有为 UWP 应用程序安装。例如:OpenSSL.Static.Uwp 说失败了

它不支持任何目标框架

我还提到了thisMSFT OpesSSL github 源代码。

我按照“INSTALL.WINUNIVERSAL”中的说明编译,但是如何在 UWP C# 应用程序中使用 dll libeay32.dll

我尝试将 dll 添加为内容,但在上述编译过程中我没有发布者和版本的信息,无法在清单中的 PackageDependency 中提供。我也无法在我的 C# UWP 应用程序中使用 LoadPackagedLibrary

如何获取与 C# UWP App 集成的 OpenSSL dll libeay32.dll。或者告诉任何安装成功的 nuget 库。

【问题讨论】:

  • 任何有任何解决方案或面临相同情况的人,请帮助

标签: uwp openssl nuget


【解决方案1】:

OpenSSL 是一个 C 库,它不能直接在 C# 中工作,因为 C# 是托管语言,但 C 是本机语言。由于 UWP 不允许 DllExport(据我所知),要实现这一点,您需要使用 C++/CX 或 C++/WinRT 语言编写 runtime component 库,并使用一个简单的顶级 API,您将使用直接 OpenSSL 调用从您的应用程序调用引擎盖。为了便于开始,我建议使用pimpl idiom。

现在,您知道如何将库链接到项目,让我们谈谈可用的选项。当然,您可以从可用的 MS fork 手动构建它(正如您已经做过的那样),您能够以这种方式获得的更高版本是 1.0.2,1.1.1 前段时间被放弃了。另一种方法是使用this nuget 包,它将构建适当的 OpenSSL 1.0.2,查看链接的 github 页面以获取更多信息,它基于相同的 MS repo。

正如您所见,没有“准备就绪”选项来获取最新的 OpenSSL 1.1.1,但您可以从官方主分支构建 UWP 兼容的 OpenSSL!由于that 拉取请求而成为可能,并且它已合并到主recently,好吧,只要它是OpenSSL 3.0.0,您仍然可以完全向后兼容1.1.1,尽管到目前为止还没有任何稳定的版本,所以使用与否完全取决于您。

【讨论】:

  • 感谢您的回复,但这是很久以前发布的,我已经使用 c++ WinRT 组件实现了这一点。经过大量的努力,我根据说明为通用平台构建了 ssl 库,并在我的 winrt 组件中使用了这些库。
  • 嘿@SiD 很高兴听到你解决了你的问题!即使您自己解决了问题,在这里发布答案也是一个好习惯:)无论如何,我相信它会帮助其他面临类似问题的人。
猜你喜欢
  • 2016-04-01
  • 2011-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多