Coverage Report

Created: 2024-11-21 07:03

/src/cryptopp/hex.h
Line
Count
Source (jump to first uncovered line)
1
// hex.h - originally written and placed in the public domain by Wei Dai
2
3
/// \file hex.h
4
/// \brief Classes for HexEncoder and HexDecoder
5
6
#ifndef CRYPTOPP_HEX_H
7
#define CRYPTOPP_HEX_H
8
9
#include "cryptlib.h"
10
#include "basecode.h"
11
12
NAMESPACE_BEGIN(CryptoPP)
13
14
/// \brief Converts given data to base 16
15
class CRYPTOPP_DLL HexEncoder : public SimpleProxyFilter
16
{
17
public:
18
  /// \brief Construct a HexEncoder
19
  /// \param attachment a BufferedTrasformation to attach to this object
20
  /// \param uppercase a flag indicating uppercase output
21
  /// \param groupSize the size of the output grouping
22
  /// \param separator the separator to use between groups
23
  /// \param terminator the terminator append after processing
24
  HexEncoder(BufferedTransformation *attachment = NULLPTR, bool uppercase = true, int groupSize = 0, const std::string &separator = ":", const std::string &terminator = "")
25
    : SimpleProxyFilter(new BaseN_Encoder(new Grouper), attachment)
26
0
  {
27
0
    IsolatedInitialize(MakeParameters(Name::Uppercase(), uppercase)(Name::GroupSize(), groupSize)(Name::Separator(), ConstByteArrayParameter(separator))(Name::Terminator(), ConstByteArrayParameter(terminator)));
28
0
  }
29
30
  void IsolatedInitialize(const NameValuePairs &parameters);
31
};
32
33
/// \brief Decode base 16 data back to bytes
34
class CRYPTOPP_DLL HexDecoder : public BaseN_Decoder
35
{
36
public:
37
  /// \brief Construct a HexDecoder
38
  /// \param attachment a BufferedTrasformation to attach to this object
39
  HexDecoder(BufferedTransformation *attachment = NULLPTR)
40
135k
    : BaseN_Decoder(GetDefaultDecodingLookupArray(), 4, attachment) {}
41
42
  void IsolatedInitialize(const NameValuePairs &parameters);
43
44
private:
45
  static const int * CRYPTOPP_API GetDefaultDecodingLookupArray();
46
};
47
48
NAMESPACE_END
49
50
#endif