mirror of https://github.com/oxen-io/oxen-mq.git
Fix sodium linking and call sodium_init()
We call libsodium functions which require a sodium_init() call; this is usually a no-op (zmq will have already called it for us), but in case zmq is built with tweetnacl instead of sodium we need to call it before we call it directly in the LokiMQ ctor and the test suite.
This commit is contained in:
parent
9ac47ec419
commit
a24e87d4d0
|
@ -201,6 +201,9 @@ LokiMQ::LokiMQ(
|
|||
|
||||
LMQ_TRACE("Constructing LokiMQ, id=", object_id, ", this=", this);
|
||||
|
||||
if (sodium_init() == -1)
|
||||
throw std::runtime_error{"libsodium initialization failed"};
|
||||
|
||||
if (pubkey.empty() != privkey.empty()) {
|
||||
throw std::invalid_argument("LokiMQ construction failed: one (and only one) of pubkey/privkey is empty. Both must be specified, or both empty to generate a key.");
|
||||
} else if (pubkey.empty()) {
|
||||
|
|
|
@ -16,10 +16,8 @@ set(LMQ_TEST_SRC
|
|||
add_executable(tests ${LMQ_TEST_SRC})
|
||||
|
||||
find_package(Threads)
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(SODIUM REQUIRED libsodium)
|
||||
|
||||
target_link_libraries(tests Catch2::Catch2 lokimq ${SODIUM_LIBRARIES} Threads::Threads)
|
||||
target_link_libraries(tests Catch2::Catch2 lokimq Threads::Threads)
|
||||
|
||||
set_target_properties(tests PROPERTIES
|
||||
CXX_STANDARD 17
|
||||
|
|
|
@ -53,6 +53,7 @@ TEST_CASE("self-connection SN optimization", "[connect][self]") {
|
|||
std::string pubkey, privkey;
|
||||
pubkey.resize(crypto_box_PUBLICKEYBYTES);
|
||||
privkey.resize(crypto_box_SECRETKEYBYTES);
|
||||
REQUIRE(sodium_init() != -1);
|
||||
crypto_box_keypair(reinterpret_cast<unsigned char*>(&pubkey[0]), reinterpret_cast<unsigned char*>(&privkey[0]));
|
||||
LokiMQ sn{
|
||||
pubkey, privkey,
|
||||
|
@ -188,6 +189,7 @@ TEST_CASE("SN disconnections", "[connect][disconnect]") {
|
|||
std::vector<std::unique_ptr<LokiMQ>> lmq;
|
||||
std::vector<std::string> pubkey, privkey;
|
||||
std::unordered_map<std::string, std::string> conn;
|
||||
REQUIRE(sodium_init() != -1);
|
||||
for (int i = 0; i < 3; i++) {
|
||||
pubkey.emplace_back();
|
||||
privkey.emplace_back();
|
||||
|
@ -234,6 +236,7 @@ TEST_CASE("SN auth checks", "[sandwich][auth]") {
|
|||
std::string pubkey, privkey;
|
||||
pubkey.resize(crypto_box_PUBLICKEYBYTES);
|
||||
privkey.resize(crypto_box_SECRETKEYBYTES);
|
||||
REQUIRE(sodium_init() != -1);
|
||||
crypto_box_keypair(reinterpret_cast<unsigned char*>(&pubkey[0]), reinterpret_cast<unsigned char*>(&privkey[0]));
|
||||
LokiMQ server{
|
||||
pubkey, privkey,
|
||||
|
|
Loading…
Reference in New Issue