Crypto++
base64.cpp
1 // base64.cpp - written and placed in the public domain by Wei Dai
2 
3 #include "pch.h"
4 #include "base64.h"
5 
6 NAMESPACE_BEGIN(CryptoPP)
7 
8 static const byte s_vec[] =
9  "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
10 static const byte s_padding = '=';
11 
12 void Base64Encoder::IsolatedInitialize(const NameValuePairs &parameters)
13 {
14  bool insertLineBreaks = parameters.GetValueWithDefault(Name::InsertLineBreaks(), true);
15  int maxLineLength = parameters.GetIntValueWithDefault(Name::MaxLineLength(), 72);
16 
17  const char *lineBreak = insertLineBreaks ? "\n" : "";
18 
20  parameters,
21  MakeParameters(Name::EncodingLookupArray(), &s_vec[0], false)
22  (Name::PaddingByte(), s_padding)
23  (Name::GroupSize(), insertLineBreaks ? maxLineLength : 0)
24  (Name::Separator(), ConstByteArrayParameter(lineBreak))
25  (Name::Terminator(), ConstByteArrayParameter(lineBreak))
26  (Name::Log2Base(), 6, true)));
27 }
28 
29 const int *Base64Decoder::GetDecodingLookupArray()
30 {
31  static volatile bool s_initialized = false;
32  static int s_array[256];
33 
34  if (!s_initialized)
35  {
36  InitializeDecodingLookupArray(s_array, s_vec, 64, false);
37  s_initialized = true;
38  }
39  return s_array;
40 }
41 
42 NAMESPACE_END
used to pass byte array input as part of a NameValuePairs object
Definition: algparam.h:13
Base64 Encoder Class.
Definition: base64.h:9
void Initialize(const NameValuePairs &parameters=g_nullNameValuePairs, int propagation=-1)
initialize or reinitialize this object
Definition: filters.cpp:61
interface for retrieving values given their names
Definition: cryptlib.h:225