1// LAF Base Library
2// Copyright (c) 2001-2016 David Capello
3//
4// This file is released under the terms of the MIT license.
5// Read LICENSE.txt for more information.
6
7#ifndef BASE_SHA1_H_INCLUDED
8#define BASE_SHA1_H_INCLUDED
9#pragma once
10
11#include <vector>
12#include <string>
13
14extern "C" struct SHA1Context;
15
16namespace base {
17
18 class Sha1 {
19 public:
20 enum { HashSize = 20 };
21
22 Sha1();
23 explicit Sha1(const std::vector<uint8_t>& digest);
24
25 // Calculates the SHA1 of the given file or string.
26 static Sha1 calculateFromFile(const std::string& fileName);
27 static Sha1 calculateFromString(const std::string& text);
28
29 bool operator==(const Sha1& other) const;
30 bool operator!=(const Sha1& other) const;
31
32 uint8_t operator[](int index) const {
33 return m_digest[index];
34 }
35
36 const uint8_t *digest() const {
37 return m_digest.data();
38 }
39
40 size_t size() const {
41 return m_digest.size();
42 }
43
44 private:
45 std::vector<uint8_t> m_digest;
46 };
47
48} // namespace base
49
50#endif // BASE_SHA1_H_INCLUDED
51