Botan 3.5.0
Crypto and TLS for C&
mem_ops.h File Reference

Public Header. More...

#include <botan/concepts.h>
#include <botan/types.h>
#include <array>
#include <cstring>
#include <ranges>
#include <span>
#include <type_traits>
#include <vector>
#include <botan/allocator.h>

Go to the source code of this file.

Namespaces

namespace  Botan
 

Functions

template<typename T , typename Alloc , typename Alloc2 >
size_t Botan::buffer_insert (std::vector< T, Alloc > &buf, size_t buf_offset, const std::vector< T, Alloc2 > &input)
 
template<typename T , typename Alloc >
size_t Botan::buffer_insert (std::vector< T, Alloc > &buf, size_t buf_offset, const T input[], size_t input_length)
 
uint8_t * Botan::cast_char_ptr_to_uint8 (char *s)
 
const uint8_t * Botan::cast_char_ptr_to_uint8 (const char *s)
 
const char * Botan::cast_uint8_ptr_to_char (const uint8_t *b)
 
char * Botan::cast_uint8_ptr_to_char (uint8_t *b)
 
constexpr void Botan::clear_bytes (void *ptr, size_t bytes)
 
template<ranges::contiguous_output_range R>
requires std::is_trivially_copyable_v<std::ranges::range_value_t<R>>
constexpr void Botan::clear_mem (R &&mem)
 
template<typename T >
constexpr void Botan::clear_mem (T *ptr, size_t n)
 
bool Botan::constant_time_compare (const uint8_t x[], const uint8_t y[], size_t len)
 
bool Botan::constant_time_compare (std::span< const uint8_t > x, std::span< const uint8_t > y)
 
template<ranges::contiguous_output_range OutR, ranges::contiguous_range InR>
requires std::is_same_v<std::ranges::range_value_t<OutR>, std::ranges::range_value_t<InR>> && std::is_trivially_copyable_v<std::ranges::range_value_t<InR>>
constexpr void Botan::copy_mem (OutR &&out, InR &&in)
 
template<typename T >
requires std::is_trivial<typename std::decay<T>::type>::value
constexpr void Botan::copy_mem (T *out, const T *in, size_t n)
 
uint8_t Botan::ct_compare_u8 (const uint8_t x[], const uint8_t y[], size_t len)
 
template<typename Alloc , typename Alloc2 >
std::vector< uint8_t, Alloc > & Botan::operator^= (std::vector< uint8_t, Alloc > &out, const std::vector< uint8_t, Alloc2 > &in)
 
template<typename T >
bool Botan::same_mem (const T *p1, const T *p2, size_t n)
 
void Botan::secure_scrub_memory (ranges::contiguous_output_range auto &&data)
 
void Botan::secure_scrub_memory (void *ptr, size_t n)
 
constexpr void Botan::set_mem (uint8_t *ptr, size_t n, uint8_t val)
 
template<typename To >
requires std::is_trivial<To>::value
constexpr To Botan::typecast_copy (const uint8_t src[]) noexcept
 
template<typename ToT , ranges::contiguous_range FromR>
requires std::is_default_constructible_v<ToT> && std::is_trivially_copyable_v<ToT> && std::is_trivially_copyable_v<std::ranges::range_value_t<FromR>>
constexpr ToT Botan::typecast_copy (FromR &&src) noexcept
 
template<typename T >
requires std::is_trivial<typename std::decay<T>::type>::value
constexpr void Botan::typecast_copy (T &out, const uint8_t in[])
 
template<typename T >
requires std::is_trivial<T>::value
constexpr void Botan::typecast_copy (T out[], const uint8_t in[], size_t N)
 
template<ranges::contiguous_output_range ToR, typename FromT >
requires std::is_trivially_copyable_v<FromT> && (!std::ranges::range<FromT>) && std::is_trivially_copyable_v<std::ranges::range_value_t<ToR>>
constexpr void Botan::typecast_copy (ToR &&out, const FromT &in)
 
template<ranges::contiguous_output_range ToR, ranges::contiguous_range FromR>
requires std::is_trivially_copyable_v<std::ranges::range_value_t<FromR>> && std::is_trivially_copyable_v<std::ranges::range_value_t<ToR>>
constexpr void Botan::typecast_copy (ToR &&out, FromR &&in)
 
template<typename ToT , ranges::contiguous_range FromR>
requires std::is_trivially_copyable_v<std::ranges::range_value_t<FromR>> && std::is_trivially_copyable_v<ToT> && (!std::ranges::range<ToT>)
constexpr void Botan::typecast_copy (ToT &out, FromR &&in) noexcept
 
template<typename T >
constexpr void Botan::typecast_copy (uint8_t out[], const T &in)
 
template<typename T >
requires std::is_trivially_copyable<T>::value
constexpr void Botan::typecast_copy (uint8_t out[], T in[], size_t N)
 
constexpr void Botan::xor_buf (ranges::contiguous_output_range< uint8_t > auto &&out, ranges::contiguous_range< uint8_t > auto &&in)
 
constexpr void Botan::xor_buf (ranges::contiguous_output_range< uint8_t > auto &&out, ranges::contiguous_range< uint8_t > auto &&in1, ranges::contiguous_range< uint8_t > auto &&in2)
 
void Botan::xor_buf (std::span< uint8_t > out, std::span< const uint8_t > in, size_t n)
 
template<typename Alloc , typename Alloc2 >
void Botan::xor_buf (std::vector< uint8_t, Alloc > &out, const uint8_t *in, const std::vector< uint8_t, Alloc2 > &in2, size_t n)
 
template<typename Alloc >
void Botan::xor_buf (std::vector< uint8_t, Alloc > &out, const uint8_t *in, size_t n)
 
void Botan::xor_buf (uint8_t out[], const uint8_t in[], const uint8_t in2[], size_t length)
 
void Botan::xor_buf (uint8_t out[], const uint8_t in[], size_t length)
 

Detailed Description

Public Header.

Definition in file mem_ops.h.