Coverage Report

Created: 2022-06-23 06:44

/src/botan/build/include/botan/internal/blake2bmac.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
* BLAKE2b MAC
3
* (C) 1999-2007,2014 Jack Lloyd
4
* (C) 2020           Tom Crowley
5
*
6
* Botan is released under the Simplified BSD License (see license.txt)
7
*/
8
9
#ifndef BOTAN_BLAKE2MAC_H_
10
#define BOTAN_BLAKE2MAC_H_
11
12
#include <botan/mac.h>
13
#include <botan/internal/blake2b.h>
14
15
namespace Botan {
16
17
/**
18
* BLAKE2b MAC
19
*/
20
class BLAKE2bMAC final : public MessageAuthenticationCode
21
   {
22
   public:
23
      explicit BLAKE2bMAC(size_t output_bits = 512);
24
25
      BLAKE2bMAC(const BLAKE2bMAC&) = delete;
26
      BLAKE2bMAC& operator=(const BLAKE2bMAC&) = delete;
27
28
0
      std::string name() const override { return m_blake.name(); }
29
0
      size_t output_length() const override { return m_blake.output_length(); }
30
      std::unique_ptr<MessageAuthenticationCode> new_object() const override;
31
32
      void clear() override;
33
34
      Key_Length_Specification key_spec() const override
35
0
         {
36
0
         return m_blake.key_spec();
37
0
         }
38
39
   private:
40
      void key_schedule(const uint8_t key[], size_t length) override
41
0
         {
42
0
         m_blake.set_key(key, length);
43
0
         }
44
45
      void add_data(const uint8_t input[], size_t length) override
46
0
         {
47
0
         verify_key_set(m_blake.key_size() > 0);
48
0
         m_blake.update(input, length);
49
0
         }
50
51
      void final_result(uint8_t out[]) override
52
0
         {
53
0
         verify_key_set(m_blake.key_size() > 0);
54
0
         m_blake.final(out);
55
0
         }
56
57
      BLAKE2b m_blake;
58
   };
59
60
typedef BLAKE2bMAC Blake2bMac;
61
62
}
63
64
#endif