1// base32.cpp - written and placed in the public domain by Frank Palazzolo, based on hex.cpp by Wei Dai 2 3#include "pch.h" 4#include "base32.h" 5 6NAMESPACE_BEGIN(CryptoPP) 7 8static const byte s_vecUpper[] = "ABCDEFGHIJKMNPQRSTUVWXYZ23456789"; 9static const byte s_vecLower[] = "abcdefghijkmnpqrstuvwxyz23456789"; 10 11void Base32Encoder::IsolatedInitialize(const NameValuePairs ¶meters) 12{ 13 bool uppercase = parameters.GetValueWithDefault(Name::Uppercase(), true); 14 m_filter->Initialize(CombinedNameValuePairs( 15 parameters, 16 MakeParameters(Name::EncodingLookupArray(), uppercase ? &s_vecUpper[0] : &s_vecLower[0], false)(Name::Log2Base(), 5, true))); 17} 18 19void Base32Decoder::IsolatedInitialize(const NameValuePairs ¶meters) 20{ 21 BaseN_Decoder::Initialize(CombinedNameValuePairs( 22 parameters, 23 MakeParameters(Name::DecodingLookupArray(), GetDefaultDecodingLookupArray(), false)(Name::Log2Base(), 5, true))); 24} 25 26const int *Base32Decoder::GetDefaultDecodingLookupArray() 27{ 28 static bool s_initialized = false; 29 static int s_array[256]; 30 31 if (!s_initialized) 32 { 33 InitializeDecodingLookupArray(s_array, s_vecUpper, 32, true); 34 s_initialized = true; 35 } 36 return s_array; 37} 38 39NAMESPACE_END 40