mirror of
https://github.com/cmclark00/retro-imager.git
synced 2025-05-18 07:55:21 +01:00
38 lines
953 B
C++
38 lines
953 B
C++
|
/*
|
||
|
* Use OpenSSL for hashing as their code is more optimized than Qt's
|
||
|
*
|
||
|
* SPDX-License-Identifier: Apache-2.0
|
||
|
* Copyright (C) 2020 Raspberry Pi (Trading) Limited
|
||
|
*/
|
||
|
|
||
|
#include "acceleratedcryptographichash.h"
|
||
|
|
||
|
AcceleratedCryptographicHash::AcceleratedCryptographicHash(QCryptographicHash::Algorithm method)
|
||
|
{
|
||
|
if (method != QCryptographicHash::Sha256)
|
||
|
throw std::runtime_error("Only sha256 implemented");
|
||
|
|
||
|
SHA256_Init(&_sha256);
|
||
|
}
|
||
|
|
||
|
AcceleratedCryptographicHash::~AcceleratedCryptographicHash()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
void AcceleratedCryptographicHash::addData(const char *data, int length)
|
||
|
{
|
||
|
SHA256_Update(&_sha256, data, length);
|
||
|
}
|
||
|
|
||
|
void AcceleratedCryptographicHash::addData(const QByteArray &data)
|
||
|
{
|
||
|
addData(data.constData(), data.size());
|
||
|
}
|
||
|
|
||
|
QByteArray AcceleratedCryptographicHash::result()
|
||
|
{
|
||
|
unsigned char binhash[SHA256_DIGEST_LENGTH];
|
||
|
SHA256_Final(binhash, &_sha256);
|
||
|
return QByteArray((char *) binhash, sizeof binhash);
|
||
|
}
|