1#ifndef SAFEHERON_SGX_TRUSTED_SEAL_HANDLER_H
2#define SAFEHERON_SGX_TRUSTED_SEAL_HANDLER_H
9#include "sgx_attributes.h"
36 sgx_attributes_t attribute_mask_{};
37 sgx_misc_select_t misc_mask_;
38 std::vector<uint8_t> additional_mac_text_{};
39 std::string last_error_;
46 explicit SealHandler(uint16_t key_policy = SGX_KEYPOLICY_MRENCLAVE);
58 attribute_mask_ = attribute_mask;
65 [[maybe_unused]]
void SetMiscMask(sgx_misc_select_t misc_mask) {
66 misc_mask_ = misc_mask;
75 additional_mac_text_.assign(mac_text, mac_text + length);
84 std::optional<std::vector<uint8_t>>
SealData(
const std::vector<uint8_t>& text_to_encrypt);
93 std::optional<std::vector<uint8_t>>
SealData(
const uint8_t* text_to_encrypt, uint32_t length);
101 std::optional<UnsealedData>
UnsealData(
const std::vector<uint8_t>& sealed_data);
110 std::optional<UnsealedData>
UnsealData(
const uint8_t* sealed_data, uint32_t length);
Provides SGX sealing and unsealing operations.
Definition ssgx_utils_t_seal_handler.h:33
std::optional< UnsealedData > UnsealData(const std::vector< uint8_t > &sealed_data)
Unseals previously sealed data and retrieves the original plaintext.
std::optional< std::vector< uint8_t > > SealData(const uint8_t *text_to_encrypt, uint32_t length)
Seals data using AES-GCM encryption (pointer-based version).
void SetAdditionalMacText(const uint8_t *mac_text, uint32_t length)
Sets additional data that will be protected by MAC but not encrypted.
Definition ssgx_utils_t_seal_handler.h:74
void SetMiscMask(sgx_misc_select_t misc_mask)
Sets the miscellaneous mask for key derivation.
Definition ssgx_utils_t_seal_handler.h:65
void SetAttributeMask(sgx_attributes_t attribute_mask)
Sets the full SGX attribute mask for sealing or key derivation operations.
Definition ssgx_utils_t_seal_handler.h:57
std::string GetLastError() const
Retrieves the last error message.
Definition ssgx_utils_t_seal_handler.h:116
SealHandler(uint16_t key_policy=SGX_KEYPOLICY_MRENCLAVE)
Constructs a SealHandler with a specified key policy.
std::optional< std::vector< uint8_t > > SealData(const std::vector< uint8_t > &text_to_encrypt)
Seals data using AES-GCM encryption.
std::optional< UnsealedData > UnsealData(const uint8_t *sealed_data, uint32_t length)
Unseals previously sealed data using pointer-based input.
Definition ssgx_attestation_t.h:6
Represents unsealed data, including decrypted text and optional additional MAC text.
Definition ssgx_utils_t_seal_handler.h:22
std::vector< uint8_t > additional_mac_text
MAC-protected additional data.
Definition ssgx_utils_t_seal_handler.h:23
std::vector< uint8_t > decrypted_text
The decrypted content.
Definition ssgx_utils_t_seal_handler.h:24