Botan 3.8.1
Crypto and TLS for C&
|
#include <serpent.h>
Public Types | |
enum | |
Public Member Functions | |
size_t | block_size () const final |
void | clear () override |
BlockCipher * | clone () const |
void | decrypt (const uint8_t in[], uint8_t out[]) const |
void | decrypt (std::span< const uint8_t > in, std::span< uint8_t > out) const |
void | decrypt (std::span< uint8_t > block) const |
void | decrypt (uint8_t block[]) const |
void | decrypt_n (const uint8_t in[], uint8_t out[], size_t blocks) const override |
void | decrypt_n_xex (uint8_t data[], const uint8_t mask[], size_t blocks) const |
void | encrypt (const uint8_t in[], uint8_t out[]) const |
void | encrypt (std::span< const uint8_t > in, std::span< uint8_t > out) const |
void | encrypt (std::span< uint8_t > block) const |
void | encrypt (uint8_t block[]) const |
void | encrypt_n (const uint8_t in[], uint8_t out[], size_t blocks) const override |
void | encrypt_n_xex (uint8_t data[], const uint8_t mask[], size_t blocks) const |
bool | has_keying_material () const override |
Key_Length_Specification | key_spec () const final |
size_t | maximum_keylength () const |
size_t | minimum_keylength () const |
std::string | name () const override |
std::unique_ptr< BlockCipher > | new_object () const override |
size_t | parallel_bytes () const |
size_t | parallelism () const override |
std::string | provider () const override |
void | set_key (const OctetString &key) |
void | set_key (const uint8_t key[], size_t length) |
void | set_key (std::span< const uint8_t > key) |
bool | valid_keylength (size_t length) const |
Static Public Member Functions | |
static std::unique_ptr< BlockCipher > | create (std::string_view algo_spec, std::string_view provider="") |
static std::unique_ptr< BlockCipher > | create_or_throw (std::string_view algo_spec, std::string_view provider="") |
static std::vector< std::string > | providers (std::string_view algo_spec) |
Static Public Attributes | |
static constexpr size_t | ParallelismMult |
Protected Member Functions | |
void | assert_key_material_set () const |
void | assert_key_material_set (bool predicate) const |
Serpent is the most conservative of the AES finalists https://www.cl.cam.ac.uk/~rja14/serpent.html
|
inherited |
Definition at line 214 of file block_cipher.h.
|
inlineprotectedinherited |
Definition at line 141 of file sym_algo.h.
Referenced by Botan::Serpent::decrypt_n(), Botan::Twofish::decrypt_n(), Botan::Serpent::encrypt_n(), and Botan::Twofish::encrypt_n().
|
inlineprotectedinherited |
Definition at line 143 of file sym_algo.h.
|
inlinefinalvirtualinherited |
Implements Botan::BlockCipher.
Definition at line 216 of file block_cipher.h.
|
overridevirtual |
Reset the internal state. This includes not just the key, but any partial message that may have been in process.
Implements Botan::SymmetricAlgorithm.
Definition at line 384 of file serpent.cpp.
References Botan::zap().
|
inlineinherited |
Definition at line 188 of file block_cipher.h.
|
staticinherited |
Create an instance based on a name If provider is empty then best available is chosen.
algo_spec | algorithm name |
provider | provider implementation to choose |
Definition at line 31 of file block_cipher.cpp.
|
staticinherited |
Create an instance based on a name, or throw if the algo/provider combination cannot be found. If provider is empty then best available is chosen.
Definition at line 38 of file block_cipher.cpp.
|
inlineinherited |
Decrypt a block.
in | The ciphertext block to be decypted as a byte array. Must be of length block_size(). |
out | The byte array designated to hold the decrypted block. Must be of length block_size(). |
Definition at line 91 of file block_cipher.h.
|
inlineinherited |
Decrypt one or more blocks
in | the input buffer (multiple of block_size()) |
out | the output buffer (same size as in) |
Definition at line 139 of file block_cipher.h.
|
inlineinherited |
Decrypt one or more blocks
block | the input/output buffer (multiple of block_size()) |
Definition at line 121 of file block_cipher.h.
|
inlineinherited |
Decrypt a block.
block | the ciphertext block to be decrypted Must be of length block_size(). Will hold the result when the function has finished. |
Definition at line 107 of file block_cipher.h.
|
overridevirtual |
Decrypt one or more blocks
in | the input buffer (multiple of block_size()) |
out | the output buffer (same size as in) |
blocks | the number of blocks to process |
Implements Botan::BlockCipher.
Definition at line 171 of file serpent.cpp.
References Botan::Block_Cipher_Fixed_Params< 16, 16, 32, 8 >::assert_key_material_set(), Botan::CPUFeature::AVX2, Botan::CPUFeature::AVX512, Botan::Block_Cipher_Fixed_Params< 16, 16, 32, 8 >::BLOCK_SIZE, Botan::CPUID::has(), Botan::Serpent_F::i_transform(), Botan::load_le(), Botan::Serpent_F::SBoxD0(), Botan::Serpent_F::SBoxD1(), Botan::Serpent_F::SBoxD2(), Botan::Serpent_F::SBoxD3(), Botan::Serpent_F::SBoxD4(), Botan::Serpent_F::SBoxD5(), Botan::Serpent_F::SBoxD6(), Botan::Serpent_F::SBoxD7(), Botan::CPUFeature::SIMD_4X32, and Botan::store_le().
|
inlineinherited |
Definition at line 172 of file block_cipher.h.
|
inlineinherited |
Encrypt a block.
in | The plaintext block to be encrypted as a byte array. Must be of length block_size(). |
out | The byte array designated to hold the encrypted block. Must be of length block_size(). |
Definition at line 82 of file block_cipher.h.
|
inlineinherited |
Encrypt one or more blocks
in | the input buffer (multiple of block_size()) |
out | the output buffer (same size as in) |
Definition at line 130 of file block_cipher.h.
|
inlineinherited |
Encrypt one or more blocks
block | the input/output buffer (multiple of block_size()) |
Definition at line 113 of file block_cipher.h.
|
inlineinherited |
Encrypt a block.
block | the plaintext block to be encrypted Must be of length block_size(). Will hold the result when the function has finished. |
Definition at line 99 of file block_cipher.h.
|
overridevirtual |
Encrypt one or more blocks
in | the input buffer (multiple of block_size()) |
out | the output buffer (same size as in) |
blocks | the number of blocks to process |
Implements Botan::BlockCipher.
Definition at line 23 of file serpent.cpp.
References Botan::Block_Cipher_Fixed_Params< 16, 16, 32, 8 >::assert_key_material_set(), Botan::CPUFeature::AVX2, Botan::CPUFeature::AVX512, Botan::Block_Cipher_Fixed_Params< 16, 16, 32, 8 >::BLOCK_SIZE, Botan::CPUID::has(), Botan::load_le(), Botan::Serpent_F::SBoxE0(), Botan::Serpent_F::SBoxE1(), Botan::Serpent_F::SBoxE2(), Botan::Serpent_F::SBoxE3(), Botan::Serpent_F::SBoxE4(), Botan::Serpent_F::SBoxE5(), Botan::Serpent_F::SBoxE6(), Botan::Serpent_F::SBoxE7(), Botan::CPUFeature::SIMD_4X32, Botan::store_le(), and Botan::Serpent_F::transform().
|
inlineinherited |
|
overridevirtual |
Implements Botan::SymmetricAlgorithm.
Definition at line 316 of file serpent.cpp.
|
inlinefinalvirtualinherited |
Implements Botan::SymmetricAlgorithm.
Definition at line 218 of file block_cipher.h.
|
inlineinherited |
Definition at line 97 of file sym_algo.h.
|
inlineinherited |
Definition at line 102 of file sym_algo.h.
|
inlineoverridevirtual |
Implements Botan::SymmetricAlgorithm.
Definition at line 28 of file serpent.h.
|
inlineoverridevirtual |
Implements Botan::BlockCipher.
Definition at line 30 of file serpent.h.
|
inlineinherited |
Definition at line 67 of file block_cipher.h.
|
inlineoverridevirtual |
Reimplemented from Botan::BlockCipher.
Definition at line 32 of file serpent.h.
|
overridevirtual |
Reimplemented from Botan::BlockCipher.
Definition at line 388 of file serpent.cpp.
References Botan::CPUFeature::AVX2, Botan::CPUFeature::AVX512, Botan::CPUID::check(), and Botan::CPUFeature::SIMD_4X32.
|
staticinherited |
algo_spec | algorithm name |
Definition at line 44 of file block_cipher.cpp.
|
inherited |
Set the symmetric key of this object.
key | the SymmetricKey to be set. |
Definition at line 115 of file sym_algo.cpp.
|
inlineinherited |
|
inherited |
Set the symmetric key of this object.
key | the contiguous byte range to be set. |
Definition at line 121 of file sym_algo.cpp.
|
inlineinherited |
Check whether a given key length is valid for this algorithm.
length | the key length to be checked. |
Definition at line 109 of file sym_algo.h.
|
staticconstexprinherited |
Multiplier on a block cipher's native parallelism
Usually notable performance gains come from further loop blocking, at least for 2 or 4x
Definition at line 52 of file block_cipher.h.