Commit eddfc8c1 authored by yiwenshao's avatar yiwenshao

onion_conf can not be used,instead we choose to move onionlayout to onions.cc

parent 46773db4
...@@ -14,4 +14,4 @@ oAGG: HOM ...@@ -14,4 +14,4 @@ oAGG: HOM
[onions for str] [onions for str]
oDET: DETJOIN DET RND oDET: DETJOIN DET RND
oOPE: OPEFOREIGN OPE RND oOPE: OPEFOREIGN OPE RND
oSWP: SEARCH #oSWP: SEARCH
...@@ -434,12 +434,14 @@ onionlayout FieldMeta::determineOnionLayout(const AES_KEY *const m_key, ...@@ -434,12 +434,14 @@ onionlayout FieldMeta::determineOnionLayout(const AES_KEY *const m_key,
//return CURRENT_NUM_LAYOUT; //return CURRENT_NUM_LAYOUT;
//is_onionlayout_equal(CURRENT_NUM_LAYOUT,NUM_ONION_LAYOUT); //is_onionlayout_equal(CURRENT_NUM_LAYOUT,NUM_ONION_LAYOUT);
//is_onionlayout_equal(NUM_ONION_LAYOUT, CURRENT_NUM_LAYOUT); //is_onionlayout_equal(NUM_ONION_LAYOUT, CURRENT_NUM_LAYOUT);
return CURRENT_NUM_LAYOUT; // return CURRENT_NUM_LAYOUT;
return NUM_ONION_LAYOUT;
} else { } else {
// return CURRENT_STR_LAYOUT; // return CURRENT_STR_LAYOUT;
//is_onionlayout_equal(CURRENT_STR_LAYOUT,STR_ONION_LAYOUT); //is_onionlayout_equal(CURRENT_STR_LAYOUT,STR_ONION_LAYOUT);
//is_onionlayout_equal(STR_ONION_LAYOUT,CURRENT_STR_LAYOUT); //is_onionlayout_equal(STR_ONION_LAYOUT,CURRENT_STR_LAYOUT);
return CURRENT_STR_LAYOUT; // return CURRENT_STR_LAYOUT;
return STR_ONION_LAYOUT;
} }
} else if (SECURITY_RATING::BEST_EFFORT == sec_rating) { } else if (SECURITY_RATING::BEST_EFFORT == sec_rating) {
if (true == isMySQLTypeNumeric(f)) { if (true == isMySQLTypeNumeric(f)) {
......
...@@ -2,6 +2,133 @@ ...@@ -2,6 +2,133 @@
const char* const dir = const char* const dir =
(char*)"/home/casualet/github/Practical-Cryptdb/conf/CURRENT.conf"; (char*)"/home/casualet/github/Practical-Cryptdb/conf/CURRENT.conf";
//static
onionlayout PLAIN_ONION_LAYOUT = {
{oPLAIN, std::vector<SECLEVEL>({SECLEVEL::PLAINVAL})}
};
/*******************************************************************************************
***************************** Onion layout for numeric data ********************************
********************************************************************************************
*/
//static
onionlayout NUM_ONION_LAYOUT = {
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET,
SECLEVEL::RND})},
{oOPE, std::vector<SECLEVEL>({SECLEVEL::OPEFOREIGN,SECLEVEL::OPE, SECLEVEL::RND})},
{oAGG, std::vector<SECLEVEL>({SECLEVEL::HOM})}
};
//static
onionlayout NUM_ONION_LAYOUT_NOFOREIGN = {
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET,
SECLEVEL::RND})},
{oOPE, std::vector<SECLEVEL>({SECLEVEL::OPE, SECLEVEL::RND})},
{oAGG, std::vector<SECLEVEL>({SECLEVEL::HOM})}
};
//static
onionlayout NUM_ONION_LAYOUT_NORND = {
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET})},
{oOPE, std::vector<SECLEVEL>({SECLEVEL::OPE})},
{oAGG, std::vector<SECLEVEL>({SECLEVEL::HOM})}
};
//static
onionlayout NUM_ONION_LAYOUT_ONLYASHE = {
{oASHE, std::vector<SECLEVEL>({SECLEVEL::ASHE})}
};
//static
onionlayout NUM_ONION_LAYOUT_REPLACE_HOM{
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET, SECLEVEL::RND})},
{oOPE, std::vector<SECLEVEL>({SECLEVEL::OPE, SECLEVEL::RND})},
{oASHE, std::vector<SECLEVEL>({SECLEVEL::ASHE})}
};
//static
onionlayout NUM_ONION_LAYOUT_MANYDET = {
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET,
SECLEVEL::RND})},
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET,
SECLEVEL::RND})}
};
//static
onionlayout BEST_EFFORT_NUM_ONION_LAYOUT = {
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET,
SECLEVEL::RND})},
{oOPE, std::vector<SECLEVEL>({SECLEVEL::OPEFOREIGN,SECLEVEL::OPE, SECLEVEL::RND})},
{oAGG, std::vector<SECLEVEL>({SECLEVEL::HOM})},
// Requires SECLEVEL::DET, otherwise you will have to implement
// encoding for negative numbers in SECLEVEL::RND.
{oPLAIN, std::vector<SECLEVEL>({SECLEVEL::PLAINVAL, SECLEVEL::DET,
SECLEVEL::RND})}
};
//static
onionlayout NUM_ONION_LAYOUT_TEST{
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET,
SECLEVEL::RND})},
{oOPE, std::vector<SECLEVEL>({SECLEVEL::OPEFOREIGN,SECLEVEL::OPE, SECLEVEL::RND})},
{oASHE, std::vector<SECLEVEL>({SECLEVEL::ASHE})}
};
/********************************************************************************************
**************************** Onion layout for str data **************************************
*********************************************************************************************
*/
//static
onionlayout STR_ONION_LAYOUT = {
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET,
SECLEVEL::RND})},
{oOPE, std::vector<SECLEVEL>({SECLEVEL::OPEFOREIGN, SECLEVEL::OPE, SECLEVEL::RND})},
{oSWP, std::vector<SECLEVEL>({SECLEVEL::SEARCH})}
// {oSWP, std::vector<SECLEVEL>({SECLEVEL::PLAINVAL, SECLEVEL::DET,
// SECLEVEL::RND})}
};
//static
onionlayout STR_ONION_LAYOUT_WITHSEARCH{
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET,
SECLEVEL::RND})},
{oOPE, std::vector<SECLEVEL>({SECLEVEL::OPE, SECLEVEL::RND})},
{oSWP, std::vector<SECLEVEL>({SECLEVEL::SEARCH})}
};
//static
onionlayout STR_ONION_LAYOUT_NORND{
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET})},
{oOPE, std::vector<SECLEVEL>({SECLEVEL::OPE})},
{oSWP, std::vector<SECLEVEL>({SECLEVEL::SEARCH})}
};
//static
onionlayout BEST_EFFORT_STR_ONION_LAYOUT = {
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET,
SECLEVEL::RND})},
{oOPE, std::vector<SECLEVEL>({SECLEVEL::OPEFOREIGN,SECLEVEL::OPE, SECLEVEL::RND})},
// {oSWP, std::vector<SECLEVEL>({SECLEVEL::SEARCH})},
// {oSWP, std::vector<SECLEVEL>({SECLEVEL::PLAINVAL, SECLEVEL::DET,
// SECLEVEL::RND})},
// HACK: RND_str expects the data to be a multiple of 16, so we use
// DET (it supports decryption UDF) to handle the padding for us.
{oPLAIN, std::vector<SECLEVEL>({SECLEVEL::PLAINVAL, SECLEVEL::DET,
SECLEVEL::RND})}
};
std::map<std::string,onion> string_to_onion{ std::map<std::string,onion> string_to_onion{
{"oDET",oDET}, {"oDET",oDET},
{"oOPE",oOPE}, {"oOPE",oOPE},
......
...@@ -46,111 +46,13 @@ extern std::map<std::string,SECLEVEL> string_to_seclevel; ...@@ -46,111 +46,13 @@ extern std::map<std::string,SECLEVEL> string_to_seclevel;
//Onion layouts - initial structure of onions //Onion layouts - initial structure of onions
typedef std::map<onion, std::vector<SECLEVEL> > onionlayout; typedef std::map<onion, std::vector<SECLEVEL> > onionlayout;
static onionlayout PLAIN_ONION_LAYOUT = { //a set of removed onionlayouts
{oPLAIN, std::vector<SECLEVEL>({SECLEVEL::PLAINVAL})}
};
/*******************************************************************************************
***************************** Onion layout for numeric data ********************************
********************************************************************************************
*/
static onionlayout NUM_ONION_LAYOUT = {
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET,
SECLEVEL::RND})},
{oOPE, std::vector<SECLEVEL>({SECLEVEL::OPEFOREIGN,SECLEVEL::OPE, SECLEVEL::RND})},
{oAGG, std::vector<SECLEVEL>({SECLEVEL::HOM})}
};
static onionlayout NUM_ONION_LAYOUT_NOFOREIGN = {
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET,
SECLEVEL::RND})},
{oOPE, std::vector<SECLEVEL>({SECLEVEL::OPE, SECLEVEL::RND})},
{oAGG, std::vector<SECLEVEL>({SECLEVEL::HOM})}
};
static onionlayout NUM_ONION_LAYOUT_NORND = {
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET})},
{oOPE, std::vector<SECLEVEL>({SECLEVEL::OPE})},
{oAGG, std::vector<SECLEVEL>({SECLEVEL::HOM})}
};
static onionlayout NUM_ONION_LAYOUT_ONLYASHE = {
{oASHE, std::vector<SECLEVEL>({SECLEVEL::ASHE})}
};
static onionlayout NUM_ONION_LAYOUT_REPLACE_HOM{
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET, SECLEVEL::RND})},
{oOPE, std::vector<SECLEVEL>({SECLEVEL::OPE, SECLEVEL::RND})},
{oASHE, std::vector<SECLEVEL>({SECLEVEL::ASHE})}
};
static onionlayout NUM_ONION_LAYOUT_MANYDET = { extern onionlayout STR_ONION_LAYOUT;
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET, extern onionlayout NUM_ONION_LAYOUT;
SECLEVEL::RND})}, extern onionlayout PLAIN_ONION_LAYOUT;
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET, extern onionlayout BEST_EFFORT_NUM_ONION_LAYOUT;
SECLEVEL::RND})} extern onionlayout BEST_EFFORT_STR_ONION_LAYOUT;
};
static onionlayout BEST_EFFORT_NUM_ONION_LAYOUT = {
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET,
SECLEVEL::RND})},
{oOPE, std::vector<SECLEVEL>({SECLEVEL::OPEFOREIGN,SECLEVEL::OPE, SECLEVEL::RND})},
{oAGG, std::vector<SECLEVEL>({SECLEVEL::HOM})},
// Requires SECLEVEL::DET, otherwise you will have to implement
// encoding for negative numbers in SECLEVEL::RND.
{oPLAIN, std::vector<SECLEVEL>({SECLEVEL::PLAINVAL, SECLEVEL::DET,
SECLEVEL::RND})}
};
static onionlayout NUM_ONION_LAYOUT_TEST{
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET,
SECLEVEL::RND})},
{oOPE, std::vector<SECLEVEL>({SECLEVEL::OPEFOREIGN,SECLEVEL::OPE, SECLEVEL::RND})},
{oASHE, std::vector<SECLEVEL>({SECLEVEL::ASHE})}
};
/********************************************************************************************
**************************** Onion layout for str data **************************************
*********************************************************************************************
*/
static onionlayout STR_ONION_LAYOUT = {
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET,
SECLEVEL::RND})},
{oOPE, std::vector<SECLEVEL>({SECLEVEL::OPEFOREIGN, SECLEVEL::OPE, SECLEVEL::RND})},
{oSWP, std::vector<SECLEVEL>({SECLEVEL::SEARCH})}
// {oSWP, std::vector<SECLEVEL>({SECLEVEL::PLAINVAL, SECLEVEL::DET,
// SECLEVEL::RND})}
};
static onionlayout STR_ONION_LAYOUT_WITHSEARCH{
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET,
SECLEVEL::RND})},
{oOPE, std::vector<SECLEVEL>({SECLEVEL::OPE, SECLEVEL::RND})},
{oSWP, std::vector<SECLEVEL>({SECLEVEL::SEARCH})}
};
static onionlayout STR_ONION_LAYOUT_NORND{
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET})},
{oOPE, std::vector<SECLEVEL>({SECLEVEL::OPE})},
{oSWP, std::vector<SECLEVEL>({SECLEVEL::SEARCH})}
};
static onionlayout BEST_EFFORT_STR_ONION_LAYOUT = {
{oDET, std::vector<SECLEVEL>({SECLEVEL::DETJOIN, SECLEVEL::DET,
SECLEVEL::RND})},
{oOPE, std::vector<SECLEVEL>({SECLEVEL::OPEFOREIGN,SECLEVEL::OPE, SECLEVEL::RND})},
// {oSWP, std::vector<SECLEVEL>({SECLEVEL::SEARCH})},
// {oSWP, std::vector<SECLEVEL>({SECLEVEL::PLAINVAL, SECLEVEL::DET,
// SECLEVEL::RND})},
// HACK: RND_str expects the data to be a multiple of 16, so we use
// DET (it supports decryption UDF) to handle the padding for us.
{oPLAIN, std::vector<SECLEVEL>({SECLEVEL::PLAINVAL, SECLEVEL::DET,
SECLEVEL::RND})}
};
//commented since it is not used //commented since it is not used
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment