Botan 3.8.1
Crypto and TLS for C&
|
#include <blake2b.h>
Public Member Functions | |
BLAKE2b (size_t output_bits=512) | |
void | clear () override |
HashFunction * | clone () const |
std::unique_ptr< HashFunction > | copy_state () const override |
template<concepts::resizable_byte_buffer T = secure_vector<uint8_t>> | |
T | final () |
void | final (std::span< uint8_t > out) |
template<concepts::resizable_byte_buffer T> | |
void | final (T &out) |
void | final (uint8_t out[]) |
std::vector< uint8_t > | final_stdvec () |
bool | has_keying_material () const override |
size_t | hash_block_size () const override |
size_t | key_size () const |
Key_Length_Specification | key_spec () const override |
size_t | maximum_keylength () const |
size_t | minimum_keylength () const |
std::string | name () const override |
std::unique_ptr< HashFunction > | new_object () const override |
size_t | output_length () const override |
template<concepts::resizable_byte_buffer T = secure_vector<uint8_t>> | |
T | process (const uint8_t in[], size_t length) |
template<concepts::resizable_byte_buffer T = secure_vector<uint8_t>> | |
T | process (std::span< const uint8_t > in) |
template<concepts::resizable_byte_buffer T = secure_vector<uint8_t>> | |
T | process (std::string_view in) |
virtual std::string | provider () const |
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) |
void | update (const uint8_t in[], size_t length) |
void | update (std::span< const uint8_t > in) |
void | update (std::string_view str) |
void | update (uint8_t in) |
void | update_be (uint16_t val) |
void | update_be (uint32_t val) |
void | update_be (uint64_t val) |
void | update_le (uint16_t val) |
void | update_le (uint32_t val) |
void | update_le (uint64_t val) |
bool | valid_keylength (size_t length) const |
Static Public Member Functions | |
static std::unique_ptr< HashFunction > | create (std::string_view algo_spec, std::string_view provider="") |
static std::unique_ptr< HashFunction > | create_or_throw (std::string_view algo_spec, std::string_view provider="") |
static std::vector< std::string > | providers (std::string_view algo_spec) |
Protected Member Functions | |
void | add_data (std::span< const uint8_t > input) override |
void | assert_key_material_set () const |
void | assert_key_material_set (bool predicate) const |
void | final_result (std::span< uint8_t > out) override |
void | key_schedule (std::span< const uint8_t > key) override |
Friends | |
class | BLAKE2bMAC |
|
explicit |
output_bits | the output size of BLAKE2b in bits |
Definition at line 36 of file blake2b.cpp.
|
overrideprotectedvirtual |
Add more data to the computation
input | is an input buffer |
Implements Botan::Buffered_Computation.
Definition at line 141 of file blake2b.cpp.
References Botan::BLAKE2B_BLOCKBYTES, and Botan::BufferSlicer::empty().
|
inlineprotectedinherited |
Definition at line 141 of file sym_algo.h.
References assert_key_material_set(), and has_keying_material().
Referenced by assert_key_material_set(), Botan::Salsa20::cipher_bytes(), Botan::Lion::decrypt_n(), Botan::Lion::encrypt_n(), Botan::GHASH::final(), Botan::GHASH::nonce_hash(), Botan::ChaCha::seek(), Botan::CTR_BE::seek(), Botan::Salsa20::seek(), Botan::GHASH::set_associated_data(), Botan::OCB_Mode::set_associated_data_n(), Botan::Salsa20::set_iv_bytes(), Botan::GHASH::update(), and Botan::GHASH::update_associated_data().
|
inlineprotectedinherited |
Definition at line 143 of file sym_algo.h.
|
overridevirtual |
Reset the state.
Implements Botan::HashFunction.
Definition at line 203 of file blake2b.cpp.
References Botan::zeroise().
|
inlineinherited |
Definition at line 87 of file hash.h.
References new_object().
|
overridevirtual |
Return a new hash object with the same state as *this. This allows computing the hash of several messages with a common prefix more efficiently than would otherwise be possible.
This function should be called clone
but that was already used for the case of returning an uninitialized object.
Implements Botan::HashFunction.
Definition at line 180 of file blake2b.cpp.
|
staticinherited |
Create an instance based on a name, or return null if the algo/provider combination cannot be found. If provider is empty then best available is chosen.
Definition at line 107 of file hash.cpp.
References Botan::SCAN_Name::algo_name(), Botan::SCAN_Name::arg(), Botan::SCAN_Name::arg_as_integer(), Botan::SCAN_Name::arg_count(), create(), Botan::make_commoncrypto_hash(), and provider().
Referenced by botan_hash_init(), Botan::BlockCipher::create(), Botan::EME::create(), Botan::EMSA::create(), create(), Botan::KDF::create(), Botan::MessageAuthenticationCode::create(), Botan::PasswordHashFamily::create(), Botan::PBKDF::create(), create_or_throw(), Botan::Certificate_Store_In_Memory::find_cert_by_pubkey_sha1(), and Botan::Certificate_Store_In_Memory::find_cert_by_raw_subject_dn_sha256().
|
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 use Throws Lookup_Error if not found. |
Definition at line 298 of file hash.cpp.
References create(), and provider().
Referenced by botan_pubkey_fingerprint(), botan_pubkey_sm2_compute_za(), Botan::OCSP::CertID::CertID(), Botan::create_hex_fingerprint(), Botan::Sodium::crypto_hash_sha256(), Botan::Sodium::crypto_hash_sha512(), Botan::Bcrypt_PBKDF::derive_key(), Botan::EMSA_PKCS1v15_Raw::EMSA_PKCS1v15_Raw(), Botan::expand_message_xmd(), Botan::TLS::Handshake_Hash::final(), Botan::generate_dsa_primes(), Botan::LMOTS_Params::hash(), Botan::LMS_Params::hash(), Botan::Classic_McEliece_Parameters::hash_func(), Botan::OCSP::CertID::is_id_for(), Botan::TLS::make_hello_random(), Botan::Roughtime::nonce_from_blind(), Botan::TLS::Transcript_Hash_State::set_algorithm(), Botan::RTSS_Share::split(), Botan::srp6_client_agree(), Botan::srp6_generate_verifier(), Botan::SRP6_Server_Session::step1(), Botan::SRP6_Server_Session::step2(), Botan::Cert_Extension::Subject_Key_ID::Subject_Key_ID(), and Botan::PK_Ops::Verification_with_Hash::Verification_with_Hash().
|
inlineinherited |
Complete the computation and retrieve the final result as a container of your choice.
Definition at line 77 of file buf_comp.h.
References output_length().
|
inherited |
Definition at line 53 of file buf_comp.cpp.
References BOTAN_ARG_CHECK, and output_length().
|
inlineinherited |
Definition at line 88 of file buf_comp.h.
References output_length().
|
inlineinherited |
Complete the computation and retrieve the final result.
out | The byte array to be filled with the result. Must be of length output_length() |
Definition at line 69 of file buf_comp.h.
References output_length().
Referenced by Botan::ed25519_gen_keypair(), Botan::ed25519_sign(), Botan::ed25519_verify(), final_stdvec(), Botan::PseudorandomKeyGeneration::gen(), Botan::TPM2::Verification_Operation::is_valid_signature(), Botan::mgf1_mask(), Botan::KMAC::operator=(), Botan::pbkdf2(), Botan::Sphincs_Hash_Functions_Sha2::PRF_msg(), process(), process(), process(), Botan::TPM2::Signature_Operation::sign(), and Botan::sm2_compute_za().
|
overrideprotectedvirtual |
Write the final output to out
out | is an output buffer of output_length() |
Implements Botan::Buffered_Computation.
Definition at line 158 of file blake2b.cpp.
References Botan::copy_out_le(), and output_length().
|
inlineinherited |
|
overridevirtual |
Implements Botan::SymmetricAlgorithm.
Definition at line 184 of file blake2b.cpp.
|
inlineoverridevirtual |
Reimplemented from Botan::HashFunction.
Definition at line 34 of file blake2b.h.
|
overrideprotectedvirtual |
Run the key schedule
key | the key |
Implements Botan::SymmetricAlgorithm.
Definition at line 188 of file blake2b.cpp.
References BOTAN_ASSERT_NOMSG, Botan::clear_mem(), and Botan::copy_mem().
|
inline |
|
overridevirtual |
Implements Botan::SymmetricAlgorithm.
Definition at line 168 of file blake2b.cpp.
|
inlineinherited |
Definition at line 97 of file sym_algo.h.
References key_spec().
|
inlineinherited |
Definition at line 102 of file sym_algo.h.
References key_spec().
|
overridevirtual |
Implements Botan::HashFunction.
Definition at line 172 of file blake2b.cpp.
References Botan::fmt().
|
overridevirtual |
Implements Botan::HashFunction.
Definition at line 176 of file blake2b.cpp.
|
inlineoverridevirtual |
Implements Botan::Buffered_Computation.
Definition at line 36 of file blake2b.h.
Referenced by final_result().
|
inlineinherited |
Update and finalize computation. Does the same as calling update() and final() consecutively.
in | the input to process as a byte array |
length | the length of the byte array |
Definition at line 101 of file buf_comp.h.
References final(), and update().
Referenced by Botan::Kyber_Symmetric_Primitives::H(), Botan::Kyber_Symmetric_Primitives::H(), and Botan::Kyber_Symmetric_Primitives::H().
|
inlineinherited |
Update and finalize computation. Does the same as calling update() and final() consecutively.
in | the input to process as a contiguous container |
Definition at line 125 of file buf_comp.h.
|
inlineinherited |
Update and finalize computation. Does the same as calling update() and final() consecutively.
in | the input to process as a string |
Definition at line 113 of file buf_comp.h.
|
inlinevirtualinherited |
Reimplemented in Botan::Keccak_1600, Botan::SHA_1, Botan::SHA_224, Botan::SHA_256, Botan::SHA_384, Botan::SHA_3, Botan::SHA_512, Botan::SHA_512_256, Botan::SHAKE_128, and Botan::SHAKE_256.
Definition at line 49 of file hash.h.
Referenced by create(), and create_or_throw().
|
staticinherited |
algo_spec | algorithm name |
Definition at line 305 of file hash.cpp.
References Botan::probe_providers_of().
|
inherited |
Set the symmetric key of this object.
key | the SymmetricKey to be set. |
Definition at line 14 of file sym_algo.cpp.
References Botan::OctetString::begin(), Botan::OctetString::length(), and set_key().
Referenced by Botan::create_aes_row_generator(), Botan::Sodium::crypto_stream_salsa20(), Botan::Sodium::crypto_stream_salsa20_xor_ic(), Botan::Sodium::crypto_stream_xsalsa20(), Botan::Sodium::crypto_stream_xsalsa20_xor_ic(), Botan::FPE::fe1_decrypt(), Botan::FPE::fe1_encrypt(), Botan::Sphincs_Hash_Functions_Sha2::PRF_msg(), Botan::Sodium::randombytes_buf_deterministic(), and set_key().
|
inlineinherited |
Set the symmetric key of this object.
key | the to be set as a byte array. |
length | in bytes of key param |
Definition at line 128 of file sym_algo.h.
References set_key().
Referenced by set_key().
|
inherited |
Set the symmetric key of this object.
key | the contiguous byte range to be set. |
Definition at line 22 of file sym_algo.cpp.
References name(), and valid_keylength().
|
inlineinherited |
Add new input to process.
in | the input to process as a byte array |
length | of param in in bytes |
Definition at line 34 of file buf_comp.h.
Referenced by Botan::ed25519_gen_keypair(), Botan::ed25519_sign(), Botan::ed25519_verify(), Botan::PseudorandomKeyGeneration::gen(), Botan::LMOTS_Public_Key::LMOTS_Public_Key(), Botan::mgf1_mask(), Botan::pbkdf2(), Botan::Sphincs_Hash_Functions_Sha2::PRF_msg(), process(), process(), process(), and Botan::sm2_compute_za().
|
inlineinherited |
Add new input to process.
in | the input to process as a contiguous data range |
Definition at line 40 of file buf_comp.h.
|
inherited |
Add new input to process.
str | the input to process as a std::string_view. Will be interpreted as a byte array based on the strings encoding. |
Definition at line 13 of file buf_comp.cpp.
References Botan::cast_char_ptr_to_uint8().
|
inlineinherited |
Process a single byte.
in | the byte to process |
Definition at line 61 of file buf_comp.h.
|
inherited |
Definition at line 17 of file buf_comp.cpp.
References Botan::store_be().
Referenced by Botan::mgf1_mask(), and Botan::pbkdf2().
|
inherited |
Definition at line 23 of file buf_comp.cpp.
References Botan::store_be().
|
inherited |
Definition at line 29 of file buf_comp.cpp.
References Botan::store_be().
|
inherited |
Definition at line 35 of file buf_comp.cpp.
References Botan::store_le().
|
inherited |
Definition at line 41 of file buf_comp.cpp.
References Botan::store_le().
|
inherited |
Definition at line 47 of file buf_comp.cpp.
References Botan::store_le().
|
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.
References key_spec().
Referenced by set_key().
|
friend |