Logger System 0.1.3
High-performance C++20 thread-safe logging system with asynchronous capabilities
Loading...
Searching...
No Matches
kcenon::logger::security::secure_key Class Reference

RAII wrapper for encryption keys with secure memory management. More...

#include <secure_key_storage.h>

Collaboration diagram for kcenon::logger::security::secure_key:
Collaboration graph

Public Member Functions

 secure_key (size_t size)
 Construct with specified size.
 
 secure_key (std::vector< uint8_t > data)
 Construct with data.
 
 ~secure_key ()
 Destructor - securely clears key from memory.
 
 secure_key (const secure_key &)=delete
 
secure_keyoperator= (const secure_key &)=delete
 
 secure_key (secure_key &&other) noexcept
 
secure_keyoperator= (secure_key &&other) noexcept
 
const std::vector< uint8_t > & data () const
 Get const reference to key data.
 
std::vector< uint8_t > & mutable_data ()
 Get mutable reference to key data (use with caution)
 
size_t size () const
 Get key size in bytes.
 

Private Member Functions

void secure_clear ()
 Securely clear key data from memory.
 

Private Attributes

std::vector< uint8_t > data_
 

Detailed Description

RAII wrapper for encryption keys with secure memory management.

Features:

  • Automatic memory cleanup on destruction
  • Move-only semantics (prevents accidental copies)
  • Secure random generation with OpenSSL (if available)

Definition at line 40 of file secure_key_storage.h.

Constructor & Destructor Documentation

◆ secure_key() [1/4]

kcenon::logger::security::secure_key::secure_key ( size_t size)
inlineexplicit

Construct with specified size.

Parameters
sizeKey size in bytes (32 for AES-256)

Definition at line 46 of file secure_key_storage.h.

47 : data_(size, 0) {
48 }
size_t size() const
Get key size in bytes.

◆ secure_key() [2/4]

kcenon::logger::security::secure_key::secure_key ( std::vector< uint8_t > data)
inlineexplicit

Construct with data.

Parameters
dataKey data

Definition at line 54 of file secure_key_storage.h.

55 : data_(std::move(data)) {
56 }
const std::vector< uint8_t > & data() const
Get const reference to key data.

◆ ~secure_key()

kcenon::logger::security::secure_key::~secure_key ( )
inline

Destructor - securely clears key from memory.

Definition at line 61 of file secure_key_storage.h.

61 {
63 }
void secure_clear()
Securely clear key data from memory.

References secure_clear().

Here is the call graph for this function:

◆ secure_key() [3/4]

kcenon::logger::security::secure_key::secure_key ( const secure_key & )
delete

◆ secure_key() [4/4]

kcenon::logger::security::secure_key::secure_key ( secure_key && other)
inlinenoexcept

Definition at line 70 of file secure_key_storage.h.

71 : data_(std::move(other.data_)) {
72 // Clear the moved-from object
73 other.secure_clear();
74 }

Member Function Documentation

◆ data()

const std::vector< uint8_t > & kcenon::logger::security::secure_key::data ( ) const
inline

Get const reference to key data.

Definition at line 88 of file secure_key_storage.h.

88 {
89 return data_;
90 }

References data_.

Referenced by kcenon::logger::security::audit_logger::calculate_hmac(), kcenon::logger::encrypted_writer::decrypt_entry(), and kcenon::logger::security::secure_key_storage::save_key().

Here is the caller graph for this function:

◆ mutable_data()

std::vector< uint8_t > & kcenon::logger::security::secure_key::mutable_data ( )
inline

Get mutable reference to key data (use with caution)

Definition at line 95 of file secure_key_storage.h.

95 {
96 return data_;
97 }

References data_.

Referenced by kcenon::logger::security::secure_key_storage::generate_key(), and kcenon::logger::security::secure_key_storage::load_key().

Here is the caller graph for this function:

◆ operator=() [1/2]

secure_key & kcenon::logger::security::secure_key::operator= ( const secure_key & )
delete

◆ operator=() [2/2]

secure_key & kcenon::logger::security::secure_key::operator= ( secure_key && other)
inlinenoexcept

Definition at line 76 of file secure_key_storage.h.

76 {
77 if (this != &other) {
79 data_ = std::move(other.data_);
80 other.secure_clear();
81 }
82 return *this;
83 }

References data_, and secure_clear().

Here is the call graph for this function:

◆ secure_clear()

void kcenon::logger::security::secure_key::secure_clear ( )
inlineprivate

Securely clear key data from memory.

Definition at line 110 of file secure_key_storage.h.

110 {
111 if (data_.empty()) {
112 return;
113 }
114
115#ifdef HAS_OPENSSL
116 // Use OpenSSL's secure memory clearing
117 OPENSSL_cleanse(data_.data(), data_.size());
118#else
119 // Fallback: manual zeroing with volatile to prevent optimization
120 volatile uint8_t* ptr = data_.data();
121 for (size_t i = 0; i < data_.size(); ++i) {
122 ptr[i] = 0;
123 }
124#endif
125 data_.clear();
126 }

References data_.

Referenced by operator=(), and ~secure_key().

Here is the caller graph for this function:

◆ size()

size_t kcenon::logger::security::secure_key::size ( ) const
inline

Get key size in bytes.

Definition at line 102 of file secure_key_storage.h.

102 {
103 return data_.size();
104 }

References data_.

Referenced by kcenon::logger::security::audit_logger::calculate_hmac(), kcenon::logger::encrypted_writer::encrypted_writer(), kcenon::logger::encrypted_writer::rotate_key(), and kcenon::logger::security::secure_key_storage::save_key().

Here is the caller graph for this function:

Member Data Documentation

◆ data_

std::vector<uint8_t> kcenon::logger::security::secure_key::data_
private

Definition at line 128 of file secure_key_storage.h.

Referenced by data(), mutable_data(), operator=(), secure_clear(), and size().


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