diff --git a/CMakeLists.txt b/CMakeLists.txt index 33b764f97fe0986fc2203026feb28fd51c6b234f..2636c09dd3ef93d83e94b8243532e85c34b58527 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -86,6 +86,8 @@ if(MSVC) if(ENABLE_STRICT) list(APPEND STRICT_OPTIONS_CPP "/WX") endif() + # avoid conflicts with std::min and std::max + add_definitions("-DNOMINMAX") else() if (ENABLE_PROFILING) list(APPEND STRICT_OPTIONS_CXX "-g -pg") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d32dab5d5d68aa43ef2375c69465fe860ba48ab4..ba671617e8755871221ecf742881e5e187428ef2 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -64,6 +64,9 @@ if(ENABLE_SHARED) set_target_properties(lime PROPERTIES VERSION ${LIME_SO_VERSION}) target_include_directories(lime PUBLIC ${BCTOOLBOX_INCLUDE_DIRS} ${SOCI_INCLUDE_DIRS} ${SOCI_INCLUDE_DIRS}/soci) target_link_libraries(lime PRIVATE ${BCTOOLBOX_CORE_LIBRARIES} ${SOCI_LIBRARIES} ${SOCI_sqlite3_PLUGIN}) + if(WIN32) + set_target_properties(lime PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE) + endif() if(MSVC) if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/lime.pdb diff --git a/src/lime.cpp b/src/lime.cpp index 4df862c8e3cc8517c5cac3e3dc9cc7a4947cdf58..f736932de3e51f0dbfbba1d17bae090b63e36405 100644 --- a/src/lime.cpp +++ b/src/lime.cpp @@ -278,10 +278,48 @@ namespace lime { /* instantiate Lime for C255 and C448 */ #ifdef EC25519_ENABLED + /* These extern templates are defines in lime_localStorage.cpp */ + extern template bool Lime<C255>::create_user(); + extern template void Lime<C255>::get_SelfIdentityKey(); + extern template void Lime<C255>::X3DH_generate_SPk(X<C255, lime::Xtype::publicKey> &publicSPk, DSA<C255, DSAtype::signature> &SPk_sig, uint32_t &SPk_id); + extern template void Lime<C255>::X3DH_generate_OPks(std::vector<X<C255, lime::Xtype::publicKey>> &publicOPks, std::vector<uint32_t> &OPk_ids, const uint16_t OPk_number); + extern template void Lime<C255>::cache_DR_sessions(std::vector<RecipientInfos<C255>> &internal_recipients, std::vector<std::string> &missing_devices); + extern template void Lime<C255>::get_DRSessions(const std::string &senderDeviceId, const long int ignoreThisDBSessionId, std::vector<std::shared_ptr<DR<C255>>> &DRSessions); + extern template void Lime<C255>::X3DH_get_SPk(uint32_t SPk_id, Xpair<C255> &SPk); + extern template bool Lime<C255>::is_currentSPk_valid(void); + extern template void Lime<C255>::X3DH_get_OPk(uint32_t OPk_id, Xpair<C255> &SPk); + extern template void Lime<C255>::X3DH_updateOPkStatus(const std::vector<uint32_t> &OPkIds); + /* These extern templates are defined in lime_x3dh.cpp*/ + extern template void Lime<C255>::X3DH_init_sender_session(const std::vector<X3DH_peerBundle<C255>> &peerBundle); + extern template std::shared_ptr<DR<C255>> Lime<C255>::X3DH_init_receiver_session(const std::vector<uint8_t> X3DH_initMessage, const std::string &peerDeviceId); + /* These extern templates are defined in lime_x3dh_protocol.cpp*/ + extern template void Lime<C255>::postToX3DHServer(std::shared_ptr<callbackUserData<C255>> userData, const std::vector<uint8_t> &message); + extern template void Lime<C255>::process_response(std::shared_ptr<callbackUserData<C255>> userData, int responseCode, const std::vector<uint8_t> &responseBody) noexcept; + extern template void Lime<C255>::cleanUserData(std::shared_ptr<callbackUserData<C255>> userData); + template class Lime<C255>; #endif #ifdef EC448_ENABLED + /* These extern templates are defines in lime_localStorage.cpp */ + extern template bool Lime<C448>::create_user(); + extern template void Lime<C448>::get_SelfIdentityKey(); + extern template void Lime<C448>::X3DH_generate_SPk(X<C448, lime::Xtype::publicKey> &publicSPk, DSA<C448, DSAtype::signature> &SPk_sig, uint32_t &SPk_id); + extern template void Lime<C448>::X3DH_generate_OPks(std::vector<X<C448, lime::Xtype::publicKey>> &publicOPks, std::vector<uint32_t> &OPk_ids, const uint16_t OPk_number); + extern template void Lime<C448>::cache_DR_sessions(std::vector<RecipientInfos<C448>> &internal_recipients, std::vector<std::string> &missing_devices); + extern template void Lime<C448>::get_DRSessions(const std::string &senderDeviceId, const long int ignoreThisDBSessionId, std::vector<std::shared_ptr<DR<C448>>> &DRSessions); + extern template void Lime<C448>::X3DH_get_SPk(uint32_t SPk_id, Xpair<C448> &SPk); + extern template bool Lime<C448>::is_currentSPk_valid(void); + extern template void Lime<C448>::X3DH_get_OPk(uint32_t OPk_id, Xpair<C448> &SPk); + extern template void Lime<C448>::X3DH_updateOPkStatus(const std::vector<uint32_t> &OPkIds); + /* These extern templates are defined in lime_x3dh.cpp*/ + extern template void Lime<C448>::X3DH_init_sender_session(const std::vector<X3DH_peerBundle<C448>> &peerBundle); + extern template std::shared_ptr<DR<C448>> Lime<C448>::X3DH_init_receiver_session(const std::vector<uint8_t> X3DH_initMessage, const std::string &peerDeviceId); + /* These extern templates are defined in lime_x3dh_protocol.cpp*/ + extern template void Lime<C448>::postToX3DHServer(std::shared_ptr<callbackUserData<C448>> userData, const std::vector<uint8_t> &message); + extern template void Lime<C448>::process_response(std::shared_ptr<callbackUserData<C448>> userData, int responseCode, const std::vector<uint8_t> &responseBody) noexcept; + extern template void Lime<C448>::cleanUserData(std::shared_ptr<callbackUserData<C448>> userData); + template class Lime<C448>; #endif @@ -352,7 +390,7 @@ namespace lime { throw BCTBX_EXCEPTION << "Cannot create lime user "<<deviceId;//<<". Unsupported curve (id <<"static_cast<uint8_t>(curve)") requested"; break; } - } catch (BctbxException &e) { + } catch (BctbxException &) { throw; // just forward the exceptions raised by constructor } return nullptr; @@ -413,7 +451,7 @@ namespace lime { throw BCTBX_EXCEPTION << "Cannot create load user "<<deviceId;//<<". Unsupported curve (id <<"static_cast<uint8_t>(curve)") requested"; break; } - } catch (BctbxException &e) { + } catch (BctbxException &) { throw; } return nullptr; diff --git a/src/lime_crypto_primitives.cpp b/src/lime_crypto_primitives.cpp index 15e4bcccdfd0c10d7d40753e1277141747d76fd8..81f91ffbdc7645ae71b3099dfac3c6053ca57332 100644 --- a/src/lime_crypto_primitives.cpp +++ b/src/lime_crypto_primitives.cpp @@ -375,7 +375,7 @@ void HMAC(const uint8_t *const key, const size_t keySize, const uint8_t *const i /* HMAC specialized template for SHA512 */ template <> void HMAC<SHA512>(const uint8_t *const key, const size_t keySize, const uint8_t *const input, const size_t inputSize, uint8_t *hash, size_t hashSize) { - bctbx_hmacSha512(key, keySize, input, inputSize, std::min(SHA512::ssize(),hashSize), hash); + bctbx_hmacSha512(key, keySize, input, inputSize, static_cast<uint8_t>(std::min(SHA512::ssize(),hashSize)), hash); } /* generic implementation, of HKDF RFC-5869 */ diff --git a/src/lime_double_ratchet.cpp b/src/lime_double_ratchet.cpp index 7dd61f84df7febff41a2f6d14a42effb537fdd8b..01de26db1c7f1a1d07067f860ae59f477a14a0f8 100644 --- a/src/lime_double_ratchet.cpp +++ b/src/lime_double_ratchet.cpp @@ -437,10 +437,16 @@ namespace lime { /* template instanciations for DHKeyX25519 and DHKeyX448 */ #ifdef EC25519_ENABLED + extern template bool DR<C255>::session_load(); + extern template bool DR<C255>::session_save(); + extern template bool DR<C255>::trySkippedMessageKeys(const uint16_t Nr, const X<C255, lime::Xtype::publicKey> &DHr, DRMKey &MK); template class DR<C255>; #endif #ifdef EC448_ENABLED + extern template bool DR<C448>::session_load(); + extern template bool DR<C448>::session_save(); + extern template bool DR<C448>::trySkippedMessageKeys(const uint16_t Nr, const X<C448, lime::Xtype::publicKey> &DHr, DRMKey &MK); template class DR<C448>; #endif /** diff --git a/src/lime_impl.hpp b/src/lime_impl.hpp index bbafd1dc38baab7fdc9f888ed71e2b8a9c41874c..72203fa02b4e21e3b8e2b34648b28dc81251320d 100644 --- a/src/lime_impl.hpp +++ b/src/lime_impl.hpp @@ -88,7 +88,7 @@ namespace lime { void X3DH_init_sender_session(const std::vector<X3DH_peerBundle<Curve>> &peersBundle); // compute a sender X3DH using the data from peer bundle, then create and load the DR_Session std::shared_ptr<DR<Curve>> X3DH_init_receiver_session(const std::vector<uint8_t> X3DH_initMessage, const std::string &senderDeviceId); // from received X3DH init packet, try to compute the shared secrets, then create the DR_Session - /* network related */ + /* network related, implemented in lime_x3dh_protocol.cpp */ void postToX3DHServer(std::shared_ptr<callbackUserData<Curve>> userData, const std::vector<uint8_t> &message); // send a request to X3DH server void process_response(std::shared_ptr<callbackUserData<Curve>> userData, int responseCode, const std::vector<uint8_t> &responseBody) noexcept; // callback on server response void cleanUserData(std::shared_ptr<callbackUserData<Curve>> userData); // clean user data diff --git a/src/lime_localStorage.cpp b/src/lime_localStorage.cpp index de69a40dab68ad76d12ad1d751011cc9e4f7a99c..2d8e1609a12c290ffe9275bb9f3bb00efbcb7c5a 100644 --- a/src/lime_localStorage.cpp +++ b/src/lime_localStorage.cpp @@ -17,14 +17,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include <bctoolbox/exception.hh> +#include <soci/soci.h> + #include "lime_log.hpp" #include "lime/lime.hpp" #include "lime_localStorage.hpp" #include "lime_double_ratchet.hpp" #include "lime_impl.hpp" -#include "bctoolbox/exception.hh" -#include "soci/sqlite3/soci-sqlite3.h" using namespace::std; using namespace::soci; using namespace::lime; @@ -41,7 +42,7 @@ namespace lime { * * @param[in] filename The path to DB file */ -Db::Db(std::string filename) : sql{sqlite3, filename}{ +Db::Db(std::string filename) : sql{"sqlite3", filename}{ constexpr int db_module_table_not_holding_lime_row = -1; int userVersion=db_module_table_not_holding_lime_row; diff --git a/tester/lime-tester-utils.cpp b/tester/lime-tester-utils.cpp index 924ce9fa1dce728b80eff4c96283ae58a5f9528b..e29b176ff1fce62783b3c72c7b054e5a47289c54 100644 --- a/tester/lime-tester-utils.cpp +++ b/tester/lime-tester-utils.cpp @@ -25,11 +25,11 @@ #include "lime_keys.hpp" #include "lime_crypto_primitives.hpp" #include "lime_double_ratchet_protocol.hpp" -#include "bctoolbox/exception.hh" #include "lime-tester-utils.hpp" -#include "soci/soci.h" -#include "soci/sqlite3/soci-sqlite3.h" +#include <bctoolbox/exception.hh> +#include <soci/soci.h> + using namespace::std; using namespace::soci; @@ -42,7 +42,7 @@ std::string test_x3dh_c448_server_port{"25520"}; /* for testing purpose RNG, no need to be good one */ std::random_device rd; -std::uniform_int_distribution<uint8_t> uniform_dist(0,255); +std::uniform_int_distribution<int> uniform_dist(0,255); // default value for the timeout int wait_for_timeout=4000; @@ -169,7 +169,7 @@ std::vector<std::string> messages_pattern = { */ void randomize(uint8_t *buffer, const size_t size) { for (size_t i=0; i<size; i++) { - buffer[i] = lime_tester::uniform_dist(rd); + buffer[i] = (uint8_t)lime_tester::uniform_dist(rd); } } /** @@ -281,7 +281,7 @@ bool DR_message_payloadDirectEncrypt(std::vector<uint8_t> &message) { // check protocol version if (message[0] != static_cast<uint8_t>(lime::double_ratchet_protocol::DR_v01)) return false; - return (message[1]&static_cast<uint8_t>(lime::double_ratchet_protocol::DR_message_type::payload_direct_encryption_flag)); + return !!(message[1]&static_cast<uint8_t>(lime::double_ratchet_protocol::DR_message_type::payload_direct_encryption_flag)); } bool DR_message_holdsX3DHInit(std::vector<uint8_t> &message) { @@ -297,7 +297,7 @@ bool DR_message_holdsX3DHInit(std::vector<uint8_t> &message, bool &haveOPk) { if (message[0] != static_cast<uint8_t>(lime::double_ratchet_protocol::DR_v01)) return false; // check message type: we must have a X3DH init message if (!(message[1]&static_cast<uint8_t>(lime::double_ratchet_protocol::DR_message_type::X3DH_init_flag))) return false; - bool payload_direct_encryption = (message[1]&static_cast<uint8_t>(lime::double_ratchet_protocol::DR_message_type::payload_direct_encryption_flag)); + bool payload_direct_encryption = !!(message[1]&static_cast<uint8_t>(lime::double_ratchet_protocol::DR_message_type::payload_direct_encryption_flag)); /* check message length : * message with payload not included (DR payload is a fixed 32 byte random seed) @@ -398,7 +398,7 @@ long int get_DRsessionsId(const std::string &dbFilename, const std::string &self sessionsId.resize(25); // no more than 25 sessions id fetched std::vector<int> status(25); try { - soci::session sql(sqlite3, dbFilename); // open the DB + soci::session sql("sqlite3", dbFilename); // open the DB soci::statement st = (sql.prepare << "SELECT s.sessionId, s.Status FROM DR_sessions as s INNER JOIN lime_PeerDevices as d on s.Did = d.Did INNER JOIN lime_LocalUsers as u on u.Uid = s.Uid WHERE u.UserId = :selfId AND d.DeviceId = :peerId ORDER BY s.Status DESC, s.Did;", into(sessionsId), into(status), use(selfDeviceId), use(peerDeviceId)); st.execute(); if (st.fetch()) { // all retrieved session shall fit in the arrays no need to go on several fetch @@ -427,7 +427,7 @@ long int get_DRsessionsId(const std::string &dbFilename, const std::string &self */ unsigned int get_StoredMessageKeyCount(const std::string &dbFilename, const std::string &selfDeviceId, const std::string &peerDeviceId) noexcept{ try { - soci::session sql(sqlite3, dbFilename); // open the DB + soci::session sql("sqlite3", dbFilename); // open the DB unsigned int mkCount=0; sql<< "SELECT count(m.MK) FROM DR_sessions as s INNER JOIN lime_PeerDevices as d on s.Did = d.Did INNER JOIN lime_LocalUsers as u on u.Uid = s.Uid INNER JOIN DR_MSk_DHr as c on c.sessionId = s.sessionId INNER JOIN DR_MSk_Mk as m ON m.DHid=c.DHid WHERE u.UserId = :selfId AND d.DeviceId = :peerId ORDER BY s.Status DESC, s.Did;", into(mkCount), use(selfDeviceId), use(peerDeviceId); if (sql.got_data()) { @@ -447,7 +447,7 @@ unsigned int get_StoredMessageKeyCount(const std::string &dbFilename, const std: */ bool get_SPks(const std::string &dbFilename, const std::string &selfDeviceId, size_t &count, uint32_t &activeId) noexcept{ try { - soci::session sql(sqlite3, dbFilename); // open the DB + soci::session sql("sqlite3", dbFilename); // open the DB count=0; sql<< "SELECT count(SPKid) FROM X3DH_SPK as s INNER JOIN lime_LocalUsers as u on u.Uid = s.Uid WHERE u.UserId = :selfId;", into(count), use(selfDeviceId); if (sql.got_data()) { @@ -471,7 +471,7 @@ bool get_SPks(const std::string &dbFilename, const std::string &selfDeviceId, si */ size_t get_OPks(const std::string &dbFilename, const std::string &selfDeviceId) noexcept { try { - soci::session sql(sqlite3, dbFilename); // open the DB + soci::session sql("sqlite3", dbFilename); // open the DB auto count=0; sql<< "SELECT count(OPKid) FROM X3DH_OPK as o INNER JOIN lime_LocalUsers as u on u.Uid = o.Uid WHERE u.UserId = :selfId;", into(count), use(selfDeviceId); if (sql.got_data()) { @@ -491,7 +491,7 @@ size_t get_OPks(const std::string &dbFilename, const std::string &selfDeviceId) */ void forwardTime(const std::string &dbFilename, int days) noexcept { try { - soci::session sql(sqlite3, dbFilename); // open the DB + soci::session sql("sqlite3", dbFilename); // open the DB /* move back by days all timeStamp, we have some in DR_sessions and X3DH_SPk tables */ sql<<"UPDATE DR_sessions SET timeStamp = date (timeStamp, '-"<<days<<" day');"; sql<<"UPDATE X3DH_SPK SET timeStamp = date (timeStamp, '-"<<days<<" day');"; diff --git a/tester/lime-tester-utils.hpp b/tester/lime-tester-utils.hpp index 7c4e884249bd420749f2a0e20fe470e089bd1001..00e65db099173c980bd845a1bd3c66078defc4ae 100644 --- a/tester/lime-tester-utils.hpp +++ b/tester/lime-tester-utils.hpp @@ -166,6 +166,8 @@ int wait_for(belle_sip_stack_t*s1,int* counter,int value,int timeout); #endif } // namespace lime_tester +extern "C" { + /* some shared variable defined in lime_ff-tester, used only when FFI is enabled * and they are duplicate of command line arguments variable already existing in C++ from lime_tester-utils.cpp * but it's easier to read and implement this way */ @@ -177,4 +179,6 @@ extern char ffi_test_x3dh_c448_server_port[16]; // ffi default value for the timeout extern int ffi_wait_for_timeout; +} + #endif //lime_tester_utils_hpp diff --git a/tester/lime-tester.cpp b/tester/lime-tester.cpp index 5f94a44dfedc2004433c97e27b0f9e73d388eebc..97fac12e6ca9c5a4785aeac8345c03e9e465335b 100644 --- a/tester/lime-tester.cpp +++ b/tester/lime-tester.cpp @@ -133,15 +133,15 @@ int main(int argc, char *argv[]) { } else if (strcmp(argv[i],"--x3dh-server-name")==0){ CHECK_ARG("--x3dh-server-name", ++i, argc); lime_tester::test_x3dh_server_url=std::string(argv[i]); - strncpy(ffi_test_x3dh_server_url, argv[i], sizeof(ffi_test_x3dh_server_url)); + strncpy(ffi_test_x3dh_server_url, argv[i], sizeof(ffi_test_x3dh_server_url)-1); } else if (strcmp(argv[i],"--c255-x3dh-server-port")==0){ CHECK_ARG("--c255-x3dh-server-port", ++i, argc); lime_tester::test_x3dh_c25519_server_port=std::string(argv[i]); - strncpy(ffi_test_x3dh_c25519_server_port, argv[i], sizeof(ffi_test_x3dh_c25519_server_port)); + strncpy(ffi_test_x3dh_c25519_server_port, argv[i], sizeof(ffi_test_x3dh_c25519_server_port)-1); } else if (strcmp(argv[i],"--c448-x3dh-server-port")==0){ CHECK_ARG("--c448-x3dh-server-port", ++i, argc); lime_tester::test_x3dh_c448_server_port=std::string(argv[i]); - strncpy(ffi_test_x3dh_c448_server_port, argv[i], sizeof(ffi_test_x3dh_c448_server_port)); + strncpy(ffi_test_x3dh_c448_server_port, argv[i], sizeof(ffi_test_x3dh_c448_server_port)-1); } else if (strcmp(argv[i],"--operation-timeout")==0){ CHECK_ARG("--operation-timeout", ++i, argc); lime_tester::wait_for_timeout=std::atoi(argv[i]); diff --git a/tester/lime_crypto-tester.cpp b/tester/lime_crypto-tester.cpp index 6b4b9ef1338bf040bd544b087da2cfe108ecc294..0c64a68094e0b432ef82227e7732d784890bdacb 100644 --- a/tester/lime_crypto-tester.cpp +++ b/tester/lime_crypto-tester.cpp @@ -40,8 +40,8 @@ constexpr uint64_t BENCH_TIMING_MS=200; /* Function */ static void snprintSI(std::string &output, double x, const char *unit, const char *spacer = " ") { - const char *small[] = {" ","m","µ","n","p"}; - const char *big[] = {" ","k","M","G","T"}; + const char *_small[] = {" ","m","µ","n","p"}; + const char *_big[] = {" ","k","M","G","T"}; constexpr size_t tempBufferSize = 100; char tempBuffer[tempBufferSize]; // hoping no one will use this function to print more than 100 chars... @@ -52,16 +52,16 @@ static void snprintSI(std::string &output, double x, const char *unit, const cha if (x < 1) { unsigned di=0; - for (di=0; di<sizeof(small)/sizeof(*small)-1 && x && x < 1; di++) { + for (di=0; di<sizeof(_small)/sizeof(*_small)-1 && x && x < 1; di++) { x *= 1000.0; } - snprintf(tempBuffer, sizeof(tempBuffer), "%6.2f%s%s%s", x, spacer, small[di], unit); + snprintf(tempBuffer, sizeof(tempBuffer), "%6.2f%s%s%s", x, spacer, _small[di], unit); } else { unsigned di=0; - for (di=0; di<sizeof(big)/sizeof(*big)-1 && x && x >= 1000; di++) { + for (di=0; di<sizeof(_big)/sizeof(*_big)-1 && x && x >= 1000; di++) { x /= 1000.0; } - snprintf(tempBuffer, sizeof(tempBuffer), "%6.2f%s%s%s", x, spacer, big[di], unit); + snprintf(tempBuffer, sizeof(tempBuffer), "%6.2f%s%s%s", x, spacer, _big[di], unit); } output = tempBuffer; diff --git a/tester/lime_helloworld-tester.cpp b/tester/lime_helloworld-tester.cpp index 9e3f01f12c50430509c022a301cc176c0217398f..51ec56667f6eab5034095b776070d3ab02c581bf 100644 --- a/tester/lime_helloworld-tester.cpp +++ b/tester/lime_helloworld-tester.cpp @@ -63,7 +63,7 @@ static void sendMessageTo(std::string recipient, std::vector<uint8_t> &DRmessage } LIME_LOGE<<"sending a message to unknown user "<<recipient; - BC_FAIL(); + BC_FAIL(""); } static void getMessageFor(std::string recipient, std::vector<uint8_t> &DRmessage, std::vector<uint8_t> &cipherMessage) { @@ -74,7 +74,7 @@ static void getMessageFor(std::string recipient, std::vector<uint8_t> &DRmessage } LIME_LOGE<<"getting a message to unknown user "<<recipient; - BC_FAIL(); + BC_FAIL(""); } struct C_Callback_userData { @@ -356,8 +356,8 @@ static void helloworld_basic_test(const lime::CurveId curve, const std::string & remove(dbFilenameBob.data()); } } catch (BctbxException &e) { - LIME_LOGE <<e;; - BC_FAIL(); + LIME_LOGE << e; + BC_FAIL(""); } } @@ -595,8 +595,8 @@ static void helloworld_verifyIdentity_test(const lime::CurveId curve, const std: remove(dbFilenameBob.data()); } } catch (BctbxException &e) { - LIME_LOGE <<e;; - BC_FAIL(); + LIME_LOGE << e; + BC_FAIL(""); } } diff --git a/tester/lime_lime-tester.cpp b/tester/lime_lime-tester.cpp index 004c390d014a2f771b7b754ab915afef0449c005..5d5f1044fe53698e5bde6acea5612b6960b8b676 100644 --- a/tester/lime_lime-tester.cpp +++ b/tester/lime_lime-tester.cpp @@ -208,7 +208,7 @@ static void lime_exchange_messages(std::shared_ptr<std::string> &aliceDeviceId, messageCount++; } } - } catch (BctbxException &e) { + } catch (BctbxException &) { BC_FAIL("Message Exchange failed"); throw; } @@ -257,7 +257,7 @@ static void lime_session_establishment(const lime::CurveId curve, const std::str lime_exchange_messages(aliceDeviceId, aliceManager, bobDeviceId, bobManager, 1, 1); - } catch (BctbxException &e) { + } catch (BctbxException &) { BC_FAIL("Session establishment failed"); throw; } @@ -335,7 +335,7 @@ static void lime_encryptionPolicyError_test(const lime::CurveId curve, const std remove(dbFilenameBob.data()); } - } catch (BctbxException &e) { + } catch (BctbxException &) { BC_FAIL("Session establishment failed"); throw; } @@ -397,7 +397,7 @@ static void lime_session_establishment(const lime::CurveId curve, const std::str bobManager->create_user(*bobDeviceId, x3dh_server_url, curve, lime_tester::OPkInitialBatchSize, callback); BC_ASSERT_TRUE(lime_tester::wait_for(stack,&counters.operation_success, ++expected_success,lime_tester::wait_for_timeout)); - } catch (BctbxException &e) { + } catch (BctbxException &) { BC_FAIL("Session establishment failed"); throw; } @@ -480,7 +480,7 @@ static void lime_encryptionPolicy_test(std::shared_ptr<LimeManager> aliceManager } - } catch (BctbxException &e) { + } catch (BctbxException &) { BC_FAIL("Session establishment failed"); throw; } @@ -788,8 +788,8 @@ static void lime_identityVerifiedStatus_test(const lime::CurveId curve, const st BC_ASSERT_TRUE(bobManager->get_peerDeviceStatus(*aliceDeviceId) == lime::PeerDeviceStatus::trusted); } catch (BctbxException &e) { - LIME_LOGE <<e;; - BC_FAIL(); + LIME_LOGE << e; + BC_FAIL(""); } auto gotException = false; @@ -797,8 +797,8 @@ static void lime_identityVerifiedStatus_test(const lime::CurveId curve, const st try { // try to set another key for alice in bob's context, it shall generate an exception bobManager->set_peerDeviceStatus(*aliceDeviceId, fakeIk, lime::PeerDeviceStatus::trusted); - } catch (BctbxException &e) { - BC_PASS(); + } catch (BctbxException &) { + BC_PASS(""); gotException = true; // Now delete the alice device from Bob's cache and check its status is now back to unknown @@ -820,8 +820,8 @@ static void lime_identityVerifiedStatus_test(const lime::CurveId curve, const st try { // try to set it to trusted, still using the fake Ik, it shall generate an exception as the Ik is invalid in storage bobManager->set_peerDeviceStatus(*aliceDeviceId, fakeIk, lime::PeerDeviceStatus::trusted); - } catch (BctbxException &e) { - BC_PASS(); + } catch (BctbxException &) { + BC_PASS(""); gotException = true; } @@ -831,8 +831,8 @@ static void lime_identityVerifiedStatus_test(const lime::CurveId curve, const st try { // same than above but using the actual key : try to set it to trusted, still using the fake Ik, it shall generate an exception as the Ik is invalid in storage bobManager->set_peerDeviceStatus(*aliceDeviceId, aliceIk, lime::PeerDeviceStatus::trusted); - } catch (BctbxException &e) { - BC_PASS(); + } catch (BctbxException &) { + BC_PASS(""); gotException = true; // Now delete the alice device from Bob's cache and check its status is now back to unknown @@ -956,8 +956,8 @@ static void lime_identityVerifiedStatus_test(const lime::CurveId curve, const st } } catch (BctbxException &e) { - LIME_LOGE <<e;; - BC_FAIL(); + LIME_LOGE << e; + BC_FAIL(""); } } @@ -1154,8 +1154,8 @@ static void lime_peerDeviceStatus_test(const lime::CurveId curve, const std::str } } catch (BctbxException &e) { - LIME_LOGE <<e;; - BC_FAIL(); + LIME_LOGE << e; + BC_FAIL(""); } } @@ -1185,17 +1185,17 @@ static void lime_getSelfIk_test(const lime::CurveId curve, const std::string &db BC_ASSERT_TRUE((Ik==pattern)); } catch (BctbxException &e) { - LIME_LOGE <<e;; - BC_FAIL(); + LIME_LOGE << e; + BC_FAIL(""); return; } // try to get the Ik of a user not in there, we shall get an exception try { aliceManager->get_selfIdentityKey("bob", Ik); - } catch (BctbxException &e) { + } catch (BctbxException &) { // just swallow it - BC_PASS(); + BC_PASS(""); return; } BC_FAIL("Get the Ik of a user not in local Storage didn't throw an exception"); @@ -1336,8 +1336,8 @@ static void lime_update_OPk_test(const lime::CurveId curve, const std::string &d remove(dbFilenameBob.data()); } } catch (BctbxException &e) { - LIME_LOGE <<e;; - BC_FAIL(); + LIME_LOGE << e; + BC_FAIL(""); } } @@ -1504,8 +1504,8 @@ static void lime_update_SPk_test(const lime::CurveId curve, const std::string &d remove(dbFilenameBob.data()); } } catch (BctbxException &e) { - LIME_LOGE <<e;; - BC_FAIL(); + LIME_LOGE << e; + BC_FAIL(""); } } @@ -1606,8 +1606,8 @@ static void lime_update_clean_MK_test(const lime::CurveId curve, const std::stri remove(dbFilenameBob.data()); } } catch (BctbxException &e) { - LIME_LOGE <<e;; - BC_FAIL(); + LIME_LOGE << e; + BC_FAIL(""); } } @@ -1703,8 +1703,8 @@ static void x3dh_without_OPk_test(const lime::CurveId curve, const std::string & remove(dbFilenameBob.data()); } } catch (BctbxException &e) { - LIME_LOGE <<e;; - BC_FAIL(); + LIME_LOGE << e; + BC_FAIL(""); } } static void x3dh_without_OPk() { @@ -1855,8 +1855,8 @@ static void x3dh_sending_chain_limit_test(const lime::CurveId curve, const std:: remove(dbFilenameBob.data()); } } catch (BctbxException &e) { - LIME_LOGE <<e;; - BC_FAIL(); + LIME_LOGE << e; + BC_FAIL(""); } } static void x3dh_sending_chain_limit() { @@ -2069,8 +2069,8 @@ static void x3dh_multiple_DRsessions_test(const lime::CurveId curve, const std:: remove(dbFilenameBob.data()); // delete the database file if already exists } } catch (BctbxException &e) { - LIME_LOGE <<e;; - BC_FAIL(); + LIME_LOGE << e; + BC_FAIL(""); } } @@ -2278,8 +2278,8 @@ static void x3dh_multidev_operation_queue_test(const lime::CurveId curve, const remove(dbFilenameBob.data()); } } catch (BctbxException &e) { - LIME_LOGE <<e;; - BC_FAIL(); + LIME_LOGE << e; + BC_FAIL(""); } } @@ -2397,7 +2397,7 @@ static void x3dh_operation_queue_test(const lime::CurveId curve, const std::stri } } catch (BctbxException &e) { LIME_LOGE << e; - BC_FAIL(); + BC_FAIL(""); } } @@ -2604,8 +2604,8 @@ static void x3dh_basic_test(const lime::CurveId curve, const std::string &dbBase remove(dbFilenameBob.data()); } } catch (BctbxException &e) { - LIME_LOGE <<e;; - BC_FAIL(); + LIME_LOGE << e; + BC_FAIL(""); } } @@ -2890,8 +2890,8 @@ static void x3dh_user_not_found_test(const lime::CurveId curve, const std::strin remove(dbFilenameBob.data()); } } catch (BctbxException &e) { - LIME_LOGE <<e;; - BC_FAIL(); + LIME_LOGE << e; + BC_FAIL(""); } } @@ -2954,8 +2954,8 @@ static void user_management_test(const lime::CurveId curve, const std::string &d auto alice = load_LimeUser(dbFilenameAlice, *aliceDeviceName, X3DHServerPost); /* no need to wait here, it shall load alice immediately */ } catch (BctbxException &e) { - LIME_LOGE <<e;; - BC_FAIL(); + LIME_LOGE << e; + BC_FAIL(""); } bool gotExpectedException = false; @@ -2963,7 +2963,7 @@ static void user_management_test(const lime::CurveId curve, const std::string &d try { auto alice = insert_LimeUser(dbFilenameAlice, *aliceDeviceName, x3dh_server_url, curve, lime_tester::OPkInitialBatchSize, X3DHServerPost, callback); /* no need to wait here, it must fail immediately */ - } catch (BctbxException &e) { + } catch (BctbxException &) { gotExpectedException = true; } if (!gotExpectedException) { @@ -2977,7 +2977,7 @@ static void user_management_test(const lime::CurveId curve, const std::string &d try { auto alice = load_LimeUser(dbFilenameAlice, "bob", X3DHServerPost); /* no need to wait here, it must fail immediately */ - } catch (BctbxException &e) { + } catch (BctbxException &) { gotExpectedException = true; } if (!gotExpectedException) { @@ -3001,7 +3001,7 @@ static void user_management_test(const lime::CurveId curve, const std::string &d try { // delete bob which is not there, it shall raise an exception and never get to the callback Manager->delete_user("bob", callback); - } catch (BctbxException &e) { + } catch (BctbxException &) { gotExpectedException = true; } if (!gotExpectedException) { @@ -3038,8 +3038,8 @@ static void user_management_test(const lime::CurveId curve, const std::string &d remove(dbFilenameAliceTmp.data()); // delete the database file } } catch (BctbxException &e) { - LIME_LOGE <<e; - BC_FAIL(); + LIME_LOGE << e; + BC_FAIL(""); } } diff --git a/tester/lime_massive_group-tester.cpp b/tester/lime_massive_group-tester.cpp index 0f9ca459e4700eeef6264a4965d1f972c83c1cfb..b5c00bb9ce3e68b22117605ebc0868189e61e030 100644 --- a/tester/lime_massive_group-tester.cpp +++ b/tester/lime_massive_group-tester.cpp @@ -292,8 +292,8 @@ static void group_basic_test(const lime::CurveId curve, const std::string &dbBas } } catch (BctbxException &e) { - LIME_LOGE <<e;; - BC_FAIL(); + LIME_LOGE << e; + BC_FAIL(""); } } @@ -319,7 +319,7 @@ static void group_one_talking_bench() { // time spent in test is more or less linear to the device number, try to reach the one wich lead to a maximunBenchTime execution span = bctbx_get_cur_time_ms() - start; LIME_LOGE<<"Curve 25519 group chat test with "<<to_string(deviceNumber)<<" devices ran in "<<to_string(span)<<" ms"<<std::endl; - deviceNumber *= std::max(float(maximumBenchTime)/float(span), 1.0f) * 1.2; + deviceNumber *= int(std::max(float(maximumBenchTime)/float(span), 1.0f) * 1.2); } #endif #ifdef EC448_ENABLED @@ -332,7 +332,7 @@ static void group_one_talking_bench() { // time spent in test is more or less linear to the device number, try to reach the one wich lead to a maximunBenchTime execution span = bctbx_get_cur_time_ms() - start; LIME_LOGE<<"Curve 448 group chat test with "<<to_string(deviceNumber)<<" devices ran in "<<to_string(span)<<" ms"<<std::endl; - deviceNumber *= std::max(float(maximumBenchTime)/float(span), 1.0f) * 1.2; + deviceNumber *= int(std::max(float(maximumBenchTime)/float(span), 1.0f) * 1.2); } #endif } @@ -357,7 +357,7 @@ static void group_all_talking_bench() { // time spent in test is more or less linear to the square of device number, try to reach the one wich lead to a maximunBenchTime execution span = bctbx_get_cur_time_ms() - start; LIME_LOGE<<"Curve 25519 group chat test with "<<to_string(deviceNumber)<<" devices ran in "<<to_string(span)<<" ms"<<std::endl; - deviceNumber *= std::sqrt(std::max(float(maximumBenchTime)/float(span), 1.0f)) * 1.2; + deviceNumber *= int(std::sqrt(std::max(float(maximumBenchTime)/float(span), 1.0f)) * 1.2); } #endif #ifdef EC448_ENABLED @@ -370,7 +370,7 @@ static void group_all_talking_bench() { // time spent in test is more or less linear to the square of device number, try to reach the one wich lead to a maximunBenchTime execution span = bctbx_get_cur_time_ms() - start; LIME_LOGE<<"Curve 448 group chat test with "<<to_string(deviceNumber)<<" devices ran in "<<to_string(span)<<" ms"<<std::endl; - deviceNumber *= std::sqrt(std::max(float(maximumBenchTime)/float(span), 1.0f)) * 1.2; + deviceNumber *= int(std::sqrt(std::max(float(maximumBenchTime)/float(span), 1.0f)) * 1.2); } #endif }