mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-01 05:35:48 +00:00
In order to remove a FIXME, code which checks a BEGINS_WITH relation between base64-encoded strings is computed in a way which does not involve decoding the whole string. In case of padding, the remainders are still decoded, but their size is bounded by 3, which means they will be eligible for the small string optimization.
39 lines
1.1 KiB
C++
39 lines
1.1 KiB
C++
/*
|
|
* Copyright 2019 ScyllaDB
|
|
*/
|
|
|
|
/*
|
|
* This file is part of Scylla.
|
|
*
|
|
* Scylla is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Affero General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* Scylla is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public License
|
|
* along with Scylla. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <string_view>
|
|
#include "bytes.hh"
|
|
#include "rjson.hh"
|
|
|
|
std::string base64_encode(bytes_view);
|
|
|
|
bytes base64_decode(std::string_view);
|
|
|
|
inline bytes base64_decode(const rjson::value& v) {
|
|
return base64_decode(std::string_view(v.GetString(), v.GetStringLength()));
|
|
}
|
|
|
|
size_t base64_decoded_len(std::string_view str);
|
|
|
|
bool base64_begins_with(std::string_view base, std::string_view operand);
|