1 /*
2 SPDX-FileCopyrightText: 2005 Joris Guisson <joris.guisson@gmail.com>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 #include "sha1hashgen.h"
7 #include "functions.h"
8 #include <QtCrypto>
9 #include <arpa/inet.h>
10 #include <stdio.h>
11 #include <string.h>
12
13 namespace bt
14 {
15 static QCA::Initializer qca_init;
16
SHA1HashGen()17 SHA1HashGen::SHA1HashGen()
18 : h(new QCA::Hash(QStringLiteral("sha1")))
19 {
20 memset(result, 9, 20);
21 }
22
~SHA1HashGen()23 SHA1HashGen::~SHA1HashGen()
24 {
25 delete h;
26 }
27
generate(const Uint8 * data,Uint32 len)28 SHA1Hash SHA1HashGen::generate(const Uint8 *data, Uint32 len)
29 {
30 h->update((const char *)data, len);
31 return SHA1Hash((const bt::Uint8 *)h->final().constData());
32 }
33
start()34 void SHA1HashGen::start()
35 {
36 h->clear();
37 }
38
update(const Uint8 * data,Uint32 len)39 void SHA1HashGen::update(const Uint8 *data, Uint32 len)
40 {
41 h->update((const char *)data, len);
42 }
43
end()44 void SHA1HashGen::end()
45 {
46 memcpy(result, h->final().constData(), 20);
47 }
48
get() const49 SHA1Hash SHA1HashGen::get() const
50 {
51 return SHA1Hash(result);
52 }
53 }
54