Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
P
Practical-Cryptdb
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Zhaozhen
Practical-Cryptdb
Commits
eddfc8c1
Commit
eddfc8c1
authored
Jan 11, 2018
by
yiwenshao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
onion_conf can not be used,instead we choose to move onionlayout to onions.cc
parent
46773db4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
138 additions
and
107 deletions
+138
-107
CURRENT.conf
conf/CURRENT.conf
+1
-1
schema.cc
main/schema.cc
+4
-2
onions.cc
util/onions.cc
+127
-0
onions.hh
util/onions.hh
+6
-104
No files found.
conf/CURRENT.conf
View file @
eddfc8c1
...
...
@@ -14,4 +14,4 @@ oAGG: HOM
[
onions
for
str
]
oDET
:
DETJOIN
DET
RND
oOPE
:
OPEFOREIGN
OPE
RND
oSWP
:
SEARCH
#
oSWP: SEARCH
main/schema.cc
View file @
eddfc8c1
...
...
@@ -434,12 +434,14 @@ onionlayout FieldMeta::determineOnionLayout(const AES_KEY *const m_key,
//return CURRENT_NUM_LAYOUT;
//is_onionlayout_equal(CURRENT_NUM_LAYOUT,NUM_ONION_LAYOUT);
//is_onionlayout_equal(NUM_ONION_LAYOUT, CURRENT_NUM_LAYOUT);
return
CURRENT_NUM_LAYOUT
;
// return CURRENT_NUM_LAYOUT;
return
NUM_ONION_LAYOUT
;
}
else
{
// return CURRENT_STR_LAYOUT;
//is_onionlayout_equal(CURRENT_STR_LAYOUT,STR_ONION_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
)
{
if
(
true
==
isMySQLTypeNumeric
(
f
))
{
...
...
util/onions.cc
View file @
eddfc8c1
...
...
@@ -2,6 +2,133 @@
const
char
*
const
dir
=
(
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
{
{
"oDET"
,
oDET
},
{
"oOPE"
,
oOPE
},
...
...
util/onions.hh
View file @
eddfc8c1
...
...
@@ -46,111 +46,13 @@ extern std::map<std::string,SECLEVEL> string_to_seclevel;
//Onion layouts - initial structure of onions
typedef
std
::
map
<
onion
,
std
::
vector
<
SECLEVEL
>
>
onionlayout
;
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
})}
};
//a set of removed onionlayouts
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
})}
};
extern
onionlayout
STR_ONION_LAYOUT
;
extern
onionlayout
NUM_ONION_LAYOUT
;
extern
onionlayout
PLAIN_ONION_LAYOUT
;
extern
onionlayout
BEST_EFFORT_NUM_ONION_LAYOUT
;
extern
onionlayout
BEST_EFFORT_STR_ONION_LAYOUT
;
//commented since it is not used
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment