AnCH Framework 0.1
Another C++ Hack Framework
 
Loading...
Searching...
No Matches
base64.hpp
1/*
2 ANCH Framework: ANother C++ Hack is a C++ framework based on C++11 standard
3 Copyright (C) 2012 Vincent Lachenal
4
5 This file is part of ANCH Framework.
6
7 ANCH Framework is free software: you can redistribute it and/or modify
8 it under the terms of the GNU Lesser General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 ANCH Framework is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU Lesser General Public License for more details.
16
17 You should have received a copy of the GNU Lesser General Public License
18 along with ANCH Framework. If not, see <http://www.gnu.org/licenses/>.
19*/
20#pragma once
21
22#include <iostream>
23#include <sstream>
24#include <cstdint>
25
26#include <string.h>
27
28namespace anch::crypto {
29
39 class Base64 {
40 // Attributes +
41 public:
43 static const uint8_t STD;
44
46 static const uint8_t URL;
47
49 static const uint8_t PADDING;
50
52 static const uint8_t NOPADDING;
53 // Attributes -
54
55 // Constructors +
56 private:
60 Base64();
61 // Constructors -
62
63 // Destructor +
64 public:
68 virtual ~Base64();
69 // Destructor -
70
71
72 // Encoding methods +
73 public:
81 static void encode(std::istream& data, std::ostream& output, uint8_t options = STD | PADDING) noexcept;
82
91 static std::string encode(std::istream& data, uint8_t options = STD | PADDING) noexcept;
92
100 static void encode(const std::string& data, std::ostream& output, uint8_t options = STD | PADDING) noexcept;
101
110 static std::string encode(const std::string& data, uint8_t options = STD | PADDING) noexcept;
111
120 static void encode(const uint8_t* data, uint64_t length, std::ostream& output, uint8_t options = STD | PADDING) noexcept;
121
131 static std::string encode(const uint8_t* data, uint64_t length, uint8_t options = STD | PADDING) noexcept;
132
139 static void encodeURI(std::istream& data, std::ostream& output) noexcept;
140
148 static std::string encodeURI(std::istream& data) noexcept;
149
156 static void encodeURI(const std::string& data, std::ostream& output) noexcept;
157
165 static std::string encodeURI(const std::string& data) noexcept;
166
174 static void encodeURI(const uint8_t* data, uint64_t length, std::ostream& output) noexcept;
175
184 static std::string encodeURI(const uint8_t* data, uint64_t length) noexcept;
185 // Encoding methods -
186
187
188 // Decoding methods +
189 public:
198 static void decode(std::istream& data, std::ostream& output, uint8_t options = STD | PADDING);
199
209 static std::string decode(std::istream& data, uint8_t options = STD | PADDING);
210
219 static void decode(const std::string& data, std::ostream& output, uint8_t options = STD | PADDING);
220
230 static std::string decode(const std::string& data, uint8_t options = STD | PADDING);
231
241 static void decode(const char* data, uint64_t length, std::ostream& output, uint8_t options = STD | PADDING);
242
253 static std::string decode(const char* data, uint64_t length, uint8_t options = STD | PADDING);
254
263 static void decodeURI(std::istream& data, std::ostream& output);
264
274 static std::string decodeURI(std::istream& data);
275
284 static void decodeURI(const std::string& data, std::ostream& output);
285
295 static std::string decodeURI(const std::string& data);
296
306 static void decodeURI(const char* data, uint64_t length, std::ostream& output);
307
318 static std::string decodeURI(const char* data, uint64_t length);
319 // Decoding methods -
320
321 };
322
323}
324
325#include "crypto/b2t/impl/base64.hpp"
static std::string decodeURI(const std::string &data)
static std::string decode(const std::string &data, uint8_t options=STD|PADDING)
static void encodeURI(const uint8_t *data, uint64_t length, std::ostream &output) noexcept
static const uint8_t PADDING
Definition base64.hpp:49
static void decode(const std::string &data, std::ostream &output, uint8_t options=STD|PADDING)
static void decodeURI(const std::string &data, std::ostream &output)
static std::string decodeURI(std::istream &data)
static void encode(std::istream &data, std::ostream &output, uint8_t options=STD|PADDING) noexcept
static void decode(const char *data, uint64_t length, std::ostream &output, uint8_t options=STD|PADDING)
static std::string encodeURI(const uint8_t *data, uint64_t length) noexcept
static void encode(const std::string &data, std::ostream &output, uint8_t options=STD|PADDING) noexcept
static std::string encode(std::istream &data, uint8_t options=STD|PADDING) noexcept
static std::string decode(std::istream &data, uint8_t options=STD|PADDING)
static void decode(std::istream &data, std::ostream &output, uint8_t options=STD|PADDING)
static void decodeURI(const char *data, uint64_t length, std::ostream &output)
static void encodeURI(const std::string &data, std::ostream &output) noexcept
static const uint8_t URL
Definition base64.hpp:46
static const uint8_t NOPADDING
Definition base64.hpp:52
static std::string decode(const char *data, uint64_t length, uint8_t options=STD|PADDING)
static std::string encode(const std::string &data, uint8_t options=STD|PADDING) noexcept
static void encodeURI(std::istream &data, std::ostream &output) noexcept
static void encode(const uint8_t *data, uint64_t length, std::ostream &output, uint8_t options=STD|PADDING) noexcept
static std::string encode(const uint8_t *data, uint64_t length, uint8_t options=STD|PADDING) noexcept
static std::string encodeURI(std::istream &data) noexcept
static const uint8_t STD
Definition base64.hpp:43
static void decodeURI(std::istream &data, std::ostream &output)
static std::string decodeURI(const char *data, uint64_t length)
static std::string encodeURI(const std::string &data) noexcept
Cryptography namespace.
Definition base64.hpp:28