|
|
|
@ -47,6 +47,9 @@ namespace
|
|
|
|
|
"8b655970153799af2aeadc9ff1add0ea6c7251d54154cfa92c173a0dd39c1f94"
|
|
|
|
|
"6c7251d54154cfa92c173a0dd39c1f948b655970153799af2aeadc9ff1add0ea";
|
|
|
|
|
|
|
|
|
|
template<typename T> void *addressof(T &t) { return &t; }
|
|
|
|
|
template<> void *addressof(crypto::secret_key &k) { return addressof(unwrap(unwrap(k))); }
|
|
|
|
|
|
|
|
|
|
template<typename T>
|
|
|
|
|
bool is_formatted()
|
|
|
|
|
{
|
|
|
|
@ -55,7 +58,7 @@ namespace
|
|
|
|
|
static_assert(alignof(T) == 1, "T must have 1 byte alignment");
|
|
|
|
|
static_assert(sizeof(T) <= sizeof(source), "T is too large for source");
|
|
|
|
|
static_assert(sizeof(T) * 2 <= sizeof(expected), "T is too large for destination");
|
|
|
|
|
std::memcpy(std::addressof(value), source, sizeof(T));
|
|
|
|
|
std::memcpy(addressof(value), source, sizeof(T));
|
|
|
|
|
|
|
|
|
|
std::stringstream out;
|
|
|
|
|
out << "BEGIN" << value << "END";
|
|
|
|
|