digestpp 1.0
C++11 header-only message digest library
Loading...
Searching...
No Matches
kmac_mixin.hpp
Go to the documentation of this file.
1/*
2This code is written by kerukuro and released into public domain.
3*/
4
5#ifndef DIGESTPP_MIXINS_KMAC_HPP
6#define DIGESTPP_MIXINS_KMAC_HPP
7
8namespace digestpp
9{
10
11namespace mixin
12{
13
18template<typename T>
20{
21public:
28 inline hasher<T, mixin::kmac_mixin>& set_key(const std::string& key)
29 {
30 auto& kmac = static_cast<hasher<T, mixin::kmac_mixin>&>(*this);
31 kmac.provider.set_key(key);
32 kmac.provider.init();
33 return kmac;
34 }
35
43 template<typename C, typename std::enable_if<detail::is_byte<C>::value>::type* = nullptr>
44 inline hasher<T, mixin::kmac_mixin>& set_key(const C* key, size_t key_len)
45 {
46 return set_key(std::string(reinterpret_cast<const char*>(key), key_len));
47 }
48
55 inline hasher<T, mixin::kmac_mixin>& set_customization(const std::string& customization)
56 {
57 auto& kmac = static_cast<hasher<T, mixin::kmac_mixin>&>(*this);
58 kmac.provider.set_customization(customization);
59 kmac.provider.init();
60 return kmac;
61 }
62
70 template<typename C, typename std::enable_if<detail::is_byte<C>::value>::type* = nullptr>
71 inline hasher<T, mixin::kmac_mixin>& set_customization(const C* customization, size_t customization_len)
72 {
73 return set_customization(std::string(reinterpret_cast<const char*>(customization), customization_len));
74 }
75};
76
77} // namespace mixin
78
79} // namespace digestpp
80
81#endif // DIGESTPP_MIXINS_KMAC_HPP
Main class template implementing the public API for hashing.
Definition hasher.hpp:38
Defines additional public functions for KMAC family of algorithms.
Definition kmac_mixin.hpp:20
hasher< T, mixin::kmac_mixin > & set_customization(const std::string &customization)
Set customization from std::string.
Definition kmac_mixin.hpp:55
hasher< T, mixin::kmac_mixin > & set_customization(const C *customization, size_t customization_len)
Set customization from raw buffer.
Definition kmac_mixin.hpp:71
hasher< T, mixin::kmac_mixin > & set_key(const std::string &key)
Set key from std::string.
Definition kmac_mixin.hpp:28
hasher< T, mixin::kmac_mixin > & set_key(const C *key, size_t key_len)
Set key from raw buffer.
Definition kmac_mixin.hpp:44
digestpp namespace
Definition ascon.hpp:14