/*** Copyright (C) 2021 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: Base64.cpp Date: 2021-6-12 Author: Reece ***/ #include #include "Base64.hpp" #include namespace Aurora::Parse { AUKN_SYM bool Base64Decode(const AuString &in, AuByteBuffer &decoded, bool url) { unsigned long length = in.size(); try { decoded.resize(in.size()); int status; if (url) { status = base64url_decode(in.data(), in.size(), reinterpret_cast(&decoded[0]), &length); } else { status = base64_decode(in.data(), in.size(), reinterpret_cast(&decoded[0]), &length); } decoded.resize(length); return status == CRYPT_OK; } catch (...) { AuLogWarn("Decoding error: {}", in); Debug::PrintError(); return false; } } AUKN_SYM bool Base64Encode(const Memory::MemoryViewRead &input, AuString &encoded, bool url) { unsigned long outLength = input.length + (input.length / 3.0) + 16; try { encoded.resize(outLength); int status; if (url) { status = base64url_encode(reinterpret_cast(input.ptr), input.length, &encoded[0], &outLength); } else { status = base64_encode(reinterpret_cast(input.ptr), input.length, &encoded[0], &outLength); } encoded.resize(outLength); return status == CRYPT_OK; } catch (...) { AuLogWarn("Encoding error"); Debug::PrintError(); return false; } } }