【问题标题】:How to build OpenSSL for WP8?如何为 WP8 构建 OpenSSL?
【发布时间】:2013-06-20 01:36:27
【问题描述】:

如何为 WP8 构建 OpenSSL?

AFAIK,我们必须用winsock2.h 替换winsock.h,因为WP8 只支持winsock2.h。也许我们必须替换代码以针对 WP8 上的 WinRT 架构(线程池,...)

需要注意的是,我们必须将 OpenSSL 构建为 WP8 静态库,以便输出库可以被 WP8 运行时组件包装,对吧?

【问题讨论】:

  • 借助 Visual Studio 2013 Update 3,Microsoft 为 Windows Phone 和 Windows Store 应用程序启用了 WinSock 和 OpenSSL。您可以使用 WinSock API,因此可以使用许多流行的 OSS 库,例如 libcURL、libwebsockets、OpenSSL 等。更多信息请点击此处 - blogs.windows.com/buildingapps/2014/10/13/…
  • 也看看这个 - github.com/Microsoft/openssl

标签: windows-phone-8 windows-runtime openssl runtime winsock


【解决方案1】:

您可以在 github 上使用 Microsoft openssl fork,支持 windows phone 8.1/8.0 和 Windows Store 8.1,使用 windows 随机生成器解决每个平台上的熵,说明位于 INSTALL.WINAPP,有一个脚本位于在

ms\do_vsprojects.bat

您应该能够在根位置执行该脚本并打开 vsout\openssl.sln 以构建适用于不同 Windows 平台的 openssl 库。

分叉位于

https://github.com/microsoft/openssl

目前,这些更改正在与主要的 OpenSSL 源代码库集成。

【讨论】:

  • 好消息,现在我们可以使用这个解决方案了
【解决方案2】:

这是你要做的,去this link下载VSbuild,现在把它放到从OpenSSL网站下载的源文件中,文件夹结构应该是这样的:

  apps
  bugs
  certs
  .....
  vsbuild

完成后,打开解决方案,它应该升级到 VS12,将设置更改为 Windows Phone RT 构建,生成 DLL 不需要构建 *_lib*,所以更改其他项目,大部分更改您需要做的是 libeay32,不要编译 openssl 项目,忽略它,从构建 libeay32 开始,然后开始对代码,因为有一些我们在WinRT中没有的函数,你可以#ifdef他们出来,或者创建你自己的函数,

注意 rand_win.c 将函数更改为使用 rand_s#ifdef 大部分代码,这可能会破坏安全性,您必须自己测试一下

祝你好运!

【讨论】:

  • 是的,这行得通——它有点让人头疼,但它行得通。您可能想在某处添加一个空的 getenv() 函数,我编写了以下 RAND_poll 替换函数 - 不知道它是否做得好,所以不要先复制它而不先进行一点调查:int RAND_poll(void) { int i; unsigned char v; for (i=0; i<(ENTROPY_NEEDED*4); i++) { v = (unsigned char) (rand() % 256); RAND_add (&v, sizeof v, 1); v = 0; } return 1; } 另外两个 *_lib 项目就足够了,根本不需要使用 sln 中的其他 3 个项目。
  • 哦,我还需要定义 _WIN32_WINNT=_WIN32_WINNT_WIN8 来编译。
  • 在 WP8 项目中创建 NativeCrypto 的新实例时,我遵循了这些步骤并遇到了 FileNotFoundException 依赖问题。我错过了什么吗?
【解决方案3】:

这样,如果有人想构建新版本的 OpenSSL "1.0.1g" 来修复 Heartbleed 问题,您可以按照前面的步骤进行操作,如下所示变化:

我将文件夹include重命名为--include并新建一个名为include的文件夹,VS项目会负责复制信息,--包括如果你喜欢你可以删除它,当我构建项目时没有这个改变那里编译问题。

注意:我更改的包含文件夹是在根目录中找到的文件夹,而不是在 VSbuild

下找到的文件夹

享受

【讨论】:

    【解决方案4】:

    以下是针对 Windows Phone 8.1 以及其他平台的预编译 OpenSSL 库的下载:

    https://www.teskalabs.com/blog/openssl-binary-distribution-for-developers-static-library

    免责声明:我运行该网站。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-31
      • 2019-10-20
      • 2016-12-29
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 2017-09-20
      相关资源
      最近更新 更多