Piac test code coverage report
Current view: top level - src - crypto_util.cpp (source / functions) Hit Total Coverage
Commit: Piac-DEBUG Lines: 12 12 100.0 %
Date: 2022-12-16 13:46:15 Functions: 2 2 100.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 13 26 50.0 %

           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                 :            : }

Generated by: LCOV version 1.14