fix core.lib's openssl link problems

This commit is contained in:
Hanjie Wu
2021-10-04 11:05:53 +08:00
parent dc9517051d
commit 1e32807794
3 changed files with 19 additions and 11 deletions

View File

@@ -93,7 +93,7 @@ if (ENABLE_WEB_SERVICE OR YUZU_USE_OPENSSL_CRYPTO)
find_package(OpenSSL 1.1)
if (OPENSSL_FOUND)
set(OPENSSL_LIBRARIES OpenSSL::SSL OpenSSL::Crypto)
set(YUZU_CRYPTO_BACKEND OpenSSL::Crypto PARENT_SCOPE)
set(YUZU_CRYPTO_BACKEND OpenSSL::Crypto)
else()
# LibreSSL
set(LIBRESSL_SKIP_INSTALL ON CACHE BOOL "")
@@ -105,9 +105,9 @@ if (ENABLE_WEB_SERVICE OR YUZU_USE_OPENSSL_CRYPTO)
DIRECTORY libressl
DEFINITION OPENSSL_LIBS)
target_include_directories(crypto INTERFACE ./libressl/include)
set(YUZU_CRYPTO_BACKEND crypto PARENT_SCOPE)
set(YUZU_CRYPTO_BACKEND crypto)
endif()
set(YUZU_CRYPTO_DEFINITION -DYUZU_USE_OPENSSL_CRYPTO PARENT_SCOPE)
set(YUZU_CRYPTO_DEFINITION -DYUZU_USE_OPENSSL_CRYPTO)
# httplib
add_library(httplib INTERFACE)
@@ -121,10 +121,14 @@ else()
# mbedtls
add_subdirectory(mbedtls EXCLUDE_FROM_ALL)
target_include_directories(mbedtls PUBLIC ./mbedtls/include)
set(YUZU_CRYPTO_BACKEND mbedtls PARENT_SCOPE)
set(YUZU_CRYPTO_DEFINITION -DYUZU_USE_MBEDTLS_CRYPTO PARENT_SCOPE)
set(YUZU_CRYPTO_BACKEND mbedtls)
set(YUZU_CRYPTO_DEFINITION -DYUZU_USE_MBEDTLS_CRYPTO)
endif()
add_library(crypto-backend INTERFACE)
target_compile_definitions(crypto-backend INTERFACE ${YUZU_CRYPTO_DEFINITION})
target_link_libraries(crypto-backend INTERFACE ${YUZU_CRYPTO_BACKEND})
# Opus
find_package(opus 1.3)
if (NOT opus_FOUND)

View File

@@ -686,9 +686,7 @@ endif()
create_target_directory_groups(core)
target_link_libraries(core PUBLIC common PRIVATE audio_core video_core)
target_link_libraries(core PUBLIC Boost::boost PRIVATE fmt::fmt nlohmann_json::nlohmann_json ${YUZU_CRYPTO_BACKEND} Opus::Opus)
target_compile_definitions(core PRIVATE ${YUZU_CRYPTO_DEFINITION})
target_link_libraries(core PUBLIC Boost::boost PRIVATE fmt::fmt nlohmann_json::nlohmann_json Opus::Opus crypto-backend)
if (ENABLE_WEB_SERVICE)
target_compile_definitions(core PRIVATE -DENABLE_WEB_SERVICE)

View File

@@ -23,7 +23,13 @@ NintendoTweak CalculateNintendoTweak(std::size_t sector_id) {
}
} // Anonymous namespace
using EvpCipherContext = std::unique_ptr<EVP_CIPHER_CTX, decltype(&EVP_CIPHER_CTX_free)>;
struct EvpCipherContextFree {
void operator()(EVP_CIPHER_CTX* ctx) {
EVP_CIPHER_CTX_free(ctx);
}
};
using EvpCipherContext = std::unique_ptr<EVP_CIPHER_CTX, EvpCipherContextFree>;
struct CipherContext {
const EVP_CIPHER* cipher;
@@ -31,7 +37,7 @@ struct CipherContext {
std::vector<u8> key;
std::vector<u8> iv;
CipherContext(EVP_CIPHER_CTX* ctx_in) : ctx(ctx_in, EVP_CIPHER_CTX_free) {}
CipherContext(EVP_CIPHER_CTX* ctx_in) : ctx(ctx_in) {}
};
const static std::map<Mode, decltype(&EVP_aes_128_ctr)> cipher_map = {
@@ -71,7 +77,7 @@ void AESCipher<Key, KeySize>::Transcode(const u8* src, std::size_t size, u8* des
std::vector<u8> block(block_size);
std::memcpy(block.data(), src + size - remain, remain);
EVP_CipherUpdate(ctx->ctx.get(), dest + written, &last_written, block.data(),
block_size);
(int)block_size);
written += last_written;
}
if (written != (int)size) {