Skip to content

Commit

Permalink
Add OpenSSL's libcrypto as a dependency
Browse files Browse the repository at this point in the history
This also removes the included SHA1 and MD5 implementations
in favour of those from OpenSSL.

Thanks to @jyrkive for helping to get the CMake build working and
ensuring the game still compiles with OpenSSL 1.1.0.
(The SHA_xxx() aliases were removed in OpenSSL 1.1.0.)
  • Loading branch information
CelticMinstrel committed May 8, 2017
1 parent 3869261 commit 7c7d309
Show file tree
Hide file tree
Showing 22 changed files with 134 additions and 785 deletions.
3 changes: 3 additions & 0 deletions .travis.yml
Expand Up @@ -50,6 +50,9 @@ before_install:

install:
- travis_wait ./utils/travis/install_deps.sh
- if [ "$TRAVIS_OS_NAME" = osx ]; then
export CXXFLAGS="-I/usr/local/opt/openssl/include $CFLAGS" LDFLAGS="-L/usr/local/opt/openssl/lib $LDFLAGS";
fi

script:
- ./utils/travis/check_utf8.sh
Expand Down
3 changes: 2 additions & 1 deletion CMakeLists.txt
Expand Up @@ -74,6 +74,7 @@ else()
find_package(SDL2 2.0.4 REQUIRED)
endif()

find_package(Crypto 1.0 REQUIRED)
find_package(Boost 1.36 REQUIRED COMPONENTS iostreams program_options regex system thread)
find_package(Boost 1.40 REQUIRED COMPONENTS random)

Expand Down Expand Up @@ -643,7 +644,7 @@ if(ENABLE_GAME OR ENABLE_TESTS)
pkg_check_modules( CAIRO REQUIRED cairo>=1.10 )
pkg_check_modules( PANGOCAIRO REQUIRED pangocairo>=1.21.3 )
pkg_check_modules( FONTCONFIG REQUIRED fontconfig>=2.4.1 )
pkg_check_modules( SYSTEMD systemd )
pkg_check_modules( SYSTEMD systemd )
endif(NOT MSVC)

endif(ENABLE_GAME OR ENABLE_TESTS)
Expand Down
1 change: 1 addition & 0 deletions INSTALL.md
Expand Up @@ -37,6 +37,7 @@ order to build Wesnoth:
* Vorbisfile
* libbz2
* libz
* libcrypto (from OpenSSL)

The following libraries are optional dependencies that enable additional
features:
Expand Down
1 change: 1 addition & 0 deletions SConstruct
Expand Up @@ -363,6 +363,7 @@ if env["prereqs"]:
have_server_prereqs = (\
CheckIEEE754(conf) & \
conf.CheckCPlusPlus(gcc_version = "4.8") & \
conf.CheckLib("libcrypto") & \
conf.CheckBoost("iostreams", require_version = boost_version) & \
conf.CheckBoostIostreamsGZip() & \
conf.CheckBoostIostreamsBZip2() & \
Expand Down
11 changes: 11 additions & 0 deletions cmake/FindCrypto.cmake
@@ -0,0 +1,11 @@
# OpenSSL crypto library

find_path(CRYPTO_INCLUDE_DIR openssl/md5.h)

find_library(CRYPTO_LIBRARY crypto)

# handle the QUIETLY and REQUIRED arguments and set XXX_FOUND to TRUE if all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(CRYPTO DEFAULT_MSG CRYPTO_LIBRARY CRYPTO_INCLUDE_DIR)

mark_as_advanced(CRYPTO_INCLUDE_DIR CRYPTO_LIBRARY)
8 changes: 2 additions & 6 deletions projectfiles/VC12/campaignd.vcxproj
Expand Up @@ -52,7 +52,7 @@
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\external\lib</AdditionalLibraryDirectories>
<AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>Shlwapi.lib;libeay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
Expand All @@ -70,7 +70,7 @@
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>..\..\..\external\lib</AdditionalLibraryDirectories>
<AdditionalDependencies>Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>Shlwapi.lib;libeay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
Expand All @@ -85,7 +85,6 @@
<ClInclude Include="..\..\src\campaign_server\campaign_server.hpp" />
<ClInclude Include="..\..\src\campaign_server\control.hpp" />
<ClInclude Include="..\..\src\hash.hpp" />
<ClInclude Include="..\..\src\md5.hpp" />
<ClInclude Include="..\..\src\server\server_base.hpp" />
<ClInclude Include="..\..\src\server\simple_wml.hpp" />
</ItemGroup>
Expand All @@ -105,9 +104,6 @@
<ClCompile Include="..\..\src\hash.cpp">
<ObjectFileName>$(IntDir)</ObjectFileName>
</ClCompile>
<ClCompile Include="..\..\src\md5.cpp">
<ObjectFileName>$(IntDir)</ObjectFileName>
</ClCompile>
<ClCompile Include="..\..\src\server\server_base.cpp">
<ObjectFileName>$(IntDir)Server\</ObjectFileName>
</ClCompile>
Expand Down
2 changes: 0 additions & 2 deletions projectfiles/VC12/campaignd.vcxproj.filters
Expand Up @@ -34,7 +34,6 @@
<Filter>Campaign_Server</Filter>
</ClInclude>
<ClInclude Include="..\..\src\hash.hpp" />
<ClInclude Include="..\..\src\md5.hpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\src\addon\validation.cpp">
Expand All @@ -56,6 +55,5 @@
<Filter>Campaign_Server</Filter>
</ClCompile>
<ClCompile Include="..\..\src\hash.cpp" />
<ClCompile Include="..\..\src\md5.cpp" />
</ItemGroup>
</Project>
20 changes: 5 additions & 15 deletions projectfiles/VC12/wesnoth.vcxproj
Expand Up @@ -136,7 +136,7 @@
</ResourceCompile>
<Link>
<AdditionalOptions>/SAFESEH:NO %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>SDL2main.lib;SDL2.lib;SDL2_image.lib;SDL2_ttf.lib;SDL2_mixer.lib;SDL2_net.lib;cairo.lib;winmm.lib;ws2_32.lib;pango-1.0.lib;pangocairo-1.0.lib;gobject-2.0.lib;glib-2.0.lib;libpng.lib;$(IntDir)liblua.lib;Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>SDL2main.lib;SDL2.lib;SDL2_image.lib;SDL2_ttf.lib;SDL2_mixer.lib;SDL2_net.lib;libeay32.lib;cairo.lib;winmm.lib;ws2_32.lib;pango-1.0.lib;pangocairo-1.0.lib;gobject-2.0.lib;glib-2.0.lib;libpng.lib;$(IntDir)liblua.lib;Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\..\..\external\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<IgnoreSpecificDefaultLibraries>MSVCR90;MSVCRT;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
Expand Down Expand Up @@ -175,7 +175,7 @@
<LinkLibraryDependencies>true</LinkLibraryDependencies>
</ProjectReference>
<Link>
<AdditionalDependencies>SDL2main.lib;SDL2.lib;SDL2_image.lib;SDL2_ttf.lib;SDL2_mixer.lib;SDL2_net.lib;cairo.lib;winmm.lib;ws2_32.lib;pango-1.0.lib;pangocairo-1.0.lib;gobject-2.0.lib;glib-2.0.lib;libpng.lib;$(IntDir)liblua.lib;Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>SDL2main.lib;SDL2.lib;SDL2_image.lib;SDL2_ttf.lib;SDL2_mixer.lib;SDL2_net.lib;libeay32.lib;cairo.lib;winmm.lib;ws2_32.lib;pango-1.0.lib;pangocairo-1.0.lib;gobject-2.0.lib;glib-2.0.lib;libpng.lib;$(IntDir)liblua.lib;Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\..\..\external\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
Expand Down Expand Up @@ -215,7 +215,7 @@
<PreprocessorDefinitions>_MSC_VER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Link>
<AdditionalDependencies>SDL2main.lib;SDL2.lib;SDL2_image.lib;SDL2_ttf.lib;SDL2_mixer.lib;SDL2_net.lib;cairo.lib;winmm.lib;ws2_32.lib;pango-1.0.lib;pangocairo-1.0.lib;gobject-2.0.lib;glib-2.0.lib;libpng.lib;Debug\liblua.lib;Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>SDL2main.lib;SDL2.lib;SDL2_image.lib;SDL2_ttf.lib;SDL2_mixer.lib;SDL2_net.lib;libeay32.lib;cairo.lib;winmm.lib;ws2_32.lib;pango-1.0.lib;pangocairo-1.0.lib;gobject-2.0.lib;glib-2.0.lib;libpng.lib;Debug\liblua.lib;Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)test.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\..\external\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
Expand Down Expand Up @@ -254,7 +254,7 @@
<LinkLibraryDependencies>true</LinkLibraryDependencies>
</ProjectReference>
<Link>
<AdditionalDependencies>SDL2main.lib;SDL2.lib;SDL2_image.lib;SDL2_ttf.lib;SDL2_mixer.lib;SDL2_net.lib;cairo.lib;winmm.lib;ws2_32.lib;pango-1.0.lib;pangocairo-1.0.lib;gobject-2.0.lib;glib-2.0.lib;libpng.lib;Release\liblua.lib;Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>SDL2main.lib;SDL2.lib;SDL2_image.lib;SDL2_ttf.lib;SDL2_mixer.lib;SDL2_net.lib;libeay32.lib;cairo.lib;winmm.lib;ws2_32.lib;pango-1.0.lib;pangocairo-1.0.lib;gobject-2.0.lib;glib-2.0.lib;libpng.lib;Release\liblua.lib;Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)test.exe</OutputFile>
<AdditionalLibraryDirectories>..\..\..\external\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>false</GenerateDebugInformation>
Expand Down Expand Up @@ -300,7 +300,7 @@
<LinkLibraryDependencies>true</LinkLibraryDependencies>
</ProjectReference>
<Link>
<AdditionalDependencies>SDL2main.lib;SDL2.lib;SDL2_image.lib;SDL2_ttf.lib;SDL2_mixer.lib;SDL2_net.lib;cairo.lib;winmm.lib;ws2_32.lib;pango-1.0.lib;pangocairo-1.0.lib;gobject-2.0.lib;glib-2.0.lib;libpng.lib;$(IntDir)liblua.lib;Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>SDL2main.lib;SDL2.lib;SDL2_image.lib;SDL2_ttf.lib;SDL2_mixer.lib;SDL2_net.lib;libeay32.lib;cairo.lib;winmm.lib;ws2_32.lib;pango-1.0.lib;pangocairo-1.0.lib;gobject-2.0.lib;glib-2.0.lib;libpng.lib;$(IntDir)liblua.lib;Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\..\..\external\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
Expand Down Expand Up @@ -2486,7 +2486,6 @@
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Test_Debug|Win32'">$(IntDir)Map\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Test_Release|Win32'">$(IntDir)Map\</ObjectFileName>
</ClCompile>
<ClCompile Include="..\..\src\md5.cpp" />
<ClCompile Include="..\..\src\menu_events.cpp" />
<ClCompile Include="..\..\src\minimap.cpp" />
<ClCompile Include="..\..\src\mouse_events.cpp" />
Expand Down Expand Up @@ -3289,13 +3288,6 @@
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Test_Debug|Win32'">$(IntDir)utils\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Test_Release|Win32'">$(IntDir)utils\</ObjectFileName>
</ClCompile>
<ClCompile Include="..\..\src\utils\sha1.cpp">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)utils\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='ReleaseDEBUG|Win32'">$(IntDir)utils\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)utils\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Test_Debug|Win32'">$(IntDir)utils\</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Test_Release|Win32'">$(IntDir)utils\</ObjectFileName>
</ClCompile>
<ClCompile Include="..\..\src\variable.cpp" />
<ClCompile Include="..\..\src\variable_info.cpp" />
<ClCompile Include="..\..\src\video.cpp" />
Expand Down Expand Up @@ -3844,7 +3836,6 @@
<ClInclude Include="..\..\src\map\location.hpp" />
<ClInclude Include="..\..\src\map\map.hpp" />
<ClInclude Include="..\..\src\map_command_handler.hpp" />
<ClInclude Include="..\..\src\md5.hpp" />
<ClInclude Include="..\..\src\menu_events.hpp" />
<ClInclude Include="..\..\src\minimap.hpp" />
<ClInclude Include="..\..\src\mouse_events.hpp" />
Expand Down Expand Up @@ -4005,7 +3996,6 @@
<ClInclude Include="..\..\src\utils\name_generator.hpp" />
<ClInclude Include="..\..\src\utils\name_generator_factory.hpp" />
<ClInclude Include="..\..\src\utils\reference_counter.hpp" />
<ClInclude Include="..\..\src\utils\sha1.hpp" />
<ClInclude Include="..\..\src\utils\smart_list.hpp" />
<ClInclude Include="..\..\src\variable.hpp" />
<ClInclude Include="..\..\src\variable_info.hpp" />
Expand Down
8 changes: 0 additions & 8 deletions projectfiles/VC12/wesnoth.vcxproj.filters
Expand Up @@ -998,9 +998,6 @@
<ClCompile Include="..\..\src\utils\name_generator_factory.cpp">
<Filter>utils</Filter>
</ClCompile>
<ClCompile Include="..\..\src\utils\sha1.cpp">
<Filter>utils</Filter>
</ClCompile>
<ClCompile Include="..\..\src\serialization\tag.cpp">
<Filter>serialization</Filter>
</ClCompile>
Expand Down Expand Up @@ -1442,7 +1439,6 @@
<ClCompile Include="..\..\src\key.cpp" />
<ClCompile Include="..\..\src\language.cpp" />
<ClCompile Include="..\..\src\lua_jailbreak_exception.cpp" />
<ClCompile Include="..\..\src\md5.cpp" />
<ClCompile Include="..\..\src\menu_events.cpp" />
<ClCompile Include="..\..\src\minimap.cpp" />
<ClCompile Include="..\..\src\mouse_events.cpp" />
Expand Down Expand Up @@ -2484,9 +2480,6 @@
<ClInclude Include="..\..\src\utils\reference_counter.hpp">
<Filter>utils</Filter>
</ClInclude>
<ClInclude Include="..\..\src\utils\sha1.hpp">
<Filter>utils</Filter>
</ClInclude>
<ClInclude Include="..\..\src\utils\smart_list.hpp">
<Filter>utils</Filter>
</ClInclude>
Expand Down Expand Up @@ -2862,7 +2855,6 @@
<ClInclude Include="..\..\src\language.hpp" />
<ClInclude Include="..\..\src\lua_jailbreak_exception.hpp" />
<ClInclude Include="..\..\src\map_command_handler.hpp" />
<ClInclude Include="..\..\src\md5.hpp" />
<ClInclude Include="..\..\src\menu_events.hpp" />
<ClInclude Include="..\..\src\minimap.hpp" />
<ClInclude Include="..\..\src\mouse_events.hpp" />
Expand Down
1 change: 0 additions & 1 deletion source_lists/libwesnoth_core
Expand Up @@ -10,7 +10,6 @@ hash.cpp
log.cpp
map/location.cpp
map/map.cpp
md5.cpp
mt_rng.cpp
seed_rng.cpp
serialization/binary_or_text.cpp
Expand Down
1 change: 0 additions & 1 deletion source_lists/wesnoth
Expand Up @@ -388,7 +388,6 @@ units/unit.cpp
utils/context_free_grammar_generator.cpp
utils/markov_generator.cpp
utils/name_generator_factory.cpp
utils/sha1.cpp
variable.cpp
variable_info.cpp
wesnothd_connection.cpp
Expand Down
1 change: 1 addition & 0 deletions src/CMakeLists.txt
Expand Up @@ -93,6 +93,7 @@ set(common-external-libs

set(game-external-libs
${common-external-libs}
${CRYPTO_LIBRARY}
${Boost_SYSTEM_LIBRARIES}
${Boost_RANDOM_LIBRARY}
${Boost_THREAD_LIBRARY}
Expand Down
4 changes: 2 additions & 2 deletions src/campaign_server/campaign_server.cpp
Expand Up @@ -70,7 +70,7 @@ namespace {
/* Secure password storage functions */
bool authenticate(config& campaign, const config::attribute_value& passphrase)
{
return utils::create_hash(passphrase, campaign["passsalt"]) == campaign["passhash"];
return utils::md5(passphrase, campaign["passsalt"]).hex_digest() == campaign["passhash"];
}

std::string generate_salt(size_t len)
Expand All @@ -92,7 +92,7 @@ void set_passphrase(config& campaign, std::string passphrase)
{
std::string salt = generate_salt(16);
campaign["passsalt"] = salt;
campaign["passhash"] = utils::create_hash(passphrase, salt);
campaign["passhash"] = utils::md5(passphrase, salt).hex_digest();
}

} // end anonymous namespace
Expand Down
4 changes: 2 additions & 2 deletions src/config_cache.cpp
Expand Up @@ -19,7 +19,7 @@
#include "gettext.hpp"
#include "game_config.hpp"
#include "log.hpp"
#include "utils/sha1.hpp"
#include "hash.hpp"
#include "serialization/binary_or_text.hpp"
#include "serialization/parser.hpp"
#include "serialization/string_utils.hpp"
Expand Down Expand Up @@ -166,7 +166,7 @@ void config_cache::read_cache(const std::string& file_path, config& cfg)
// Use a hash for a shorter display of the defines.
const std::string fname = cache_path + "/" +
cache_file_prefix_ +
sha1_hash(defines_string.str()).display();
utils::sha1(defines_string.str()).hex_digest();
const std::string fname_checksum = fname + ".checksum" + extension;

filesystem::file_tree_checksum dir_checksum;
Expand Down
4 changes: 2 additions & 2 deletions src/game_initialization/multiplayer.cpp
Expand Up @@ -226,8 +226,8 @@ static std::unique_ptr<wesnothd_connection> open_connection(CVideo& video, const
throw wesnothd_error(_("Bad data received from server"));
}

sp["password"] = utils::create_hash(utils::create_hash(password, utils::get_salt(salt),
utils::get_iteration_count(salt)), salt.substr(12, 8));
sp["password"] = utils::md5(utils::md5(password, utils::md5::get_salt(salt),
utils::md5::get_iteration_count(salt)).hex_digest(), salt.substr(12, 8)).hex_digest();

} else {
sp["password"] = password;
Expand Down

0 comments on commit 7c7d309

Please sign in to comment.