Coverage Report

Created: 2025-04-11 06:34

/src/botan/build/include/internal/botan/internal/rmd160.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
* RIPEMD-160
3
* (C) 1999-2007 Jack Lloyd
4
*
5
* Botan is released under the Simplified BSD License (see license.txt)
6
*/
7
8
#ifndef BOTAN_RIPEMD_160_H_
9
#define BOTAN_RIPEMD_160_H_
10
11
#include <botan/internal/mdx_hash.h>
12
13
namespace Botan {
14
15
/**
16
* RIPEMD-160
17
*/
18
class RIPEMD_160 final : public HashFunction {
19
   public:
20
      using digest_type = secure_vector<uint32_t>;
21
22
      static constexpr MD_Endian byte_endianness = MD_Endian::Little;
23
      static constexpr MD_Endian bit_endianness = MD_Endian::Big;
24
      static constexpr size_t block_bytes = 64;
25
      static constexpr size_t output_bytes = 20;
26
      static constexpr size_t ctr_bytes = 8;
27
28
      static void compress_n(digest_type& digest, std::span<const uint8_t> input, size_t blocks);
29
      static void init(digest_type& digest);
30
31
   public:
32
0
      std::string name() const override { return "RIPEMD-160"; }
33
34
0
      size_t output_length() const override { return output_bytes; }
35
36
0
      size_t hash_block_size() const override { return block_bytes; }
37
38
      std::unique_ptr<HashFunction> new_object() const override;
39
40
      std::unique_ptr<HashFunction> copy_state() const override;
41
42
0
      void clear() override { m_md.clear(); }
43
44
   private:
45
      void add_data(std::span<const uint8_t> input) override;
46
47
      void final_result(std::span<uint8_t> output) override;
48
49
   private:
50
      MerkleDamgard_Hash<RIPEMD_160> m_md;
51
};
52
53
}  // namespace Botan
54
55
#endif