Botan 3.13.0
Crypto and TLS for C&
Botan::FrodoKEMMode Class Referencefinal

#include <frodo_mode.h>

Public Types

enum  Mode : uint8_t {
  FrodoKEM640_SHAKE , FrodoKEM976_SHAKE , FrodoKEM1344_SHAKE , eFrodoKEM640_SHAKE ,
  eFrodoKEM976_SHAKE , eFrodoKEM1344_SHAKE , FrodoKEM640_AES , FrodoKEM976_AES ,
  FrodoKEM1344_AES , eFrodoKEM640_AES , eFrodoKEM976_AES , eFrodoKEM1344_AES
}

Public Member Functions

 FrodoKEMMode (const OID &oid)
 FrodoKEMMode (Mode mode)
 FrodoKEMMode (std::string_view str)
bool is_aes () const
bool is_available () const
bool is_ephemeral () const
bool is_shake () const
bool is_static () const
Mode mode () const
OID object_identifier () const
bool operator!= (const FrodoKEMMode &other) const
bool operator== (const FrodoKEMMode &other) const
std::string to_string () const

Detailed Description

Definition at line 20 of file frodo_mode.h.

Member Enumeration Documentation

◆ Mode

enum Botan::FrodoKEMMode::Mode : uint8_t
Enumerator
FrodoKEM640_SHAKE 
FrodoKEM976_SHAKE 
FrodoKEM1344_SHAKE 
eFrodoKEM640_SHAKE 
eFrodoKEM976_SHAKE 
eFrodoKEM1344_SHAKE 
FrodoKEM640_AES 
FrodoKEM976_AES 
FrodoKEM1344_AES 
eFrodoKEM640_AES 
eFrodoKEM976_AES 
eFrodoKEM1344_AES 

Definition at line 22 of file frodo_mode.h.

Constructor & Destructor Documentation

◆ FrodoKEMMode() [1/3]

Botan::FrodoKEMMode::FrodoKEMMode ( Mode mode)

Definition at line 72 of file frodo_mode.cpp.

72: m_mode(mode) {}
Mode mode() const
Definition frodo_mode.h:46

References mode().

Referenced by operator!=(), and operator==().

◆ FrodoKEMMode() [2/3]

Botan::FrodoKEMMode::FrodoKEMMode ( const OID & oid)
explicit

Definition at line 74 of file frodo_mode.cpp.

74: m_mode(FrodoKEM_mode_from_oid(oid)) {}

◆ FrodoKEMMode() [3/3]

Botan::FrodoKEMMode::FrodoKEMMode ( std::string_view str)
explicit

Definition at line 76 of file frodo_mode.cpp.

76: m_mode(FrodoKEM_mode_from_string(str)) {}

Member Function Documentation

◆ is_aes()

bool Botan::FrodoKEMMode::is_aes ( ) const
inline

Definition at line 63 of file frodo_mode.h.

63 {
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 }

References eFrodoKEM1344_AES, eFrodoKEM640_AES, eFrodoKEM976_AES, FrodoKEM1344_AES, FrodoKEM640_AES, and FrodoKEM976_AES.

Referenced by Botan::create_aes_row_generator(), and is_available().

◆ is_available()

bool Botan::FrodoKEMMode::is_available ( ) const

Definition at line 82 of file frodo_mode.cpp.

82 {
83 if(is_aes()) {
84#if defined(BOTAN_HAS_FRODOKEM_AES)
85 return true;
86#else
87 return false;
88#endif
89 }
90
91 if(is_shake()) {
92#if defined(BOTAN_HAS_FRODOKEM_SHAKE)
93 return true;
94#else
95 return false;
96#endif
97 }
98
99 return false;
100}
bool is_aes() const
Definition frodo_mode.h:63
bool is_shake() const
Definition frodo_mode.h:58

References is_aes(), and is_shake().

◆ is_ephemeral()

