40 #define TDE_DK_ALGORITHM TDE_ALGORITHM_AES 43 #define TDE_DATA_PAGE_ENC_OFFSET sizeof (FILEIO_PAGE_RESERVED) 44 #define TDE_DATA_PAGE_ENC_LENGTH DB_PAGESIZE 45 #define TDE_LOG_PAGE_ENC_OFFSET sizeof (LOG_HDRPAGE) 46 #define TDE_LOG_PAGE_ENC_LENGTH ((LOG_PAGESIZE) - (TDE_LOG_PAGE_ENC_OFFSET)) 49 #define TDE_DATA_PAGE_NONCE_LENGTH 16 50 #define TDE_LOG_PAGE_NONCE_LENGTH 16 51 #define TDE_DK_NONCE_LENGTH 16 54 #define TDE_MASTER_KEY_LENGTH 32 55 #define TDE_DATA_KEY_LENGTH 32 58 #define TDE_MK_FILE_CONTENTS_START CUBRID_MAGIC_MAX_LENGTH 59 #define TDE_MK_FILE_ITEM_SIZE (sizeof (TDE_MK_FILE_ITEM)) 60 #define TDE_MK_FILE_ITEM_OFFSET(index) \ 61 (TDE_MK_FILE_CONTENTS_START + TDE_MK_FILE_ITEM_SIZE * (index)) 62 #define TDE_MK_FILE_ITEM_INDEX(offset) \ 63 (((offset) - TDE_MK_FILE_CONTENTS_START) / TDE_MK_FILE_ITEM_SIZE) 65 #define TDE_MK_FILE_ITEM_COUNT_MAX 128 98 #ifdef UNSTABLE_TDE_FOR_REPLICATION_LOG 100 #define TDE_HA_SOCK_NAME ".ha_sock" 104 #if !defined(CS_MODE) 107 #define LOG_MAY_CONTAIN_USER_DATA(rcvindex) \ 108 ((rcvindex) == RVHF_INSERT \ 109 || (rcvindex) == RVHF_DELETE \ 110 || (rcvindex) == RVHF_UPDATE \ 111 || (rcvindex) == RVHF_MVCC_INSERT \ 112 || (rcvindex) == RVHF_MVCC_DELETE_MODIFY_HOME \ 113 || (rcvindex) == RVHF_UPDATE_NOTIFY_VACUUM \ 114 || (rcvindex) == RVHF_INSERT_NEWHOME \ 115 || (rcvindex) == RVHF_MVCC_REDISTRIBUTE \ 116 || (rcvindex) == RVHF_MVCC_UPDATE_OVERFLOW \ 117 || (rcvindex) == RVOVF_NEWPAGE_INSERT \ 118 || (rcvindex) == RVOVF_PAGE_UPDATE \ 119 || (rcvindex) == RVBT_INS_PGRECORDS \ 120 || (rcvindex) == RVBT_NDRECORD_UPD \ 121 || (rcvindex) == RVBT_NDRECORD_INS \ 122 || (rcvindex) == RVBT_NDRECORD_DEL \ 123 || (rcvindex) == RVBT_COPYPAGE \ 124 || (rcvindex) == RVBT_DELETE_OBJECT_PHYSICAL \ 125 || (rcvindex) == RVBT_NON_MVCC_INSERT_OBJECT \ 126 || (rcvindex) == RVBT_MVCC_INSERT_OBJECT \ 127 || (rcvindex) == RVBT_MVCC_INSERT_OBJECT_UNQ \ 128 || (rcvindex) == RVBT_RECORD_MODIFY_UNDOREDO \ 129 || (rcvindex) == RVBT_RECORD_MODIFY_NO_UNDO \ 130 || (rcvindex) == RVBT_RECORD_MODIFY_COMPENSATE \ 131 || (rcvindex) == RVREPL_DATA_INSERT \ 132 || (rcvindex) == RVREPL_DATA_UPDATE \ 133 || (rcvindex) == RVREPL_DATA_DELETE \ 134 || (rcvindex) == RVREPL_DATA_UPDATE_START \ 135 || (rcvindex) == RVREPL_DATA_UPDATE_END \ 136 || (rcvindex) == RVBT_ONLINE_INDEX_UNDO_TRAN_INSERT \ 137 || (rcvindex) == RVBT_ONLINE_INDEX_UNDO_TRAN_DELETE) 179 bool keep_dest_mount,
bool keep_src_mount);
182 const time_t created_time);
203 extern int tde_create_mk (
unsigned char *master_key, time_t * created_time);
204 extern int tde_add_mk (
int vdes,
const unsigned char *master_key, time_t created_time,
int *mk_index);
205 extern int tde_find_mk (
int vdes,
int mk_index,
unsigned char *master_key, time_t * created_time);
206 extern int tde_find_first_mk (
int vdes,
int *mk_index,
unsigned char *master_key, time_t * created_time);
208 extern void tde_print_mk (
const unsigned char *master_key);
void tde_make_keys_file_fullname(char *keys_vol_fullname, const char *db_full_name, bool ignore_parm)
int tde_cipher_initialize(THREAD_ENTRY *thread_p, const HFID *keyinfo_hfid, const char *mk_path_given)
int tde_find_mk(int vdes, int mk_index, unsigned char *master_key, time_t *created_time)
int tde_encrypt_log_page(const LOG_PAGE *logpage_plain, TDE_ALGORITHM tde_algo, LOG_PAGE *logpage_cipher)
struct tde_data_key_set TDE_DATA_KEY_SET
struct tde_keyinfo TDE_KEYINFO
int tde_encrypt_data_page(const FILEIO_PAGE *iopage_plain, TDE_ALGORITHM tde_algo, bool is_temp, FILEIO_PAGE *iopage_cipher)
int tde_decrypt_data_page(const FILEIO_PAGE *iopage_cipher, TDE_ALGORITHM tde_algo, bool is_temp, FILEIO_PAGE *iopage_plain)
int64_t temp_write_counter
int tde_load_mk(int vdes, const TDE_KEYINFO *keyinfo, unsigned char *master_key)
int tde_change_mk(THREAD_ENTRY *thread_p, const int mk_index, const unsigned char *master_key, const time_t created_time)
int tde_create_mk(unsigned char *master_key, time_t *created_time)
#define TDE_DATA_KEY_LENGTH
unsigned char perm_key[TDE_DATA_KEY_LENGTH]
int tde_copy_keys_file(THREAD_ENTRY *thread_p, const char *dest_fullname, const char *src_fullname, bool keep_dest_mount, bool keep_src_mount)
const char * tde_get_algorithm_name(TDE_ALGORITHM tde_algo)
bool tde_validate_keys_file(int vdes)
unsigned char temp_key[TDE_DATA_KEY_LENGTH]
static void print_value(FIELD_NAME name, const void *value, FIELD_TYPE type)
int tde_find_first_mk(int vdes, int *mk_index, unsigned char *master_key, time_t *created_time)
struct tde_cipher TDE_CIPHER
int tde_delete_mk(int vdes, const int mk_index)
enum tde_data_key_type TDE_DATA_KEY_TYPE
int tde_initialize(THREAD_ENTRY *thread_p, HFID *keyinfo_hfid)
TDE_DATA_KEY_SET data_keys
int tde_decrypt_log_page(const LOG_PAGE *logpage_cipher, TDE_ALGORITHM tde_algo, LOG_PAGE *logpage_plain)
unsigned char log_key[TDE_DATA_KEY_LENGTH]
struct tde_mk_file_item TDE_MK_FILE_ITEM
int tde_get_keyinfo(THREAD_ENTRY *thread_p, TDE_KEYINFO *keyinfo)
#define TDE_MASTER_KEY_LENGTH
void tde_print_mk(const unsigned char *master_key)
int tde_dump_mks(int vdes, bool print_value)
int tde_add_mk(int vdes, const unsigned char *master_key, time_t created_time, int *mk_index)