Signet Forge 0.1.1
C++20 Parquet library with AI-native extensions
DEMO
Loading...
Searching...
No Matches
pme_facade.hpp File Reference

High-level PME facade for safe encrypted Parquet I/O. More...

#include "signet/crypto/cipher_interface.hpp"
#include "signet/crypto/key_metadata.hpp"
#include "signet/crypto/hkdf.hpp"
#include "signet/crypto/pme.hpp"
#include "signet/error.hpp"
#include <array>
#include <cstdint>
#include <memory>
#include <string>
#include <unordered_map>
#include <vector>

Go to the source code of this file.

Classes

class  signet::forge::crypto::KeyHandle
 Opaque handle to AES-256 key material held in a SecureKeyBuffer. More...
 
struct  signet::forge::crypto::EncryptedWriterOptions
 High-level encryption options for ParquetWriter. More...
 
struct  signet::forge::crypto::EncryptedReaderOptions
 High-level decryption options for ParquetReader. More...
 

Namespaces

namespace  signet
 
namespace  signet::forge
 
namespace  signet::forge::crypto
 

Enumerations

enum class  signet::forge::crypto::ColumnClassification : uint8_t {
  signet::forge::crypto::REFERENCE = 0 , signet::forge::crypto::FINANCIAL = 1 , signet::forge::crypto::PII = 2 , signet::forge::crypto::HEALTH = 3 ,
  signet::forge::crypto::RESTRICTED = 4
}
 Classification determines whether a column is encrypted and with which key derivation context. More...
 

Detailed Description

High-level PME facade for safe encrypted Parquet I/O.

Provides an opaque KeyHandle that keeps all key material in C++ memory with SecureKeyBuffer (mlock + volatile zeroing). Python bindings expose only the handle — raw key bytes never cross the FFI boundary.

Usage (C++):

auto key = KeyHandle::generate(); // CSPRNG → SecureKeyBuffer
EncryptedWriterOptions eopts;
eopts.master_key = &key;
eopts.classify("l_comment", ColumnClassification::PII);
eopts.classify("l_extendedprice", ColumnClassification::FINANCIAL);
// ... pass eopts to ParquetWriter::open via WriterOptions.encryption

Usage (Python):

key = sf.KeyHandle.generate()
eopts = sf.EncryptedWriterOptions(key)
eopts.classify("l_comment", sf.ColumnClassification.PII)
writer = sf.ParquetWriter.open_encrypted("out.parquet", schema, eopts)

Definition in file pme_facade.hpp.