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

#include <kyber.h>

Public Types

enum  Mode : uint8_t {
  Kyber512_R3 = 0 , Kyber768_R3 = 1 , Kyber1024_R3 = 2 , Kyber512 = 0 ,
  Kyber768 = 1 , Kyber1024 = 2 , ML_KEM_512 = 3 , ML_KEM_768 = 4 ,
  ML_KEM_1024 = 5 , Kyber512_90s = 6 , Kyber768_90s = 7 , Kyber1024_90s = 8
}

Public Member Functions

bool is_90s () const
bool is_available () const
bool is_kyber_round3 () const
bool is_ml_kem () const
bool is_modern () const
 KyberMode (const OID &oid)
 KyberMode (Mode mode)
 KyberMode (std::string_view str)
Mode mode () const
OID object_identifier () const
bool operator!= (const KyberMode &other) const
bool operator== (const KyberMode &other) const
std::string to_string () const

Detailed Description

Definition at line 28 of file kyber.h.

Member Enumeration Documentation

◆ Mode

enum Botan::KyberMode::Mode : uint8_t
Enumerator
Kyber512_R3 
Kyber768_R3 
Kyber1024_R3 
Kyber512 
Kyber768 
Kyber1024 
ML_KEM_512 
ML_KEM_768 
ML_KEM_1024 
Kyber512_90s 
Kyber768_90s 
Kyber1024_90s 

Definition at line 30 of file kyber.h.

30 : uint8_t /* NOLINT(*-use-enum-class) */ {
31 // Kyber512 as proposed in round 3 of the NIST competition
32 Kyber512_R3 BOTAN_DEPRECATED("Kyber R3 is deprecated - use ML-KEM") = 0,
33 // Kyber768 as proposed in round 3 of the NIST competition
34 Kyber768_R3 BOTAN_DEPRECATED("Kyber R3 is deprecated - use ML-KEM") = 1,
35 // Kyber1024 as proposed in round 3 of the NIST competition
36 Kyber1024_R3 BOTAN_DEPRECATED("Kyber R3 is deprecated - use ML-KEM") = 2,
37
38 Kyber512 BOTAN_DEPRECATED("Kyber R3 is deprecated - use ML-KEM") = 0,
39 Kyber768 BOTAN_DEPRECATED("Kyber R3 is deprecated - use ML-KEM") = 1,
40 Kyber1024 BOTAN_DEPRECATED("Kyber R3 is deprecated - use ML-KEM") = 2,
41
42 ML_KEM_512 = 3,
43 ML_KEM_768 = 4,
44 ML_KEM_1024 = 5,
45
46 Kyber512_90s BOTAN_DEPRECATED("Kyber 90s mode is deprecated") = 6,
47 Kyber768_90s BOTAN_DEPRECATED("Kyber 90s mode is deprecated") = 7,
48 Kyber1024_90s BOTAN_DEPRECATED("Kyber 90s mode is deprecated") = 8,
49 };
#define BOTAN_DEPRECATED(msg)
Definition api.h:73

Constructor & Destructor Documentation

◆ KyberMode() [1/3]

Botan::KyberMode::KyberMode ( Mode mode)

Definition at line 84 of file kyber.cpp.

84: m_mode(mode) {}
Mode mode() const
Definition kyber.h:60

References mode().

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

◆ KyberMode() [2/3]

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

Definition at line 86 of file kyber.cpp.

86: m_mode(kyber_mode_from_oid(oid)) {}

◆ KyberMode() [3/3]

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

Definition at line 88 of file kyber.cpp.

88: m_mode(kyber_mode_from_string(str)) {}

Member Function Documentation

◆ is_90s()

bool Botan::KyberMode::is_90s ( ) const

Definition at line 119 of file kyber.cpp.

119 {
120 return m_mode == Kyber512_90s || m_mode == Kyber768_90s || m_mode == Kyber1024_90s;
121}

References Kyber1024_90s, Kyber512_90s, and Kyber768_90s.

Referenced by is_available(), and is_modern().

◆ is_available()

bool Botan::KyberMode::is_available ( ) const

Definition at line 136 of file kyber.cpp.

136 {
137#if defined(BOTAN_HAS_KYBER)
138 if(is_kyber_round3() && is_modern()) {
139 return true;
140 }
141#endif
142
143#if defined(BOTAN_HAS_KYBER_90S)
144 if(is_kyber_round3() && is_90s()) {
145 return true;
146 }
147#endif
148
149#if defined(BOTAN_HAS_ML_KEM)
150 if(is_ml_kem()) {
151 return true;
152 }
153#endif
154
155 return false;
156}
bool is_kyber_round3() const
Definition kyber.cpp:131
bool is_modern() const
Definition kyber.cpp:123
bool is_90s() const
Definition kyber.cpp:119
bool is_ml_kem() const
Definition kyber.cpp:127

References is_90s(), is_kyber_round3(), is_ml_kem(), and is_modern().

◆ is_kyber_round3()

bool Botan::KyberMode::is_kyber_round3 ( ) const

Definition at line 131 of file kyber.cpp.

131 {
132 return m_mode == KyberMode::Kyber512_R3 || m_mode == KyberMode::Kyber768_R3 || m_mode == KyberMode::Kyber1024_R3 ||
134}

References Kyber1024_90s, Kyber1024_R3, Kyber512_90s, Kyber512_R3, Kyber768_90s, and Kyber768_R3.

Referenced by is_available().

◆ is_ml_kem()

bool Botan::KyberMode::is_ml_kem ( ) const

Definition at line 127 of file kyber.cpp.

127 {
128 return m_mode == KyberMode::ML_KEM_512 || m_mode == KyberMode::ML_KEM_768 || m_mode == KyberMode::ML_KEM_1024;
129}

References ML_KEM_1024, ML_KEM_512, and ML_KEM_768.

Referenced by Botan::Kyber_PublicKey::algo_name(), and is_available().

◆ is_modern()

bool Botan::KyberMode::is_modern ( ) const

Definition at line 123 of file kyber.cpp.

123 {
124 return !is_90s();
125}

References is_90s().

Referenced by is_available().

◆ mode()

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

Definition at line 60 of file kyber.h.

60{ return m_mode; }

Referenced by KyberMode().

◆ object_identifier()

OID Botan::KyberMode::object_identifier ( ) const

Definition at line 90 of file kyber.cpp.

90 {
92}
std::string to_string() const
Definition kyber.cpp:94
static OID from_string(std::string_view str)
Definition asn1_oid.cpp:80

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

Referenced by Botan::Kyber_PublicKey::object_identifier().

◆ operator!=()

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

Definition at line 74 of file kyber.h.

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

References KyberMode().

◆ operator==()

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

Definition at line 72 of file kyber.h.

72{ return m_mode == other.m_mode; }

References KyberMode().

◆ to_string()

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

Definition at line 94 of file kyber.cpp.

94 {
95 switch(m_mode) {
96 case Kyber512_90s:
97 return "Kyber-512-90s-r3";
98 case Kyber768_90s:
99 return "Kyber-768-90s-r3";
100 case Kyber1024_90s:
101 return "Kyber-1024-90s-r3";
102 case Kyber512_R3:
103 return "Kyber-512-r3";
104 case Kyber768_R3:
105 return "Kyber-768-r3";
106 case Kyber1024_R3:
107 return "Kyber-1024-r3";
108 case ML_KEM_512:
109 return "ML-KEM-512";
110 case ML_KEM_768:
111 return "ML-KEM-768";
112 case ML_KEM_1024:
113 return "ML-KEM-1024";
114 }
115
117}
#define BOTAN_ASSERT_UNREACHABLE()
Definition assert.h:166

References BOTAN_ASSERT_UNREACHABLE, Kyber1024_90s, Kyber1024_R3, Kyber512_90s, Kyber512_R3, Kyber768_90s, Kyber768_R3, ML_KEM_1024, ML_KEM_512, and ML_KEM_768.

Referenced by object_identifier().


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