|
@@ -25,9 +25,9 @@ |
|
|
|
|
|
|
|
|
namespace ge { |
|
|
namespace ge { |
|
|
namespace { |
|
|
namespace { |
|
|
const char* kBase64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" |
|
|
|
|
|
"abcdefghijklmnopqrstuvwxyz" |
|
|
|
|
|
"0123456789+/"; |
|
|
|
|
|
|
|
|
const string kBase64Chars("ABCDEFGHIJKLMNOPQRSTUVWXYZ" |
|
|
|
|
|
"abcdefghijklmnopqrstuvwxyz" |
|
|
|
|
|
"0123456789+/"); |
|
|
const char kEqualSymbol = '='; |
|
|
const char kEqualSymbol = '='; |
|
|
const size_t kBase64CharsNum = 64; |
|
|
const size_t kBase64CharsNum = 64; |
|
|
const size_t kThreeByteOneGroup = 3; |
|
|
const size_t kThreeByteOneGroup = 3; |
|
@@ -88,8 +88,8 @@ static Status DecodeFromBase64(const std::string &base64_data, std::string &deco |
|
|
size_t base64_data_len = base64_data.size(); |
|
|
size_t base64_data_len = base64_data.size(); |
|
|
uint8_t byte_4[kFourByteOneGroup]; |
|
|
uint8_t byte_4[kFourByteOneGroup]; |
|
|
auto FindCharInBase64Chars = [&](const char &raw_char) -> uint8_t { |
|
|
auto FindCharInBase64Chars = [&](const char &raw_char) -> uint8_t { |
|
|
auto char_pos = std::find(kBase64Chars, kBase64Chars + kBase64CharsNum, raw_char); |
|
|
|
|
|
return static_cast<uint8_t>(std::distance(kBase64Chars, char_pos)) & 0xff; |
|
|
|
|
|
|
|
|
auto char_pos = std::find(kBase64Chars.begin(), kBase64Chars.end(), raw_char); |
|
|
|
|
|
return static_cast<uint8_t>(std::distance(kBase64Chars.begin(), char_pos)) & 0xff; |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
for (std::size_t input_data_index = 0; input_data_index < base64_data_len; input_data_index += 4) { |
|
|
for (std::size_t input_data_index = 0; input_data_index < base64_data_len; input_data_index += 4) { |
|
|