Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
2.3 KiB

  1. // base64.cpp - written and placed in the public domain by Wei Dai
  2. #include "pch.h"
  3. #include "base64.h"
  4. NAMESPACE_BEGIN(CryptoPP)
  5. // Base64
  6. static const byte s_stdVec[] =
  7. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  8. // Base64URL
  9. static const byte s_urlVec[] =
  10. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
  11. static const byte s_padding = '=';
  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. const char *lineBreak = insertLineBreaks ? "\n" : "";
  17. m_filter->Initialize(CombinedNameValuePairs(
  18. parameters,
  19. MakeParameters(Name::EncodingLookupArray(), &s_stdVec[0], false)
  20. (Name::PaddingByte(), s_padding)
  21. (Name::GroupSize(), insertLineBreaks ? maxLineLength : 0)
  22. (Name::Separator(), ConstByteArrayParameter(lineBreak))
  23. (Name::Terminator(), ConstByteArrayParameter(lineBreak))
  24. (Name::Log2Base(), 6, true)));
  25. }
  26. void Base64URLEncoder::IsolatedInitialize(const NameValuePairs &parameters)
  27. {
  28. bool insertLineBreaks = parameters.GetValueWithDefault(Name::InsertLineBreaks(), true);
  29. int maxLineLength = parameters.GetIntValueWithDefault(Name::MaxLineLength(), 72);
  30. const char *lineBreak = insertLineBreaks ? "\n" : "";
  31. m_filter->Initialize(CombinedNameValuePairs(
  32. parameters,
  33. MakeParameters(Name::EncodingLookupArray(), &s_urlVec[0], false)
  34. (Name::PaddingByte(), s_padding)
  35. (Name::GroupSize(), insertLineBreaks ? maxLineLength : 0)
  36. (Name::Separator(), ConstByteArrayParameter(lineBreak))
  37. (Name::Terminator(), ConstByteArrayParameter(lineBreak))
  38. (Name::Log2Base(), 6, true)));
  39. }
  40. const int *Base64Decoder::GetDecodingLookupArray()
  41. {
  42. static volatile bool s_initialized = false;
  43. static int s_array[256];
  44. if (!s_initialized)
  45. {
  46. InitializeDecodingLookupArray(s_array, s_stdVec, 64, false);
  47. s_initialized = true;
  48. }
  49. return s_array;
  50. }
  51. const int *Base64URLDecoder::GetDecodingLookupArray()
  52. {
  53. static volatile bool s_initialized = false;
  54. static int s_array[256];
  55. if (!s_initialized)
  56. {
  57. InitializeDecodingLookupArray(s_array, s_urlVec, 64, false);
  58. s_initialized = true;
  59. }
  60. return s_array;
  61. }
  62. NAMESPACE_END