Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
support
allocators
zeroafterfree.h
Go to the documentation of this file.
1
// Copyright (c) 2009-2010 Satoshi Nakamoto
2
// Copyright (c) 2009-present The Bitcoin Core developers
3
// Distributed under the MIT software license, see the accompanying
4
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
6
#ifndef BITCOIN_SUPPORT_ALLOCATORS_ZEROAFTERFREE_H
7
#define BITCOIN_SUPPORT_ALLOCATORS_ZEROAFTERFREE_H
8
9
#include <
support/cleanse.h
>
10
11
#include <memory>
12
#include <vector>
13
14
template
<
typename
T>
15
struct
zero_after_free_allocator
{
16
using
value_type
=
T
;
17
18
zero_after_free_allocator
() noexcept = default;
19
template <typename U>
20
zero_after_free_allocator
(const
zero_after_free_allocator
<U>&) noexcept
21
{
22
}
23
24
T
*
allocate
(std::size_t n)
25
{
26
return
std::allocator<T>{}.allocate(n);
27
}
28
29
void
deallocate
(
T
* p, std::size_t n)
30
{
31
if
(p !=
nullptr
)
32
memory_cleanse
(p,
sizeof
(
T
) * n);
33
std::allocator<T>{}.deallocate(p, n);
34
}
35
36
template
<
typename
U>
37
friend
bool
operator==
(
const
zero_after_free_allocator
&,
const
zero_after_free_allocator<U>
&)
noexcept
38
{
39
return
true
;
40
}
41
};
42
44
using
SerializeData
= std::vector<std::byte, zero_after_free_allocator<std::byte>>;
45
46
#endif
// BITCOIN_SUPPORT_ALLOCATORS_ZEROAFTERFREE_H
memory_cleanse
void memory_cleanse(void *ptr, size_t len)
Secure overwrite a buffer (possibly containing secret data) with zero-bytes.
Definition
cleanse.cpp:14
cleanse.h
T
#define T(expected, seed, data)
zero_after_free_allocator::allocate
T * allocate(std::size_t n)
Definition
zeroafterfree.h:24
zero_after_free_allocator::deallocate
void deallocate(T *p, std::size_t n)
Definition
zeroafterfree.h:29
zero_after_free_allocator::operator==
friend bool operator==(const zero_after_free_allocator &, const zero_after_free_allocator< U > &) noexcept
Definition
zeroafterfree.h:37
zero_after_free_allocator::zero_after_free_allocator
zero_after_free_allocator() noexcept=default
zero_after_free_allocator::value_type
T value_type
Definition
zeroafterfree.h:16
SerializeData
std::vector< std::byte, zero_after_free_allocator< std::byte > > SerializeData
Byte-vector that clears its contents before deletion.
Definition
zeroafterfree.h:44
Generated on
for Bitcoin Core by
1.17.0