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

