Botan 3.9.0
Crypto and TLS for C&
frodo_mode.h
Go to the documentation of this file.
1/*
2 * FrodoKEM modes and constants
3 *
4 * The Fellowship of the FrodoKEM:
5 * (C) 2023 Jack Lloyd
6 * 2023 René Meusel, Amos Treiber - Rohde & Schwarz Cybersecurity
7 *
8 * Botan is released under the Simplified BSD License (see license.txt)
9 */
10
11#ifndef BOTAN_FRODOKEM_MODE_H_
12#define BOTAN_FRODOKEM_MODE_H_
13
14#include <botan/asn1_obj.h>
15
16#include <vector>
17
18namespace Botan {
19
21 public:
36
37 // NOLINTNEXTLINE(*-explicit-conversions)
38 FrodoKEMMode(Mode mode);
39
40 explicit FrodoKEMMode(const OID& oid);
41 explicit FrodoKEMMode(std::string_view str);
42
43 OID object_identifier() const;
44 std::string to_string() const;
45
46 Mode mode() const { return m_mode; }
47
48 bool is_ephemeral() const {
49 return m_mode == eFrodoKEM640_SHAKE || m_mode == eFrodoKEM976_SHAKE || m_mode == eFrodoKEM1344_SHAKE ||
50 m_mode == eFrodoKEM640_AES || m_mode == eFrodoKEM976_AES || m_mode == eFrodoKEM1344_AES;
51 }
52
53 bool is_static() const {
54 return m_mode == FrodoKEM640_SHAKE || m_mode == FrodoKEM976_SHAKE || m_mode == FrodoKEM1344_SHAKE ||
55 m_mode == FrodoKEM640_AES || m_mode == FrodoKEM976_AES || m_mode == FrodoKEM1344_AES;
56 }
57
58 bool is_shake() const {
59 return m_mode == eFrodoKEM640_SHAKE || m_mode == eFrodoKEM976_SHAKE || m_mode == eFrodoKEM1344_SHAKE ||
60 m_mode == FrodoKEM640_SHAKE || m_mode == FrodoKEM976_SHAKE || m_mode == FrodoKEM1344_SHAKE;
61 }
62
63 bool is_aes() const {
64 return m_mode == eFrodoKEM640_AES || m_mode == eFrodoKEM976_AES || m_mode == eFrodoKEM1344_AES ||
65 m_mode == FrodoKEM640_AES || m_mode == FrodoKEM976_AES || m_mode == FrodoKEM1344_AES;
66 }
67
68 bool is_available() const;
69
70 bool operator==(const FrodoKEMMode& other) const { return m_mode == other.m_mode; }
71
72 bool operator!=(const FrodoKEMMode& other) const { return !(*this == other); }
73
74 private:
75 Mode m_mode;
76};
77
78} // namespace Botan
79
80#endif
#define BOTAN_PUBLIC_API(maj, min)
Definition api.h:21
bool is_static() const
Definition frodo_mode.h:53
bool is_aes() const
Definition frodo_mode.h:63
Mode mode() const
Definition frodo_mode.h:46
bool is_ephemeral() const
Definition frodo_mode.h:48
bool operator==(const FrodoKEMMode &other) const
Definition frodo_mode.h:70
bool is_shake() const
Definition frodo_mode.h:58
bool operator!=(const FrodoKEMMode &other) const
Definition frodo_mode.h:72
FrodoKEMMode(Mode mode)
std::string to_string(ErrorType type)
Convert an ErrorType to string.
Definition exceptn.cpp:13