Botan 3.13.0
Crypto and TLS for C&
Botan::Strong< T, TagTypeT, Capabilities > Class Template Reference

#include <strong_type.h>

Inheritance diagram for Botan::Strong< T, TagTypeT, Capabilities >:
Botan::detail::Strong_Adapter< T > Botan::detail::Strong_Base< T > Botan::detail::Container_Strong_Adapter_Base< T > Botan::detail::Strong_Base< T > Botan::detail::Container_Strong_Adapter_Base< T > Botan::detail::Container_Strong_Adapter_Base< T > Botan::detail::Strong_Base< T > Botan::detail::Strong_Base< T > Botan::detail::Strong_Base< T >

Public Types

using const_iterator = typename T::const_iterator
 The const iterator type of the wrapped container.
using const_pointer = typename T::const_pointer
using iterator = typename T::iterator
 The iterator type of the wrapped container.
using pointer = typename T::pointer
using size_type = typename T::size_type
using value_type = typename T::value_type
 The element type of the wrapped container.
using wrapped_type = T
 The type wrapped by this strong type.
using wrapped_type = T
 The type wrapped by this strong type.

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 push_back (CT::Choice 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>
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>
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 ()

Detailed Description

template<typename T, typename TagTypeT, typename... Capabilities>
class Botan::Strong< T, TagTypeT, Capabilities >

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 298 of file strong_type.h.

Member Typedef Documentation

◆ const_iterator

template<concepts::container T>
using Botan::detail::Container_Strong_Adapter_Base< T >::const_iterator = typename T::const_iterator
inherited

The const iterator type of the wrapped container.

Definition at line 158 of file strong_type.h.

◆ const_pointer

template<concepts::container T>
using Botan::detail::Strong_Adapter< T >::const_pointer = typename T::const_pointer
inherited

Definition at line 263 of file strong_type.h.

◆ iterator

template<concepts::container T>
using Botan::detail::Container_Strong_Adapter_Base< T >::iterator = typename T::iterator
inherited

The iterator type of the wrapped container.

Definition at line 155 of file strong_type.h.

◆ pointer

template<concepts::container T>
using Botan::detail::Strong_Adapter< T >::pointer = typename T::pointer
inherited

Definition at line 262 of file strong_type.h.

◆ size_type

template<concepts::container T>
using Botan::detail::Strong_Adapter< T >::size_type = typename T::size_type
inherited

Definition at line 1410 of file bitvector.h.

◆ value_type

template<concepts::container T>
using Botan::detail::Container_Strong_Adapter_Base< T >::value_type = typename T::value_type
inherited

The element type of the wrapped container.

Definition at line 149 of file strong_type.h.

◆ wrapped_type [1/2]

template<typename T>
using Botan::detail::Strong_Base< T >::wrapped_type = T
inherited

The type wrapped by this strong type.

Definition at line 81 of file strong_type.h.

◆ wrapped_type [2/2]

template<typename T>
using Botan::detail::Strong_Base< T >::wrapped_type = T
inherited

The type wrapped by this strong type.

Definition at line 81 of file strong_type.h.

Member Function Documentation

◆ _const_time_poison()

template<concepts::container T>
void Botan::detail::Strong_Adapter< T >::_const_time_poison ( ) const
inlineconstexprinherited

Definition at line 1496 of file bitvector.h.

1496{ this->get()._const_time_poison(); }

References Botan::detail::Strong_Base< T >::get().

◆ _const_time_unpoison()

template<concepts::container T>
void Botan::detail::Strong_Adapter< T >::_const_time_unpoison ( ) const
inlineconstexprinherited

Definition at line 1498 of file bitvector.h.

1498{ this->get()._const_time_unpoison(); }

References Botan::detail::Strong_Base< T >::get().

◆ all_vartime()

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::all_vartime ( ) const
inlineinherited

Definition at line 1471 of file bitvector.h.

1471{ return this->get().all_vartime(); }

References Botan::detail::Strong_Base< T >::get().

◆ any_vartime()

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::any_vartime ( ) const
inlineinherited

Definition at line 1469 of file bitvector.h.

1469{ return this->get().any_vartime(); }

References Botan::detail::Strong_Base< T >::get().

◆ as()

template<concepts::container T>
template<typename OutT>
auto Botan::detail::Strong_Adapter< T >::as ( ) const
inlineinherited

Definition at line 1428 of file bitvector.h.

1428 {
1429 return this->get().template as<OutT>();
1430 }

References Botan::detail::Strong_Base< T >::get().

◆ at() [1/2]

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::at ( size_type i)
inlineinherited

Definition at line 1417 of file bitvector.h.

1417{ return this->get().at(i); }

References Botan::detail::Strong_Base< T >::get().

◆ at() [2/2]

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::at ( size_type i) const
inlineinherited

◆ back() [1/2]

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::back ( )
inlineinherited

Definition at line 1467 of file bitvector.h.

1467{ return this->get().back(); }

References Botan::detail::Strong_Base< T >::get().

◆ back() [2/2]

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::back ( ) const
inlineinherited

Definition at line 1465 of file bitvector.h.

1465{ return this->get().back(); }

References Botan::detail::Strong_Base< T >::get().

◆ begin() [1/2]

template<concepts::container T>
decltype(auto) Botan::detail::Container_Strong_Adapter_Base< T >::begin ( ) const
inlinenoexceptinherited

Iterate the wrapped container

Returns
a const iterator to the first element

Definition at line 182 of file strong_type.h.

182{ return this->get().begin(); }

References Botan::detail::Strong_Base< T >::get().

◆ begin() [2/2]

template<concepts::container T>
decltype(auto) Botan::detail::Container_Strong_Adapter_Base< T >::begin ( )
inlinenoexceptinherited

◆ capacity()

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::capacity ( ) const
inlineinherited

Definition at line 1492 of file bitvector.h.

1492{ return this->get().capacity(); }

References Botan::detail::Strong_Base< T >::get().

◆ cbegin() [1/2]

template<concepts::container T>
decltype(auto) Botan::detail::Container_Strong_Adapter_Base< T >::cbegin ( ) const
inlinenoexceptinherited

Iterate the wrapped container

Returns
a const iterator to the first element

Definition at line 198 of file strong_type.h.

198{ return this->get().cbegin(); }

References Botan::detail::Strong_Base< T >::get().

◆ cbegin() [2/2]

template<concepts::container T>
decltype(auto) Botan::detail::Container_Strong_Adapter_Base< T >::cbegin ( )
inlinenoexceptinherited

Iterate the wrapped container

Returns
a const iterator to the first element

Definition at line 194 of file strong_type.h.

194{ return this->get().cbegin(); }

References Botan::detail::Strong_Base< T >::get().

◆ cend() [1/2]

template<concepts::container T>
decltype(auto) Botan::detail::Container_Strong_Adapter_Base< T >::cend ( ) const
inlinenoexceptinherited

Iterate the wrapped container

Returns
a const iterator one past the last element

Definition at line 206 of file strong_type.h.

206{ return this->get().cend(); }

References Botan::detail::Strong_Base< T >::get().

◆ cend() [2/2]

template<concepts::container T>
decltype(auto) Botan::detail::Container_Strong_Adapter_Base< T >::cend ( )
inlinenoexceptinherited

Iterate the wrapped container

Returns
a const iterator one past the last element

Definition at line 202 of file strong_type.h.

202{ return this->get().cend(); }

References Botan::detail::Strong_Base< T >::get().

◆ data() [1/2]

template<concepts::container T>
decltype(auto) Botan::detail::Strong_Adapter< T >::data ( ) const
inlinenoexceptinherited

Definition at line 281 of file strong_type.h.

281{ return this->get().data(); }

References Botan::detail::Strong_Base< T >::get().

◆ data() [2/2]

template<concepts::container T>
decltype(auto) Botan::detail::Strong_Adapter< T >::data ( )
inlinenoexceptinherited

◆ empty()

template<concepts::container T>
bool Botan::detail::Container_Strong_Adapter_Base< T >::empty ( ) const
inlinenoexceptinherited

Query whether the wrapped container is empty

Returns
true if the container holds no elements

Definition at line 214 of file strong_type.h.

216 {
217 return this->get().empty();
218 }

References empty(), and Botan::detail::Strong_Base< T >::get().

Referenced by empty(), and Botan::TLS::Client_Hello_12::session_handle().

◆ end() [1/2]

template<concepts::container T>
decltype(auto) Botan::detail::Container_Strong_Adapter_Base< T >::end ( ) const
inlinenoexceptinherited

Iterate the wrapped container

Returns
a const iterator one past the last element

Definition at line 190 of file strong_type.h.

190{ return this->get().end(); }

References Botan::detail::Strong_Base< T >::get().

◆ end() [2/2]

template<concepts::container T>
decltype(auto) Botan::detail::Container_Strong_Adapter_Base< T >::end ( )
inlinenoexceptinherited

◆ equals()

template<concepts::container T>
template<bitvectorish OtherT>
auto Botan::detail::Strong_Adapter< T >::equals ( const OtherT & other) const
inlineinherited

Definition at line 1451 of file bitvector.h.

1451 {
1452 return this->get().equals(other);
1453 }

References Botan::detail::Strong_Base< T >::get().

◆ flip() [1/2]

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::flip ( )
inlineinherited

Definition at line 1425 of file bitvector.h.

1425{ return this->get().flip(); }

References Botan::detail::Strong_Base< T >::get().

◆ flip() [2/2]

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::flip ( size_type i)
inlineinherited

Definition at line 1423 of file bitvector.h.

1423{ return this->get().flip(i); }

References Botan::detail::Strong_Base< T >::get().

◆ from_bytes()

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::from_bytes ( std::span< const uint8_t > bytes,
std::optional< size_type > bits = std::nullopt )
inlineinherited

Definition at line 1479 of file bitvector.h.

1479 {
1480 return this->get().from_bytes(bytes, bits);
1481 }

References Botan::detail::Strong_Base< T >::get().

◆ front() [1/2]

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::front ( )
inlineinherited

Definition at line 1463 of file bitvector.h.

1463{ return this->get().front(); }

References Botan::detail::Strong_Base< T >::get().

◆ front() [2/2]

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::front ( ) const
inlineinherited

Definition at line 1461 of file bitvector.h.

1461{ return this->get().front(); }

References Botan::detail::Strong_Base< T >::get().

◆ get() [1/8]

template<typename T>
T & Botan::detail::Strong_Base< T >::get ( ) &
inlineconstexprinherited

Access the wrapped value

Returns
reference to the wrapped value

Definition at line 109 of file strong_type.h.

109{ return m_value; }

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::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::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().

◆ get() [2/8]

template<typename T>
T & Botan::detail::Strong_Base< T >::get ( ) &
inlineconstexprinherited

Access the wrapped value

Returns
reference to the wrapped value

Definition at line 109 of file strong_type.h.

109{ return m_value; }

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::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::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().

◆ get() [3/8]

template<typename T>
T && Botan::detail::Strong_Base< T >::get ( ) &&
inlineconstexprinherited

Access the wrapped value

Returns
rvalue reference to the wrapped value

Definition at line 117 of file strong_type.h.

117{ return std::move(m_value); }

◆ get() [4/8]

template<typename T>
T && Botan::detail::Strong_Base< T >::get ( ) &&
inlineconstexprinherited

Access the wrapped value

Returns
rvalue reference to the wrapped value

Definition at line 117 of file strong_type.h.

117{ return std::move(m_value); }

◆ get() [5/8]

template<typename T>
const T & Botan::detail::Strong_Base< T >::get ( ) const &
inlineconstexprinherited

Access the wrapped value

Returns
const reference to the wrapped value

Definition at line 113 of file strong_type.h.

113{ return m_value; }

◆ get() [6/8]

template<typename T>
const T & Botan::detail::Strong_Base< T >::get ( ) const &
inlineconstexprinherited

Access the wrapped value

Returns
const reference to the wrapped value

Definition at line 113 of file strong_type.h.

113{ return m_value; }

◆ get() [7/8]

template<typename T>
const T && Botan::detail::Strong_Base< T >::get ( ) const &&
inlineconstexprinherited

Access the wrapped value

Returns
const rvalue reference to the wrapped value

Definition at line 121 of file strong_type.h.

121{ return std::move(m_value); }

◆ get() [8/8]

template<typename T>
const T && Botan::detail::Strong_Base< T >::get ( ) const &&
inlineconstexprinherited

Access the wrapped value

Returns
const rvalue reference to the wrapped value

Definition at line 121 of file strong_type.h.

121{ return std::move(m_value); }

◆ hamming_weight()

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::hamming_weight ( ) const
inlineinherited

Definition at line 1477 of file bitvector.h.

1477{ return this->get().hamming_weight(); }

References Botan::detail::Strong_Base< T >::get().

◆ has_capability()

template<typename T, typename TagTypeT, typename... Capabilities>
template<typename CapabilityT>
constexpr bool Botan::Strong< T, TagTypeT, Capabilities >::has_capability ( )
inlinestaticconstexpr

Check whether this strong type was declared with the given capability tag

Returns
true if CapabilityT is one of this type's Capabilities

Definition at line 307 of file strong_type.h.

◆ has_odd_hamming_weight()

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::has_odd_hamming_weight ( ) const
inlineinherited

Definition at line 1475 of file bitvector.h.

1475{ return this->get().has_odd_hamming_weight(); }

References Botan::detail::Strong_Base< T >::get().

◆ none_vartime()

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::none_vartime ( ) const
inlineinherited

Definition at line 1473 of file bitvector.h.

1473{ return this->get().none_vartime(); }

References Botan::detail::Strong_Base< T >::get().

◆ operator[]() [1/2]

template<concepts::container T>
template<typename U>
decltype(auto) Botan::detail::Container_Strong_Adapter_Base< T >::operator[] ( U && i) const
inlinenoexceptinherited

Element access

Parameters
ithe index of the element
Returns
const reference to the element at index i

Definition at line 240 of file strong_type.h.

References Botan::detail::Strong_Base< T >::get().

◆ operator[]() [2/2]

template<concepts::container T>
template<typename U>
decltype(auto) Botan::detail::Container_Strong_Adapter_Base< T >::operator[] ( U && i)
inlinenoexceptinherited

Element access

Parameters
ithe index of the element
Returns
reference to the element at index i

Definition at line 248 of file strong_type.h.

248 {
249 return this->get()[std::forward<U>(i)];
250 }

References Botan::detail::Strong_Base< T >::get().

◆ pop_back()

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::pop_back ( )
inlineinherited

Definition at line 1459 of file bitvector.h.

1459{ return this->get().pop_back(); }

References Botan::detail::Strong_Base< T >::get().

◆ push_back() [1/2]

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::push_back ( bool b)
inlineinherited

Definition at line 1455 of file bitvector.h.

1455{ return this->get().push_back(b); }

References Botan::detail::Strong_Base< T >::get().

◆ push_back() [2/2]

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::push_back ( CT::Choice b)
inlineinherited

Definition at line 1457 of file bitvector.h.

1457{ return this->get().push_back(b); }

References Botan::detail::Strong_Base< T >::get().

◆ reserve()

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::reserve ( size_type n)
inlineinherited

Definition at line 1494 of file bitvector.h.

1494{ return this->get().reserve(n); }

References Botan::detail::Strong_Base< T >::get().

◆ resize()

template<concepts::container T>
void Botan::detail::Container_Strong_Adapter_Base< T >::resize ( size_type size)
inlinenoexceptinherited

Change the number of elements held

Parameters
sizethe new number of elements

Definition at line 222 of file strong_type.h.

224 {
225 this->get().resize(size);
226 }
size_type size() const noexcept(noexcept(this->get().size()))

References Botan::detail::Strong_Base< T >::get(), and size().

◆ set()

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::set ( size_type i)
inlineinherited

Definition at line 1419 of file bitvector.h.

1419{ return this->get().set(i); }

References Botan::detail::Strong_Base< T >::get().

◆ size()

template<concepts::container T>
size_type Botan::detail::Container_Strong_Adapter_Base< T >::size ( ) const
inlinenoexceptinherited

◆ subvector() [1/2]

template<concepts::container T>
template<typename OutT>
auto Botan::detail::Strong_Adapter< T >::subvector ( size_type pos) const
inlineinherited

Definition at line 1440 of file bitvector.h.

1440 {
1441 return this->get().template subvector<OutT>(pos);
1442 }
auto subvector(size_type pos, std::optional< size_type > length=std::nullopt) const
Definition bitvector.h:1433

References Botan::detail::Strong_Base< T >::get(), and subvector().

◆ subvector() [2/2]

template<concepts::container T>
template<bitvectorish OutT = T>
auto Botan::detail::Strong_Adapter< T >::subvector ( size_type pos,
std::optional< size_type > length = std::nullopt ) const
inlineinherited

Definition at line 1433 of file bitvector.h.

1433 {
1434 return this->get().template subvector<OutT>(pos, length);
1435 }

References Botan::detail::Strong_Base< T >::get(), and subvector().

Referenced by Botan::Classic_McEliece_Matrix::mul(), subvector(), and subvector().

◆ subvector_replace()

template<concepts::container T>
template<typename InT>
void Botan::detail::Strong_Adapter< T >::subvector_replace ( size_type pos,
InT value )
inlineinherited

Definition at line 1446 of file bitvector.h.

1446 {
1447 return this->get().subvector_replace(pos, value);
1448 }

References Botan::detail::Strong_Base< T >::get().

◆ to_bytes() [1/2]

template<concepts::container T>
template<typename OutT = T>
auto Botan::detail::Strong_Adapter< T >::to_bytes ( ) const
inlineinherited

Definition at line 1484 of file bitvector.h.

1484 {
1485 return this->get().template to_bytes<OutT>();
1486 }

References Botan::detail::Strong_Base< T >::get(), and to_bytes().

Referenced by to_bytes().

◆ to_bytes() [2/2]

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::to_bytes ( std::span< uint8_t > out) const
inlineinherited

Definition at line 1488 of file bitvector.h.

1488{ return this->get().to_bytes(out); }

References Botan::detail::Strong_Base< T >::get().

◆ to_string()

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::to_string ( ) const
inlineinherited

Definition at line 1490 of file bitvector.h.

1490{ return this->get().to_string(); }

References Botan::detail::Strong_Base< T >::get().

◆ unset()

template<concepts::container T>
auto Botan::detail::Strong_Adapter< T >::unset ( size_type i)
inlineinherited

Definition at line 1421 of file bitvector.h.

1421{ return this->get().unset(i); }

References Botan::detail::Strong_Base< T >::get().


The documentation for this class was generated from the following file: