digestpp 1.0
C++11 header-only message digest library
Loading...
Searching...
No Matches
cshake_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_MIXIN_SHAKE_HPP
6#define DIGESTPP_MIXIN_SHAKE_HPP
7
8namespace digestpp
9{
10
11namespace mixin
12{
13
18template<typename T>
20{
21public:
28 inline hasher<T, mixin::cshake_mixin>& set_function_name(const std::string& function_name)
29 {
30 auto& shake = static_cast<hasher<T, mixin::cshake_mixin>&>(*this);
31 shake.provider.set_function_name(function_name);
32 shake.provider.init();
33 return shake;
34 }
35
43 template<typename C, typename std::enable_if<detail::is_byte<C>::value>::type* = nullptr>
44 inline hasher<T, mixin::cshake_mixin>& set_function_name(const C* function_name, size_t function_name_len)
45 {
46 return set_function_name(std::string(reinterpret_cast<const char*>(function_name), function_name_len));
47 }
48
55 inline hasher<T, mixin::cshake_mixin>& set_customization(const std::string& customization)
56 {
57 auto& shake = static_cast<hasher<T, mixin::cshake_mixin>&>(*this);
58 shake.provider.set_customization(customization);
59 shake.provider.init();
60 return shake;
61 }
62
70 template<typename C, typename std::enable_if<detail::is_byte<C>::value>::type* = nullptr>
71 inline hasher<T, mixin::cshake_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_MIXIN_SHAKE_HPP
Main class template implementing the public API for hashing.
Definition hasher.hpp:38
Defines additional public functions for cSHAKE128 and cSHAKE256.
Definition cshake_mixin.hpp:20
hasher< T, mixin::cshake_mixin > & set_customization(const C *customization, size_t customization_len)
Set customization from raw buffer.
Definition cshake_mixin.hpp:71
hasher< T, mixin::cshake_mixin > & set_customization(const std::string &customization)
Set customization from std::string.
Definition cshake_mixin.hpp:55
hasher< T, mixin::cshake_mixin > & set_function_name(const std::string &function_name)
Set NIST function name from std::string.
Definition cshake_mixin.hpp:28
hasher< T, mixin::cshake_mixin > & set_function_name(const C *function_name, size_t function_name_len)
Set NIST function name from raw buffer.
Definition cshake_mixin.hpp:44
digestpp namespace
Definition ascon.hpp:14