bool Botan::FrodoKEMMode::is_ephemeral ( ) const
inline

Definition at line 48 of file frodo_mode.h.

48 {
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 }

References eFrodoKEM1344_AES, eFrodoKEM1344_SHAKE, eFrodoKEM640_AES, eFrodoKEM640_SHAKE, eFrodoKEM976_AES, and eFrodoKEM976_SHAKE.

◆ is_shake()

bool Botan::FrodoKEMMode::is_shake ( ) const
inline

Definition at line 58 of file frodo_mode.h.

58 {
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 }

References eFrodoKEM1344_SHAKE, eFrodoKEM640_SHAKE, eFrodoKEM976_SHAKE, FrodoKEM1344_SHAKE, FrodoKEM640_SHAKE, and FrodoKEM976_SHAKE.

Referenced by Botan::create_shake_row_generator(), and is_available().

◆ is_static()

bool Botan::FrodoKEMMode::is_static ( ) const
inline

Definition at line 53 of file frodo_mode.h.

53 {
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 }

References FrodoKEM1344_AES, FrodoKEM1344_SHAKE, FrodoKEM640_AES, FrodoKEM640_SHAKE, FrodoKEM976_AES, and FrodoKEM976_SHAKE.

◆ mode()

Mode Botan::FrodoKEMMode::mode ( ) const
inline

Definition at line 46 of file frodo_mode.h.

46{ return m_mode; }

Referenced by FrodoKEMMode().

◆ object_identifier()

OID Botan::FrodoKEMMode::object_identifier ( ) const

Definition at line 78 of file frodo_mode.cpp.

78 {
80}
std::string to_string() const
static OID from_string(std::string_view str)
Definition asn1_oid.cpp:80

References Botan::OID::from_string(), and to_string().

◆ operator!=()

bool Botan::FrodoKEMMode::operator!= ( const FrodoKEMMode & other) const
inline

Definition at line 72 of file frodo_mode.h.

72{ return !(*this == other); }

References FrodoKEMMode().

◆ operator==()

bool Botan::FrodoKEMMode::operator== ( const FrodoKEMMode & other) const
inline

Definition at line 70 of file frodo_mode.h.

70{ return m_mode == other.m_mode; }

References FrodoKEMMode().

◆ to_string()

std::string Botan::FrodoKEMMode::to_string ( ) const

Definition at line 102 of file frodo_mode.cpp.

102 {
103 switch(m_mode) {
105 return "FrodoKEM-640-SHAKE";
107 return "FrodoKEM-976-SHAKE";
109 return "FrodoKEM-1344-SHAKE";
111 return "eFrodoKEM-640-SHAKE";
113 return "eFrodoKEM-976-SHAKE";
115 return "eFrodoKEM-1344-SHAKE";
116
117 case FrodoKEM640_AES:
118 return "FrodoKEM-640-AES";
119 case FrodoKEM976_AES:
120 return "FrodoKEM-976-AES";
121 case FrodoKEM1344_AES:
122 return "FrodoKEM-1344-AES";
123 case eFrodoKEM640_AES:
124 return "eFrodoKEM-640-AES";
125 case eFrodoKEM976_AES:
126 return "eFrodoKEM-976-AES";
128 return "eFrodoKEM-1344-AES";
129 }
130
132}
#define BOTAN_ASSERT_UNREACHABLE()
Definition assert.h:166

References BOTAN_ASSERT_UNREACHABLE, eFrodoKEM1344_AES, eFrodoKEM1344_SHAKE, eFrodoKEM640_AES, eFrodoKEM640_SHAKE, eFrodoKEM976_AES, eFrodoKEM976_SHAKE, FrodoKEM1344_AES, FrodoKEM1344_SHAKE, FrodoKEM640_AES, FrodoKEM640_SHAKE, FrodoKEM976_AES, and FrodoKEM976_SHAKE.

Referenced by object_identifier().


The documentation for this class was generated from the following files: