1// hex.cpp - 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 9NAMESPACE_BEGIN(CryptoPP) 10 11static const byte s_vecUpper[] = "0123456789ABCDEF"; 12static const byte s_vecLower[] = "0123456789abcdef"; 13 14void HexEncoder::IsolatedInitialize(const NameValuePairs ¶meters) 15{ 16 bool uppercase = parameters.GetValueWithDefault(Name::Uppercase(), true); 17 m_filter->Initialize(CombinedNameValuePairs( 18 parameters, 19 MakeParameters(Name::EncodingLookupArray(), uppercase ? &s_vecUpper[0] : &s_vecLower[0], false)(Name::Log2Base(), 4, true))); 20} 21 22void HexDecoder::IsolatedInitialize(const NameValuePairs ¶meters) 23{ 24 BaseN_Decoder::IsolatedInitialize(CombinedNameValuePairs( 25 parameters, 26 MakeParameters(Name::DecodingLookupArray(), GetDefaultDecodingLookupArray(), false)(Name::Log2Base(), 4, true))); 27} 28 29const int *HexDecoder::GetDefaultDecodingLookupArray() 30{ 31 static bool s_initialized = false; 32 static int s_array[256]; 33 34 if (!s_initialized) 35 { 36 InitializeDecodingLookupArray(s_array, s_vecUpper, 16, true); 37 s_initialized = true; 38 } 39 return s_array; 40} 41 42NAMESPACE_END 43 44#endif 45