Botan 3.7.1
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 |
template<typename U > requires (concepts::has_bounds_checked_accessors<T>) | |
decltype(auto) | at (U &&i) const noexcept(noexcept(this->get().at(i))) |
template<typename U > requires (concepts::has_bounds_checked_accessors<T>) | |
decltype(auto) | at (U &&i) noexcept(noexcept(this->get().at(i))) |
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 196 of file strong_type.h.
|
inherited |
Definition at line 77 of file strong_type.h.
|
inherited |
Definition at line 161 of file strong_type.h.
|
inherited |
Definition at line 76 of file strong_type.h.
|
inherited |
Definition at line 160 of file strong_type.h.
|
inherited |
Definition at line 1360 of file bitvector.h.
|
inherited |
Definition at line 74 of file strong_type.h.
|
inherited |
Definition at line 39 of file strong_type.h.
|
inherited |
Definition at line 39 of file strong_type.h.
|
inlineconstexprinherited |
Definition at line 1444 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().
|
inlineconstexprinherited |
Definition at line 1446 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
Definition at line 1378 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().
|
inlinenoexceptinherited |
Definition at line 137 of file strong_type.h.
References Botan::detail::Strong_Base< T >::get().
|
inlinenoexceptinherited |
Definition at line 144 of file strong_type.h.
References Botan::detail::Strong_Base< T >::get().
|
inlineinherited |
|
inlineinherited |
Definition at line 1365 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().
Referenced by Botan::LMOTS_Private_Key::chain_input().
|
inlineinherited |
|
inlineinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
Definition at line 90 of file strong_type.h.
References Botan::detail::Strong_Base< T >::get().
Referenced by Botan::encode_point(), and Botan::wots_sign_and_pkgen().
|
inlineinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
Definition at line 177 of file strong_type.h.
References Botan::detail::Strong_Base< T >::get().
Referenced by Botan::FrodoMatrix::serialize().
|
inlinenoexceptinherited |
Definition at line 108 of file strong_type.h.
References Botan::detail::Strong_Base< T >::get().
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
Definition at line 94 of file strong_type.h.
References Botan::detail::Strong_Base< T >::get().
Referenced by Botan::encode_point().
|
inlineinherited |
Definition at line 1401 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
Definition at line 1427 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().
|
inlineinherited |
|
inlineinherited |
|
inlineconstexprinherited |
Definition at line 50 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::Classic_McEliece_Field_Ordering::alphas(), Botan::Classic_McEliece_Field_Ordering::alphas_control_bits(), Botan::detail::Strong_Adapter< T >::any_vartime(), Botan::detail::Strong_Adapter< T >::as(), Botan::detail::Container_Strong_Adapter_Base< T >::at(), Botan::detail::Container_Strong_Adapter_Base< T >::at(), 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::LMOTS_Private_Key::LMOTS_Private_Key(), Botan::Classic_McEliece_GF::log_q_from_mod(), Botan::detail::Strong_Adapter< T >::none_vartime(), 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::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::HSS_LMS_Params::params_at_level(), Botan::Classic_McEliece_Field_Ordering::permute_with_pivots(), 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::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::Classic_McEliece_PrivateKeyInternal::serialize(), Botan::TLS::New_Session_Ticket_12::serialize(), Botan::TLS::New_Session_Ticket_13::serialize(), Botan::detail::Strong_Adapter< T >::set(), Botan::Sphincs_Address::set_chain_address(), Botan::Sphincs_Address::set_hash_address(), 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 50 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::Classic_McEliece_Field_Ordering::alphas(), Botan::Classic_McEliece_Field_Ordering::alphas_control_bits(), Botan::detail::Strong_Adapter< T >::any_vartime(), Botan::detail::Strong_Adapter< T >::as(), Botan::detail::Container_Strong_Adapter_Base< T >::at(), Botan::detail::Container_Strong_Adapter_Base< T >::at(), 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::LMOTS_Private_Key::LMOTS_Private_Key(), Botan::Classic_McEliece_GF::log_q_from_mod(), Botan::detail::Strong_Adapter< T >::none_vartime(), 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::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::HSS_LMS_Params::params_at_level(), Botan::Classic_McEliece_Field_Ordering::permute_with_pivots(), 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::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::Classic_McEliece_PrivateKeyInternal::serialize(), Botan::TLS::New_Session_Ticket_12::serialize(), Botan::TLS::New_Session_Ticket_13::serialize(), Botan::detail::Strong_Adapter< T >::set(), Botan::Sphincs_Address::set_chain_address(), Botan::Sphincs_Address::set_hash_address(), 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 54 of file strong_type.h.
|
inlineconstexprinherited |
Definition at line 54 of file strong_type.h.
|
inlineconstexprinherited |
Definition at line 52 of file strong_type.h.
|
inlineconstexprinherited |
Definition at line 52 of file strong_type.h.
|
inlineconstexprinherited |
Definition at line 56 of file strong_type.h.
|
inlineconstexprinherited |
Definition at line 56 of file strong_type.h.
|
inlineinherited |
|
inlinestaticconstexpr |
Definition at line 201 of file strong_type.h.
|
inlineinherited |
|
inlineinherited |
|
inlinenoexceptinherited |
Definition at line 127 of file strong_type.h.
References Botan::detail::Strong_Base< T >::get().
|
inlinenoexceptinherited |
Definition at line 132 of file strong_type.h.
References Botan::detail::Strong_Base< T >::get().
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlinenoexceptinherited |
Definition at line 114 of file strong_type.h.
References Botan::detail::Strong_Base< T >::get(), and Botan::detail::Container_Strong_Adapter_Base< T >::size().
|
inlineinherited |
|
inlinenoexceptinherited |
Definition at line 106 of file strong_type.h.
References Botan::detail::Strong_Base< T >::get().
Referenced by Botan::detail::Container_Strong_Adapter_Base< T >::reserve(), and Botan::detail::Container_Strong_Adapter_Base< T >::resize().
|
inlineinherited |
Definition at line 1390 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().
|
inlineinherited |
Definition at line 1383 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().
Referenced by Botan::Classic_McEliece_Matrix::mul().
|
inlineinherited |
Definition at line 1396 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().
|
inlineinherited |
Definition at line 1432 of file bitvector.h.
References Botan::detail::Strong_Base< T >::get().
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |