fix core.lib's openssl link problems
This commit is contained in:
14
externals/CMakeLists.txt
vendored
14
externals/CMakeLists.txt
vendored
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user