userver: userver/crypto/base64.hpp Source File
⚠️ This is the documentation for an old userver version. Click here to switch to the latest version.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
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