4#include "Stroika/Foundation/Common/GUID.h"
7namespace Stroika::Foundation::Cryptography {
10 string mkArrayFmt_ (
const uint8_t* start,
const uint8_t* end);
11 inline string mkArrayFmt_ (
const byte* start,
const byte* end)
13 return mkArrayFmt_ (
reinterpret_cast<const uint8_t*
> (start),
reinterpret_cast<const uint8_t*
> (end));
15 string mkFmt_ (
unsigned int n);
16 string mkFmt_ (
unsigned long n);
17 string mkFmt_ (
unsigned long long n);
19 using Characters::String;
22 inline string Format_ (
const array<byte, N>& arr,
const string*)
24 static_assert (N >= 1,
"N >= 1");
25 return mkArrayFmt_ (Traversal::Iterator2Pointer (arr.begin ()), Traversal::Iterator2Pointer (arr.begin ()) + N);
28 inline string Format_ (
const array<uint8_t, N>& arr,
const string*)
30 static_assert (N >= 1,
"N >= 1");
31 return mkArrayFmt_ (Traversal::Iterator2Pointer (arr.begin ()), Traversal::Iterator2Pointer (arr.begin ()) + N);
33 inline string Format_ (
unsigned int n,
const string*)
37 inline string Format_ (
unsigned long n,
const string*)
41 inline string Format_ (
unsigned long long n,
const string*)
45 inline string Format_ (
const Memory::BLOB& b,
const string*)
47 return mkArrayFmt_ (
reinterpret_cast<const uint8_t*
> (b.begin ()),
reinterpret_cast<const uint8_t*
> (b.end ()));
49 template <
typename CRYTO_RESULT_TO_FORMAT_TYPE>
50 inline String Format_ (
const CRYTO_RESULT_TO_FORMAT_TYPE& arr,
const String*)
52 return String{Format_ (arr,
static_cast<const string*
> (
nullptr))};
55 template <
typename CRYTO_RESULT_TO_FORMAT_TYPE>
56 Common::GUID Format_ (
const CRYTO_RESULT_TO_FORMAT_TYPE& arr,
const Common::GUID*)
58 string tmp = Format_ (arr,
static_cast<const string*
> (
nullptr));
59 std::array<uint8_t, 16> data{};
62 data[i] += (uint8_t)c;
68 return Common::GUID{data};
73 template <
typename AS_RESULT_TYPE,
typename CRYTO_RESULT_TO_FORMAT_TYPE>
74 inline AS_RESULT_TYPE Format (
const CRYTO_RESULT_TO_FORMAT_TYPE& digestResult)
76 return Private_::Format_ (digestResult,
static_cast<const AS_RESULT_TYPE*
> (
nullptr));