From f66dcb6d59360241bafcfde7acbe8a4b17119182 Mon Sep 17 00:00:00 2001 From: Claudius 'keldu' Holeksa Date: Mon, 19 Aug 2024 18:06:44 +0200 Subject: Trying b64 decoding wip --- modules/codec/c++/base64.hpp | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/modules/codec/c++/base64.hpp b/modules/codec/c++/base64.hpp index b65060e..4c9ae18 100644 --- a/modules/codec/c++/base64.hpp +++ b/modules/codec/c++/base64.hpp @@ -98,10 +98,40 @@ public: template static error_or decode(data& from, data& to){ - (void) to; - (void) from; - return make_error(); + /* + uint64_t b64_len = from.size(); + if((b64_len % 4) != 0){ + return make_error("B64 is not padded"); + } + uint64_t section_len = b64_len / 4u; + + std::string to_str; + + for(uint64_t i = 0u; i < section_len; ++i){ + uint64_t j = 4u*i; + + std::array to_bits{0,0,0}; + std::array from_bits{ + from.at(j).get(), + from.at(j+1u).get(), + from.at(j+2u).get(), + from.at(j+3u).get() + }; + + for(char iter : from_bits){ + if(!is_base64(iter)){ + return make_error("Not a base64 char"); + } + } + + to_bits[0] = char_array + } + + to = {std::move(to_str)}; + + return saw::make_void(); + */ } }; -- cgit v1.2.3