构建原生的OpenSSL库WP8平台 [英] Build native OpenSSL library for WP8 Platform

查看:140
本文介绍了构建原生的OpenSSL库WP8平台的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建的Windows phone 8 application.I需要创建一个应用,该应用使用编译的OpenSSL library.I是以下的标准最新的库。



我下面 INSTALL.W64 的步骤,因为我不知道哪个INSTALL *是used.As我的机器是64位我更喜欢这样的:



要建立Win64中/ 64:



1 perl的配置VC-WIN64A结果
2 ms\do_win64a结果
3 NMAKE -f ms\\\
tdll .MAK结果
4 CD out32dll结果
5 ..\ms\test



使用Visual Studio命令Prompt.Upto第2步是它未能建立和out32dll Folder.It不产生库提供了错误,如fine.At第三步:

  C:\Program文件(x86)\Windows电话Kits\8.0\include\windows.h(182):严重错误
或C1083:无法打开包含文件:文件Winreg.h中:没有这样的文件或目录
NMAKE:致命错误U1077:C:\Program文件(x86)\Microsoft的Visual Studio 11.0
\VC\WPSDK\WP80\BIN\ CL.EXE':返回代码'0X2'
停止。



我的问题是:是真的OpenSSL的支持Windows Phone平台。至于我见过的这是真/假的,我不知道。



除了这个标准的方式我也试过的this solution.Able完成在answer.got构建提到的步骤在视觉studio.Referenced <$编译C $ C> OpenSSLWP8 在Windows Phone 8的Project.Compiled libeay32



不过,当我尝试创建引用 NativeCrypto NC =新NativeCrypto()我得到 FileNotFoundException异常在library.Am我失去了一些东西?



哪种方案好还是有什么其他的解决方案可用,以便我可以建立的OpenSSL 对于 WP8



任何帮助表示赞赏。
谢谢


解决方案

我的问题是:是真的OpenSSL的支持Windows Phone平台。当我看到这是真/假的,我不知道。




不正式。



我知道了OpenSSL的开发者之一定期地构建OpenSSL,以便进行Windows 8的我还能够生成适用于Windows 8,不过...



我已经有一大堆补丁适用于Windows RT和Windows Phone的。这些补丁增加三个新的目标,它不使用 VC-WIN64A 。添加的目标是 VC-WP8-X86 VC-WP8-ARM VC -WINRT-ARM



我添加了两个新的定义( OPENSSL_SYS_WINRT OPENSSL_SYS_WINPHONE ),所以有很多这样的境况:

   - 如果定义#( _WIN32)及&放大器; !定义(__ CYGWIN__)
+#如果定义(_WIN32)及和放大器; !定义(__ CYGWIN__)及和放大器; !定义(OPENSSL_SYS_WINCE)及和放大器;
定义(OPENSSL_SYS_WINRT)及!&安培; !定义(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 ,因为应用程序不允许访问插座 API。这使得相当无用SSL库,因为TCP和UDP被烧毁。



在Windows Phone的目标是更好一点。 Windows Phone的允许访问插座 API(所以TCP和UDP均可),但随机数发生器播种坏​​了。它的破裂是因为微软不提供 CryptGenRandom 或所使用刮状态旧的Win32 API的屏幕。应用程序将需要从 RNGCryptoServiceProvider 明确种子。



您可以看到我的堆栈溢出痛苦的痕迹。例如,的Windows RT:?其中有sockaddr_in


I am creating Windows phone 8 application.I need to create App which uses compiled OpenSSL library.I was following standard latest library.

I am following INSTALL.W64 steps, as I don't know which INSTALL.* to be used.As my machine is 64 bit I preferred this:

To build for Win64/x64:

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

Using Visual Studio Command Prompt.Upto step 2 is fine.At 3rd step it fails to build and doesn't create library in out32dll Folder.It gives error like:

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.

My question is :Is really OpenSSL supported for Windows Phone Platform.As I seen this which is true/false I am not sure.

Apart from this standard way I also tried this solution.Able to complete steps mentioned in answer.got build compiled in visual studio.Referenced OpenSSLWP8 in Windows Phone 8 Project.Compiled libeay32.

But when I try to create reference NativeCrypto nc = new NativeCrypto() I get FileNotFoundException in that library.Am I missing something?

Which solution is better or there is any other solution available so that I can build OpenSSL for WP8.

Any help is appreciated. Thanks.

解决方案

My question is: Is really OpenSSL supported for Windows Phone Platform. As I seen this which is true/false I am not sure.

Not officially.

I know one of the OpenSSL developers regularly build OpenSSL for Windows 8. I was also able to build for Windows 8. However...

I've got a bunch of patches for Windows RT and Windows Phone. The patches add three new targets, and it don't use VC-WIN64A. The added targets are VC-WP8-X86, VC-WP8-ARM, and VC-WINRT-ARM.

I added two new defines (OPENSSL_SYS_WINRT and OPENSSL_SYS_WINPHONE) so a lot of this went on:

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

The cflags needed some tuning. For example, here's from Windows RT:

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

And Windows Phone:

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

The Windows RT target is severely crippled. As an example of how bad things are on Windows RT: the target needed both -DOPENSSL_NO_SOCK and -DOPENSSL_NO_DGRAM because applications are not allowed to access the socket API. That makes it pretty useless SSL library since TCP and UDP was gutted.

The Windows Phone target is a little better. Windows Phone allows access to the socket API (so TCP and UDP are available), but the random number generator seeding is broken. Its broken because Microsoft does not provide CryptGenRandom or the older Win32 screen APIs that were used to scrape state. Application will need to explicitly seed from RNGCryptoServiceProvider.

You can see traces of my suffering on Stack Overflow. For example, Windows RT: where is sockaddr_in?.

这篇关于构建原生的OpenSSL库WP8平台的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