Botan 3.9.0
Crypto and TLS for C&
Botan::FrodoKEMMode Class Reference

#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 69 of file frodo_mode.cpp.

69: 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 71 of file frodo_mode.cpp.

71: m_mode(FrodoKEM_mode_from_string(oid.to_formatted_string())) {}

◆ FrodoKEMMode() [3/3]

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

Definition at line 73 of file frodo_mode.cpp.

73: 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 79 of file frodo_mode.cpp.

79 {
80 if(is_aes()) {
81#if defined(BOTAN_HAS_FRODOKEM_AES)
82 return true;
83#else
84 return false;
85#endif
86 }
87
88 if(is_shake()) {
89#if defined(BOTAN_HAS_FRODOKEM_SHAKE)
90 return true;
91#else
92 return false;
93#endif
94 }
95
96 return false;
97}
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 75 of file frodo_mode.cpp.

75 {
77}
std::string to_string() const
static OID from_string(std::string_view str)
Definition asn1_oid.cpp:86

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 99 of file frodo_mode.cpp.

99 {
100 switch(m_mode) {
102 return "FrodoKEM-640-SHAKE";
104 return "FrodoKEM-976-SHAKE";
106 return "FrodoKEM-1344-SHAKE";
108 return "eFrodoKEM-640-SHAKE";
110 return "eFrodoKEM-976-SHAKE";
112 return "eFrodoKEM-1344-SHAKE";
113
114 case FrodoKEM640_AES:
115 return "FrodoKEM-640-AES";
116 case FrodoKEM976_AES:
117 return "FrodoKEM-976-AES";
118 case FrodoKEM1344_AES:
119 return "FrodoKEM-1344-AES";
120 case eFrodoKEM640_AES:
121 return "eFrodoKEM-640-AES";
122 case eFrodoKEM976_AES:
123 return "eFrodoKEM-976-AES";
125 return "eFrodoKEM-1344-AES";
126 }
127
129}
#define BOTAN_ASSERT_UNREACHABLE()
Definition assert.h:163

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: