簡體   English   中英

為WP8平台構建本機OpenSSL庫

[英]Build native OpenSSL library for WP8 Platform

我正在創建Windows phone 8應用程序。我需要創建使用已編譯的OpenSSL庫的App。我遵循標准的最新庫。

我正在按照INSTALL.W64步驟進行操作,因為我不知道要使用哪個。*因為我的機器是64位我更喜歡這個:

要為Win64 / x64構建:

1 perl配置VC-WIN64A
2 ms \\ do_win64a
3 nmake -f ms \\ ntdll.mak
4 cd out32dll
5 .. \\ ms \\ test

使用Visual Studio命令Prompt.Upto第2步很好。第3步它無法構建,也沒有在out32dll Folder中創建庫。它給出了如下錯誤:

C:\Program Files (x86)\Windows Phone Kits\8.0\include\windows.h(182) : fatal err
or C1083: Cannot open include file: 'winreg.h': No such file or directory
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 11.0
\VC\WPSDK\WP80\BIN\cl.EXE"' : return code '0x2'
Stop.

我的問題是: Windows Phone平台是否真的支持OpenSSL 。我看到是真/假我不確定。

除了這種標准方式,我還嘗試了這個解決方案。能夠完成在visual studio中編譯的answer.got構建中提到的步驟。在Windows Phone 8 Project.Compiled libeay32 OpenSSLWP8

但是當我嘗試創建引用NativeCrypto nc = new NativeCrypto()我在該庫中得到了FileNotFoundException 。我錯過了什么?

哪種解決方案更好,或者有任何其他解決方案可用,以便我可以為WP8構建OpenSSL

任何幫助表示贊賞。 謝謝。

我的問題是:Windows Phone平台是否真的支持OpenSSL。 我看到這是真/假我不確定。

不正式。

我知道其中一個OpenSSL開發人員定期為Windows 8構建OpenSSL。我也能夠為Windows 8構建。但是......

我有一堆Windows RT和Windows Phone的補丁。 這些補丁添加了三個新目標,並且它不使用VC-WIN64A 增加的目標是VC-WP8-X86VC-WP8-ARMVC-WINRT-ARM

我添加了兩個新的定義( OPENSSL_SYS_WINRTOPENSSL_SYS_WINPHONE ),所以很多這樣的事情繼續:

-#if defined(_WIN32) && !defined(__CYGWIN__)
+#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(OPENSSL_SYS_WINCE) &&
     !defined(OPENSSL_SYS_WINRT) && !defined(OPENSSL_SYS_WINPHONE)

cflags需要一些調整。 例如,這是來自Windows RT:

+    $base_cflags.= " /D WINAPI_FAMILY=WINAPI_PARTITION_APP";
+    $base_cflags.= " /FI SDKDDKVer.h /FI winapifamily.h";

和Windows Phone:

+    $base_cflags.= " /D WINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP";
+    $base_cflags.= " /AI\"$ENV{'WINDOWSMETADATA'}\"";
+    $base_cflags.= " /FI SDKDDKVer.h /FI winapifamily.h";

Windows RT目標嚴重癱瘓。 作為Windows RT上有多糟糕的一個例子:目標需要-DOPENSSL_NO_SOCK-DOPENSSL_NO_DGRAM因為不允許應用程序訪問socket API。 這使得它非常無用的SSL庫,因為TCP和UDP被毀壞了。

Windows Phone目標稍微好一些。 Windows Phone允許訪問socket API(因此TCP和UDP可用),但隨機數生成器播種被破壞。 它破碎是因為微軟沒有提供CryptGenRandom或用於刮擦狀態的舊版Win32屏幕API。 應用程序需要從RNGCryptoServiceProvider顯式種子。

你可以在Stack Overflow上看到我的痛苦痕跡。 例如, Windows RT:sockaddr_in在哪里?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM