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 : 124 : 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 : 124 : std::string digest; 33 [ + - ]: 248 : SHA256 hash; 34 [ + - ]: 124 : hash.Update( (const byte*)msg.data(), msg.size() ); 35 [ + - ]: 124 : digest.resize( hash.DigestSize() ); 36 [ + - ][ + - ]: 124 : hash.Final( (byte*)&digest[0] ); 37 : 248 : return digest; 38 : : } 39 : : 40 : : #if defined(__clang__) 41 : : #pragma clang diagnostic pop 42 : : #endif 43 : : 44 : : std::string 45 : 61 : 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 : 61 : std::string hex; 54 [ + - ][ + - ]: 244 : HexEncoder encoder( new StringSink( hex ) ); [ + - ][ + - ] [ + - ] 55 [ + - ][ + - ]: 61 : StringSource( digest, true, new Redirector( encoder ) ); [ + - ] 56 : 122 : return hex; 57 : : }