This is an automated email from the git hooks/post-receive script.

jcowgill-guest pushed a commit to branch master
in repository dolphin-emu.

commit c609b7c176fe7097253fa75f70563f67e15bf9bd
Author: James Cowgill <[email protected]>
Date:   Mon Nov 10 20:34:37 2014 +0000

    Switch to patches from upstream
    
    - GCC 4.9 Compilation Fix
    - Fixes for libav 10
    - Update to polarssl 1.3
    - Remove all OpenSSL code
---
 debian/patches/01_fixes-for-gcc-4.9.patch      |  31 +++
 debian/patches/02_fixes-for-libav-10.patch     | 181 +++++++++++++
 debian/patches/03_fixes-for-polarssl-1.3.patch | 251 ++++++++++++++++++
 debian/patches/04_use-polarssl-aes.patch       | 339 +++++++++++++++++++++++++
 debian/patches/08_polarssl-use-1.3.patch       | 130 ----------
 debian/patches/11_polarssl-replace-aes.patch   | 160 ------------
 debian/patches/90_g++-use-4.9.patch            |  23 --
 debian/patches/910_av-use-555553.patch         |  51 ----
 debian/patches/series                          |   8 +-
 9 files changed, 806 insertions(+), 368 deletions(-)

diff --git a/debian/patches/01_fixes-for-gcc-4.9.patch 
b/debian/patches/01_fixes-for-gcc-4.9.patch
new file mode 100644
index 0000000..3a75eee
--- /dev/null
+++ b/debian/patches/01_fixes-for-gcc-4.9.patch
@@ -0,0 +1,31 @@
+From 7c1ac441f633220365d0feef3871f891e7ed7a43 Mon Sep 17 00:00:00 2001
+From: Ryan Houdek <[email protected]>
+Date: Tue, 12 Nov 2013 16:34:32 -0600
+Subject: [PATCH] Redo 'Fixes GCC 4.9 compilation. It now supplies its own
+ _mm_shuffle_epi8 intrinsic.' This time with support for Windows.
+
+---
+ Source/Core/Common/Src/CommonFuncs.h | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/Source/Core/Common/Src/CommonFuncs.h 
b/Source/Core/Common/Src/CommonFuncs.h
+index bf50a17..63bdc04 100644
+--- a/Source/Core/Common/Src/CommonFuncs.h
++++ b/Source/Core/Common/Src/CommonFuncs.h
+@@ -31,7 +31,12 @@ struct ArraySizeImpl : public std::extent<T>
+ #define b32(x)  (b16(x) | (b16(x) >>16) )
+ #define ROUND_UP_POW2(x)      (b32(x - 1) + 1)
+ 
+-#if defined __GNUC__ && !defined __SSSE3__ && !defined _M_GENERIC
++#ifndef __GNUC_PREREQ 
++      #define __GNUC_PREREQ(a, b) 0 
++#endif
++
++#if (defined __GNUC__ && !__GNUC_PREREQ(4,9))  \
++      && !defined __SSSE3__ && !defined _M_GENERIC
+ #include <emmintrin.h>
+ static __inline __m128i __attribute__((__always_inline__))
+ _mm_shuffle_epi8(__m128i a, __m128i mask)
+-- 
+2.1.3
+
diff --git a/debian/patches/02_fixes-for-libav-10.patch 
b/debian/patches/02_fixes-for-libav-10.patch
new file mode 100644
index 0000000..e2c50c2
--- /dev/null
+++ b/debian/patches/02_fixes-for-libav-10.patch
@@ -0,0 +1,181 @@
+From c2c46d75738624b7afa4a522db8d2b029a95acb5 Mon Sep 17 00:00:00 2001
+From: Tillmann Karras <[email protected]>
+Date: Sun, 15 Jun 2014 05:16:58 +0200
+Subject: [PATCH] AVIDump: update ffmpeg/libav API usage
+
+libav 10 was released on May 10th, 2014 and it drops support for some
+long-deprecated stuff like avcodec_encode_video().
+---
+ Source/Core/VideoCommon/AVIDump.cpp | 93 +++++++++++++++++++------------------
+ 1 file changed, 49 insertions(+), 44 deletions(-)
+
+diff --git a/Source/Core/VideoCommon/AVIDump.cpp 
b/Source/Core/VideoCommon/AVIDump.cpp
+index b53340f..a287056 100644
+--- a/Source/Core/VideoCommon/AVIDump.cpp
++++ b/Source/Core/VideoCommon/AVIDump.cpp
+@@ -220,7 +220,7 @@ static AVStream* s_stream = nullptr;
+ static AVFrame* s_bgr_frame = nullptr;
+ static AVFrame* s_yuv_frame = nullptr;
+ static uint8_t* s_yuv_buffer = nullptr;
+-static uint8_t* s_out_buffer = nullptr;
++static SwsContext* s_sws_context = nullptr;
+ static int s_width;
+ static int s_height;
+ static int s_size;
+@@ -262,14 +262,15 @@ bool AVIDump::CreateFile()
+               return false;
+       }
+ 
+-      s_stream->codec->codec_id = g_Config.bUseFFV1 ? CODEC_ID_FFV1 : 
s_format_context->oformat->video_codec;
++      s_stream->codec->codec_id = g_Config.bUseFFV1 ? AV_CODEC_ID_FFV1
++                                                    : 
s_format_context->oformat->video_codec;
+       s_stream->codec->codec_type = AVMEDIA_TYPE_VIDEO;
+       s_stream->codec->bit_rate = 400000;
+       s_stream->codec->width = s_width;
+       s_stream->codec->height = s_height;
+       s_stream->codec->time_base = (AVRational){1, 
static_cast<int>(VideoInterface::TargetRefreshRate)};
+       s_stream->codec->gop_size = 12;
+-      s_stream->codec->pix_fmt = g_Config.bUseFFV1 ? PIX_FMT_BGRA : 
PIX_FMT_YUV420P;
++      s_stream->codec->pix_fmt = g_Config.bUseFFV1 ? AV_PIX_FMT_BGRA : 
AV_PIX_FMT_YUV420P;
+ 
+       if (!(codec = avcodec_find_encoder(s_stream->codec->codec_id)) ||
+           (avcodec_open2(s_stream->codec, codec, nullptr) < 0))
+@@ -277,16 +278,14 @@ bool AVIDump::CreateFile()
+               return false;
+       }
+ 
+-      s_bgr_frame = avcodec_alloc_frame();
+-      s_yuv_frame = avcodec_alloc_frame();
++      s_bgr_frame = av_frame_alloc();
++      s_yuv_frame = av_frame_alloc();
+ 
+       s_size = avpicture_get_size(s_stream->codec->pix_fmt, s_width, 
s_height);
+ 
+       s_yuv_buffer = new uint8_t[s_size];
+       avpicture_fill((AVPicture*)s_yuv_frame, s_yuv_buffer, 
s_stream->codec->pix_fmt, s_width, s_height);
+ 
+-      s_out_buffer = new uint8_t[s_size];
+-
+       NOTICE_LOG(VIDEO, "Opening file %s for dumping", 
s_format_context->filename);
+       if (avio_open(&s_format_context->pb, s_format_context->filename, 
AVIO_FLAG_WRITE) < 0)
+       {
+@@ -299,45 +298,52 @@ bool AVIDump::CreateFile()
+       return true;
+ }
+ 
++static void PreparePacket(AVPacket* pkt)
++{
++      av_init_packet(pkt);
++      pkt->data = nullptr;
++      pkt->size = 0;
++      if (s_stream->codec->coded_frame->pts != AV_NOPTS_VALUE)
++      {
++              pkt->pts = av_rescale_q(s_stream->codec->coded_frame->pts,
++                                      s_stream->codec->time_base, 
s_stream->time_base);
++      }
++      if (s_stream->codec->coded_frame->key_frame)
++              pkt->flags |= AV_PKT_FLAG_KEY;
++      pkt->stream_index = s_stream->index;
++}
++
+ void AVIDump::AddFrame(const u8* data, int width, int height)
+ {
+-      avpicture_fill((AVPicture*)s_bgr_frame, const_cast<u8*>(data), 
PIX_FMT_BGR24, width, height);
++      avpicture_fill((AVPicture*)s_bgr_frame, const_cast<u8*>(data), 
AV_PIX_FMT_BGR24, width, height);
+ 
+       // Convert image from BGR24 to desired pixel format, and scale to 
initial
+       // width and height
+-      struct SwsContext* s_sws_context;
+-      if ((s_sws_context = sws_getContext(width, height, PIX_FMT_BGR24, 
s_width, s_height,
+-                                          s_stream->codec->pix_fmt, 
SWS_BICUBIC, nullptr, nullptr, nullptr)))
++      if ((s_sws_context = sws_getCachedContext(s_sws_context,
++                                                width, height, 
AV_PIX_FMT_BGR24,
++                                                s_width, s_height, 
s_stream->codec->pix_fmt,
++                                                SWS_BICUBIC, nullptr, 
nullptr, nullptr)))
+       {
+               sws_scale(s_sws_context, s_bgr_frame->data, 
s_bgr_frame->linesize, 0,
+                         height, s_yuv_frame->data, s_yuv_frame->linesize);
+-              sws_freeContext(s_sws_context);
+       }
+ 
+-      // Encode and write the image
+-      int outsize = avcodec_encode_video(s_stream->codec, s_out_buffer, 
s_size, s_yuv_frame);
+-      while (outsize > 0)
++      // Encode and write the image.
++      AVPacket pkt;
++      PreparePacket(&pkt);
++      int got_packet;
++      int error = avcodec_encode_video2(s_stream->codec, &pkt, s_yuv_frame, 
&got_packet);
++      while (!error && got_packet)
+       {
+-              AVPacket pkt;
+-              av_init_packet(&pkt);
+-
+-              if (s_stream->codec->coded_frame->pts != (unsigned 
int)AV_NOPTS_VALUE)
+-              {
+-                      pkt.pts = 
av_rescale_q(s_stream->codec->coded_frame->pts,
+-                                             s_stream->codec->time_base, 
s_stream->time_base);
+-              }
+-              if (s_stream->codec->coded_frame->key_frame)
+-                      pkt.flags |= AV_PKT_FLAG_KEY;
+-              pkt.stream_index = s_stream->index;
+-              pkt.data = s_out_buffer;
+-              pkt.size = outsize;
+-
+-              // Write the compressed frame in the media file
++              // Write the compressed frame in the media file.
+               av_interleaved_write_frame(s_format_context, &pkt);
+ 
+-              // Encode delayed frames
+-              outsize = avcodec_encode_video(s_stream->codec, s_out_buffer, 
s_size, nullptr);
++              // Handle delayed frames.
++              PreparePacket(&pkt);
++              error = avcodec_encode_video2(s_stream->codec, &pkt, nullptr, 
&got_packet);
+       }
++      if (error)
++              ERROR_LOG(VIDEO, "Error while encoding video: %d", error);
+ }
+ 
+ void AVIDump::Stop()
+@@ -358,20 +364,13 @@ void AVIDump::CloseFile()
+       }
+ 
+       if (s_yuv_buffer)
++      {
+               delete[] s_yuv_buffer;
+-      s_yuv_buffer = nullptr;
+-
+-      if (s_out_buffer)
+-              delete[] s_out_buffer;
+-      s_out_buffer = nullptr;
+-
+-      if (s_bgr_frame)
+-              av_free(s_bgr_frame);
+-      s_bgr_frame = nullptr;
++              s_yuv_buffer = nullptr;
++      }
+ 
+-      if (s_yuv_frame)
+-              av_free(s_yuv_frame);
+-      s_yuv_frame = nullptr;
++      av_frame_free(&s_bgr_frame);
++      av_frame_free(&s_yuv_frame);
+ 
+       if (s_format_context)
+       {
+@@ -380,6 +379,12 @@ void AVIDump::CloseFile()
+               av_free(s_format_context);
+               s_format_context = nullptr;
+       }
++
++      if (s_sws_context)
++      {
++              sws_freeContext(s_sws_context);
++              s_sws_context = nullptr;
++      }
+ }
+ 
+ #endif
+-- 
+2.1.3
+
diff --git a/debian/patches/03_fixes-for-polarssl-1.3.patch 
b/debian/patches/03_fixes-for-polarssl-1.3.patch
new file mode 100644
index 0000000..d76c12a
--- /dev/null
+++ b/debian/patches/03_fixes-for-polarssl-1.3.patch
@@ -0,0 +1,251 @@
+From 33beaf20f3c511bf2c6b751366b38b3eb023aad7 Mon Sep 17 00:00:00 2001
+From: Tillmann Karras <[email protected]>
+Date: Mon, 24 Feb 2014 16:08:43 +0100
+Subject: [PATCH] PolarSSL: adapt Dolphin to new version
+
+- strip down PolarSSL's CMakeLists.txt
+- switch to the PolarSSL 1.3 API
+- use entropy interface instead of havege (PolarSSL 1.3 has disabled
+  havege by default because it is "considered unsafe for primary usage")
+
+ James Cowgill: Don't bother with vcxproj file
+
+---
+ CMakeTests/FindPolarSSL.cmake                      |  24 ++---
+ Externals/polarssl/CMakeLists.txt                  |  22 ----
+ Externals/polarssl/visualc/PolarSSL.vcxproj        | 117 +++++++++++++++++++++
+ .../Core/IPC_HLE/WII_IPC_HLE_Device_net_ssl.cpp    |  49 +++++----
+ .../Core/Core/IPC_HLE/WII_IPC_HLE_Device_net_ssl.h |  10 +-
+ 5 files changed, 158 insertions(+), 64 deletions(-)
+ create mode 100644 Externals/polarssl/visualc/PolarSSL.vcxproj
+
+diff --git a/CMakeTests/FindPolarSSL.cmake b/CMakeTests/FindPolarSSL.cmake
+index be67c56..c55b2bb 100644
+--- a/CMakeTests/FindPolarSSL.cmake
++++ b/CMakeTests/FindPolarSSL.cmake
+@@ -31,23 +31,23 @@ if (POLARSSL_FOUND)
+       check_cxx_source_compiles("
+       #include <polarssl/net.h>
+       #include <polarssl/ssl.h>
+-      #include <polarssl/havege.h>
++      #include <polarssl/entropy.h>
+       int main()
+       {
+-      ssl_context ctx;
+-      ssl_session session;
+-      havege_state hs;
++              ssl_context ctx;
++              ssl_session session;
++              entropy_context entropy;
+ 
+-      ssl_init(&ctx);
+-      havege_init(&hs);
+-      ssl_set_rng(&ctx, havege_random, &hs);
+-      ssl_set_session(&ctx, &session);
++              ssl_init(&ctx);
++              entropy_init(&entropy);
++              ssl_set_rng(&ctx, entropy_func, &entropy);
++              ssl_set_session(&ctx, &session);
+ 
+-      ssl_close_notify(&ctx);
+-      ssl_session_free(&session);
+-      ssl_free(&ctx);
++              ssl_close_notify(&ctx);
++              ssl_session_free(&session);
++              ssl_free(&ctx);
+ 
+-      return 0;
++              return 0;
+       }"
+       POLARSSL_WORKS)
+ 
+diff --git a/Externals/polarssl/CMakeLists.txt 
b/Externals/polarssl/CMakeLists.txt
+index 558aedf..198db72 100644
+--- a/Externals/polarssl/CMakeLists.txt
++++ b/Externals/polarssl/CMakeLists.txt
+@@ -1,8 +1,6 @@
+ cmake_minimum_required(VERSION 2.6)
+ project(POLARSSL C)
+ 
+-enable_testing()
+-
+ string(REGEX MATCH "clang" CMAKE_COMPILER_IS_CLANG "${CMAKE_C_COMPILER}")
+ 
+ if(CMAKE_COMPILER_IS_GNUCC)
+@@ -48,23 +46,3 @@ if(ENABLE_ZLIB_SUPPORT)
+ endif(ENABLE_ZLIB_SUPPORT)
+ 
+ add_subdirectory(library)
+-add_subdirectory(include)
+-
+-if(CMAKE_COMPILER_IS_GNUCC)
+-  add_subdirectory(tests)
+-endif(CMAKE_COMPILER_IS_GNUCC)
+-if(CMAKE_COMPILER_IS_CLANG)
+-  add_subdirectory(tests)
+-endif(CMAKE_COMPILER_IS_CLANG)
+-
+-add_subdirectory(programs)
+-
+-ADD_CUSTOM_TARGET(apidoc
+-                  COMMAND doxygen doxygen/polarssl.doxyfile
+-                  WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+-
+-ADD_CUSTOM_TARGET(memcheck
+-    COMMAND ctest -O memcheck.log -D ExperimentalMemCheck
+-    COMMAND tail -n1 memcheck.log | grep 'Memory checking results:' > 
/dev/null
+-    COMMAND rm -f memcheck.log
+-    )
+diff --git a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_net_ssl.cpp 
b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_net_ssl.cpp
+index ba92259..f25972b 100644
+--- a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_net_ssl.cpp
++++ b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_net_ssl.cpp
+@@ -28,12 +28,12 @@ CWII_IPC_HLE_Device_net_ssl::~CWII_IPC_HLE_Device_net_ssl()
+                       ssl_session_free(&_SSL[i].session);
+                       ssl_free(&_SSL[i].ctx);
+ 
+-                      x509_free(&_SSL[i].cacert);
+-                      x509_free(&_SSL[i].clicert);
++                      x509_crt_free(&_SSL[i].cacert);
++                      x509_crt_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].entropy, 0, sizeof(entropy_context));
+                       memset(_SSL[i].hostname, 0, NET_SSL_MAX_HOSTNAME_LEN);
+ 
+                       _SSL[i].active = false;
+@@ -147,13 +147,12 @@ bool CWII_IPC_HLE_Device_net_ssl::IOCtlV(u32 
_CommandAddress)
+                               goto _SSL_NEW_ERROR;
+                       }
+ 
+-                      havege_init(&_SSL[sslID].hs);
+-                      ssl_set_rng(&_SSL[sslID].ctx, havege_random, 
&_SSL[sslID].hs);
++                      entropy_init(&_SSL[sslID].entropy);
++                      ssl_set_rng(&_SSL[sslID].ctx, entropy_func, 
&_SSL[sslID].entropy);
+ 
+                       // 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_endpoint(&_SSL[sslID].ctx, SSL_IS_CLIENT);
+@@ -192,12 +191,12 @@ _SSL_NEW_ERROR:
+                       ssl_session_free(&_SSL[sslID].session);
+                       ssl_free(&_SSL[sslID].ctx);
+ 
+-                      x509_free(&_SSL[sslID].cacert);
+-                      x509_free(&_SSL[sslID].clicert);
++                      x509_crt_free(&_SSL[sslID].cacert);
++                      x509_crt_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].entropy, 0, 
sizeof(entropy_context));
+                       memset(_SSL[sslID].hostname, 0, 
NET_SSL_MAX_HOSTNAME_LEN);
+ 
+                       _SSL[sslID].active = false;
+@@ -231,7 +230,7 @@ _SSL_NEW_ERROR:
+               int sslID = Memory::Read_U32(BufferOut) - 1;
+               if (SSLID_VALID(sslID))
+               {
+-                      int ret = x509parse_crt_der(
++                      int ret = x509_crt_parse_der(
+                               &_SSL[sslID].cacert,
+                               Memory::GetPointer(BufferOut2),
+                               BufferOutSize2);
+@@ -268,23 +267,23 @@ _SSL_NEW_ERROR:
+               if (SSLID_VALID(sslID))
+               {
+                       std::string 
cert_base_path(File::GetUserPath(D_WIIUSER_IDX));
+-                      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)
++                      int ret = x509_crt_parse_file(&_SSL[sslID].clicert, 
(cert_base_path + "clientca.pem").c_str());
++                      int pk_ret = pk_parse_keyfile(&_SSL[sslID].pk, 
(cert_base_path + "clientcakey.pem").c_str(), NULL);
++                      if (ret || pk_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));
++                              x509_crt_free(&_SSL[sslID].clicert);
++                              pk_free(&_SSL[sslID].pk);
++                              memset(&_SSL[sslID].clicert, 0, 
sizeof(x509_crt));
++                              memset(&_SSL[sslID].pk, 0, sizeof(pk_context));
+                               Memory::Write_U32(SSL_ERR_FAILED, _BufferIn);
+                       }
+                       else
+                       {
+-                              ssl_set_own_cert(&_SSL[sslID].ctx, 
&_SSL[sslID].clicert, &_SSL[sslID].rsa);
++                              ssl_set_own_cert(&_SSL[sslID].ctx, 
&_SSL[sslID].clicert, &_SSL[sslID].pk);
+                               Memory::Write_U32(SSL_OK, _BufferIn);
+                       }
+ 
+-                      INFO_LOG(WII_IPC_SSL, 
"IOCTLV_NET_SSL_SETBUILTINCLIENTCERT = (%d, %d)", ret, rsa_ret);
++                      INFO_LOG(WII_IPC_SSL, 
"IOCTLV_NET_SSL_SETBUILTINCLIENTCERT = (%d, %d)", ret, pk_ret);
+               }
+               else
+               {
+@@ -306,10 +305,10 @@ _SSL_NEW_ERROR:
+               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));
++                      x509_crt_free(&_SSL[sslID].clicert);
++                      pk_free(&_SSL[sslID].pk);
++                      memset(&_SSL[sslID].clicert, 0, sizeof(x509_crt));
++                      memset(&_SSL[sslID].pk, 0, sizeof(pk_context));
+ 
+                       ssl_set_own_cert(&_SSL[sslID].ctx, NULL, NULL);
+                       Memory::Write_U32(SSL_OK, _BufferIn);
+@@ -328,10 +327,10 @@ _SSL_NEW_ERROR:
+               {
+                       std::string 
cert_base_path(File::GetUserPath(D_WIIUSER_IDX));
+ 
+-                      int ret = x509parse_crtfile(&_SSL[sslID].cacert, 
(cert_base_path + "rootca.pem").c_str());
++                      int ret = x509_crt_parse_file(&_SSL[sslID].cacert, 
(cert_base_path + "rootca.pem").c_str());
+                       if (ret)
+                       {
+-                              x509_free(&_SSL[sslID].clicert);
++                              x509_crt_free(&_SSL[sslID].clicert);
+                               Memory::Write_U32(SSL_ERR_FAILED, _BufferIn);
+                       }
+                       else
+diff --git a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_net_ssl.h 
b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_net_ssl.h
+index 80e87ea..145a49e 100644
+--- a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_net_ssl.h
++++ b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_net_ssl.h
+@@ -4,7 +4,7 @@
+ 
+ #pragma once
+ 
+-#include <polarssl/havege.h>
++#include <polarssl/entropy.h>
+ #include <polarssl/net.h>
+ #include <polarssl/ssl.h>
+ 
+@@ -57,10 +57,10 @@ typedef struct
+ {
+       ssl_context ctx;
+       ssl_session session;
+-      havege_state hs;
+-      x509_cert cacert;
+-      x509_cert clicert;
+-      rsa_context rsa;
++      entropy_context entropy;
++      x509_crt cacert;
++      x509_crt clicert;
++      pk_context pk;
+       int sockfd;
+       char hostname[NET_SSL_MAX_HOSTNAME_LEN];
+       bool active;
+-- 
+2.1.3
+
diff --git a/debian/patches/04_use-polarssl-aes.patch 
b/debian/patches/04_use-polarssl-aes.patch
new file mode 100644
index 0000000..b6dfc0d
--- /dev/null
+++ b/debian/patches/04_use-polarssl-aes.patch
@@ -0,0 +1,339 @@
+From 8e73e8ae5fad7f1f893832fcaf14b04e5e052795 Mon Sep 17 00:00:00 2001
+From: Ryan Houdek <[email protected]>
+Date: Sun, 27 Oct 2013 18:27:07 +0000
+Subject: [PATCH] Wipe all traces of OpenSSL's AES implementation. Use polarssl
+ instead.
+
+ James Cowgill: Crypto/aes_* files already removed
+
+---
+ Source/Core/Common/CMakeLists.txt                  |    2 -
+ Source/Core/Common/Common.vcxproj                  |    4 -
+ Source/Core/Common/Common.vcxproj.filters          |   12 -
+ Source/Core/Common/Src/Crypto/aes.h                |  143 ---
+ Source/Core/Common/Src/Crypto/aes_cbc.cpp          |  131 ---
+ Source/Core/Common/Src/Crypto/aes_core.cpp         | 1159 --------------------
+ Source/Core/Common/Src/Crypto/aes_locl.h           |   88 --
+ .../Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp     |   14 +-
+ Source/Core/DiscIO/Src/NANDContentLoader.cpp       |    8 +-
+ Source/Core/DiscIO/Src/VolumeCreator.cpp           |    8 +-
+ Source/Core/DiscIO/Src/VolumeWiiCrypted.cpp        |   10 +-
+ Source/Core/DiscIO/Src/VolumeWiiCrypted.h          |    4 +-
+ .../DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp   |   12 +-
+ .../DolphinWX/Src/MemoryCards/WiiSaveCrypted.h     |    5 +-
+ 14 files changed, 32 insertions(+), 1568 deletions(-)
+ delete mode 100644 Source/Core/Common/Src/Crypto/aes.h
+ delete mode 100644 Source/Core/Common/Src/Crypto/aes_cbc.cpp
+ delete mode 100644 Source/Core/Common/Src/Crypto/aes_core.cpp
+ delete mode 100644 Source/Core/Common/Src/Crypto/aes_locl.h
+
+diff --git a/Source/Core/Common/CMakeLists.txt 
b/Source/Core/Common/CMakeLists.txt
+index ce76f00..e670106 100644
+--- a/Source/Core/Common/CMakeLists.txt
++++ b/Source/Core/Common/CMakeLists.txt
+@@ -24,8 +24,6 @@ set(SRCS     Src/BreakPoints.cpp
+                       Src/x64ABI.cpp
+                       Src/x64Analyzer.cpp
+                       Src/x64Emitter.cpp
+-                      Src/Crypto/aes_cbc.cpp
+-                      Src/Crypto/aes_core.cpp
+                       Src/Crypto/bn.cpp
+                       Src/Crypto/ec.cpp)
+ 
+diff --git a/Source/Core/Common/Common.vcxproj 
b/Source/Core/Common/Common.vcxproj
+index 20cf92d..aa91ad9 100644
+--- a/Source/Core/Common/Common.vcxproj
++++ b/Source/Core/Common/Common.vcxproj
+@@ -180,8 +180,6 @@
+     <ClCompile Include="Src\CDUtils.cpp" />
+     <ClCompile Include="Src\ColorUtil.cpp" />
+     <ClCompile Include="Src\ConsoleListener.cpp" />
+-    <ClCompile Include="Src\Crypto\aes_cbc.cpp" />
+-    <ClCompile Include="Src\Crypto\aes_core.cpp" />
+     <ClCompile Include="Src\Crypto\bn.cpp" />
+     <ClCompile Include="Src\Crypto\ec.cpp" />
+     <ClCompile Include="Src\ExtendedTrace.cpp" />
+@@ -232,8 +230,6 @@
+     <ClInclude Include="Src\CommonTypes.h" />
+     <ClInclude Include="Src\ConsoleListener.h" />
+     <ClInclude Include="Src\CPUDetect.h" />
+-    <ClInclude Include="Src\Crypto\aes.h" />
+-    <ClInclude Include="Src\Crypto\aes_locl.h" />
+     <ClInclude Include="Src\Crypto\tools.h" />
+     <ClInclude Include="Src\DebugInterface.h" />
+     <ClInclude Include="Src\ExtendedTrace.h" />
+diff --git a/Source/Core/Common/Common.vcxproj.filters 
b/Source/Core/Common/Common.vcxproj.filters
+index 05b9edc..fabd8f1 100644
+--- a/Source/Core/Common/Common.vcxproj.filters
++++ b/Source/Core/Common/Common.vcxproj.filters
+@@ -31,12 +31,6 @@
+     <ClCompile Include="Src\ConsoleListener.cpp">
+       <Filter>Logging</Filter>
+     </ClCompile>
+-    <ClCompile Include="Src\Crypto\aes_cbc.cpp">
+-      <Filter>Crypto</Filter>
+-    </ClCompile>
+-    <ClCompile Include="Src\Crypto\aes_core.cpp">
+-      <Filter>Crypto</Filter>
+-    </ClCompile>
+     <ClCompile Include="Src\Crypto\bn.cpp">
+       <Filter>Crypto</Filter>
+     </ClCompile>
+@@ -95,12 +89,6 @@
+     <ClInclude Include="Src\ConsoleListener.h">
+       <Filter>Logging</Filter>
+     </ClInclude>
+-    <ClInclude Include="Src\Crypto\aes.h">
+-      <Filter>Crypto</Filter>
+-    </ClInclude>
+-    <ClInclude Include="Src\Crypto\aes_locl.h">
+-      <Filter>Crypto</Filter>
+-    </ClInclude>
+     <ClInclude Include="Src\Crypto\tools.h">
+       <Filter>Crypto</Filter>
+     </ClInclude>
+diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp 
b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp
+index f0ea0d5..8c214a3 100644
+--- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp
++++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp
+@@ -38,7 +38,7 @@
+ #include "../PowerPC/PowerPC.h"
+ #include "../VolumeHandler.h"
+ #include "FileUtil.h"
+-#include "Crypto/aes.h"
++#include <polarssl/aes.h>
+ #include "ConfigManager.h"
+ 
+ #include "../Boot/Boot_DOL.h"
+@@ -860,10 +860,10 @@ bool CWII_IPC_HLE_Device_es::IOCtlV(u32 _CommandAddress)
+                       u8* newIV               = 
Memory::GetPointer(Buffer.PayloadBuffer[0].m_Address);
+                       u8* destination = 
Memory::GetPointer(Buffer.PayloadBuffer[1].m_Address);
+ 
+-                      AES_KEY AESKey;
+-                      AES_set_encrypt_key(keyTable[keyIndex], 128, &AESKey);
++                      aes_context AES_ctx;
++                      aes_setkey_enc(&AES_ctx, keyTable[keyIndex], 128);
+                       memcpy(newIV, IV, 16);
+-                      AES_cbc_encrypt(source, destination, size, &AESKey, 
newIV, AES_ENCRYPT);
++                      aes_crypt_cbc(&AES_ctx, AES_ENCRYPT, size, newIV, 
source, destination);
+ 
+                       _dbg_assert_msg_(WII_IPC_ES, keyIndex == 6, 
"IOCTL_ES_ENCRYPT: Key type is not SD, data will be crap");
+               }
+@@ -878,10 +878,10 @@ bool CWII_IPC_HLE_Device_es::IOCtlV(u32 _CommandAddress)
+                       u8* newIV               = 
Memory::GetPointer(Buffer.PayloadBuffer[0].m_Address);
+                       u8* destination = 
Memory::GetPointer(Buffer.PayloadBuffer[1].m_Address);
+ 
+-                      AES_KEY AESKey;
+-                      AES_set_decrypt_key(keyTable[keyIndex], 128, &AESKey);
++                      aes_context AES_ctx;
++                      aes_setkey_dec(&AES_ctx, keyTable[keyIndex], 128);
+                       memcpy(newIV, IV, 16);
+-                      AES_cbc_encrypt(source, destination, size, &AESKey, 
newIV, AES_DECRYPT);
++                      aes_crypt_cbc(&AES_ctx, AES_DECRYPT, size, newIV, 
source, destination);
+ 
+                       _dbg_assert_msg_(WII_IPC_ES, keyIndex == 6, 
"IOCTL_ES_DECRYPT: Key type is not SD, data will be crap");
+               }
+diff --git a/Source/Core/DiscIO/Src/NANDContentLoader.cpp 
b/Source/Core/DiscIO/Src/NANDContentLoader.cpp
+index 974f8a9..4e722d1 100644
+--- a/Source/Core/DiscIO/Src/NANDContentLoader.cpp
++++ b/Source/Core/DiscIO/Src/NANDContentLoader.cpp
+@@ -6,7 +6,7 @@
+ 
+ #include <algorithm>
+ #include <cctype>
+-#include "Crypto/aes.h"
++#include <polarssl/aes.h>
+ #include "MathUtil.h"
+ #include "FileUtil.h"
+ #include "Log.h"
+@@ -286,10 +286,10 @@ bool CNANDContentLoader::Initialize(const std::string& 
_rName)
+ }
+ void CNANDContentLoader::AESDecode(u8* _pKey, u8* _IV, u8* _pSrc, u32 _Size, 
u8* _pDest)
+ {
+-      AES_KEY AESKey;
++      aes_context AES_ctx;
+ 
+-      AES_set_decrypt_key(_pKey, 128, &AESKey);
+-      AES_cbc_encrypt(_pSrc, _pDest, _Size, &AESKey, _IV, AES_DECRYPT);
++      aes_setkey_dec(&AES_ctx, _pKey, 128);
++      aes_crypt_cbc(&AES_ctx, AES_DECRYPT, _Size, _IV, _pSrc, _pDest);
+ }
+ 
+ void CNANDContentLoader::GetKeyFromTicket(u8* pTicket, u8* pTicketKey)
+diff --git a/Source/Core/DiscIO/Src/VolumeCreator.cpp 
b/Source/Core/DiscIO/Src/VolumeCreator.cpp
+index 6cf5ea8..20cf868 100644
+--- a/Source/Core/DiscIO/Src/VolumeCreator.cpp
++++ b/Source/Core/DiscIO/Src/VolumeCreator.cpp
+@@ -4,7 +4,7 @@
+ 
+ #include <vector>
+ 
+-#include "Crypto/aes.h"
++#include <polarssl/aes.h>
+ 
+ #include "VolumeCreator.h"
+ 
+@@ -183,11 +183,11 @@ static IVolume* 
CreateVolumeFromCryptedWiiImage(IBlobReader& _rReader, u32 _Part
+                       memset(IV, 0, 16);
+                       _rReader.Read(rPartition.Offset + 0x44c, 8, IV);
+ 
+-                      AES_KEY AES_KEY;
+-                      AES_set_decrypt_key((Korean ? g_MasterKeyK : 
g_MasterKey), 128, &AES_KEY);
++                      aes_context AES_ctx;
++                      aes_setkey_dec(&AES_ctx, (Korean ? g_MasterKeyK : 
g_MasterKey), 128); 
+ 
+                       u8 VolumeKey[16];
+-                      AES_cbc_encrypt(SubKey, VolumeKey, 16, &AES_KEY, IV, 
AES_DECRYPT);
++                      aes_crypt_cbc(&AES_ctx, AES_DECRYPT, 16, IV, SubKey, 
VolumeKey); 
+ 
+                       // -1 means the caller just wanted the partition with 
matching type
+                       if ((int)_VolumeNum == -1 || i == _VolumeNum)
+diff --git a/Source/Core/DiscIO/Src/VolumeWiiCrypted.cpp 
b/Source/Core/DiscIO/Src/VolumeWiiCrypted.cpp
+index 51ee3d5..c20ccf4 100644
+--- a/Source/Core/DiscIO/Src/VolumeWiiCrypted.cpp
++++ b/Source/Core/DiscIO/Src/VolumeWiiCrypted.cpp
+@@ -18,7 +18,8 @@ CVolumeWiiCrypted::CVolumeWiiCrypted(IBlobReader* _pReader, 
u64 _VolumeOffset,
+       dataOffset(0x20000),
+       m_LastDecryptedBlockOffset(-1)
+ {
+-      AES_set_decrypt_key(_pVolumeKey, 128, &m_AES_KEY);
++      m_AES_ctx = new aes_context;
++      aes_setkey_dec(m_AES_ctx, _pVolumeKey, 128);
+       m_pBuffer = new u8[0x8000];
+ }
+ 
+@@ -29,6 +30,8 @@ CVolumeWiiCrypted::~CVolumeWiiCrypted()
+       m_pReader = NULL;
+       delete[] m_pBuffer;
+       m_pBuffer = NULL;
++      delete m_AES_ctx;
++      m_AES_ctx = NULL;
+ }
+ 
+ bool CVolumeWiiCrypted::RAWRead( u64 _Offset, u64 _Length, u8* _pBuffer ) 
const
+@@ -67,7 +70,7 @@ bool CVolumeWiiCrypted::Read(u64 _ReadOffset, u64 _Length, 
u8* _pBuffer) const
+               if (m_LastDecryptedBlockOffset != Block)
+               {
+                       memcpy(IV, m_pBuffer + 0x3d0, 16);
+-                      AES_cbc_encrypt(m_pBuffer + 0x400, 
m_LastDecryptedBlock, 0x7C00, &m_AES_KEY, IV, AES_DECRYPT);
++                      aes_crypt_cbc(m_AES_ctx, AES_DECRYPT, 0x7C00, IV, 
m_pBuffer + 0x400, m_LastDecryptedBlock); 
+ 
+                       m_LastDecryptedBlockOffset = Block;
+               }
+@@ -250,7 +253,8 @@ bool CVolumeWiiCrypted::CheckIntegrity() const
+                       NOTICE_LOG(DISCIO, "Integrity Check: fail at cluster 
%d: could not read metadata", clusterID);
+                       return false;
+               }
+-              AES_cbc_encrypt(clusterMDCrypted, clusterMD, 0x400, &m_AES_KEY, 
IV, AES_DECRYPT);
++              aes_crypt_cbc(m_AES_ctx, AES_DECRYPT, 0x400, IV, 
clusterMDCrypted, clusterMD); 
++
+ 
+               // Some clusters have invalid data and metadata because they 
aren't
+               // meant to be read by the game (for example, holes between 
files). To
+diff --git a/Source/Core/DiscIO/Src/VolumeWiiCrypted.h 
b/Source/Core/DiscIO/Src/VolumeWiiCrypted.h
+index 4577746..4756a88 100644
+--- a/Source/Core/DiscIO/Src/VolumeWiiCrypted.h
++++ b/Source/Core/DiscIO/Src/VolumeWiiCrypted.h
+@@ -7,7 +7,7 @@
+ 
+ #include "Volume.h"
+ #include "Blob.h"
+-#include "Crypto/aes.h"
++#include <polarssl/aes.h>
+ 
+ // --- this volume type is used for encrypted Wii images ---
+ 
+@@ -38,7 +38,7 @@ private:
+       IBlobReader* m_pReader;
+ 
+       u8* m_pBuffer;
+-      AES_KEY m_AES_KEY;
++      aes_context* m_AES_ctx;
+ 
+       u64 m_VolumeOffset;
+       u64 dataOffset;
+diff --git a/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp 
b/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp
+index 091804e..99cea98 100644
+--- a/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp
++++ b/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp
+@@ -78,7 +78,7 @@ CWiiSaveCrypted::CWiiSaveCrypted(const char* FileName, u64 
TitleID)
+ 
+       if (!TitleID) // Import
+       {
+-              AES_set_decrypt_key(SDKey, 128, &m_AES_KEY);
++              aes_setkey_dec(&m_AES_ctx, SDKey, 128);
+                       b_valid = true;
+                       ReadHDR();
+                       ReadBKHDR();
+@@ -95,7 +95,7 @@ CWiiSaveCrypted::CWiiSaveCrypted(const char* FileName, u64 
TitleID)
+       }
+       else
+       {
+-              AES_set_encrypt_key(SDKey, 128, &m_AES_KEY);
++              aes_setkey_enc(&m_AES_ctx, SDKey, 128);
+               
+               if (getPaths(true))
+               {
+@@ -133,7 +133,7 @@ void CWiiSaveCrypted::ReadHDR()
+       }
+       fpData_bin.Close();
+ 
+-      AES_cbc_encrypt((const u8*)&_encryptedHeader, (u8*)&_header, HEADER_SZ, 
&m_AES_KEY, SD_IV, AES_DECRYPT);
++      aes_crypt_cbc(&m_AES_ctx, AES_DECRYPT, HEADER_SZ, SD_IV, (const 
u8*)&_encryptedHeader, (u8*)&_header); 
+       u32 bannerSize = Common::swap32(_header.hdr.BannerSize);
+       if ((bannerSize < FULL_BNR_MIN) || (bannerSize > FULL_BNR_MAX) ||
+               (((bannerSize - BNR_SZ) % ICON_SZ) != 0))
+@@ -197,7 +197,7 @@ void CWiiSaveCrypted::WriteHDR()
+       md5((u8*)&_header, HEADER_SZ, md5_calc);
+       memcpy(_header.hdr.Md5, md5_calc, 0x10);
+ 
+-      AES_cbc_encrypt((const unsigned char *)&_header, 
(u8*)&_encryptedHeader, HEADER_SZ, &m_AES_KEY, SD_IV, AES_ENCRYPT);
++      aes_crypt_cbc(&m_AES_ctx, AES_ENCRYPT, HEADER_SZ, SD_IV, (const 
u8*)&_header, (u8*)&_encryptedHeader);
+       
+       File::IOFile fpData_bin(encryptedSavePath, "wb");
+       if (!fpData_bin.WriteBytes(&_encryptedHeader, HEADER_SZ))
+@@ -332,7 +332,7 @@ void CWiiSaveCrypted::ImportWiiSaveFiles()
+                               
+                               
+                               memcpy(IV, _tmpFileHDR.IV, 0x10);
+-                              AES_cbc_encrypt((const unsigned char 
*)&_encryptedData[0], &_data[0], RoundedFileSize, &m_AES_KEY, IV, AES_DECRYPT);
++                              aes_crypt_cbc(&m_AES_ctx, AES_DECRYPT, 
RoundedFileSize, IV, (const u8*)&_encryptedData[0], &_data[0]);  
+       
+                               if (!File::Exists(fullFilePath) || 
AskYesNoT("%s already exists, overwrite?", fullFilePath.c_str()))
+                               {
+@@ -421,7 +421,7 @@ void CWiiSaveCrypted::ExportWiiSaveFiles()
+                               b_valid = false;
+                       }
+ 
+-                      AES_cbc_encrypt((const u8*)&_data[0], 
&_encryptedData[0], _roundedfileSize, &m_AES_KEY, tmpFileHDR.IV, AES_ENCRYPT);
++                      aes_crypt_cbc(&m_AES_ctx, AES_ENCRYPT, 
_roundedfileSize, tmpFileHDR.IV, (const u8*)&_data[0], &_encryptedData[0]);
+                       
+                       File::IOFile fpData_bin(encryptedSavePath, "ab");
+                       if (!fpData_bin.WriteBytes(&_encryptedData[0], 
_roundedfileSize))
+diff --git a/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.h 
b/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.h
+index 29a3e1f..6ec4194 100644
+--- a/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.h
++++ b/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.h
+@@ -6,8 +6,8 @@
+ #define _WII_SAVE_CRYPTED
+ 
+ #include "StringUtil.h"
+-#include "Crypto/aes.h"
+ #include "Crypto/tools.h"
++#include <polarssl/aes.h>
+ #include "polarssl/md5.h"
+ 
+ // --- this is used for encrypted Wii save files
+@@ -35,8 +35,7 @@ private:
+       bool getPaths(bool forExport = false);
+       void ScanForFiles(std::string savDir, 
std::vector<std::string>&FilesList, u32 *_numFiles, u32 *_sizeFiles);
+ 
+-
+-      AES_KEY m_AES_KEY;
++      aes_context m_AES_ctx;
+       u8 SD_IV[0x10];
+       std::vector<std::string> FilesList;
+ 
+-- 
+2.1.3
+
diff --git a/debian/patches/08_polarssl-use-1.3.patch 
b/debian/patches/08_polarssl-use-1.3.patch
deleted file mode 100644
index d08a6fe..0000000
--- a/debian/patches/08_polarssl-use-1.3.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-Upgrade PolarSSL to version 1.3+
-Index: 
dolphin-emu-4.0.2/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net_ssl.h
-===================================================================
---- 
dolphin-emu-4.0.2.orig/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net_ssl.h
   2013-11-29 13:05:19.000000000 -0800
-+++ 
dolphin-emu-4.0.2/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net_ssl.h     
   2013-11-30 22:06:23.703137735 -0800
-@@ -10,6 +10,7 @@
- #include <polarssl/net.h>
- #include <polarssl/ssl.h>
- #include <polarssl/havege.h>
-+#include <polarssl/x509.h>
- 
- #define NET_SSL_MAX_HOSTNAME_LEN 256
- #define NET_SSL_MAXINSTANCES 4
-@@ -58,8 +59,8 @@
-       ssl_context ctx;
-       ssl_session session;
-       havege_state hs;
--      x509_cert cacert;
--      x509_cert clicert;
-+      x509_crt cacert;
-+      x509_crt clicert;
-       rsa_context rsa;
-       int sockfd;
-       char hostname[NET_SSL_MAX_HOSTNAME_LEN];
-Index: 
dolphin-emu-4.0.2/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net_ssl.cpp
-===================================================================
---- 
dolphin-emu-4.0.2.orig/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net_ssl.cpp
 2013-11-29 13:05:19.000000000 -0800
-+++ 
dolphin-emu-4.0.2/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net_ssl.cpp   
   2013-11-30 22:06:23.703137735 -0800
-@@ -2,6 +2,8 @@
- // Licensed under GPLv2
- // Refer to the license.txt file included.
- 
-+#include <polarssl/compat-1.2.h>
-+
- #include "FileUtil.h"
- #include "WII_IPC_HLE_Device_net_ssl.h"
- #include "WII_Socket.h"
-@@ -28,8 +30,8 @@
-                       ssl_session_free(&_SSL[i].session);
-                       ssl_free(&_SSL[i].ctx);
- 
--                      x509_free(&_SSL[i].cacert);
--                      x509_free(&_SSL[i].clicert);
-+                      x509_crt_free(&_SSL[i].cacert);
-+                      x509_crt_free(&_SSL[i].clicert);
- 
-                       memset(&_SSL[i].ctx, 0, sizeof(ssl_context));
-                       memset(&_SSL[i].session, 0, sizeof(ssl_session));
-@@ -153,7 +155,7 @@
-                       // 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_ciphersuites(&_SSL[sslID].ctx, 
ssl_list_ciphersuites());
-                       ssl_set_session(&_SSL[sslID].ctx, &_SSL[sslID].session);
- 
-                       ssl_set_endpoint(&_SSL[sslID].ctx, SSL_IS_CLIENT);
-@@ -192,8 +194,8 @@
-                       ssl_session_free(&_SSL[sslID].session);
-                       ssl_free(&_SSL[sslID].ctx);
- 
--                      x509_free(&_SSL[sslID].cacert);
--                      x509_free(&_SSL[sslID].clicert);
-+                      x509_crt_free(&_SSL[sslID].cacert);
-+                      x509_crt_free(&_SSL[sslID].clicert);
- 
-                       memset(&_SSL[sslID].ctx, 0, sizeof(ssl_context));
-                       memset(&_SSL[sslID].session, 0, sizeof(ssl_session));
-@@ -231,7 +233,7 @@
-               int sslID = Memory::Read_U32(BufferOut) - 1;
-               if (SSLID_VALID(sslID))
-               {
--                      int ret = x509parse_crt_der(
-+                      int ret = x509_crt_parse_der(
-                               &_SSL[sslID].cacert,
-                               Memory::GetPointer(BufferOut2),
-                               BufferOutSize2);
-@@ -268,19 +270,19 @@
-               if (SSLID_VALID(sslID))
-               {
-                       std::string 
cert_base_path(File::GetUserPath(D_WIIUSER_IDX));
--                      int ret = x509parse_crtfile(&_SSL[sslID].clicert, 
(cert_base_path + "clientca.pem").c_str());
-+                      int ret = x509_crt_parse_file(&_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);
-+                              x509_crt_free(&_SSL[sslID].clicert);
-                               rsa_free(&_SSL[sslID].rsa);
--                              memset(&_SSL[sslID].clicert, 0, 
sizeof(x509_cert));
-+                              memset(&_SSL[sslID].clicert, 0, 
sizeof(x509_crt));
-                               memset(&_SSL[sslID].rsa, 0, 
sizeof(rsa_context));
-                               Memory::Write_U32(SSL_ERR_FAILED, _BufferIn);
-                       }
-                       else
-                       {
--                              ssl_set_own_cert(&_SSL[sslID].ctx, 
&_SSL[sslID].clicert, &_SSL[sslID].rsa);
-+                              ssl_set_own_cert_rsa(&_SSL[sslID].ctx, 
&_SSL[sslID].clicert, &_SSL[sslID].rsa);
-                               Memory::Write_U32(SSL_OK, _BufferIn);
-                       }
- 
-@@ -306,12 +308,12 @@
-               int sslID = Memory::Read_U32(BufferOut) - 1;
-               if (SSLID_VALID(sslID))
-               {
--                      x509_free(&_SSL[sslID].clicert);
-+                      x509_crt_free(&_SSL[sslID].clicert);
-                       rsa_free(&_SSL[sslID].rsa);
--                      memset(&_SSL[sslID].clicert, 0, sizeof(x509_cert));
-+                      memset(&_SSL[sslID].clicert, 0, sizeof(x509_crt));
-                       memset(&_SSL[sslID].rsa, 0, sizeof(rsa_context));
- 
--                      ssl_set_own_cert(&_SSL[sslID].ctx, NULL, NULL);
-+                      ssl_set_own_cert_rsa(&_SSL[sslID].ctx, NULL, NULL);
-                       Memory::Write_U32(SSL_OK, _BufferIn);
-               }
-               else
-@@ -328,10 +330,10 @@
-               {
-                       std::string 
cert_base_path(File::GetUserPath(D_WIIUSER_IDX));
- 
--                      int ret = x509parse_crtfile(&_SSL[sslID].cacert, 
(cert_base_path + "rootca.pem").c_str());
-+                      int ret = x509_crt_parse_file(&_SSL[sslID].cacert, 
(cert_base_path + "rootca.pem").c_str());
-                       if (ret)
-                       {
--                              x509_free(&_SSL[sslID].clicert);
-+                              x509_crt_free(&_SSL[sslID].clicert);
-                               Memory::Write_U32(SSL_ERR_FAILED, _BufferIn);
-                       }
-                       else
diff --git a/debian/patches/11_polarssl-replace-aes.patch 
b/debian/patches/11_polarssl-replace-aes.patch
deleted file mode 100644
index ad522cf..0000000
--- a/debian/patches/11_polarssl-replace-aes.patch
+++ /dev/null
@@ -1,160 +0,0 @@
-Use PolarSSL instead of non-GPL compatible OpenSSL for AES functions
-Index: dolphin-emu-4.0.2/Source/Core/Common/CMakeLists.txt
-===================================================================
---- dolphin-emu-4.0.2.orig/Source/Core/Common/CMakeLists.txt   2013-11-29 
13:05:19.000000000 -0800
-+++ dolphin-emu-4.0.2/Source/Core/Common/CMakeLists.txt        2013-11-30 
22:06:32.119137368 -0800
-@@ -24,8 +24,6 @@
-                       Src/x64ABI.cpp
-                       Src/x64Analyzer.cpp
-                       Src/x64Emitter.cpp
--                      Src/Crypto/aes_cbc.cpp
--                      Src/Crypto/aes_core.cpp
-                       Src/Crypto/bn.cpp
-                       Src/Crypto/ec.cpp)
- 
-Index: dolphin-emu-4.0.2/Source/Core/Common/Src/Crypto/openssl-wrapper.h
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ dolphin-emu-4.0.2/Source/Core/Common/Src/Crypto/openssl-wrapper.h  
2013-11-30 22:06:32.119137368 -0800
-@@ -0,0 +1,41 @@
-+/**
-+ * \file openssl.h
-+ *
-+ * \brief OpenSSL wrapper (definitions, inline functions).
-+ *
-+ *  Copyright (C) 2013, Brandon Barnes
-+ *  Copyright (C) 2006-2010, Brainspark B.V.
-+ *  originally contributed by David Barett
-+ *
-+ *  This is a fork of openssl.h, a part of PolarSSL
-+ *
-+ *  This program is free software; you can redistribute it and/or modify
-+ *  it under the terms of the GNU General Public License as published by
-+ *  the Free Software Foundation; either version 2 of the License, or
-+ *  (at your option) any later version.
-+ *
-+ *  This program is distributed in the hope that it will be useful,
-+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ *  GNU General Public License for more details.
-+ *
-+ *  You should have received a copy of the GNU General Public License along
-+ *  with this program; if not, write to the Free Software Foundation, Inc.,
-+ *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-+ */
-+
-+#ifndef POLARSSL_OPENSSL_H
-+#define POLARSSL_OPENSSL_H
-+
-+#include <polarssl/aes.h>
-+
-+#define AES_KEY                 aes_context
-+
-+#define AES_set_encrypt_key( KEY, KEYSIZE, CTX ) \
-+        aes_setkey_enc( (CTX), (KEY), (KEYSIZE) )
-+#define AES_set_decrypt_key( KEY, KEYSIZE, CTX ) \
-+        aes_setkey_dec( (CTX), (KEY), (KEYSIZE) )
-+#define AES_cbc_encrypt( INPUT, OUTPUT, LEN, CTX, IV, MODE ) \
-+        aes_crypt_cbc( (CTX), (MODE), (LEN), (IV), (INPUT), (OUTPUT) )
-+
-+#endif /* openssl.h */
-Index: dolphin-emu-4.0.2/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp
-===================================================================
---- 
dolphin-emu-4.0.2.orig/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp   
   2013-11-29 13:05:19.000000000 -0800
-+++ dolphin-emu-4.0.2/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp   
2013-11-30 22:06:32.119137368 -0800
-@@ -38,7 +38,7 @@
- #include "../PowerPC/PowerPC.h"
- #include "../VolumeHandler.h"
- #include "FileUtil.h"
--#include "Crypto/aes.h"
-+#include "Crypto/openssl-wrapper.h"
- #include "ConfigManager.h"
- 
- #include "../Boot/Boot_DOL.h"
-Index: dolphin-emu-4.0.2/Source/Core/DiscIO/Src/NANDContentLoader.cpp
-===================================================================
---- dolphin-emu-4.0.2.orig/Source/Core/DiscIO/Src/NANDContentLoader.cpp        
2013-11-29 13:05:19.000000000 -0800
-+++ dolphin-emu-4.0.2/Source/Core/DiscIO/Src/NANDContentLoader.cpp     
2013-11-30 22:06:32.119137368 -0800
-@@ -6,7 +6,7 @@
- 
- #include <algorithm>
- #include <cctype>
--#include "Crypto/aes.h"
-+#include "Crypto/openssl-wrapper.h"
- #include "MathUtil.h"
- #include "FileUtil.h"
- #include "Log.h"
-Index: dolphin-emu-4.0.2/Source/Core/DiscIO/Src/VolumeCreator.cpp
-===================================================================
---- dolphin-emu-4.0.2.orig/Source/Core/DiscIO/Src/VolumeCreator.cpp    
2013-11-29 13:05:19.000000000 -0800
-+++ dolphin-emu-4.0.2/Source/Core/DiscIO/Src/VolumeCreator.cpp 2013-11-30 
22:06:32.119137368 -0800
-@@ -4,7 +4,7 @@
- 
- #include <vector>
- 
--#include "Crypto/aes.h"
-+#include "Crypto/openssl-wrapper.h"
- 
- #include "VolumeCreator.h"
- 
-Index: dolphin-emu-4.0.2/Source/Core/DiscIO/Src/VolumeWiiCrypted.h
-===================================================================
---- dolphin-emu-4.0.2.orig/Source/Core/DiscIO/Src/VolumeWiiCrypted.h   
2013-11-29 13:05:19.000000000 -0800
-+++ dolphin-emu-4.0.2/Source/Core/DiscIO/Src/VolumeWiiCrypted.h        
2013-11-30 22:06:32.119137368 -0800
-@@ -7,7 +7,7 @@
- 
- #include "Volume.h"
- #include "Blob.h"
--#include "Crypto/aes.h"
-+#include "Crypto/openssl-wrapper.h"
- 
- // --- this volume type is used for encrypted Wii images ---
- 
-Index: dolphin-emu-4.0.2/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.h
-===================================================================
---- 
dolphin-emu-4.0.2.orig/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.h   
   2013-11-29 13:05:19.000000000 -0800
-+++ dolphin-emu-4.0.2/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.h   
2013-11-30 22:06:32.123137366 -0800
-@@ -6,7 +6,7 @@
- #define _WII_SAVE_CRYPTED
- 
- #include "StringUtil.h"
--#include "Crypto/aes.h"
-+#include "Crypto/openssl-wrapper.h"
- #include "Crypto/tools.h"
- #include "polarssl/md5.h"
- 
-Index: dolphin-emu-4.0.2/Source/Core/Core/Src/ec_wii.cpp
-===================================================================
---- dolphin-emu-4.0.2.orig/Source/Core/Core/Src/ec_wii.cpp     2013-11-29 
13:05:19.000000000 -0800
-+++ dolphin-emu-4.0.2/Source/Core/Core/Src/ec_wii.cpp  2013-11-30 
22:06:32.123137366 -0800
-@@ -10,7 +10,7 @@
- #include <stdio.h>
- #include <string.h>
- #include "Common.h"
--#include "Crypto/aes.h"
-+#include "Crypto/openssl-wrapper.h"
- #include "polarssl/sha1.h"
- #include "Crypto/tools.h"
- #include "FileUtil.h"
-Index: dolphin-emu-4.0.2/Source/Core/DiscIO/Src/VolumeWiiCrypted.cpp
-===================================================================
---- dolphin-emu-4.0.2.orig/Source/Core/DiscIO/Src/VolumeWiiCrypted.cpp 
2013-11-29 13:05:19.000000000 -0800
-+++ dolphin-emu-4.0.2/Source/Core/DiscIO/Src/VolumeWiiCrypted.cpp      
2013-11-30 22:06:32.123137366 -0800
-@@ -67,7 +67,7 @@
-               if (m_LastDecryptedBlockOffset != Block)
-               {
-                       memcpy(IV, m_pBuffer + 0x3d0, 16);
--                      AES_cbc_encrypt(m_pBuffer + 0x400, 
m_LastDecryptedBlock, 0x7C00, &m_AES_KEY, IV, AES_DECRYPT);
-+                      AES_cbc_encrypt(m_pBuffer + 0x400, 
m_LastDecryptedBlock, 0x7C00, (AES_KEY *) &m_AES_KEY, IV, AES_DECRYPT);
- 
-                       m_LastDecryptedBlockOffset = Block;
-               }
-@@ -250,7 +250,7 @@
-                       NOTICE_LOG(DISCIO, "Integrity Check: fail at cluster 
%d: could not read metadata", clusterID);
-                       return false;
-               }
--              AES_cbc_encrypt(clusterMDCrypted, clusterMD, 0x400, &m_AES_KEY, 
IV, AES_DECRYPT);
-+              AES_cbc_encrypt(clusterMDCrypted, clusterMD, 0x400, (AES_KEY *) 
&m_AES_KEY, IV, AES_DECRYPT);
- 
-               // Some clusters have invalid data and metadata because they 
aren't
-               // meant to be read by the game (for example, holes between 
files). To
diff --git a/debian/patches/90_g++-use-4.9.patch 
b/debian/patches/90_g++-use-4.9.patch
deleted file mode 100644
index 29b623f..0000000
--- a/debian/patches/90_g++-use-4.9.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Update code to compile with g++ 4.9.
-Index: dolphin-emu-4.0.2/Source/Core/Common/Src/CommonFuncs.h
-===================================================================
---- dolphin-emu-4.0.2.orig/Source/Core/Common/Src/CommonFuncs.h        
2014-07-04 15:42:18.635514892 -0700
-+++ dolphin-emu-4.0.2/Source/Core/Common/Src/CommonFuncs.h     2014-07-04 
16:15:32.195428710 -0700
-@@ -32,6 +32,7 @@
- 
- #if defined __GNUC__ && !defined __SSSE3__ && !defined _M_GENERIC
- #include <emmintrin.h>
-+#if (__GNUC__ * 1000 + __GNUC_MINOR__ < 4009)
- static __inline __m128i __attribute__((__always_inline__))
- _mm_shuffle_epi8(__m128i a, __m128i mask)
- {
-@@ -41,6 +42,9 @@
-               : "xm" (mask), "0" (a));
-       return result;
- }
-+#else
-+#include <tmmintrin.h>
-+#endif
- #endif
- 
- #ifndef _WIN32
diff --git a/debian/patches/910_av-use-555553.patch 
b/debian/patches/910_av-use-555553.patch
deleted file mode 100644
index 0c4957f..0000000
--- a/debian/patches/910_av-use-555553.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-Update code to compile with libav 55/55/53.
-Index: dolphin-emu-4.0.2/Source/Core/VideoCommon/Src/AVIDump.cpp
-===================================================================
---- dolphin-emu-4.0.2.orig/Source/Core/VideoCommon/Src/AVIDump.cpp
-+++ dolphin-emu-4.0.2/Source/Core/VideoCommon/Src/AVIDump.cpp
-@@ -243,6 +243,45 @@ bool AVIDump::Start(int w, int h)
-       return CreateFile();
- }
- 
-+#if (LIBAVCODEC_VERSION_MAJOR >= 55)
-+
-+#define CODEC_ID_FFV1 AV_CODEC_ID_FFV1
-+
-+// Shamelessly copied from libav-9.13 utils.c
-+int avcodec_encode_video(AVCodecContext *avctx, uint8_t *buf, int buf_size,
-+                                             const AVFrame *pict)
-+{
-+    AVPacket pkt;
-+    int ret, got_packet = 0;
-+
-+    if (buf_size < FF_MIN_BUFFER_SIZE) {
-+        av_log(avctx, AV_LOG_ERROR, "buffer smaller than minimum size\n");
-+        return -1;
-+    }
-+
-+    av_init_packet(&pkt);
-+    pkt.data = buf;
-+    pkt.size = buf_size;
-+
-+    ret = avcodec_encode_video2(avctx, &pkt, pict, &got_packet);
-+    if (!ret && got_packet && avctx->coded_frame) {
-+        avctx->coded_frame->pts       = pkt.pts;
-+        avctx->coded_frame->key_frame = !!(pkt.flags & AV_PKT_FLAG_KEY);
-+    }
-+
-+    /* free any side data since we cannot return it */
-+    if (pkt.side_data_elems > 0) {
-+        int i;
-+        for (i = 0; i < pkt.side_data_elems; i++)
-+            av_free(pkt.side_data[i].data);
-+        av_freep(&pkt.side_data);
-+        pkt.side_data_elems = 0;
-+    }
-+
-+    return ret ? ret : pkt.size;
-+}
-+#endif
-+
- bool AVIDump::CreateFile()
- {
-       AVCodec *codec = NULL;
diff --git a/debian/patches/series b/debian/patches/series
index 251c285..79108e3 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,9 +1,9 @@
-08_polarssl-use-1.3.patch
-11_polarssl-replace-aes.patch
+01_fixes-for-gcc-4.9.patch
+02_fixes-for-libav-10.patch
+03_fixes-for-polarssl-1.3.patch
+04_use-polarssl-aes.patch
 20_remove-powerpcdisasm.patch
 30_play-pause-keyboard-shortcut.patch
 35_cmake-miniupnpc-fixes.patch
 37_cmake-sfml-fixes.patch
 80_sfml-use-2.1.patch
-90_g++-use-4.9.patch
-910_av-use-555553.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-games/dolphin-emu.git

_______________________________________________
Pkg-games-commits mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

Reply via email to