diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt index 67b66b4c4..0906165a0 100644 --- a/crypto/CMakeLists.txt +++ b/crypto/CMakeLists.txt @@ -129,5 +129,5 @@ if(VENDOR_LIBSODIUM) target_include_directories (${CRYPTOGRAPHY_LIB} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") else() target_include_directories(${CRYPTOGRAPHY_LIB} PUBLIC ${sodium_INCLUDE_DIR}) - target_link_libraries(${CRYPOGRAPHY_LIB} sodium) + target_link_libraries(${CRYPTOGRAPHY_LIB} sodium) endif() \ No newline at end of file diff --git a/crypto/ed25519/ref10/open.c b/crypto/ed25519/ref10/open.c index 8ecbe81b3..7fc912f65 100644 --- a/crypto/ed25519/ref10/open.c +++ b/crypto/ed25519/ref10/open.c @@ -21,7 +21,8 @@ _crypto_sign_ed25519_verify_detached(const unsigned char *sig, unsigned char rcheck[32]; ge25519_p3 A; ge25519_p2 R; - + size_t idx; + unsigned char d; #ifndef ED25519_COMPAT if(sc25519_is_canonical(sig + 32) == 0 || ge25519_has_small_order(sig) != 0) { @@ -51,9 +52,15 @@ _crypto_sign_ed25519_verify_detached(const unsigned char *sig, ge25519_double_scalarmult_vartime(&R, h, &A, sig + 32); ge25519_tobytes(rcheck, &R); - - return crypto_verify_32(rcheck, sig) | (-(rcheck == sig)) - | sodium_memcmp(sig, rcheck, 32); + d = 0; + for(idx = 0; idx < 32; ++idx) + { + if(rcheck[idx] ^ sig[idx]) + { + d += 1; + } + } + return d; } int diff --git a/crypto/verify/crypto_verify.c b/crypto/verify/crypto_verify.c index 23d646a69..a3a55da1e 100644 --- a/crypto/verify/crypto_verify.c +++ b/crypto/verify/crypto_verify.c @@ -24,7 +24,7 @@ crypto_verify_64_bytes(void) return crypto_verify_64_BYTES; } -#if defined(HAVE_EMMINTRIN_H) && defined(__SSE2__) +#if defined(__SSE2__) #ifdef __GNUC__ #pragma GCC target("sse2") diff --git a/libabyss/CMakeLists.txt b/libabyss/CMakeLists.txt index f013d14a0..5df373596 100644 --- a/libabyss/CMakeLists.txt +++ b/libabyss/CMakeLists.txt @@ -6,23 +6,10 @@ add_library(${ABYSS_LIB} "${CMAKE_CURRENT_SOURCE_DIR}/src/md5.cpp" target_include_directories(${ABYSS_LIB} PUBLIC include) target_link_libraries(${ABYSS_LIB} PUBLIC ${PLATFORM_LIB}) -if(NOT WIN32 AND NOT CMAKE_SYSTEM_NAME STREQUAL iOS) - target_link_libraries(${ABYSS_LIB} PUBLIC ${LIBUV_LIBRARY}) - add_executable(${ABYSS_EXE} main.cpp) - target_link_libraries(${ABYSS_EXE} PUBLIC ${ABYSS_LIB} Threads::Threads ${LIBS}) -elseif(MSVC_VERSION) - add_executable(${ABYSS_EXE} main.cpp) - target_link_libraries(${ABYSS_EXE} PUBLIC ${ABYSS_LIB} ${STATIC_LIB} ws2_32) -elseif(NOT CMAKE_SYSTEM_NAME STREQUAL iOS) - add_executable(${ABYSS_EXE} main.cpp llarp/win32/abyss.rc) - target_link_libraries(${ABYSS_EXE} PUBLIC ${ABYSS_LIB} ${STATIC_LIB} ws2_32) -endif() - # for freebsd if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") target_link_directories(${ABYSS_EXE} PRIVATE /usr/local/lib) target_include_directories(${ABYSS_LIB} SYSTEM PUBLIC /usr/local/include) endif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") -add_log_tag(${ABYSS_EXE}) add_log_tag(${ABYSS_LIB}) diff --git a/test/crypto/test_llarp_crypto.cpp b/test/crypto/test_llarp_crypto.cpp index 1a506061a..44009e74b 100644 --- a/test/crypto/test_llarp_crypto.cpp +++ b/test/crypto/test_llarp_crypto.cpp @@ -29,13 +29,14 @@ namespace llarp AlignedBuffer< 128 > random; random.Randomize(); Signature sig; + const PubKey pk = secret.toPublic(); const llarp_buffer_t buf(random.data(), random.size()); ASSERT_TRUE(crypto.sign(sig, secret, buf)); - ASSERT_TRUE(crypto.verify(secret.toPublic(), buf, sig)); + ASSERT_TRUE(crypto.verify(pk, buf, sig)); random.Randomize(); // mangle body - ASSERT_FALSE(crypto.verify(secret.toPublic(), buf, sig)); + ASSERT_FALSE(crypto.verify(pk, buf, sig)); } struct PQCryptoTest : public ::testing::Test