00001
00002
00003 #include "pch.h"
00004 #include "base64.h"
00005
00006 NAMESPACE_BEGIN(CryptoPP)
00007
00008
00009 static const byte s_stdVec[] =
00010 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
00011
00012 static const byte s_urlVec[] =
00013 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
00014 static const byte s_padding = '=';
00015
00016 void Base64Encoder::IsolatedInitialize(const NameValuePairs ¶meters)
00017 {
00018 bool insertLineBreaks = parameters.GetValueWithDefault(Name::InsertLineBreaks(), true);
00019 int maxLineLength = parameters.GetIntValueWithDefault(Name::MaxLineLength(), 72);
00020
00021 const char *lineBreak = insertLineBreaks ? "\n" : "";
00022
00023 m_filter->Initialize(CombinedNameValuePairs(
00024 parameters,
00025 MakeParameters(Name::EncodingLookupArray(), &s_stdVec[0], false)
00026 (Name::PaddingByte(), s_padding)
00027 (Name::GroupSize(), insertLineBreaks ? maxLineLength : 0)
00028 (Name::Separator(), ConstByteArrayParameter(lineBreak))
00029 (Name::Terminator(), ConstByteArrayParameter(lineBreak))
00030 (Name::Log2Base(), 6, true)));
00031 }
00032
00033 void Base64URLEncoder::IsolatedInitialize(const NameValuePairs ¶meters)
00034 {
00035 bool insertLineBreaks = parameters.GetValueWithDefault(Name::InsertLineBreaks(), true);
00036 int maxLineLength = parameters.GetIntValueWithDefault(Name::MaxLineLength(), 72);
00037
00038 const char *lineBreak = insertLineBreaks ? "\n" : "";
00039
00040 m_filter->Initialize(CombinedNameValuePairs(
00041 parameters,
00042 MakeParameters(Name::EncodingLookupArray(), &s_urlVec[0], false)
00043 (Name::PaddingByte(), s_padding)
00044 (Name::GroupSize(), insertLineBreaks ? maxLineLength : 0)
00045 (Name::Separator(), ConstByteArrayParameter(lineBreak))
00046 (Name::Terminator(), ConstByteArrayParameter(lineBreak))
00047 (Name::Log2Base(), 6, true)));
00048 }
00049
00050 const int *Base64Decoder::GetDecodingLookupArray()
00051 {
00052 static volatile bool s_initialized = false;
00053 static int s_array[256];
00054
00055 if (!s_initialized)
00056 {
00057 InitializeDecodingLookupArray(s_array, s_stdVec, 64, false);
00058 s_initialized = true;
00059 }
00060 return s_array;
00061 }
00062
00063 const int *Base64URLDecoder::GetDecodingLookupArray()
00064 {
00065 static volatile bool s_initialized = false;
00066 static int s_array[256];
00067
00068 if (!s_initialized)
00069 {
00070 InitializeDecodingLookupArray(s_array, s_urlVec, 64, false);
00071 s_initialized = true;
00072 }
00073 return s_array;
00074 }
00075
00076 NAMESPACE_END