Botan 3.10.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 64 of file frodo_mode.cpp.

64: 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 66 of file frodo_mode.cpp.

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

◆ FrodoKEMMode() [3/3]

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

Definition at line 68 of file frodo_mode.cpp.

68: 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 74 of file frodo_mode.cpp.

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

70 {
72}
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 94 of file frodo_mode.cpp.

94 {
95 switch(m_mode) {
97 return "FrodoKEM-640-SHAKE";
99 return "FrodoKEM-976-SHAKE";
101 return "FrodoKEM-1344-SHAKE";
103 return "eFrodoKEM-640-SHAKE";
105 return "eFrodoKEM-976-SHAKE";
107 return "eFrodoKEM-1344-SHAKE";
108
109 case FrodoKEM640_AES:
110 return "FrodoKEM-640-AES";
111 case FrodoKEM976_AES:
112 return "FrodoKEM-976-AES";
113 case FrodoKEM1344_AES:
114 return "FrodoKEM-1344-AES";
115 case eFrodoKEM640_AES:
116 return "eFrodoKEM-640-AES";
117 case eFrodoKEM976_AES:
118 return "eFrodoKEM-976-AES";
120 return "eFrodoKEM-1344-AES";
121 }
122
124}
#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: