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