|
Botan 3.11.0
Crypto and TLS for C&
|
#include <strong_type.h>
Public Types | |
| using | const_iterator = typename T::const_iterator |
| using | const_pointer = typename T::const_pointer |
| using | iterator = typename T::iterator |
| using | pointer = typename T::pointer |
| using | size_type = typename T::size_type |
| using | value_type = typename T::value_type |
| using | wrapped_type = T |
| using | wrapped_type = T |
Public Member Functions | |
| constexpr void | _const_time_poison () const |
| constexpr void | _const_time_unpoison () const |
| auto | all_vartime () const |
| auto | any_vartime () const |
| template<typename OutT> | |
| auto | as () const |
| auto | at (size_type i) |
| auto | at (size_type i) const |
| auto | back () |
| auto | back () const |
| decltype(auto) | begin () const noexcept(noexcept(this->get().begin())) |
| decltype(auto) | begin () noexcept(noexcept(this->get().begin())) |
| auto | capacity () const |
| decltype(auto) | cbegin () const noexcept(noexcept(this->get().cbegin())) |
| decltype(auto) | cbegin () noexcept(noexcept(this->get().cbegin())) |
| decltype(auto) | cend () const noexcept(noexcept(this->get().cend())) |
| decltype(auto) | cend () noexcept(noexcept(this->get().cend())) |
| decltype(auto) | data () const noexcept(noexcept(this->get().data())) |
| decltype(auto) | data () noexcept(noexcept(this->get().data())) |
| bool | empty () const noexcept(noexcept(this->get().empty())) |
| decltype(auto) | end () const noexcept(noexcept(this->get().end())) |
| decltype(auto) | end () noexcept(noexcept(this->get().end())) |
| template<bitvectorish OtherT> | |
| auto | equals (const OtherT &other) const |
| auto | flip () |
| auto | flip (size_type i) |
| auto | from_bytes (std::span< const uint8_t > bytes, std::optional< size_type > bits=std::nullopt) |
| auto | front () |
| auto | front () const |
| constexpr T & | get () & |
| constexpr T & | get () & |
| constexpr T && | get () && |
| constexpr T && | get () && |
| constexpr const T & | get () const & |
| constexpr const T & | get () const & |
| constexpr const T && | get () const && |
| constexpr const T && | get () const && |
| auto | hamming_weight () const |
| auto | has_odd_hamming_weight () const |
| auto | none_vartime () const |
| template<typename U> | |
| decltype(auto) | operator[] (U &&i) const noexcept(noexcept(this->get().operator[](i))) |
| template<typename U> | |
| decltype(auto) | operator[] (U &&i) noexcept(noexcept(this->get().operator[](i))) |
| auto | pop_back () |
| auto | push_back (bool b) |
| auto | reserve (size_type n) |
| void | resize (size_type size) noexcept(noexcept(this->get().resize(size))) |
| auto | set (size_type i) |
| size_type | size () const noexcept(noexcept(this->get().size())) |
| template<typename OutT> requires (std::unsigned_integral<strong_type_wrapped_type<OutT>> && !std::same_as<bool, strong_type_wrapped_type<OutT>>) | |
| auto | subvector (size_type pos) const |
| template<bitvectorish OutT = T> | |
| auto | subvector (size_type pos, std::optional< size_type > length=std::nullopt) const |
| template<typename InT> requires (std::unsigned_integral<strong_type_wrapped_type<InT>> && !std::same_as<bool, InT>) | |
| void | subvector_replace (size_type pos, InT value) |
| template<typename OutT = T> | |
| auto | to_bytes () const |
| auto | to_bytes (std::span< uint8_t > out) const |
| auto | to_string () const |
| auto | unset (size_type i) |
Static Public Member Functions | |
| template<typename CapabilityT> | |
| static constexpr bool | has_capability () |
Strong types can be used as wrappers around common types to provide compile time semantics. They usually contribute to more maintainable and less error-prone code especially when dealing with function parameters.
Internally, this provides adapters so that the wrapping strong type behaves as much as the underlying type as possible and desirable.
This implementation was inspired by: https://stackoverflow.com/a/69030899
Definition at line 217 of file strong_type.h.
|
inherited |
Definition at line 112 of file strong_type.h.
|
inherited |
Definition at line 182 of file strong_type.h.
|
inherited |
Definition at line 111 of file strong_type.h.
|
inherited |
Definition at line 181 of file strong_type.h.
|
inherited |
Definition at line 1362 of file bitvector.h.
|
inherited |
Definition at line 109 of file strong_type.h.
|
inherited |
Definition at line 73 of file strong_type.h.
|
inherited |
Definition at line 73 of file strong_type.h.
|
inlineconstexprinherited |
Definition at line 1446 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().
|
inlineconstexprinherited |
Definition at line 1448 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
Definition at line 1380 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().
|
inlineinherited |
|
inlineinherited |
Definition at line 1367 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().
Referenced by Botan::LMOTS_Private_Key::chain_input(), and Botan::Classic_McEliece_Field_Ordering::permute_with_pivots().
|
inlineinherited |
|
inlineinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
Definition at line 125 of file strong_type.h.
References begin(), and Botan::detail::Strong_Base< T >::get().
Referenced by begin(), Container_Strong_Adapter_Base(), Botan::Classic_McEliece_Field_Ordering::create_from_control_bits(), Botan::encode_point(), Botan::Sphincs_Hash_Functions_Sha2::Sphincs_Hash_Functions_Sha2(), and Botan::detail::Strong_Adapter< T >::Strong_Adapter().
|
inlineinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
Definition at line 198 of file strong_type.h.
References data(), get(), and Botan::detail::Strong_Base< T >::get().
Referenced by Botan::Classic_McEliece_Field_Ordering::ct_is_equal(), data(), Botan::Kyber_KEM_Decryptor::decapsulate(), Botan::TLS::Cipher_State::next_ticket_nonce(), and Botan::FrodoMatrix::serialize().
|
inlinenoexceptinherited |
Definition at line 143 of file strong_type.h.
References empty(), and Botan::detail::Strong_Base< T >::get().
Referenced by empty(), and Botan::TLS::Client_Hello_12::session_handle().
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
Definition at line 129 of file strong_type.h.
References Botan::detail::Strong_Base< T >::get().
Referenced by Container_Strong_Adapter_Base(), Botan::Classic_McEliece_Field_Ordering::create_from_control_bits(), Botan::encode_point(), Botan::Sphincs_Hash_Functions_Sha2::Sphincs_Hash_Functions_Sha2(), and Botan::detail::Strong_Adapter< T >::Strong_Adapter().
|
inlineinherited |
Definition at line 1403 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().
|
inlineinherited |
|
inlineinherited |
Definition at line 1375 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().
|
inlineinherited |
Definition at line 1429 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().
|
inlineinherited |
|
inlineinherited |
|
inlineconstexprinherited |
Definition at line 85 of file strong_type.h.
Referenced by Botan::detail::Strong_Adapter< T >::_const_time_poison(), Botan::detail::Strong_Adapter< T >::_const_time_unpoison(), Botan::detail::Strong_Adapter< T >::all_vartime(), Botan::detail::Strong_Adapter< T >::any_vartime(), Botan::detail::Strong_Adapter< T >::as(), Botan::detail::Strong_Adapter< T >::at(), Botan::detail::Strong_Adapter< T >::at(), Botan::detail::Strong_Adapter< T >::back(), Botan::detail::Strong_Adapter< T >::back(), Botan::detail::Container_Strong_Adapter_Base< T >::begin(), Botan::detail::Container_Strong_Adapter_Base< T >::begin(), Botan::detail::Strong_Adapter< T >::capacity(), Botan::detail::Container_Strong_Adapter_Base< T >::cbegin(), Botan::detail::Container_Strong_Adapter_Base< T >::cbegin(), Botan::detail::Container_Strong_Adapter_Base< T >::cend(), Botan::detail::Container_Strong_Adapter_Base< T >::cend(), Botan::chain_lengths(), Botan::compute_root(), Botan::detail::Strong_Adapter< T >::data(), Botan::detail::Strong_Adapter< T >::data(), Botan::detail::Container_Strong_Adapter_Base< T >::empty(), Botan::detail::Container_Strong_Adapter_Base< T >::end(), Botan::detail::Container_Strong_Adapter_Base< T >::end(), Botan::detail::Strong_Adapter< T >::equals(), Botan::GF_Mask::expand(), Botan::detail::Strong_Adapter< T >::flip(), Botan::detail::Strong_Adapter< T >::flip(), Botan::detail::Strong_Adapter< T >::from_bytes(), Botan::detail::Strong_Adapter< T >::front(), Botan::detail::Strong_Adapter< T >::front(), Botan::detail::Strong_Adapter< T >::hamming_weight(), Botan::detail::Strong_Adapter< T >::has_odd_hamming_weight(), Botan::ht_sign(), Botan::ht_verify(), Botan::GF_Mask::if_set_return(), Botan::GF_Mask::is_equal(), Botan::GF_Mask::is_lte(), Botan::GF_Mask::is_zero(), Botan::detail::Strong_Adapter< T >::none_vartime(), Botan::operator&(), Botan::operator&(), Botan::operator&(), Botan::operator&=(), Botan::operator&=(), Botan::Classic_McEliece_GF::operator*(), Botan::operator*(), Botan::operator*(), Botan::operator*(), Botan::operator*=(), Botan::operator*=(), Botan::operator+(), Botan::operator+(), Botan::operator+(), Botan::operator++(), Botan::operator++(), Botan::operator+=(), Botan::operator+=(), Botan::operator-(), Botan::operator-(), Botan::operator-(), Botan::operator--(), Botan::operator--(), Botan::operator-=(), Botan::operator-=(), Botan::operator/(), Botan::operator/(), Botan::operator/(), Botan::operator/=(), Botan::operator/=(), Botan::TLS::operator<(), Botan::operator<<(), Botan::operator<<(), Botan::operator<<(), Botan::operator<<(), Botan::operator<<=(), Botan::operator<<=(), Botan::operator<=>(), Botan::operator<=>(), Botan::operator<=>(), Botan::operator==(), Botan::operator==(), Botan::operator==(), Botan::operator>>(), Botan::operator>>(), Botan::operator>>(), Botan::operator>>=(), Botan::operator>>=(), Botan::detail::Container_Strong_Adapter_Base< T >::operator[](), Botan::detail::Container_Strong_Adapter_Base< T >::operator[](), Botan::operator^(), Botan::operator^(), Botan::operator^(), Botan::operator^=(), Botan::operator^=(), Botan::operator|(), Botan::operator|(), Botan::operator|(), Botan::operator|=(), Botan::operator|=(), Botan::HSS_LMS_Params::params_at_level(), Botan::detail::Strong_Adapter< T >::pop_back(), Botan::TLS::Cipher_State::psk(), Botan::detail::Strong_Adapter< T >::push_back(), Botan::Classic_McEliece_Encryptor::raw_kem_encrypt(), Botan::HSS_LMS_PrivateKeyInternal::remaining_operations(), Botan::detail::Container_Strong_Adapter_Base< T >::reserve(), Botan::detail::Strong_Adapter< T >::reserve(), Botan::detail::Container_Strong_Adapter_Base< T >::resize(), Botan::GF_Mask::select(), Botan::GF_Mask::select(), Botan::detail::Strong_Adapter< T >::set(), Botan::Sphincs_Address::set_chain_address(), Botan::Sphincs_Address::set_hash_address(), Botan::HSS_LMS_PrivateKeyInternal::set_idx(), Botan::Sphincs_Address::set_keypair_address(), Botan::Sphincs_Address::set_layer_address(), Botan::Sphincs_Address::set_tree_address(), Botan::Sphincs_Address::set_tree_height(), Botan::Sphincs_Address::set_tree_index(), Botan::HSS_LMS_PrivateKeyInternal::sign(), Botan::LMS_PrivateKey::sign_and_get_pk(), Botan::HSS_Signature::signed_pub_key(), Botan::detail::Container_Strong_Adapter_Base< T >::size(), Botan::detail::Strong_Adapter< T >::subvector(), Botan::detail::Strong_Adapter< T >::subvector(), Botan::detail::Strong_Adapter< T >::subvector_replace(), Botan::detail::Strong_Adapter< T >::to_bytes(), Botan::detail::Strong_Adapter< T >::to_bytes(), Botan::detail::Strong_Adapter< T >::to_string(), Botan::treehash(), Botan::detail::Strong_Adapter< T >::unset(), Botan::wots_public_key_from_signature(), and Botan::x448().
|
inlineconstexprinherited |
Definition at line 85 of file strong_type.h.
Referenced by Botan::detail::Strong_Adapter< T >::_const_time_poison(), Botan::detail::Strong_Adapter< T >::_const_time_unpoison(), Botan::detail::Strong_Adapter< T >::all_vartime(), Botan::detail::Strong_Adapter< T >::any_vartime(), Botan::detail::Strong_Adapter< T >::as(), Botan::detail::Strong_Adapter< T >::at(), Botan::detail::Strong_Adapter< T >::at(), Botan::detail::Strong_Adapter< T >::back(), Botan::detail::Strong_Adapter< T >::back(), Botan::detail::Container_Strong_Adapter_Base< T >::begin(), Botan::detail::Container_Strong_Adapter_Base< T >::begin(), Botan::detail::Strong_Adapter< T >::capacity(), Botan::detail::Container_Strong_Adapter_Base< T >::cbegin(), Botan::detail::Container_Strong_Adapter_Base< T >::cbegin(), Botan::detail::Container_Strong_Adapter_Base< T >::cend(), Botan::detail::Container_Strong_Adapter_Base< T >::cend(), Botan::chain_lengths(), Botan::compute_root(), Botan::detail::Strong_Adapter< T >::data(), Botan::detail::Strong_Adapter< T >::data(), Botan::detail::Container_Strong_Adapter_Base< T >::empty(), Botan::detail::Container_Strong_Adapter_Base< T >::end(), Botan::detail::Container_Strong_Adapter_Base< T >::end(), Botan::detail::Strong_Adapter< T >::equals(), Botan::GF_Mask::expand(), Botan::detail::Strong_Adapter< T >::flip(), Botan::detail::Strong_Adapter< T >::flip(), Botan::detail::Strong_Adapter< T >::from_bytes(), Botan::detail::Strong_Adapter< T >::front(), Botan::detail::Strong_Adapter< T >::front(), Botan::detail::Strong_Adapter< T >::hamming_weight(), Botan::detail::Strong_Adapter< T >::has_odd_hamming_weight(), Botan::ht_sign(), Botan::ht_verify(), Botan::GF_Mask::if_set_return(), Botan::GF_Mask::is_equal(), Botan::GF_Mask::is_lte(), Botan::GF_Mask::is_zero(), Botan::detail::Strong_Adapter< T >::none_vartime(), Botan::operator&(), Botan::operator&(), Botan::operator&(), Botan::operator&=(), Botan::operator&=(), Botan::Classic_McEliece_GF::operator*(), Botan::operator*(), Botan::operator*(), Botan::operator*(), Botan::operator*=(), Botan::operator*=(), Botan::operator+(), Botan::operator+(), Botan::operator+(), Botan::operator++(), Botan::operator++(), Botan::operator+=(), Botan::operator+=(), Botan::operator-(), Botan::operator-(), Botan::operator-(), Botan::operator--(), Botan::operator--(), Botan::operator-=(), Botan::operator-=(), Botan::operator/(), Botan::operator/(), Botan::operator/(), Botan::operator/=(), Botan::operator/=(), Botan::TLS::operator<(), Botan::operator<<(), Botan::operator<<(), Botan::operator<<(), Botan::operator<<(), Botan::operator<<=(), Botan::operator<<=(), Botan::operator<=>(), Botan::operator<=>(), Botan::operator<=>(), Botan::operator==(), Botan::operator==(), Botan::operator==(), Botan::operator>>(), Botan::operator>>(), Botan::operator>>(), Botan::operator>>=(), Botan::operator>>=(), Botan::detail::Container_Strong_Adapter_Base< T >::operator[](), Botan::detail::Container_Strong_Adapter_Base< T >::operator[](), Botan::operator^(), Botan::operator^(), Botan::operator^(), Botan::operator^=(), Botan::operator^=(), Botan::operator|(), Botan::operator|(), Botan::operator|(), Botan::operator|=(), Botan::operator|=(), Botan::HSS_LMS_Params::params_at_level(), Botan::detail::Strong_Adapter< T >::pop_back(), Botan::TLS::Cipher_State::psk(), Botan::detail::Strong_Adapter< T >::push_back(), Botan::Classic_McEliece_Encryptor::raw_kem_encrypt(), Botan::HSS_LMS_PrivateKeyInternal::remaining_operations(), Botan::detail::Container_Strong_Adapter_Base< T >::reserve(), Botan::detail::Strong_Adapter< T >::reserve(), Botan::detail::Container_Strong_Adapter_Base< T >::resize(), Botan::GF_Mask::select(), Botan::GF_Mask::select(), Botan::detail::Strong_Adapter< T >::set(), Botan::Sphincs_Address::set_chain_address(), Botan::Sphincs_Address::set_hash_address(), Botan::HSS_LMS_PrivateKeyInternal::set_idx(), Botan::Sphincs_Address::set_keypair_address(), Botan::Sphincs_Address::set_layer_address(), Botan::Sphincs_Address::set_tree_address(), Botan::Sphincs_Address::set_tree_height(), Botan::Sphincs_Address::set_tree_index(), Botan::HSS_LMS_PrivateKeyInternal::sign(), Botan::LMS_PrivateKey::sign_and_get_pk(), Botan::HSS_Signature::signed_pub_key(), Botan::detail::Container_Strong_Adapter_Base< T >::size(), Botan::detail::Strong_Adapter< T >::subvector(), Botan::detail::Strong_Adapter< T >::subvector(), Botan::detail::Strong_Adapter< T >::subvector_replace(), Botan::detail::Strong_Adapter< T >::to_bytes(), Botan::detail::Strong_Adapter< T >::to_bytes(), Botan::detail::Strong_Adapter< T >::to_string(), Botan::treehash(), Botan::detail::Strong_Adapter< T >::unset(), Botan::wots_public_key_from_signature(), and Botan::x448().
|
inlineconstexprinherited |
Definition at line 89 of file strong_type.h.
|
inlineconstexprinherited |
Definition at line 89 of file strong_type.h.
|
inlineconstexprinherited |
Definition at line 87 of file strong_type.h.
|
inlineconstexprinherited |
Definition at line 87 of file strong_type.h.
|
inlineconstexprinherited |
Definition at line 91 of file strong_type.h.
|
inlineconstexprinherited |
Definition at line 91 of file strong_type.h.
|
inlineinherited |
|
inlinestaticconstexpr |
Definition at line 222 of file strong_type.h.
|
inlineinherited |
|
inlineinherited |
|
inlinenoexceptinherited |
Definition at line 162 of file strong_type.h.
References Botan::detail::Strong_Base< T >::get().
|
inlinenoexceptinherited |
Definition at line 167 of file strong_type.h.
References Botan::detail::Strong_Base< T >::get().
|
inlineinherited |
|
inlineinherited |
Definition at line 1407 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().
|
inlineinherited |
Definition at line 1444 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().
|
inlinenoexceptinherited |
Definition at line 149 of file strong_type.h.
References Botan::detail::Strong_Base< T >::get(), and size().
|
inlineinherited |
Definition at line 1371 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().
|
inlinenoexceptinherited |
Definition at line 141 of file strong_type.h.
References Botan::detail::Strong_Base< T >::get(), and size().
Referenced by Botan::compute_root(), Container_Strong_Adapter_Base(), Botan::Classic_McEliece_Field_Ordering::ct_is_equal(), Botan::Kyber_KEM_Decryptor::decapsulate(), reserve(), resize(), size(), and Botan::Sphincs_Hash_Functions_Sha2::Sphincs_Hash_Functions_Sha2().
|
inlineinherited |
Definition at line 1392 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get(), and subvector().
|
inlineinherited |
Definition at line 1385 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get(), and subvector().
Referenced by Botan::Classic_McEliece_Matrix::mul(), subvector(), and subvector().
|
inlineinherited |
Definition at line 1398 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().
|
inlineinherited |
Definition at line 1434 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get(), and to_bytes().
Referenced by to_bytes().
|
inlineinherited |
Definition at line 1438 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().
|
inlineinherited |
|
inlineinherited |
Definition at line 1373 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().