Branch data Line data Source code
1 : : // ***************************************************************************** 2 : : /*! 3 : : \file src/crypto_util.cpp 4 : : \copyright 2022-2025 J. Bakosi, 5 : : All rights reserved. See the LICENSE file for details. 6 : : \brief Piac cryptography utilities 7 : : */ 8 : : // ***************************************************************************** 9 : : 10 : : #include <cryptopp/sha.h> 11 : : #include <cryptopp/files.h> 12 : : #include <cryptopp/hex.h> 13 : : 14 : : #include "crypto_util.hpp" 15 : : 16 : : #include "macro.hpp" 17 : : 18 : : #if defined(__clang__) 19 : : #pragma clang diagnostic push 20 : : #pragma clang diagnostic ignored "-Wold-style-cast" 21 : : #endif 22 : : 23 : : std::string 24 [ + - ]: 96 : piac::sha256( const std::string& msg ) 25 : : // **************************************************************************** 26 : : // Compute sha256 hash of a string 27 : : //! \param[in] msg String whose hash to compute 28 : : //! \return Hash computed 29 : : // **************************************************************************** 30 : : { 31 : : using namespace CryptoPP; 32 : : std::string digest; 33 : : SHA256 hash; 34 [ + - ]: 96 : hash.Update( (const byte*)msg.data(), msg.size() ); 35 : : digest.resize( hash.DigestSize() ); 36 : : hash.Final( (byte*)&digest[0] ); 37 : 96 : return digest; 38 : : } 39 : : 40 : : #if defined(__clang__) 41 : : #pragma clang diagnostic pop 42 : : #endif 43 : : 44 : : std::string 45 [ + - ]: 45 : piac::hex( const std::string& digest ) 46 : : // **************************************************************************** 47 : : // Compute hex encoding of a string 48 : : //! \param[in] digest String to encode in hex 49 : : //! \return Hex encoding 50 : : // **************************************************************************** 51 : : { 52 : : using namespace CryptoPP; 53 : : std::string hex; 54 [ + - ][ + - ]: 135 : HexEncoder encoder( new StringSink( hex ) ); [ + - ][ + - ] [ - + ][ + - ] [ - - ][ - - ] 55 [ + - ][ + - ]: 135 : StringSource( digest, true, new Redirector( encoder ) ); 56 : 45 : return hex; 57 : : }