Completed port to gnutls for linux.

This commit is contained in:
Matthew Parlane
2013-04-24 00:32:44 +12:00
parent d5ef9f3e85
commit b652f1974f
5 changed files with 324 additions and 205 deletions
+1 -2
View File
@@ -29,7 +29,7 @@ if (APPLE)
endif()
endif()
project(dolphin-emu)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/CMakeTests)
set(CMAKE_MODULE_PATH ${dCMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/CMakeTests)
set(DOLPHIN_IS_STABLE FALSE)
# Set up paths
@@ -418,7 +418,6 @@ if(NOT ANDROID)
endif()
endif()
endif()
include(FindOpenSSL REQUIRED)
########################################
# Setup include directories (and make sure they are preferred over the Externals)
+51
View File
@@ -0,0 +1,51 @@
# - Try to find GNUTLS
# Find GNUTLS headers, libraries and the answer to all questions.
#
# GNUTLS_FOUND True if gnutls got found
# GNUTLS_INCLUDE_DIRS Location of gnutls headers
# GNUTLS_LIBRARIES List of libaries to use gnutls
#
# Copyright (c) 2007 Bjoern Ricks <b.ricks@fh-osnabrueck.de>
#
# Redistribution and use is allowed according to the terms of the New
# BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
#
INCLUDE( FindPkgConfig )
IF ( GNUTLS_FIND_REQUIRED )
SET( _pkgconfig_REQUIRED "REQUIRED" )
ELSE( GNUTLS_FIND_REQUIRED )
SET( _pkgconfig_REQUIRED "" )
ENDIF ( GNUTLS_FIND_REQUIRED )
IF ( GNUTLS_MIN_VERSION )
PKG_SEARCH_MODULE( GNUTLS ${_pkgconfig_REQUIRED} gnutls>=${GNUTLS_MIN_VERSION} )
ELSE ( GNUTLS_MIN_VERSION )
PKG_SEARCH_MODULE( GNUTLS ${_pkgconfig_REQUIRED} gnutls )
ENDIF ( GNUTLS_MIN_VERSION )
IF( NOT GNUTLS_FOUND AND NOT PKG_CONFIG_FOUND )
FIND_PATH( GNUTLS_INCLUDE_DIRS gnutls/gnutls.h )
FIND_LIBRARY( GNUTLS_LIBRARIES gnutls)
# Report results
IF ( GNUTLS_LIBRARIES AND GNUTLS_INCLUDE_DIRS )
SET( GNUTLS_FOUND 1 )
IF ( NOT GNUTLS_FIND_QUIETLY )
MESSAGE( STATUS "Found gnutls: ${GNUTLS_LIBRARIES}" )
ENDIF ( NOT GNUTLS_FIND_QUIETLY )
ELSE ( GNUTLS_LIBRARIES AND GNUTLS_INCLUDE_DIRS )
IF ( GNUTLS_FIND_REQUIRED )
MESSAGE( SEND_ERROR "Could NOT find gnutls" )
ELSE ( GNUTLS_FIND_REQUIRED )
IF ( NOT GNUTLS_FIND_QUIETLY )
MESSAGE( STATUS "Could NOT find gnutls" )
ENDIF ( NOT GNUTLS_FIND_QUIETLY )
ENDIF ( GNUTLS_FIND_REQUIRED )
ENDIF ( GNUTLS_LIBRARIES AND GNUTLS_INCLUDE_DIRS )
ENDIF( NOT GNUTLS_FOUND AND NOT PKG_CONFIG_FOUND )
MARK_AS_ADVANCED( GNUTLS_LIBRARIES GNUTLS_INCLUDE_DIRS )
+10
View File
@@ -230,6 +230,16 @@ if(LIBUSB_FOUND)
set(SRCS ${SRCS} Src/IPC_HLE/WII_IPC_HLE_Device_hid.cpp)
endif(LIBUSB_FOUND)
set(GNUTLS_MIN_VERSION "3.1.9")
set(GNUTLS_FIND_REQUIRED 1)
find_package(GnuTLS)
set(LIBS ${LIBS} ${GNUTLS_LIBRARIES})
if(NOT GNUTLS_FOUND)
message(FATAL_ERROR "GnuTLS not found")
endif(NOT GNUTLS_FOUND)
if(WIN32)
set(SRCS ${SRCS} Src/HW/BBA-TAP/TAP_Win32.cpp Src/stdafx.cpp
Src/HW/WiimoteReal/IOWin.cpp)
File diff suppressed because it is too large Load Diff
@@ -24,13 +24,15 @@
#endif
#include "WII_IPC_HLE_Device.h"
#include <openssl/ssl.h>
#include <openssl/evp.h>
#include <openssl/pkcs12.h>
#include <openssl/x509v3.h>
#include <gnutls/gnutls.h>
#include <gnutls/x509.h>
#define MAX_HOSTNAME_LEN 256
#define NET_SSL_MAXINSTANCES 4
#define SSLID_VALID(x) (x >= 0 && x < NET_SSL_MAXINSTANCES && _SSL[x].session != NULL)
class CWII_IPC_HLE_Device_net_ssl : public IWII_IPC_HLE_Device
{
public:
@@ -48,26 +50,31 @@ public:
int getSSLFreeID();
private:
SSL * sslfds[NET_SSL_MAXINSTANCES];
enum
struct _SSL{
gnutls_session_t session;
gnutls_certificate_credentials_t xcred;
char hostname[MAX_HOSTNAME_LEN];
} _SSL[NET_SSL_MAXINSTANCES];
enum
{
IOCTLV_NET_SSL_NEW = 0x01,
IOCTLV_NET_SSL_CONNECT = 0x02,
IOCTLV_NET_SSL_DOHANDSHAKE = 0x03,
IOCTLV_NET_SSL_READ = 0x04,
IOCTLV_NET_SSL_WRITE = 0x05,
IOCTLV_NET_SSL_SHUTDOWN = 0x06,
IOCTLV_NET_SSL_SHUTDOWN = 0x06,
IOCTLV_NET_SSL_SETCLIENTCERT = 0x07,
IOCTLV_NET_SSL_SETCLIENTCERTDEFAULT = 0x08,
IOCTLV_NET_SSL_REMOVECLIENTCERT = 0x09,
IOCTLV_NET_SSL_SETCLIENTCERTDEFAULT = 0x08,
IOCTLV_NET_SSL_REMOVECLIENTCERT = 0x09,
IOCTLV_NET_SSL_SETROOTCA = 0x0A,
IOCTLV_NET_SSL_SETROOTCADEFAULT = 0x0B,
IOCTLV_NET_SSL_SETROOTCADEFAULT = 0x0B,
IOCTLV_NET_SSL_DOHANDSHAKEEX = 0x0C,
IOCTLV_NET_SSL_SETBUILTINROOTCA = 0x0D,
IOCTLV_NET_SSL_SETBUILTINCLIENTCERT = 0x0E,
IOCTLV_NET_SSL_SETBUILTINROOTCA = 0x0D,
IOCTLV_NET_SSL_SETBUILTINCLIENTCERT = 0x0E,
IOCTLV_NET_SSL_DISABLEVERIFYOPTIONFORDEBUG = 0x0F,
IOCTLV_NET_SSL_DEBUGGETVERSION = 0x14,
IOCTLV_NET_SSL_DEBUGGETTIME = 0x15,
IOCTLV_NET_SSL_DEBUGGETTIME = 0x15,
};