Botan
3.9.0
Crypto and TLS for C&
src
lib
pubkey
frodokem
frodokem_common
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
18
namespace
Botan
{
19
20
class
BOTAN_PUBLIC_API
(3, 3)
FrodoKEMMode
{
21
public
:
22
enum
Mode
: uint8_t {
23
FrodoKEM640_SHAKE
,
24
FrodoKEM976_SHAKE
,
25
FrodoKEM1344_SHAKE
,
26
eFrodoKEM640_SHAKE
,
27
eFrodoKEM976_SHAKE
,
28
eFrodoKEM1344_SHAKE
,
29
FrodoKEM640_AES
,
30
FrodoKEM976_AES
,
31
FrodoKEM1344_AES
,
32
eFrodoKEM640_AES
,
33
eFrodoKEM976_AES
,
34
eFrodoKEM1344_AES
35
};
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
BOTAN_PUBLIC_API
#define BOTAN_PUBLIC_API(maj, min)
Definition
api.h:21
Botan::FrodoKEMMode
Definition
frodo_mode.h:20
Botan::FrodoKEMMode::Mode
Mode
Definition
frodo_mode.h:22
Botan::FrodoKEMMode::eFrodoKEM976_SHAKE
@ eFrodoKEM976_SHAKE
Definition
frodo_mode.h:27
Botan::FrodoKEMMode::FrodoKEM976_AES
@ FrodoKEM976_AES
Definition
frodo_mode.h:30
Botan::FrodoKEMMode::eFrodoKEM976_AES
@ eFrodoKEM976_AES
Definition
frodo_mode.h:33
Botan::FrodoKEMMode::FrodoKEM640_AES
@ FrodoKEM640_AES
Definition
frodo_mode.h:29
Botan::FrodoKEMMode::FrodoKEM1344_SHAKE
@ FrodoKEM1344_SHAKE
Definition
frodo_mode.h:25
Botan::FrodoKEMMode::eFrodoKEM640_AES
@ eFrodoKEM640_AES
Definition
frodo_mode.h:32
Botan::FrodoKEMMode::FrodoKEM1344_AES
@ FrodoKEM1344_AES
Definition
frodo_mode.h:31
Botan::FrodoKEMMode::FrodoKEM640_SHAKE
@ FrodoKEM640_SHAKE
Definition
frodo_mode.h:23
Botan::FrodoKEMMode::FrodoKEM976_SHAKE
@ FrodoKEM976_SHAKE
Definition
frodo_mode.h:24
Botan::FrodoKEMMode::eFrodoKEM1344_AES
@ eFrodoKEM1344_AES
Definition
frodo_mode.h:34
Botan::FrodoKEMMode::eFrodoKEM1344_SHAKE
@ eFrodoKEM1344_SHAKE
Definition
frodo_mode.h:28
Botan::FrodoKEMMode::eFrodoKEM640_SHAKE
@ eFrodoKEM640_SHAKE
Definition
frodo_mode.h:26
Botan::FrodoKEMMode::is_static
bool is_static() const
Definition
frodo_mode.h:53
Botan::FrodoKEMMode::is_aes
bool is_aes() const
Definition
frodo_mode.h:63
Botan::FrodoKEMMode::mode
Mode mode() const
Definition
frodo_mode.h:46
Botan::FrodoKEMMode::is_ephemeral
bool is_ephemeral() const
Definition
frodo_mode.h:48
Botan::FrodoKEMMode::operator==
bool operator==(const FrodoKEMMode &other) const
Definition
frodo_mode.h:70
Botan::FrodoKEMMode::is_shake
bool is_shake() const
Definition
frodo_mode.h:58
Botan::FrodoKEMMode::operator!=
bool operator!=(const FrodoKEMMode &other) const
Definition
frodo_mode.h:72
Botan::FrodoKEMMode::FrodoKEMMode
FrodoKEMMode(Mode mode)
Definition
frodo_mode.cpp:69
Botan::OID
Definition
asn1_obj.h:215
Botan
Definition
alg_id.cpp:13
Botan::to_string
std::string to_string(ErrorType type)
Convert an ErrorType to string.
Definition
exceptn.cpp:13
Generated by
1.14.0