Crypto++ 8.1 Free C++ class library of cryptographic schemes

hex.cpp
1 // hex.cpp - originally written and placed in the public domain by Wei Dai
2
3 #include "pch.h"
4
5 #ifndef CRYPTOPP_IMPORTS
6
7 #include "hex.h"
8
9 NAMESPACE_BEGIN(CryptoPP)
10 ANONYMOUS_NAMESPACE_BEGIN
11
12 const byte s_vecUpper[] = "0123456789ABCDEF";
13 const byte s_vecLower[] = "0123456789abcdef";
14 const int s_array[256] = {
15 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
16 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
17 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
18 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1,
19 -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,
20 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
21 -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,
22 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
23 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
24 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
25 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
26 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
27 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
28 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
29 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
30 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
31 };
32
33 ANONYMOUS_NAMESPACE_END
34
35 void HexEncoder::IsolatedInitialize(const NameValuePairs &parameters)
36 {
37 bool uppercase = parameters.GetValueWithDefault(Name::Uppercase(), true);
38 m_filter->Initialize(CombinedNameValuePairs(
39 parameters,
40 MakeParameters(Name::EncodingLookupArray(), uppercase ? &s_vecUpper[0] : &s_vecLower[0], false)(Name::Log2Base(), 4, true)));
41 }
42
43 void HexDecoder::IsolatedInitialize(const NameValuePairs &parameters)
44 {
45 BaseN_Decoder::IsolatedInitialize(CombinedNameValuePairs(
46 parameters,
47 MakeParameters(Name::DecodingLookupArray(), GetDefaultDecodingLookupArray(), false)(Name::Log2Base(), 4, true)));
48 }
49
50 // Unrolled initialization, http://github.com/weidai11/cryptopp/issues/376
51 const int *HexDecoder::GetDefaultDecodingLookupArray()
52 {
53 return s_array;
54 }
55
56 NAMESPACE_END
57
58 #endif // CRYPTOPP_IMPORTS
Name::Uppercase
const char * Uppercase()
bool
Definition: argnames.h:70
NameValuePairs::GetValueWithDefault
T GetValueWithDefault(const char *name, T defaultValue) const
Get a named value.
Definition: cryptlib.h:363
CombinedNameValuePairs
Combines two sets of NameValuePairs.
Definition: algparam.h:124
HexEncoder::IsolatedInitialize
void IsolatedInitialize(const NameValuePairs &parameters)
Initialize or reinitialize this object, without signal propagation.
Definition: hex.cpp:35
BaseN_Decoder::IsolatedInitialize
void IsolatedInitialize(const NameValuePairs &parameters)
Initialize or reinitialize this object, without signal propagation.
Definition: basecode.cpp:115
MakeParameters
AlgorithmParameters MakeParameters(const char *name, const T &value, bool throwIfNotUsed=true)
Create an object that implements NameValuePairs.
Definition: algparam.h:502
Name::EncodingLookupArray
const char * EncodingLookupArray()
const byte *
Definition: argnames.h:75
hex.h
Classes for HexEncoder and HexDecoder.
pch.h
Precompiled header file.
Name::Log2Base
const char * Log2Base()
int
Definition: argnames.h:74
Name::DecodingLookupArray
const char * DecodingLookupArray()
const byte *
Definition: argnames.h:76
CryptoPP
Crypto++ library namespace.
HexDecoder::IsolatedInitialize
void IsolatedInitialize(const NameValuePairs &parameters)
Initialize or reinitialize this object, without signal propagation.
Definition: hex.cpp:43
NameValuePairs
Interface for retrieving values given their names.
Definition: cryptlib.h:293