userver: userver/crypto/base64.hpp Source File
Loading...
Searching...
No Matches
base64.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/crypto/base64.hpp
4/// @brief @copybrief crypto::base64
5/// @ingroup userver_universal
6
7#include <string_view>
8
9USERVER_NAMESPACE_BEGIN
10
11/// Cryptographic hashing
12namespace crypto::base64 {
13
14enum class Pad { kWith, kWithout };
15
16/// @brief Encodes data to Base64, add padding by default
17/// @param pad controls if pad should be added or not
18/// @throws CryptoException internal library exception
19std::string Base64Encode(std::string_view data, Pad pad = Pad::kWith);
20
21/// @brief Decodes data from Base64
22/// @throws CryptoException internal library exception
23std::string Base64Decode(std::string_view data);
24
25#ifndef USERVER_NO_CRYPTOPP_BASE64_URL
26
27/// @brief Encodes data to Base64 (using URL alphabet), add padding by default
28/// @param pad controls if pad should be added or not
29/// @throws CryptoException internal library exception
30std::string Base64UrlEncode(std::string_view data, Pad pad = Pad::kWith);
31
32/// @brief Decodes data from Base64 (using URL alphabet)
33/// @throws CryptoException internal library exception
34std::string Base64UrlDecode(std::string_view data);
35
36#endif
37
38} // namespace crypto::base64
39
40USERVER_NAMESPACE_END