From 648b70892c9b8b151a1efd02ce2d0b38e32062ed Mon Sep 17 00:00:00 2001 From: Savinda Senevirathne Date: Fri, 21 Aug 2020 15:50:39 +0530 Subject: [PATCH] Blake2 to Blake3 hash migration (#111) * hash call update from blake2b to blake3 * including installation steps for blake3 in readme --- CMakeLists.txt | 1 + README.md | 9 ++ src/crypto.cpp | 316 +++++++++++++++++++++++----------------------- src/pchheader.hpp | 1 + test/bin/hpfs | Bin 219288 -> 219288 bytes 5 files changed, 169 insertions(+), 158 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3d722ae6..013b7a2f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,6 +73,7 @@ target_link_libraries(hpcore pthread crypto ${CMAKE_DL_LIBS} # Needed for stacktrace support + libblake3.so ) add_dependencies(hpcore appbill diff --git a/README.md b/README.md index 5a6051f5..480cde60 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,15 @@ Instructions are based on [this](https://libsodium.gitbook.io/doc/installation). 3. Run `./configure && make && make check` 4. Run `sudo make install` +#### Install blake3 +1. Clone [blake3 library](https://github.com/BLAKE3-team/BLAKE3) repository +2. Navigate into the directory in a terminal. +3. `cd c` to navigate to the C implementation folder +4. `gcc -shared -fPIC -O3 -o libblake3.so blake3.c blake3_dispatch.c blake3_portable.c \` + `blake3_sse41_x86-64_unix.S blake3_avx2_x86-64_unix.S blake3_avx512_x86-64_unix.S` +5. `sudo cp blake3.h /usr/local/include/` +6. `sudo cp libblake3.so /usr/local/lib/` + #### Install Boost Following Instructions are based on Boost [getting started](https://www.boost.org/doc/libs/1_71_0/more/getting_started/unix-variants.html#prepare-to-use-a-boost-library-binary) diff --git a/src/crypto.cpp b/src/crypto.cpp index 3c9cb286..5c6f0ec5 100644 --- a/src/crypto.cpp +++ b/src/crypto.cpp @@ -5,195 +5,195 @@ namespace crypto { -/** - * Initializes the crypto subsystem. Must be called once during application startup. - * @return 0 for successful initialization. -1 for failure. - */ -int init() -{ - if (sodium_init() < 0) + /** + * Initializes the crypto subsystem. Must be called once during application startup. + * @return 0 for successful initialization. -1 for failure. + */ + int init() { - std::cout << "sodium_init failed.\n"; - return -1; + if (sodium_init() < 0) + { + std::cout << "sodium_init failed.\n"; + return -1; + } + + return 0; } - return 0; -} + /** + * Generates a signing key pair using libsodium and assigns them to the provided strings. + */ + void generate_signing_keys(std::string &pubkey, std::string &seckey) + { + // Generate key pair using libsodium default algorithm. + // Currently using ed25519. So append prefix byte to represent that. -/** - * Generates a signing key pair using libsodium and assigns them to the provided strings. - */ -void generate_signing_keys(std::string &pubkey, std::string &seckey) -{ - // Generate key pair using libsodium default algorithm. - // Currently using ed25519. So append prefix byte to represent that. + pubkey.resize(PFXD_PUBKEY_BYTES); + pubkey[0] = KEYPFX_ed25519; - pubkey.resize(PFXD_PUBKEY_BYTES); - pubkey[0] = KEYPFX_ed25519; + seckey.resize(PFXD_SECKEY_BYTES); + seckey[0] = KEYPFX_ed25519; - seckey.resize(PFXD_SECKEY_BYTES); - seckey[0] = KEYPFX_ed25519; + crypto_sign_ed25519_keypair( + reinterpret_cast(pubkey.data() + 1), // +1 to skip the prefix byte. + reinterpret_cast(seckey.data() + 1)); // +1 to skip the prefix byte. + } - crypto_sign_ed25519_keypair( - reinterpret_cast(pubkey.data() + 1), // +1 to skip the prefix byte. - reinterpret_cast(seckey.data() + 1)); // +1 to skip the prefix byte. -} + /** + * Returns the signature bytes for a message. + * + * @param msg Message bytes to sign. + * @param seckey Secret key bytes. + * @return Signature bytes. + */ + std::string sign(std::string_view msg, std::string_view seckey) + { + //Generate the signature using libsodium. -/** - * Returns the signature bytes for a message. - * - * @param msg Message bytes to sign. - * @param seckey Secret key bytes. - * @return Signature bytes. - */ -std::string sign(std::string_view msg, std::string_view seckey) -{ - //Generate the signature using libsodium. + std::string sig; + sig.resize(crypto_sign_ed25519_BYTES); + crypto_sign_ed25519_detached( + reinterpret_cast(sig.data()), + NULL, + reinterpret_cast(msg.data()), + msg.length(), + reinterpret_cast(seckey.data() + 1)); // +1 to skip the prefix byte. - std::string sig; - sig.resize(crypto_sign_ed25519_BYTES); - crypto_sign_ed25519_detached( - reinterpret_cast(sig.data()), - NULL, - reinterpret_cast(msg.data()), - msg.length(), - reinterpret_cast(seckey.data() + 1)); // +1 to skip the prefix byte. - - return sig; -} + return sig; + } -/** - * Returns the hex signature string for a message. - * - * @param msg Message bytes to sign. - * @param seckeyhex hex secret key string. - * @return hex signature string. - */ -std::string sign_hex(std::string_view msg, std::string_view seckeyhex) -{ - //Decode hex string and generate the signature using libsodium. + /** + * Returns the hex signature string for a message. + * + * @param msg Message bytes to sign. + * @param seckeyhex hex secret key string. + * @return hex signature string. + */ + std::string sign_hex(std::string_view msg, std::string_view seckeyhex) + { + //Decode hex string and generate the signature using libsodium. - unsigned char seckey[PFXD_SECKEY_BYTES]; - util::hex2bin(seckey, PFXD_SECKEY_BYTES, seckeyhex); + unsigned char seckey[PFXD_SECKEY_BYTES]; + util::hex2bin(seckey, PFXD_SECKEY_BYTES, seckeyhex); - unsigned char sig[crypto_sign_ed25519_BYTES]; - crypto_sign_ed25519_detached( - sig, - NULL, - reinterpret_cast(msg.data()), - msg.length(), - seckey + 1); // +1 to skip prefix byte. + unsigned char sig[crypto_sign_ed25519_BYTES]; + crypto_sign_ed25519_detached( + sig, + NULL, + reinterpret_cast(msg.data()), + msg.length(), + seckey + 1); // +1 to skip prefix byte. - std::string sighex; - util::bin2hex(sighex, sig, crypto_sign_ed25519_BYTES); - return sighex; -} + std::string sighex; + util::bin2hex(sighex, sig, crypto_sign_ed25519_BYTES); + return sighex; + } -/** - * Verifies the given signature bytes for the message. - * - * @param msg Message bytes. - * @param sig Signature bytes. - * @param pubkey Public key bytes. - * @return 0 for successful verification. -1 for failure. - */ -int verify(std::string_view msg, std::string_view sig, std::string_view pubkey) -{ - return crypto_sign_ed25519_verify_detached( - reinterpret_cast(sig.data()), - reinterpret_cast(msg.data()), - msg.length(), - reinterpret_cast(pubkey.data() + 1)); // +1 to skip prefix byte. -} + /** + * Verifies the given signature bytes for the message. + * + * @param msg Message bytes. + * @param sig Signature bytes. + * @param pubkey Public key bytes. + * @return 0 for successful verification. -1 for failure. + */ + int verify(std::string_view msg, std::string_view sig, std::string_view pubkey) + { + return crypto_sign_ed25519_verify_detached( + reinterpret_cast(sig.data()), + reinterpret_cast(msg.data()), + msg.length(), + reinterpret_cast(pubkey.data() + 1)); // +1 to skip prefix byte. + } -/** - * Verifies the given hex signature for the message. - * - * @param msg hex message string. - * @param sighex hex signature string. - * @param pubkeyhex hex secret key. - * @return 0 for successful verification. -1 for failure. - */ -int verify_hex(std::string_view msg, std::string_view sighex, std::string_view pubkeyhex) -{ - //Decode hex string and verify the signature using libsodium. + /** + * Verifies the given hex signature for the message. + * + * @param msg hex message string. + * @param sighex hex signature string. + * @param pubkeyhex hex secret key. + * @return 0 for successful verification. -1 for failure. + */ + int verify_hex(std::string_view msg, std::string_view sighex, std::string_view pubkeyhex) + { + //Decode hex string and verify the signature using libsodium. - unsigned char decoded_pubkey[PFXD_PUBKEY_BYTES]; - util::hex2bin(decoded_pubkey, PFXD_PUBKEY_BYTES, pubkeyhex); + unsigned char decoded_pubkey[PFXD_PUBKEY_BYTES]; + util::hex2bin(decoded_pubkey, PFXD_PUBKEY_BYTES, pubkeyhex); - unsigned char decoded_sig[crypto_sign_ed25519_BYTES]; - util::hex2bin(decoded_sig, crypto_sign_ed25519_BYTES, sighex); + unsigned char decoded_sig[crypto_sign_ed25519_BYTES]; + util::hex2bin(decoded_sig, crypto_sign_ed25519_BYTES, sighex); - return crypto_sign_ed25519_verify_detached( - decoded_sig, - reinterpret_cast(msg.data()), - msg.length(), - decoded_pubkey + 1); // +1 to skip prefix byte. -} + return crypto_sign_ed25519_verify_detached( + decoded_sig, + reinterpret_cast(msg.data()), + msg.length(), + decoded_pubkey + 1); // +1 to skip prefix byte. + } -/** - * Generate blake2b hash for a given message. - * @param data String to hash. - * @return The blake2b hash of the given string. - */ -std::string get_hash(std::string_view data) -{ - std::string hash; - hash.resize(crypto_generichash_blake2b_BYTES); + /** + * Generate blake3 hash for a given message. + * @param data String to hash. + * @return The blake3 hash of the given string. + */ + std::string get_hash(std::string_view data) + { + std::string hash; + hash.resize(BLAKE3_OUT_LEN); - crypto_generichash_blake2b( - reinterpret_cast(hash.data()), - hash.length(), - reinterpret_cast(data.data()), - data.length(), - NULL, 0); + // Initialize the hasher. + blake3_hasher hasher; + blake3_hasher_init(&hasher); - return hash; -} + blake3_hasher_update(&hasher, reinterpret_cast(data.data()), data.length()); -/** - * Generate blake2b hash for a given message. + blake3_hasher_finalize(&hasher, reinterpret_cast(hash.data()), hash.length()); + + return hash; + } + + /** + * Generate blake3 hash for a given message. * @param data unsigned char array pointer to hash data. * @param data_length hash data length. - * @return The blake2b hash of the pointed buffer. + * @return The blake3 hash of the pointed buffer. */ -std::string get_hash(const unsigned char * data, size_t data_length) -{ - std::string hash; - hash.resize(crypto_generichash_blake2b_BYTES); + std::string get_hash(const unsigned char *data, size_t data_length) + { + std::string hash; + hash.resize(BLAKE3_OUT_LEN); - crypto_generichash_blake2b( - reinterpret_cast(hash.data()), - hash.length(), - data, - data_length, - NULL, 0); + // Initialize the hasher. + blake3_hasher hasher; + blake3_hasher_init(&hasher); - return hash; -} + blake3_hasher_update(&hasher, data, data_length); -/** - * Generates blake2b hash for the given set of strings using stream hashing. - */ -std::string get_hash(std::string_view s1, std::string_view s2) -{ - std::string hash; - hash.resize(crypto_generichash_blake2b_BYTES); + blake3_hasher_finalize(&hasher, reinterpret_cast(hash.data()), hash.length()); - // Init stream hashing. - crypto_generichash_blake2b_state state; - crypto_generichash_blake2b_init(&state, NULL, 0, hash.length()); + return hash; + } - crypto_generichash_blake2b_update(&state, reinterpret_cast(s1.data()), s1.length()); - crypto_generichash_blake2b_update(&state, reinterpret_cast(s2.data()), s2.length()); + /** + * Generates blake3 hash for the given set of strings using stream hashing. + */ + std::string get_hash(std::string_view s1, std::string_view s2) + { + std::string hash; + hash.resize(BLAKE3_OUT_LEN); - // Get the final hash. - crypto_generichash_blake2b_final( - &state, - reinterpret_cast(hash.data()), - hash.length()); + // Init stream hashing. + blake3_hasher hasher; + blake3_hasher_init(&hasher); - return hash; -} + // updating hash with given data + blake3_hasher_update(&hasher, reinterpret_cast(s1.data()), s1.length()); + blake3_hasher_update(&hasher, reinterpret_cast(s2.data()), s2.length()); + + // Get the final hash. + blake3_hasher_finalize(&hasher, reinterpret_cast(hash.data()), hash.length()); + + return hash; + } } // namespace crypto \ No newline at end of file diff --git a/src/pchheader.hpp b/src/pchheader.hpp index 23d1c0be..9c652085 100644 --- a/src/pchheader.hpp +++ b/src/pchheader.hpp @@ -63,5 +63,6 @@ #include #include #include +#include #endif \ No newline at end of file diff --git a/test/bin/hpfs b/test/bin/hpfs index ca9d6496c87360855a780c80ab48a3aa865dedef..02e34e960dea8bd63b317f307ff77ec4014cc413 100755 GIT binary patch delta 47978 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 c$~E(BxkfG{TX+4PXk~ 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 z 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