diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake index a562db11a..86819ca05 100644 --- a/cmake/Dependencies.cmake +++ b/cmake/Dependencies.cmake @@ -112,11 +112,10 @@ search_dependency(TOXAV PACKAGE toxav OPTIONAL) search_dependency(TOXENCRYPTSAVE PACKAGE toxencryptsave OPTIONAL) # If not found, use automake toxcore libraries -if (NOT TOXCORE_FOUND OR - NOT TOXAV_FOUND OR - NOT TOXENCRYPTSAVE_FOUND) - search_dependency(TOXCORE PACKAGE libtoxcore) - search_dependency(TOXAV PACKAGE libtoxav) +# We only check for TOXCORE, because the other two are gone in 0.2.0. +if (NOT TOXCORE_FOUND) + search_dependency(TOXCORE PACKAGE libtoxcore) + search_dependency(TOXAV PACKAGE libtoxav) endif() search_dependency(OPENAL PACKAGE openal) diff --git a/src/core/toxencrypt.cpp b/src/core/toxencrypt.cpp index b7ecee6b4..d4b3cc152 100644 --- a/src/core/toxencrypt.cpp +++ b/src/core/toxencrypt.cpp @@ -18,6 +18,7 @@ */ #include "toxencrypt.h" +#include // TOX_VERSION_IS_API_COMPATIBLE #include #include @@ -155,11 +156,17 @@ QByteArray ToxEncrypt::decryptPass(const QString& password, const QByteArray& ci */ std::unique_ptr ToxEncrypt::makeToxEncrypt(const QString& password) { - Tox_Pass_Key* passKey = tox_pass_key_new(); - QByteArray pass = password.toUtf8(); + const QByteArray pass = password.toUtf8(); TOX_ERR_KEY_DERIVATION error; +#if TOX_VERSION_IS_API_COMPATIBLE(0, 2, 0) + Tox_Pass_Key* const passKey = tox_pass_key_derive( + reinterpret_cast(pass.constData()), + static_cast(pass.length()), &error); +#else + Tox_Pass_Key* const passKey = tox_pass_key_new(); tox_pass_key_derive(passKey, reinterpret_cast(pass.constData()), static_cast(pass.length()), &error); +#endif if (error != TOX_ERR_KEY_DERIVATION_OK) { tox_pass_key_free(passKey); @@ -195,11 +202,17 @@ std::unique_ptr ToxEncrypt::makeToxEncrypt(const QString& password, return std::unique_ptr{}; } - Tox_Pass_Key* passKey = tox_pass_key_new(); QByteArray pass = password.toUtf8(); TOX_ERR_KEY_DERIVATION keyError; +#if TOX_VERSION_IS_API_COMPATIBLE(0, 2, 0) + Tox_Pass_Key* const passKey = tox_pass_key_derive_with_salt( + reinterpret_cast(pass.constData()), + static_cast(pass.length()), salt, &keyError); +#else + Tox_Pass_Key* const passKey = tox_pass_key_new(); tox_pass_key_derive_with_salt(passKey, reinterpret_cast(pass.constData()), static_cast(pass.length()), salt, &keyError); +#endif if (keyError != TOX_ERR_KEY_DERIVATION_OK) { tox_pass_key_free(passKey); diff --git a/src/persistence/db/rawdatabase.cpp b/src/persistence/db/rawdatabase.cpp index ddab6bef6..a3416fd5e 100644 --- a/src/persistence/db/rawdatabase.cpp +++ b/src/persistence/db/rawdatabase.cpp @@ -20,6 +20,7 @@ #include "rawdatabase.h" #include +#include // TOX_VERSION_IS_API_COMPATIBLE #include #include @@ -477,17 +478,22 @@ QString RawDatabase::deriveKey(const QString& password) if (password.isEmpty()) return {}; - QByteArray passData = password.toUtf8(); + const QByteArray passData = password.toUtf8(); static_assert(TOX_PASS_KEY_LENGTH >= 32, "toxcore must provide 256bit or longer keys"); static const uint8_t expandConstant[TOX_PASS_SALT_LENGTH + 1] = "L'ignorance est le pire des maux"; - std::unique_ptr key(tox_pass_key_new()); - tox_pass_key_derive_with_salt(key.get(), reinterpret_cast(passData.data()), +#if TOX_VERSION_IS_API_COMPATIBLE(0, 2, 0) + const std::unique_ptr key(tox_pass_key_derive_with_salt( + reinterpret_cast(passData.data()), + static_cast(passData.size()), expandConstant, nullptr)); +#else + const std::unique_ptr key(tox_pass_key_new()); + tox_pass_key_derive_with_salt(key.get(), reinterpret_cast(passData.data()), static_cast(passData.size()), expandConstant, nullptr); +#endif return QByteArray(reinterpret_cast(key.get()) + 32, 32).toHex(); - ; } /** @@ -507,16 +513,22 @@ QString RawDatabase::deriveKey(const QString& password, const QByteArray& salt) return {}; } - QByteArray passData = password.toUtf8(); + const QByteArray passData = password.toUtf8(); static_assert(TOX_PASS_KEY_LENGTH >= 32, "toxcore must provide 256bit or longer keys"); - std::unique_ptr key(tox_pass_key_new()); - tox_pass_key_derive_with_salt(key.get(), reinterpret_cast(passData.data()), +#if TOX_VERSION_IS_API_COMPATIBLE(0, 2, 0) + const std::unique_ptr key(tox_pass_key_derive_with_salt( + reinterpret_cast(passData.data()), + static_cast(passData.size()), + reinterpret_cast(salt.constData()), nullptr)); +#else + const std::unique_ptr key(tox_pass_key_new()); + tox_pass_key_derive_with_salt(key.get(), reinterpret_cast(passData.data()), static_cast(passData.size()), reinterpret_cast(salt.constData()), nullptr); +#endif return QByteArray(reinterpret_cast(key.get()) + 32, 32).toHex(); - ; } /**