Page MenuHomePhorge

sha256.cpp
No OneTemporary

Size
1 KB
Referenced Files
None
Subscribers
None

sha256.cpp

/*
* This file is part of libkazv.
* SPDX-FileCopyrightText: 2021 Tusooa Zhu <tusooa@kazv.moe>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
#include <cryptopp/sha.h>
#include "base64.hpp"
#include "sha256.hpp"
namespace Kazv
{
struct SHA256Desc::Private
{
using ImplT = CryptoPP::SHA256;
ImplT algo;
};
SHA256Desc::SHA256Desc()
: m_d(std::make_unique<Private>())
{
}
KAZV_DEFINE_COPYABLE_UNIQUE_PTR(SHA256Desc, m_d)
SHA256Desc::~SHA256Desc() = default;
SHA256Desc SHA256Desc::process(DataT data) const &
{
auto next = *this;
next.processInPlace(std::move(data));
return next;
}
SHA256Desc SHA256Desc::process(DataT data) &&
{
auto next = std::move(*this);
next.processInPlace(std::move(data));
return next;
}
void SHA256Desc::processInPlace(DataT data)
{
m_d->algo.Update(reinterpret_cast<const unsigned char *>(data.data()), data.size());
}
std::string SHA256Desc::get() const
{
auto algo = m_d->algo;
std::string res(algo.DigestSize(), 0);
algo.Final(reinterpret_cast<unsigned char *>(res.data()));
return encodeBase64(res);
}
}

File Metadata

Mime Type
text/x-c++
Expires
Thu, Oct 2, 4:38 AM (1 d, 8 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
470623
Default Alt Text
sha256.cpp (1 KB)

Event Timeline