diff options
| author | Matthew Parlane <parlane@gmail.com> | 2013-08-15 20:47:47 +1200 |
|---|---|---|
| committer | Matthew Parlane <parlane@gmail.com> | 2013-08-15 20:47:47 +1200 |
| commit | fede38985e30a07f4fb2cc0819c7547400be5a00 (patch) | |
| tree | 4ccb5a37102b8ef30ee210fc2693f3cdbfaf7b44 /Source/Core | |
| parent | 3f46f26c495102acd4601c3cc63e3c03f987b09d (diff) | |
Replace OpenSSL with PolarSSL
Works on windows, not yet cmake.
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Common/Src/LogManager.h | 2 | ||||
| -rw-r--r-- | Source/Core/Core/Core.vcxproj | 24 | ||||
| -rw-r--r-- | Source/Core/Core/Core.vcxproj.filters | 20 | ||||
| -rw-r--r-- | Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net.cpp | 10 | ||||
| -rw-r--r-- | Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net_ssl.cpp | 436 | ||||
| -rw-r--r-- | Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net_ssl.h | 18 | ||||
| -rw-r--r-- | Source/Core/DolphinWX/Dolphin.vcxproj | 15 | ||||
| -rw-r--r-- | Source/Core/DolphinWX/Dolphin.vcxproj.filters | 4 |
8 files changed, 275 insertions, 254 deletions
diff --git a/Source/Core/Common/Src/LogManager.h b/Source/Core/Common/Src/LogManager.h index f704a5d44b..120d7b5f98 100644 --- a/Source/Core/Common/Src/LogManager.h +++ b/Source/Core/Common/Src/LogManager.h @@ -33,7 +33,7 @@ public: void Log(LogTypes::LOG_LEVELS, const char *msg); - bool IsValid() { return (bool)m_logfile; } + bool IsValid() { return !m_logfile.fail(); } bool IsEnabled() const { return m_enable; } void SetEnable(bool enable) { m_enable = enable; } diff --git a/Source/Core/Core/Core.vcxproj b/Source/Core/Core/Core.vcxproj index bf9c9b80e3..594f69d92e 100644 --- a/Source/Core/Core/Core.vcxproj +++ b/Source/Core/Core/Core.vcxproj @@ -115,7 +115,7 @@ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'" /> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ClCompile> - <AdditionalIncludeDirectories>.\Src;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\DiscIO\Src;..\InputCommon\Src;..\wiiuse\Src;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\SFML\include;..\..\..\Externals\LZO;..\..\..\Externals\portaudio\include;..\..\..\Externals\zlib;..\..\..\Externals\openssl;..\..\..\Externals\openssl\$(PlatformName);..\..\..\Externals\libusb\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>.\Src;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\DiscIO\Src;..\InputCommon\Src;..\wiiuse\Src;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\SFML\include;..\..\..\Externals\LZO;..\..\..\Externals\portaudio\include;..\..\..\Externals\zlib;..\..\..\Externals\polarssl\include;..\..\..\Externals\libusb\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> </ClCompile> <Link> <GenerateDebugInformation>true</GenerateDebugInformation> @@ -123,11 +123,12 @@ <Lib> <AdditionalLibraryDirectories> </AdditionalLibraryDirectories> + <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration> </Lib> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ClCompile> - <AdditionalIncludeDirectories>.\Src;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\DiscIO\Src;..\InputCommon\Src;..\wiiuse\Src;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\SFML\include;..\..\..\Externals\LZO;..\..\..\Externals\portaudio\include;..\..\..\Externals\zlib;..\..\..\Externals\openssl;..\..\..\Externals\openssl\$(PlatformName);..\..\..\Externals\libusb\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>.\Src;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\DiscIO\Src;..\InputCommon\Src;..\wiiuse\Src;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\SFML\include;..\..\..\Externals\LZO;..\..\..\Externals\portaudio\include;..\..\..\Externals\zlib;..\..\..\Externals\polarssl\include;..\..\..\Externals\libusb\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> </ClCompile> <Link> <GenerateDebugInformation>true</GenerateDebugInformation> @@ -135,11 +136,12 @@ <Lib> <AdditionalLibraryDirectories> </AdditionalLibraryDirectories> + <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration> </Lib> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ClCompile> - <AdditionalIncludeDirectories>.\Src;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\DiscIO\Src;..\InputCommon\Src;..\wiiuse\Src;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\SFML\include;..\..\..\Externals\LZO;..\..\..\Externals\portaudio\include;..\..\..\Externals\zlib;..\..\..\Externals\openssl;..\..\..\Externals\openssl\$(PlatformName);..\..\..\Externals\libusb\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>.\Src;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\DiscIO\Src;..\InputCommon\Src;..\wiiuse\Src;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\SFML\include;..\..\..\Externals\LZO;..\..\..\Externals\portaudio\include;..\..\..\Externals\zlib;..\..\..\Externals\polarssl\include;..\..\..\Externals\libusb\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> </ClCompile> <Link> <GenerateDebugInformation>true</GenerateDebugInformation> @@ -149,11 +151,12 @@ <Lib> <AdditionalLibraryDirectories> </AdditionalLibraryDirectories> + <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration> </Lib> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'"> <ClCompile> - <AdditionalIncludeDirectories>.\Src;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\DiscIO\Src;..\InputCommon\Src;..\wiiuse\Src;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\SFML\include;..\..\..\Externals\LZO;..\..\..\Externals\portaudio\include;..\..\..\Externals\zlib;..\..\..\Externals\openssl;..\..\..\Externals\openssl\$(PlatformName);..\..\..\Externals\libusb\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>.\Src;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\DiscIO\Src;..\InputCommon\Src;..\wiiuse\Src;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\SFML\include;..\..\..\Externals\LZO;..\..\..\Externals\portaudio\include;..\..\..\Externals\zlib;..\..\..\Externals\polarssl\include;..\..\..\Externals\libusb\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> </ClCompile> <Link> <GenerateDebugInformation>true</GenerateDebugInformation> @@ -163,11 +166,12 @@ <Lib> <AdditionalLibraryDirectories> </AdditionalLibraryDirectories> + <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration> </Lib> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ClCompile> - <AdditionalIncludeDirectories>.\Src;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\DiscIO\Src;..\InputCommon\Src;..\wiiuse\Src;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\SFML\include;..\..\..\Externals\LZO;..\..\..\Externals\portaudio\include;..\..\..\Externals\zlib;..\..\..\Externals\openssl;..\..\..\Externals\openssl\$(PlatformName);..\..\..\Externals\libusb\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>.\Src;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\DiscIO\Src;..\InputCommon\Src;..\wiiuse\Src;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\SFML\include;..\..\..\Externals\LZO;..\..\..\Externals\portaudio\include;..\..\..\Externals\zlib;..\..\..\Externals\polarssl\include;..\..\..\Externals\libusb\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> </ClCompile> <Link> <GenerateDebugInformation>true</GenerateDebugInformation> @@ -177,11 +181,12 @@ <Lib> <AdditionalLibraryDirectories> </AdditionalLibraryDirectories> + <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration> </Lib> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'"> <ClCompile> - <AdditionalIncludeDirectories>.\Src;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\DiscIO\Src;..\InputCommon\Src;..\wiiuse\Src;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\SFML\include;..\..\..\Externals\LZO;..\..\..\Externals\portaudio\include;..\..\..\Externals\zlib;..\..\..\Externals\openssl;..\..\..\Externals\openssl\$(PlatformName);..\..\..\Externals\libusb\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>.\Src;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\DiscIO\Src;..\InputCommon\Src;..\wiiuse\Src;..\..\..\Externals\Bochs_disasm;..\..\..\Externals\SFML\include;..\..\..\Externals\LZO;..\..\..\Externals\portaudio\include;..\..\..\Externals\zlib;..\..\..\Externals\polarssl\include;..\..\..\Externals\libusb\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> </ClCompile> <Link> <GenerateDebugInformation>true</GenerateDebugInformation> @@ -191,6 +196,7 @@ <Lib> <AdditionalLibraryDirectories> </AdditionalLibraryDirectories> + <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration> </Lib> </ItemDefinitionGroup> <ItemGroup> @@ -340,8 +346,8 @@ <ClCompile Include="Src\NetPlayClient.cpp" /> <ClCompile Include="Src\NetPlayServer.cpp" /> <ClCompile Include="Src\PatchEngine.cpp" /> - <ClCompile Include="Src\DSPEmulator.cpp" /> - <ClCompile Include="Src\ec_wii.cpp" /> + <ClCompile Include="Src\DSPEmulator.cpp" /> + <ClCompile Include="Src\ec_wii.cpp" /> <ClCompile Include="Src\PowerPC\Interpreter\Interpreter.cpp" /> <ClCompile Include="Src\PowerPC\Interpreter\Interpreter_Branch.cpp" /> <ClCompile Include="Src\PowerPC\Interpreter\Interpreter_FloatingPoint.cpp" /> @@ -606,4 +612,4 @@ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <ImportGroup Label="ExtensionTargets"> </ImportGroup> -</Project> +</Project>
\ No newline at end of file diff --git a/Source/Core/Core/Core.vcxproj.filters b/Source/Core/Core/Core.vcxproj.filters index f541094169..f7adb266c4 100644 --- a/Source/Core/Core/Core.vcxproj.filters +++ b/Source/Core/Core/Core.vcxproj.filters @@ -529,9 +529,6 @@ <ClCompile Include="Src\NetPlay.cpp"> <Filter>NetPlay</Filter> </ClCompile> - <ClCompile Include="Src\ec_wii.cpp"> - <Filter>ec_wii</Filter> - </ClCompile> <ClCompile Include="Src\NetPlayServer.cpp"> <Filter>NetPlay</Filter> </ClCompile> @@ -566,12 +563,14 @@ </ClCompile> <ClCompile Include="Src\PowerPC\JitInterface.cpp"> <Filter>PowerPC</Filter> - </ClCompile> <ClCompile Include="Src\IPC_HLE\ICMPWin.cpp"> - <Filter>IPC HLE %28IOS/Starlet%29\Net</Filter> - </ClCompile> + </ClCompile> + <ClCompile Include="Src\IPC_HLE\ICMPWin.cpp"> + <Filter>IPC HLE %28IOS/Starlet%29\Net</Filter> + </ClCompile> <ClCompile Include="Src\IPC_HLE\WII_IPC_HLE_Device_hid.cpp"> <Filter>IPC HLE %28IOS/Starlet%29\USB</Filter> </ClCompile> + <ClCompile Include="Src\ec_wii.cpp" /> </ItemGroup> <ItemGroup> <ClInclude Include="Src\ConfigManager.h" /> @@ -1022,9 +1021,6 @@ <ClInclude Include="Src\NetPlay.h"> <Filter>NetPlay</Filter> </ClInclude> - <ClInclude Include="Src\ec_wii.h"> - <Filter>ec_wii</Filter> - </ClInclude> <ClInclude Include="Src\BootManager.h" /> <ClInclude Include="Src\FifoPlayer\FifoDataFile.h"> <Filter>FifoPlayer</Filter> @@ -1053,7 +1049,8 @@ </ClInclude> <ClInclude Include="Src\PowerPC\JitInterface.h"> <Filter>PowerPC</Filter> - </ClInclude> <ClInclude Include="Src\IPC_HLE\WII_IPC_HLE_Device_net_ssl.h"> + </ClInclude> + <ClInclude Include="Src\IPC_HLE\WII_IPC_HLE_Device_net_ssl.h"> <Filter>IPC HLE %28IOS/Starlet%29\Net</Filter> </ClInclude> <ClInclude Include="Src\IPC_HLE\fakepoll.h"> @@ -1065,6 +1062,7 @@ <ClInclude Include="Src\IPC_HLE\WII_IPC_HLE_Device_hid.h"> <Filter>IPC HLE %28IOS/Starlet%29\USB</Filter> </ClInclude> + <ClInclude Include="Src\ec_wii.h" /> </ItemGroup> <ItemGroup> <None Include="CMakeLists.txt" /> @@ -1209,4 +1207,4 @@ <UniqueIdentifier>{321a9af5-9b3d-4620-888c-fe9d02e9559e}</UniqueIdentifier> </Filter> </ItemGroup> -</Project> +</Project>
\ No newline at end of file diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net.cpp index 2f50caecd1..66623f0797 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net.cpp @@ -198,17 +198,17 @@ bool CWII_IPC_HLE_Device_net_kd_request::IOCtl(u32 _CommandAddress) } else { - Memory::Write_U32(nwc24_err_t::WC24_ERR_FATAL, BufferOut); + Memory::Write_U32(WC24_ERR_FATAL, BufferOut); } } else if(config.CreationStage() == nwc24_config_t::NWC24_IDCS_GENERATED) { - Memory::Write_U32(nwc24_err_t::WC24_ERR_ID_GENERATED, BufferOut); + Memory::Write_U32(WC24_ERR_ID_GENERATED, BufferOut); } else if(config.CreationStage() == nwc24_config_t::NWC24_IDCS_REGISTERED) { - Memory::Write_U32(nwc24_err_t::WC24_ERR_ID_REGISTERED, BufferOut); + Memory::Write_U32(WC24_ERR_ID_REGISTERED, BufferOut); } Memory::Write_U64(config.Id(), BufferOut + 4); Memory::Write_U32(config.CreationStage(), BufferOut + 0xC); @@ -334,9 +334,9 @@ s32 CWII_IPC_HLE_Device_net_kd_request::NWC24MakeUserID(u64* nwc24_id, u32 holly *nwc24_id = mix_id; if (mix_id > 9999999999999999ULL) - return nwc24_err_t::WC24_ERR_FATAL; + return WC24_ERR_FATAL; - return nwc24_err_t::WC24_OK; + return WC24_OK; } // ********************************************************************************** // Handle /dev/net/ncd/manage requests diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net_ssl.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net_ssl.cpp index 01ee3ea78b..30008dd2d3 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net_ssl.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net_ssl.cpp @@ -24,17 +24,12 @@ #include "WII_IPC_HLE_Device_net_ssl.h" #include "../Debugger/Debugger_SymbolMap.h" - - CWII_IPC_HLE_Device_net_ssl::CWII_IPC_HLE_Device_net_ssl(u32 _DeviceID, const std::string& _rDeviceName) : IWII_IPC_HLE_Device(_DeviceID, _rDeviceName) -{ - gnutls_global_init(); +{ for(int i = 0; i < NET_SSL_MAXINSTANCES; ++i) { - _SSL[i].session = NULL; - _SSL[i].xcred = NULL; - memset(_SSL[i].hostname, 0, MAX_HOSTNAME_LEN); + memset(&_SSL[i], 0, sizeof(struct _SSL)); } } @@ -43,27 +38,35 @@ CWII_IPC_HLE_Device_net_ssl::~CWII_IPC_HLE_Device_net_ssl() // Cleanup sessions for (int i = 0; i < NET_SSL_MAXINSTANCES; i++) { - gnutls_session_t session = _SSL[i].session; - if(session) + if(_SSL[i].active) { - gnutls_bye (session, GNUTLS_SHUT_RDWR); - gnutls_deinit(session); - gnutls_certificate_free_credentials (_SSL[i].xcred); + ssl_close_notify(&_SSL[i].ctx); + ssl_session_free(&_SSL[i].session); + ssl_free(&_SSL[i].ctx); + + x509_free(&_SSL[i].cacert); + x509_free(&_SSL[i].clicert); + + memset(&_SSL[i].ctx, 0, sizeof(ssl_context)); + memset(&_SSL[i].session, 0, sizeof(ssl_session)); + memset(&_SSL[i].hs, 0, sizeof(havege_state)); + memset(_SSL[i].hostname, 0, MAX_HOSTNAME_LEN); + + _SSL[i].active = false; } } - - gnutls_global_deinit(); } int CWII_IPC_HLE_Device_net_ssl::getSSLFreeID() { for (int i = 0; i < NET_SSL_MAXINSTANCES; i++) { - if (_SSL[i].session == NULL) + if (!_SSL[i].active) return i + 1; } return 0; } + bool CWII_IPC_HLE_Device_net_ssl::Open(u32 _CommandAddress, u32 _Mode) { Memory::Write_U32(GetDeviceID(), _CommandAddress+4); @@ -104,49 +107,45 @@ bool CWII_IPC_HLE_Device_net_ssl::IOCtlV(u32 _CommandAddress) } static int -_verify_certificate_callback (gnutls_session_t session) +_verify_certificate_callback (void *data, x509_cert *crt, int depth, int *flags) { - unsigned int status; - int ret; - gnutls_certificate_type_t type; - const char *hostname; - gnutls_datum_t out; - - /* Read hostname. */ - hostname = (const char *)gnutls_session_get_ptr (session); - WARN_LOG(WII_IPC_SSL, "_verify_certificate_callback: Verifying certificate for %s\n", hostname); - - /* This verification function uses the trusted CAs in the credentials - * structure. - */ - ret = gnutls_certificate_verify_peers3 (session, hostname, &status); - if (ret < 0) - { - WARN_LOG(WII_IPC_SSL, "gnutls_certificate_verify_peers3 error %d", ret); - return GNUTLS_E_CERTIFICATE_ERROR; - } - - type = gnutls_certificate_type_get (session); - - ret = gnutls_certificate_verification_status_print( status, type, &out, 0); - if (ret < 0) - { - WARN_LOG(WII_IPC_SSL, "gnutls_certificate_verification_status_print error %d", ret); - return GNUTLS_E_CERTIFICATE_ERROR; - } - - WARN_LOG(WII_IPC_SSL, "_verify_certificate_callback: %s", out.data); - - gnutls_free(out.data); + char buf[1024]; + ((void) data); + std::string verify_info = "Verify requested for (Depth "; + sprintf(buf, "%d", depth); + verify_info += buf; + verify_info += "):\n"; + + x509parse_cert_info( buf, sizeof( buf ) - 1, "", crt ); + verify_info += buf; + + if( ( (*flags) & BADCERT_EXPIRED ) != 0 ) + verify_info += " ! server certificate has expired"; + + if( ( (*flags) & BADCERT_REVOKED ) != 0 ) + verify_info += " ! server certificate has been revoked"; + + if( ( (*flags) & BADCERT_CN_MISMATCH ) != 0 ) + verify_info += " ! CN mismatch\n"; + + if( ( (*flags) & BADCERT_NOT_TRUSTED ) != 0 ) + verify_info += " ! self-signed or not signed by a trusted CA\n"; + + if( ( (*flags) & BADCRL_NOT_TRUSTED ) != 0 ) + verify_info += " ! CRL not trusted\n"; + + if( ( (*flags) & BADCRL_EXPIRED ) != 0 ) + verify_info += " ! CRL expired\n"; + + if( ( (*flags) & BADCERT_OTHER ) != 0 ) + verify_info += " ! other (unknown) flag\n"; + + if ( ( *flags ) == 0 ) + verify_info += " This certificate has no flags\n"; - if (status != 0) - { - /* Certificate is not trusted */ - WARN_LOG(WII_IPC_SSL, "_verify_certificate_callback: status = %d", status); - return GNUTLS_E_CERTIFICATE_ERROR; - } - /* Certificate verified successfully. */ - return 0; + WARN_LOG(WII_IPC_SSL, verify_info.c_str() ); + + return( 0 ); } u32 CWII_IPC_HLE_Device_net_ssl::ExecuteCommandV(u32 _Parameter, SIOCtlVBuffer CommandBuffer) @@ -190,7 +189,7 @@ u32 CWII_IPC_HLE_Device_net_ssl::ExecuteCommandV(u32 _Parameter, SIOCtlVBuffer C _BufferOut3 = CommandBuffer.PayloadBuffer.at(2).m_Address; BufferOutSize3 = CommandBuffer.PayloadBuffer.at(2).m_Size; } - + switch (_Parameter) { case IOCTLV_NET_SSL_NEW: @@ -202,53 +201,34 @@ u32 CWII_IPC_HLE_Device_net_ssl::ExecuteCommandV(u32 _Parameter, SIOCtlVBuffer C if (freeSSL) { int sslID = freeSSL - 1; - - int ret = gnutls_init (&_SSL[sslID].session, GNUTLS_CLIENT); - if(ret) - { - _SSL[sslID].session = NULL; - goto _SSL_NEW_ERROR; - } - - gnutls_session_t session = _SSL[sslID].session; - - const char *err = NULL; - ret = gnutls_priority_set_direct (session, "NORMAL", &err); - if(ret) - { - _SSL[sslID].session = NULL; - goto _SSL_NEW_ERROR; - } - - /* X509 stuff */ - ret = gnutls_certificate_allocate_credentials (&_SSL[sslID].xcred); + int ret = ssl_init(&_SSL[sslID].ctx); if(ret) { - _SSL[sslID].session = NULL; - _SSL[sslID].xcred = NULL; - goto _SSL_NEW_ERROR; - } - - gnutls_certificate_set_verify_function (_SSL[sslID].xcred, _verify_certificate_callback); - - /* put the x509 credentials to the current session - */ - ret = gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, _SSL[sslID].xcred); - if(ret) - { - _SSL[sslID].session = NULL; - _SSL[sslID].xcred = NULL; + // Cleanup possibly dirty ctx + memset(&_SSL[sslID].ctx, 0, sizeof(ssl_context)); goto _SSL_NEW_ERROR; } + havege_init(&_SSL[sslID].hs); + ssl_set_rng(&_SSL[sslID].ctx, havege_random, &_SSL[sslID].hs); + + // For some reason we can't use TLSv1.2, v1.1 and below are fine! + ssl_set_max_version(&_SSL[sslID].ctx, SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_2); + + ssl_set_ciphersuites(&_SSL[sslID].ctx, ssl_default_ciphersuites); + ssl_set_session(&_SSL[sslID].ctx, &_SSL[sslID].session); + + ssl_set_verify(&_SSL[sslID].ctx, _verify_certificate_callback, NULL); + ssl_set_endpoint(&_SSL[sslID].ctx, SSL_IS_CLIENT); + ssl_set_authmode(&_SSL[sslID].ctx, SSL_VERIFY_OPTIONAL); + ssl_set_renegotiation(&_SSL[sslID].ctx, SSL_RENEGOTIATION_ENABLED); + memcpy(_SSL[sslID].hostname, hostname, min((int)BufferOutSize2, MAX_HOSTNAME_LEN)); _SSL[sslID].hostname[MAX_HOSTNAME_LEN-1] = '\0'; - - gnutls_session_set_ptr (session, (void *) _SSL[sslID].hostname); - gnutls_server_name_set (session, GNUTLS_NAME_DNS, _SSL[sslID].hostname, - strnlen(_SSL[sslID].hostname, MAX_HOSTNAME_LEN)); - + ssl_set_hostname(&_SSL[sslID].ctx, _SSL[sslID].hostname); + + _SSL[sslID].active = true; Memory::Write_U32(freeSSL, _BufferIn); } else @@ -267,21 +247,25 @@ _SSL_NEW_ERROR: _BufferOut2, BufferOutSize2, _BufferOut3, BufferOutSize3); break; } - case IOCTLV_NET_SSL_SHUTDOWN: { int sslID = Memory::Read_U32(_BufferOut) - 1; if (SSLID_VALID(sslID)) { - gnutls_session_t session = _SSL[sslID].session; - gnutls_bye (session, GNUTLS_SHUT_RDWR); - gnutls_deinit(session); - gnutls_certificate_free_credentials (_SSL[sslID].xcred); - - _SSL[sslID].session = NULL; - _SSL[sslID].xcred = NULL; + ssl_close_notify(&_SSL[sslID].ctx); + ssl_session_free(&_SSL[sslID].session); + ssl_free(&_SSL[sslID].ctx); + + x509_free(&_SSL[sslID].cacert); + x509_free(&_SSL[sslID].clicert); + + memset(&_SSL[sslID].ctx, 0, sizeof(ssl_context)); + memset(&_SSL[sslID].session, 0, sizeof(ssl_session)); + memset(&_SSL[sslID].hs, 0, sizeof(havege_state)); memset(_SSL[sslID].hostname, 0, MAX_HOSTNAME_LEN); + _SSL[sslID].active = false; + Memory::Write_U32(SSL_OK, _BufferIn); } else @@ -311,21 +295,21 @@ _SSL_NEW_ERROR: int sslID = Memory::Read_U32(_BufferOut) - 1; if (SSLID_VALID(sslID)) { - gnutls_datum_t rootca = { + int ret = x509parse_crt_der( + &_SSL[sslID].cacert, Memory::GetPointer(_BufferOut2), - BufferOutSize2 - }; - - int ret = gnutls_certificate_set_x509_trust_mem ( - _SSL[sslID].xcred, - &rootca, - GNUTLS_X509_FMT_DER - ); - - if(ret < 1) + BufferOutSize2); + + if(ret) + { Memory::Write_U32(SSL_ERR_FAILED, _BufferIn); + } else - Memory::Write_U32(SSL_OK, _BufferIn); + { + ssl_set_ca_chain(&_SSL[sslID].ctx, &_SSL[sslID].cacert, NULL, _SSL[sslID].hostname); + Memory::Write_U32(SSL_OK, _BufferIn); + } + WARN_LOG(WII_IPC_SSL, "IOCTLV_NET_SSL_SETROOTCA = %d", ret); } else @@ -334,8 +318,6 @@ _SSL_NEW_ERROR: } break; } - - case IOCTLV_NET_SSL_SETBUILTINCLIENTCERT: { WARN_LOG(WII_IPC_SSL, "IOCTLV_NET_SSL_SETBUILTINCLIENTCERT " @@ -350,28 +332,59 @@ _SSL_NEW_ERROR: if (SSLID_VALID(sslID)) { std::string cert_base_path(File::GetUserPath(D_WIIUSER_IDX)); - - int ret = gnutls_certificate_set_x509_key_file ( - _SSL[sslID].xcred, - (cert_base_path + "clientca.pem").c_str(), - (cert_base_path + "clientcakey.pem").c_str(), - GNUTLS_X509_FMT_PEM - ); - - if(ret) + int ret = x509parse_crtfile(&_SSL[sslID].clicert, (cert_base_path + "clientca.pem").c_str()); + int rsa_ret = x509parse_keyfile(&_SSL[sslID].rsa, (cert_base_path + "clientcakey.pem").c_str(), NULL); + if(ret || rsa_ret) + { + x509_free(&_SSL[sslID].clicert); + rsa_free(&_SSL[sslID].rsa); + memset(&_SSL[sslID].clicert, 0, sizeof(x509_cert)); + memset(&_SSL[sslID].rsa, 0, sizeof(rsa_context)); Memory::Write_U32(SSL_ERR_FAILED, _BufferIn); + } else - Memory::Write_U32(SSL_OK, _BufferIn); + { + ssl_set_own_cert(&_SSL[sslID].ctx, &_SSL[sslID].clicert, &_SSL[sslID].rsa); + Memory::Write_U32(SSL_OK, _BufferIn); + } - WARN_LOG(WII_IPC_SSL, "IOCTLV_NET_SSL_SETBUILTINCLIENTCERT = %d", ret); + WARN_LOG(WII_IPC_SSL, "IOCTLV_NET_SSL_SETBUILTINCLIENTCERT = (%d, %d)", ret, rsa_ret); } else { Memory::Write_U32(SSL_ERR_ID, _BufferIn); + WARN_LOG(WII_IPC_SSL, "IOCTLV_NET_SSL_SETBUILTINCLIENTCERT invalid sslID = %d", sslID); } break; } + case IOCTLV_NET_SSL_REMOVECLIENTCERT: + { + WARN_LOG(WII_IPC_SSL, "IOCTLV_NET_SSL_REMOVECLIENTCERT " + "BufferIn: (%08x, %i), BufferIn2: (%08x, %i), " + "BufferIn3: (%08x, %i), BufferOut: (%08x, %i), " + "BufferOut2: (%08x, %i), BufferOut3: (%08x, %i)", + _BufferIn, BufferInSize, _BufferIn2, BufferInSize2, + _BufferIn3, BufferInSize3, _BufferOut, BufferOutSize, + _BufferOut2, BufferOutSize2, _BufferOut3, BufferOutSize3); + int sslID = Memory::Read_U32(_BufferOut) - 1; + if (SSLID_VALID(sslID)) + { + x509_free(&_SSL[sslID].clicert); + rsa_free(&_SSL[sslID].rsa); + memset(&_SSL[sslID].clicert, 0, sizeof(x509_cert)); + memset(&_SSL[sslID].rsa, 0, sizeof(rsa_context)); + + ssl_set_own_cert(&_SSL[sslID].ctx, NULL, NULL); + Memory::Write_U32(SSL_OK, _BufferIn); + } + else + { + Memory::Write_U32(SSL_ERR_ID, _BufferIn); + WARN_LOG(WII_IPC_SSL, "IOCTLV_NET_SSL_SETBUILTINCLIENTCERT invalid sslID = %d", sslID); + } + break; + } case IOCTLV_NET_SSL_SETBUILTINROOTCA: { int sslID = Memory::Read_U32(_BufferOut) - 1; @@ -379,16 +392,17 @@ _SSL_NEW_ERROR: { std::string cert_base_path(File::GetUserPath(D_WIIUSER_IDX)); - int ret = gnutls_certificate_set_x509_trust_file ( - _SSL[sslID].xcred, - (cert_base_path + "rootca.pem").c_str(), - GNUTLS_X509_FMT_PEM - ); - - if(ret < 1) + int ret = x509parse_crtfile(&_SSL[sslID].cacert, (cert_base_path + "rootca.pem").c_str()); + if(ret) + { + x509_free(&_SSL[sslID].clicert); Memory::Write_U32(SSL_ERR_FAILED, _BufferIn); + } else - Memory::Write_U32(SSL_OK, _BufferIn); + { + ssl_set_ca_chain(&_SSL[sslID].ctx, &_SSL[sslID].cacert, NULL, _SSL[sslID].hostname); + Memory::Write_U32(SSL_OK, _BufferIn); + } WARN_LOG(WII_IPC_SSL, "IOCTLV_NET_SSL_SETBUILTINROOTCA = %d", ret); } else @@ -404,27 +418,20 @@ _SSL_NEW_ERROR: _BufferOut2, BufferOutSize2, _BufferOut3, BufferOutSize3); break; } - case IOCTLV_NET_SSL_CONNECT: { int sslID = Memory::Read_U32(_BufferOut) - 1; if (SSLID_VALID(sslID)) { - int sock = Memory::Read_U32(_BufferOut2); - gnutls_session_t session = _SSL[sslID].session; - - gnutls_transport_set_int (session, sock); - gnutls_handshake_set_timeout ( - session, - GNUTLS_DEFAULT_HANDSHAKE_TIMEOUT - ); + _SSL[sslID].sockfd = Memory::Read_U32(_BufferOut2); + WARN_LOG(WII_IPC_SSL, "IOCTLV_NET_SSL_CONNECT socket = %d", _SSL[sslID].sockfd); + ssl_set_bio(&_SSL[sslID].ctx, net_recv, &_SSL[sslID].sockfd, net_send, &_SSL[sslID].sockfd); Memory::Write_U32(SSL_OK, _BufferIn); } else { Memory::Write_U32(SSL_ERR_ID, _BufferIn); } - WARN_LOG(WII_IPC_SSL, "IOCTLV_NET_SSL_CONNECT " "BufferIn: (%08x, %i), BufferIn2: (%08x, %i), " "BufferIn3: (%08x, %i), BufferOut: (%08x, %i), " @@ -434,71 +441,71 @@ _SSL_NEW_ERROR: _BufferOut2, BufferOutSize2, _BufferOut3, BufferOutSize3); break; } - case IOCTLV_NET_SSL_DOHANDSHAKE: { + int ret = 0; int sslID = Memory::Read_U32(_BufferOut) - 1; if (SSLID_VALID(sslID)) { - gnutls_session_t session = _SSL[sslID].session; - int ret = 0; - do + ret = ssl_handshake(&_SSL[sslID].ctx); + switch (ret) { - ret = gnutls_handshake (session); + case 0: + Memory::Write_U32(SSL_OK, _BufferIn); + break; + case POLARSSL_ERR_NET_WANT_READ: + Memory::Write_U32(SSL_ERR_RAGAIN, _BufferIn); + break; + case POLARSSL_ERR_NET_WANT_WRITE: + Memory::Write_U32(SSL_ERR_WAGAIN, _BufferIn); + break; + default: + Memory::Write_U32(SSL_ERR_FAILED, _BufferIn); + break; } - while (ret < 0 && gnutls_error_is_fatal (ret) == 0); - - WARN_LOG(WII_IPC_SSL, "IOCTLV_NET_SSL_DOHANDSHAKE = %d", ret); - - ret = ret == GNUTLS_E_SUCCESS; - if (ret) - Memory::Write_U32(SSL_OK, _BufferIn); - else - Memory::Write_U32(SSL_ERR_FAILED, _BufferIn); } else { Memory::Write_U32(SSL_ERR_ID, _BufferIn); } - WARN_LOG(WII_IPC_SSL, "IOCTLV_NET_SSL_DOHANDSHAKE " + WARN_LOG(WII_IPC_SSL, "IOCTLV_NET_SSL_DOHANDSHAKE = (%d) " "BufferIn: (%08x, %i), BufferIn2: (%08x, %i), " "BufferIn3: (%08x, %i), BufferOut: (%08x, %i), " "BufferOut2: (%08x, %i), BufferOut3: (%08x, %i)", + ret, _BufferIn, BufferInSize, _BufferIn2, BufferInSize2, _BufferIn3, BufferInSize3, _BufferOut, BufferOutSize, _BufferOut2, BufferOutSize2, _BufferOut3, BufferOutSize3); break; } - case IOCTLV_NET_SSL_WRITE: { - int sslID = Memory::Read_U32(_BufferOut) - 1; if (SSLID_VALID(sslID)) { - gnutls_session_t session = _SSL[sslID].session; - - int ret = gnutls_record_send(session, Memory::GetPointer(_BufferOut2), BufferOutSize2); + int ret = ssl_write( &_SSL[sslID].ctx, Memory::GetPointer(_BufferOut2), BufferOutSize2); File::IOFile("ssl_write.bin", "ab").WriteBytes(Memory::GetPointer(_BufferOut2), BufferOutSize2); - - switch(ret) + if(ret >= 0) { - case 0: - ret = SSL_ERR_ZERO; - break; - case GNUTLS_E_LARGE_PACKET: - case GNUTLS_E_INTERRUPTED: - ret = SSL_ERR_FAILED; - break; - case GNUTLS_E_AGAIN: - ret = SSL_ERR_WAGAIN; - break; - default: - break; + // Return bytes written or SSL_ERR_ZERO if none + Memory::Write_U32((ret == 0) ? SSL_ERR_ZERO : ret, _BufferIn); + } + else + { + switch (ret) + { + case POLARSSL_ERR_NET_WANT_READ: + Memory::Write_U32(SSL_ERR_RAGAIN, _BufferIn); + break; + case POLARSSL_ERR_NET_WANT_WRITE: + Memory::Write_U32(SSL_ERR_WAGAIN, _BufferIn); + break; + default: + Memory::Write_U32(SSL_ERR_FAILED, _BufferIn); + break; + } } - - Memory::Write_U32(ret, _BufferIn); } else { @@ -514,43 +521,45 @@ _SSL_NEW_ERROR: WARN_LOG(WII_IPC_SSL, "%s", Memory::GetPointer(_BufferOut2)); break; } - case IOCTLV_NET_SSL_READ: { - int sslID = Memory::Read_U32(_BufferOut) - 1; + int ret = 0; + int sslID = Memory::Read_U32(_BufferOut) - 1; if (SSLID_VALID(sslID)) { - gnutls_session_t session = _SSL[sslID].session; - ret = gnutls_record_recv(session, Memory::GetPointer(_BufferIn2), BufferInSize2); + ret = ssl_read( &_SSL[sslID].ctx, Memory::GetPointer(_BufferIn2), BufferInSize2); if (ret > 0) { File::IOFile("ssl_read.bin", "ab").WriteBytes(Memory::GetPointer(_BufferIn2), ret); } - - switch(ret) + + if(ret >= 0) { - case 0: - ret = SSL_ERR_ZERO; - break; - case GNUTLS_E_LARGE_PACKET: - case GNUTLS_E_INTERRUPTED: - ret = SSL_ERR_FAILED; - break; - case GNUTLS_E_AGAIN: - ret = SSL_ERR_RAGAIN; - break; - default: - break; + // Return bytes read or SSL_ERR_ZERO if none + Memory::Write_U32((ret == 0) ? SSL_ERR_ZERO : ret, _BufferIn); + } + else + { + switch (ret) + { + case POLARSSL_ERR_NET_WANT_READ: + Memory::Write_U32(SSL_ERR_RAGAIN, _BufferIn); + break; + case POLARSSL_ERR_NET_WANT_WRITE: + Memory::Write_U32(SSL_ERR_WAGAIN, _BufferIn); + break; + default: + Memory::Write_U32(SSL_ERR_FAILED, _BufferIn); + break; + } } - - Memory::Write_U32(ret, _BufferIn); } else { Memory::Write_U32(SSL_ERR_ID, _BufferIn); } - + WARN_LOG(WII_IPC_SSL, "IOCTLV_NET_SSL_READ(%d)" "BufferIn: (%08x, %i), BufferIn2: (%08x, %i), " "BufferIn3: (%08x, %i), BufferOut: (%08x, %i), " @@ -566,7 +575,6 @@ _SSL_NEW_ERROR: int sslID = Memory::Read_U32(_BufferOut) - 1; if (SSLID_VALID(sslID)) { - //gnutls_session_t session = _SSL[sslID].session; Memory::Write_U32(SSL_OK, _BufferIn); } else @@ -582,7 +590,6 @@ _SSL_NEW_ERROR: _BufferOut2, BufferOutSize2, _BufferOut3, BufferOutSize3); break; } - case IOCTLV_NET_SSL_SETCLIENTCERTDEFAULT: { WARN_LOG(WII_IPC_SSL, "IOCTLV_NET_SSL_SETCLIENTCERTDEFAULT " @@ -596,7 +603,6 @@ _SSL_NEW_ERROR: int sslID = Memory::Read_U32(_BufferOut) - 1; if (SSLID_VALID(sslID)) { - //gnutls_session_t session = _SSL[sslID].session; Memory::Write_U32(SSL_OK, _BufferIn); } else @@ -605,7 +611,6 @@ _SSL_NEW_ERROR: } break; } - default: { ERROR_LOG(WII_IPC_SSL, "%i " @@ -626,17 +631,10 @@ u32 CWII_IPC_HLE_Device_net_ssl::ExecuteCommand(u32 _Command, u32 _BufferIn, u32 BufferInSize, u32 _BufferOut, u32 BufferOutSize) { - switch (_Command) - { - default: - { - WARN_LOG(WII_IPC_SSL, "%s unknown %i " - "(BufferIn: (%08x, %i), BufferOut: (%08x, %i)", - GetDeviceName().c_str(), _Command, - _BufferIn, BufferInSize, _BufferOut, BufferOutSize); - break; - } - } + WARN_LOG(WII_IPC_SSL, "%s unknown %i " + "(BufferIn: (%08x, %i), BufferOut: (%08x, %i)", + GetDeviceName().c_str(), _Command, + _BufferIn, BufferInSize, _BufferOut, BufferOutSize); return 0; } diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net_ssl.h b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net_ssl.h index 7223f88d3f..8a3f442ac9 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net_ssl.h +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net_ssl.h @@ -25,13 +25,14 @@ #include "WII_IPC_HLE_Device.h" -#include <gnutls/gnutls.h> -#include <gnutls/x509.h> +#include <polarssl/net.h> +#include <polarssl/ssl.h> +#include <polarssl/havege.h> #define MAX_HOSTNAME_LEN 256 #define NET_SSL_MAXINSTANCES 4 -#define SSLID_VALID(x) (x >= 0 && x < NET_SSL_MAXINSTANCES && _SSL[x].session != NULL) +#define SSLID_VALID(x) (x >= 0 && x < NET_SSL_MAXINSTANCES && _SSL[x].active) class CWII_IPC_HLE_Device_net_ssl : public IWII_IPC_HLE_Device { @@ -50,10 +51,17 @@ public: int getSSLFreeID(); private: + struct _SSL{ - gnutls_session_t session; - gnutls_certificate_credentials_t xcred; + ssl_context ctx; + ssl_session session; + havege_state hs; + x509_cert cacert; + x509_cert clicert; + rsa_context rsa; + int sockfd; char hostname[MAX_HOSTNAME_LEN]; + bool active; } _SSL[NET_SSL_MAXINSTANCES]; enum diff --git a/Source/Core/DolphinWX/Dolphin.vcxproj b/Source/Core/DolphinWX/Dolphin.vcxproj index fe0b1dcd2b..8880255278 100644 --- a/Source/Core/DolphinWX/Dolphin.vcxproj +++ b/Source/Core/DolphinWX/Dolphin.vcxproj @@ -141,6 +141,7 @@ xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e / </Command> <Message>Copying Data\* to $(TargetDir)</Message> </PostBuildEvent> + <Link /> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ClCompile> @@ -155,6 +156,7 @@ xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e / </Command> <Message>Copying Data\* to $(TargetDir)</Message> </PostBuildEvent> + <Link /> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ClCompile> @@ -171,10 +173,11 @@ xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e / </Command> <Message>Copying Data\* to $(TargetDir)</Message> </PostBuildEvent> + <Link /> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'"> <ClCompile> - <AdditionalIncludeDirectories>..\..\..\Externals\GLew\include;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\Core\Src;..\Core\Src\PowerPC\JitCommon;..\DebuggerWX\Src;..\..\..\Externals\Bochs_disasm;..\InputCommon\Src;..\InputUICommon\Src;..\DiscIO\Src;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets3;..\..\..\Externals\wxWidgets3\include;..\..\..\Externals\CLRun\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>..\..\..\Externals\GLew\include;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\Core\Src;..\Core\Src\PowerPC\JitCommon;..\DebuggerWX\Src;..\..\..\Externals\Bochs_disasm;..\InputCommon\Src;..\DiscIO\Src;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets3;..\..\..\Externals\wxWidgets3\include;..\..\..\Externals\CLRun\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> </ClCompile> <Link /> <PostBuildEvent> @@ -185,6 +188,7 @@ xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e / </Command> <Message>Copying Data\* to $(TargetDir)</Message> </PostBuildEvent> + <Link /> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ClCompile> @@ -203,10 +207,12 @@ xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e / </PostBuildEvent> <ResourceCompile> </ResourceCompile> + <Link /> + <Link /> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'"> <ClCompile> - <AdditionalIncludeDirectories>..\..\..\Externals\GLew\include;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\Core\Src;..\Core\Src\PowerPC\JitCommon;..\DebuggerWX\Src;..\..\..\Externals\Bochs_disasm;..\InputCommon\Src;..\InputUICommon\Src;..\DiscIO\Src;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets3;..\..\..\Externals\wxWidgets3\include;..\..\..\Externals\CLRun\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>..\..\..\Externals\GLew\include;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\Core\Src;..\Core\Src\PowerPC\JitCommon;..\DebuggerWX\Src;..\..\..\Externals\Bochs_disasm;..\InputCommon\Src;..\DiscIO\Src;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets3;..\..\..\Externals\wxWidgets3\include;..\..\..\Externals\CLRun\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> </ClCompile> <Link /> <PostBuildEvent> @@ -217,6 +223,7 @@ xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e / </Command> <Message>Copying Data\* to $(TargetDir)</Message> </PostBuildEvent> + <Link /> </ItemDefinitionGroup> <ItemGroup> <ClCompile Include="Src\AboutDolphin.cpp" /> @@ -267,7 +274,7 @@ xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e / <ClCompile Include="Src\PHackSettings.cpp" /> <ClCompile Include="Src\Debugger\RegisterView.cpp" /> <ClCompile Include="Src\Debugger\RegisterWindow.cpp" /> - <ClCompile Include="Src\GLInterface\WGL.cpp" /> + <ClCompile Include="Src\GLInterface\WGL.cpp" /> <ClCompile Include="Src\stdafx.cpp"> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'">Create</PrecompiledHeader> @@ -393,4 +400,4 @@ xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e / <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <ImportGroup Label="ExtensionTargets"> </ImportGroup> -</Project> +</Project>
\ No newline at end of file diff --git a/Source/Core/DolphinWX/Dolphin.vcxproj.filters b/Source/Core/DolphinWX/Dolphin.vcxproj.filters index 61ae0826fc..5cbfd9d982 100644 --- a/Source/Core/DolphinWX/Dolphin.vcxproj.filters +++ b/Source/Core/DolphinWX/Dolphin.vcxproj.filters @@ -135,6 +135,7 @@ <ClCompile Include="Src\GCMicDlg.cpp"> <Filter>GUI</Filter> </ClCompile> + <ClCompile Include="Src\GLInterface\WGL.cpp" /> </ItemGroup> <ItemGroup> <ClInclude Include="Src\Main.h" /> @@ -264,6 +265,9 @@ <ClInclude Include="Src\GCMicDlg.h"> <Filter>GUI</Filter> </ClInclude> + <ClInclude Include="Src\GLInterface.h" /> + <ClInclude Include="Src\GLInterface\InterfaceBase.h" /> + <ClInclude Include="Src\GLInterface\WGL.h" /> </ItemGroup> <ItemGroup> <None Include="CMakeLists.txt" /> |
