Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
sgxwallet
Project
Project
Details
Activity
Releases
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
董子豪
sgxwallet
Commits
f0f043ad
Unverified
Commit
f0f043ad
authored
Mar 12, 2020
by
kladko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix test
parent
c2dd35d5
Changes
15
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
727 additions
and
699 deletions
+727
-699
BLSCrypto.cpp
BLSCrypto.cpp
+2
-2
DKGCrypto.cpp
DKGCrypto.cpp
+30
-30
ECDSACrypto.cpp
ECDSACrypto.cpp
+8
-8
LevelDB.cpp
LevelDB.cpp
+5
-5
SEKManager.cpp
SEKManager.cpp
+1
-1
SGXRegistrationServer.cpp
SGXRegistrationServer.cpp
+127
-138
SGXRegistrationServer.h
SGXRegistrationServer.h
+4
-6
SGXWalletServer.cpp
SGXWalletServer.cpp
+422
-423
SGXWalletServer.h
SGXWalletServer.h
+0
-3
SGXWalletServer.hpp
SGXWalletServer.hpp
+87
-43
ServerInit.cpp
ServerInit.cpp
+7
-6
start.sh
docker/start.sh
+1
-1
sgxwallet.c
sgxwallet.c
+4
-4
sgxwallet_common.h
sgxwallet_common.h
+3
-3
testw.cpp
testw.cpp
+26
-26
No files found.
BLSCrypto.cpp
View file @
f0f043ad
...
...
@@ -306,7 +306,7 @@ bool sign_aes(const char* _encryptedKeyHex, const char* _hashHex, size_t _t, siz
bool
bls_sign
(
const
char
*
_encryptedKeyHex
,
const
char
*
_hashHex
,
size_t
_t
,
size_t
_n
,
size_t
_signerIndex
,
char
*
_sig
)
{
if
(
!
is_ae
s
){
if
(
!
encryptKey
s
){
return
sign
(
_encryptedKeyHex
,
_hashHex
,
_t
,
_n
,
_signerIndex
,
_sig
);
}
else
{
...
...
@@ -326,7 +326,7 @@ char* encryptBLSKeyShare2Hex(int *errStatus, char *err_string, const char *_key)
//status = encrypt_key(eid, errStatus, errMsg, keyArray, encryptedKey, &encryptedLen);
status
=
encrypt_key_aes
(
eid
,
errStatus
,
errMsg
->
data
(),
keyArray
->
data
(),
encryptedKey
->
data
(),
&
encryptedLen
);
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"errStatus is {}"
,
*
errStatus
);
spdlog
::
info
(
" errMsg is "
,
errMsg
->
data
()
);
}
...
...
DKGCrypto.cpp
View file @
f0f043ad
...
...
@@ -83,7 +83,7 @@ string gen_dkg_poly( int _t){
uint32_t
enc_len
=
0
;
if
(
!
is_ae
s
)
if
(
!
encryptKey
s
)
status
=
gen_dkg_secret
(
eid
,
&
err_status
,
errMsg
.
data
(),
encrypted_dkg_secret
.
data
(),
&
enc_len
,
_t
);
else
status
=
gen_dkg_secret_aes
(
eid
,
&
err_status
,
errMsg
.
data
(),
encrypted_dkg_secret
.
data
(),
&
enc_len
,
_t
);
...
...
@@ -91,13 +91,13 @@ string gen_dkg_poly( int _t){
throw
RPCException
(
-
666
,
errMsg
.
data
()
)
;
}
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"gen_dkg_secret, status {}"
,
err_status
,
" err msg "
,
errMsg
.
data
());
spdlog
::
info
(
"in DKGCrypto encr len is {}"
,
enc_len
);
}
uint64_t
length
=
DKG_MAX_SEALED_LEN
;
if
(
is_ae
s
){
if
(
encryptKey
s
){
length
=
enc_len
;
}
...
...
@@ -118,7 +118,7 @@ vector <vector<string>> get_verif_vect(const char* encryptedPolyHex, int t, int
//char errMsg1[BUF_LEN];
int
err_status
=
0
;
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
// cerr << "got encr poly " << encryptedPolyHex << endl;
spdlog
::
info
(
"got encr poly size {}"
,
char_traits
<
char
>::
length
(
encryptedPolyHex
));
}
...
...
@@ -137,7 +137,7 @@ vector <vector<string>> get_verif_vect(const char* encryptedPolyHex, int t, int
throw
RPCException
(
INVALID_HEX
,
"Invalid encryptedPolyHex"
);
}
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
//cerr << "hex_encr_poly is " << encryptedPolyHex << std::endl;
spdlog
::
info
(
"hex_encr_poly length is {}"
,
strlen
(
encryptedPolyHex
));
spdlog
::
info
(
"enc len {}"
,
enc_len
);
...
...
@@ -148,7 +148,7 @@ vector <vector<string>> get_verif_vect(const char* encryptedPolyHex, int t, int
uint32_t
len
=
0
;
if
(
!
is_ae
s
)
if
(
!
encryptKey
s
)
status
=
get_public_shares
(
eid
,
&
err_status
,
errMsg1
,
encr_dkg_poly
,
len
,
public_shares
,
t
,
n
);
else
{
...
...
@@ -158,7 +158,7 @@ vector <vector<string>> get_verif_vect(const char* encryptedPolyHex, int t, int
throw
RPCException
(
-
666
,
errMsg1
);
}
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"err msg is {}"
,
errMsg1
);
spdlog
::
info
(
"public_shares:"
);
...
...
@@ -200,7 +200,7 @@ string get_secret_shares(const string& polyName, const char* encryptedPolyHex, c
std
::
cerr
<<
"enc_len is "
<<
enc_len
<<
std
::
endl
;
if
(
!
is_ae
s
)
if
(
!
encryptKey
s
)
status
=
set_encrypted_dkg_poly
(
eid
,
&
err_status
,
errMsg1
,
encr_dkg_poly
);
else
status
=
set_encrypted_dkg_poly_aes
(
eid
,
&
err_status
,
errMsg1
,
encr_dkg_poly
,
&
enc_len
);
...
...
@@ -226,11 +226,11 @@ string get_secret_shares(const string& polyName, const char* encryptedPolyHex, c
char
pubKeyB
[
129
];
strncpy
(
pubKeyB
,
pub_keyB
.
c_str
(),
128
);
pubKeyB
[
128
]
=
0
;
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"pubKeyB is {}"
,
pub_keyB
);
}
if
(
!
is_ae
s
)
if
(
!
encryptKey
s
)
get_encr_sshare
(
eid
,
&
err_status
,
errMsg1
,
encrypted_skey
,
&
dec_len
,
cur_share
,
s_shareG2
,
pubKeyB
,
t
,
n
,
i
+
1
);
else
...
...
@@ -239,14 +239,14 @@ string get_secret_shares(const string& polyName, const char* encryptedPolyHex, c
if
(
err_status
!=
0
){
throw
RPCException
(
-
666
,
errMsg1
);
}
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"cur_share is {}"
,
cur_share
);
}
result
+=
cur_share
;
//uint32_t enc_len = BUF_LEN;
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"dec len is {}"
,
dec_len
);
}
...
...
@@ -257,17 +257,17 @@ string get_secret_shares(const string& polyName, const char* encryptedPolyHex, c
string
DHKey_name
=
"DKG_DH_KEY_"
+
polyName
+
"_"
+
to_string
(
i
)
+
":"
;
cerr
<<
"hexEncr DH Key: "
<<
hexEncrKey
<<
endl
;
writeDataToDB
(
DHKey_name
,
hexEncrKey
);
SGXWalletServer
::
writeDataToDB
(
DHKey_name
,
hexEncrKey
);
string
shareG2_name
=
"shareG2_"
+
polyName
+
"_"
+
to_string
(
i
)
+
":"
;
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"name to write to db is {}"
,
DHKey_name
);
spdlog
::
info
(
"name to write to db is {}"
,
shareG2_name
);
spdlog
::
info
(
"s_shareG2: {}"
,
s_shareG2
);
}
writeDataToDB
(
shareG2_name
,
s_shareG2
);
SGXWalletServer
::
writeDataToDB
(
shareG2_name
,
s_shareG2
);
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"errMsg: {}"
,
errMsg1
);
// cerr << "iteration " << i <<" result length is " << result.length() << endl ;
// cerr << "iteration " << i <<" share length is " << strlen(cur_share) << endl;
...
...
@@ -295,7 +295,7 @@ bool VerifyShares(const char* publicShares, const char* encr_sshare, const char
throw
RPCException
(
INVALID_HEX
,
"Invalid encryptedPolyHex"
);
}
int
result
;
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
cerr
<<
"encryptedKeyHex "
<<
encryptedKeyHex
<<
endl
;
cerr
<<
"dec_key_len "
<<
dec_key_len
<<
endl
;
cerr
<<
"encr_sshare length is "
<<
strlen
(
encr_sshare
)
<<
endl
;
...
...
@@ -307,7 +307,7 @@ bool VerifyShares(const char* publicShares, const char* encr_sshare, const char
strncpy
(
pshares
,
publicShares
,
strlen
(
publicShares
)
);
if
(
!
is_ae
s
)
if
(
!
encryptKey
s
)
dkg_verification
(
eid
,
&
err_status
,
errMsg1
,
pshares
,
encr_sshare
,
encr_key
,
dec_key_len
,
t
,
ind
,
&
result
);
else
dkg_verification_aes
(
eid
,
&
err_status
,
errMsg1
,
pshares
,
encr_sshare
,
encr_key
,
dec_key_len
,
t
,
ind
,
&
result
);
...
...
@@ -316,7 +316,7 @@ bool VerifyShares(const char* publicShares, const char* encr_sshare, const char
throw
RPCException
(
INVALID_HEX
,
"Invalid public shares"
);
}
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"errMsg1: {}"
,
errMsg1
);
spdlog
::
info
(
"result is: {}"
,
result
);
}
...
...
@@ -327,7 +327,7 @@ bool VerifyShares(const char* publicShares, const char* encr_sshare, const char
}
bool
CreateBLSShare
(
const
string
&
blsKeyName
,
const
char
*
s_shares
,
const
char
*
encryptedKeyHex
){
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"ENTER CreateBLSShare"
);
}
// char* errMsg1 = (char*) calloc(1024,1);
...
...
@@ -346,7 +346,7 @@ bool CreateBLSShare( const string& blsKeyName, const char * s_shares, const char
uint32_t
enc_bls_len
=
0
;
//cerr << "BEFORE create_bls_key IN ENCLAVE " << endl;
if
(
!
is_ae
s
)
if
(
!
encryptKey
s
)
create_bls_key
(
eid
,
&
err_status
,
errMsg1
,
s_shares
,
encr_key
,
dec_key_len
,
encr_bls_key
,
&
enc_bls_len
);
else
create_bls_key_aes
(
eid
,
&
err_status
,
errMsg1
,
s_shares
,
encr_key
,
dec_key_len
,
encr_bls_key
,
&
enc_bls_len
);
...
...
@@ -365,8 +365,8 @@ bool CreateBLSShare( const string& blsKeyName, const char * s_shares, const char
//cerr << "enc_bls_len " << enc_bls_len << endl;
carray2Hex
(
encr_bls_key
,
enc_bls_len
,
hexBLSKey
);
// cerr << "BEFORE WRITE BLS KEY TO DB" << endl;
writeDataToDB
(
blsKeyName
,
hexBLSKey
);
if
(
DEBUG_PRINT
)
{
SGXWalletServer
::
writeDataToDB
(
blsKeyName
,
hexBLSKey
);
if
(
printDebugInfo
)
{
spdlog
::
info
(
"hexBLSKey length is {}"
,
char_traits
<
char
>::
length
(
hexBLSKey
));
spdlog
::
info
(
"bls key {}"
,
blsKeyName
,
" is "
,
hexBLSKey
);
}
...
...
@@ -389,11 +389,11 @@ vector<string> GetBLSPubKey(const char * encryptedKeyHex){
}
char
pub_key
[
320
];
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"dec_key_len is {}"
,
dec_key_len
);
}
if
(
!
is_ae
s
)
if
(
!
encryptKey
s
)
get_bls_pub_key
(
eid
,
&
err_status
,
errMsg1
,
encr_key
,
dec_key_len
,
pub_key
);
else
get_bls_pub_key_aes
(
eid
,
&
err_status
,
errMsg1
,
encr_key
,
dec_key_len
,
pub_key
);
...
...
@@ -403,7 +403,7 @@ vector<string> GetBLSPubKey(const char * encryptedKeyHex){
}
vector
<
string
>
pub_key_vect
=
SplitString
(
pub_key
,
':'
);
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"errMsg1 is {}"
,
errMsg1
);
spdlog
::
info
(
"pub key is "
);
for
(
int
i
=
0
;
i
<
4
;
i
++
)
...
...
@@ -418,8 +418,8 @@ string decrypt_DHKey(const string& polyName, int ind){
int
err_status
=
0
;
string
DH_key_name
=
polyName
+
"_"
+
to_string
(
ind
)
+
":"
;
shared_ptr
<
string
>
hexEncrKey_ptr
=
readFromDb
(
DH_key_name
,
"DKG_DH_KEY_"
);
if
(
DEBUG_PRINT
)
{
shared_ptr
<
string
>
hexEncrKey_ptr
=
SGXWalletServer
::
readFromDb
(
DH_key_name
,
"DKG_DH_KEY_"
);
if
(
printDebugInfo
)
{
spdlog
::
info
(
"encr DH key is {}"
,
*
hexEncrKey_ptr
);
}
...
...
@@ -430,14 +430,14 @@ string decrypt_DHKey(const string& polyName, int ind){
if
(
!
hex2carray
(
hexEncrKey_ptr
->
c_str
(),
&
DH_enc_len
,
encrypted_DHkey
)){
throw
RPCException
(
INVALID_HEX
,
"Invalid hexEncrKey"
);
}
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"encr DH key length is {}"
,
DH_enc_len
);
spdlog
::
info
(
"hex encr DH key length is {}"
,
hexEncrKey_ptr
->
length
());
}
char
DHKey
[
ECDSA_SKEY_LEN
];
if
(
!
is_ae
s
)
if
(
!
encryptKey
s
)
decrypt_key
(
eid
,
&
err_status
,
errMsg1
.
data
(),
encrypted_DHkey
,
DH_enc_len
,
DHKey
);
else
decrypt_key_aes
(
eid
,
&
err_status
,
errMsg1
.
data
(),
encrypted_DHkey
,
DH_enc_len
,
DHKey
);
...
...
ECDSACrypto.cpp
View file @
f0f043ad
...
...
@@ -51,7 +51,7 @@ std::vector<std::string> gen_ecdsa_key(){
char
*
pub_key_y
=
(
char
*
)
calloc
(
1024
,
1
);
uint32_t
enc_len
=
0
;
if
(
!
is_ae
s
)
if
(
!
encryptKey
s
)
status
=
generate_ecdsa_key
(
eid
,
&
err_status
,
errMsg
,
encr_pr_key
,
&
enc_len
,
pub_key_x
,
pub_key_y
);
else
status
=
generate_ecdsa_key_aes
(
eid
,
&
err_status
,
errMsg
,
encr_pr_key
,
&
enc_len
,
pub_key_x
,
pub_key_y
);
...
...
@@ -61,7 +61,7 @@ std::vector<std::string> gen_ecdsa_key(){
throw
RPCException
(
status
,
errMsg
)
;
}
std
::
vector
<
std
::
string
>
keys
(
3
);
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
std
::
cerr
<<
"account key is "
<<
errMsg
<<
std
::
endl
;
std
::
cerr
<<
"enc_len is "
<<
enc_len
<<
std
::
endl
;
// std::cerr << "enc_key is " << std::endl;
...
...
@@ -77,7 +77,7 @@ std::vector<std::string> gen_ecdsa_key(){
unsigned
long
seed
=
rand_gen
();
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"seed is {}"
,
seed
);
std
::
cerr
<<
"strlen is "
<<
strlen
(
hexEncrKey
)
<<
std
::
endl
;
}
...
...
@@ -122,7 +122,7 @@ std::string get_ecdsa_pubkey(const char* encryptedKeyHex){
throw
RPCException
(
INVALID_HEX
,
"Invalid encryptedKeyHex"
);
}
if
(
!
is_ae
s
)
if
(
!
encryptKey
s
)
status
=
get_public_ecdsa_key
(
eid
,
&
err_status
,
errMsg
,
encr_pr_key
,
enc_len
,
pub_key_x
,
pub_key_y
);
else
status
=
get_public_ecdsa_key_aes
(
eid
,
&
err_status
,
errMsg
,
encr_pr_key
,
enc_len
,
pub_key_x
,
pub_key_y
);
if
(
err_status
!=
0
){
...
...
@@ -130,7 +130,7 @@ std::string get_ecdsa_pubkey(const char* encryptedKeyHex){
}
std
::
string
pubKey
=
std
::
string
(
pub_key_x
)
+
std
::
string
(
pub_key_y
);
//concatPubKeyWith0x(pub_key_x, pub_key_y);//
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"enc_len is {}"
,
enc_len
);
spdlog
::
info
(
"pubkey is {}"
,
pubKey
);
spdlog
::
info
(
"pubkey length is {}"
,
pubKey
.
length
());
...
...
@@ -162,20 +162,20 @@ std::vector<std::string> ecdsa_sign_hash(const char* encryptedKeyHex, const char
throw
RPCException
(
INVALID_HEX
,
"Invalid encryptedKeyHex"
);
}
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"encryptedKeyHex: {}"
,
encryptedKeyHex
);
spdlog
::
info
(
"HASH: {}"
,
hashHex
);
spdlog
::
info
(
"encrypted len: {}"
,
dec_len
);
}
if
(
!
is_ae
s
)
if
(
!
encryptKey
s
)
status
=
ecdsa_sign1
(
eid
,
&
err_status
,
errMsg
,
encr_key
,
ECDSA_ENCR_LEN
,
(
unsigned
char
*
)
hashHex
,
signature_r
,
signature_s
,
&
signature_v
,
base
);
else
status
=
ecdsa_sign_aes
(
eid
,
&
err_status
,
errMsg
,
encr_key
,
dec_len
,
(
unsigned
char
*
)
hashHex
,
signature_r
,
signature_s
,
&
signature_v
,
base
);
if
(
err_status
!=
0
){
throw
RPCException
(
-
666
,
errMsg
)
;
}
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"signature r in ecdsa_sign_hash: {}"
,
signature_r
);
spdlog
::
info
(
"signature s in ecdsa_sign_hash: {}"
,
signature_s
);
}
...
...
LevelDB.cpp
View file @
f0f043ad
...
...
@@ -62,7 +62,7 @@ std::shared_ptr<string> LevelDB::readString(const string &_key) {
auto
status
=
db
->
Get
(
readOptions
,
_key
,
&*
result
);
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"key to read from db: {}"
,
_key
);
//std::cerr << "key to read from db: " << _key << std::endl;
}
...
...
@@ -83,7 +83,7 @@ void LevelDB::writeString(const string &_key, const string &_value) {
throwExceptionOnError
(
status
);
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"written key: {}"
,
_key
);
// std::cerr << "written key " << _key << std::endl;
}
...
...
@@ -100,7 +100,7 @@ void LevelDB::deleteDHDKGKey (const string &_key) {
throwExceptionOnError
(
status
);
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"key deleted: {}"
,
full_key
);
//std::cerr << "key deleted " << full_key << std::endl;
}
...
...
@@ -130,7 +130,7 @@ void LevelDB::deleteKey(const string &_key){
throwExceptionOnError
(
status
);
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"key deleted: {}"
,
_key
);
// std::cerr << "key deleted " << _key << std::endl;
}
...
...
@@ -219,7 +219,7 @@ void LevelDB::writeDataUnique(const string & Name, const string &value) {
}
writeString
(
key
,
value
);
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"{}"
,
Name
,
" is written to db"
);
//std::cerr << Name << " is written to db " << std::endl;
}
...
...
SEKManager.cpp
View file @
f0f043ad
...
...
@@ -231,7 +231,7 @@ void init_SEK(){
gen_SEK
();
}
else
{
if
(
DEBUG_PRINT
)
if
(
printDebugInfo
)
spdlog
::
info
(
"going to set SEK from db"
);
set_SEK
(
encr_SEK_ptr
);
}
...
...
SGXRegistrationServer.cpp
View file @
f0f043ad
This diff is collapsed.
Click to expand it.
SGXRegistrationServer.h
View file @
f0f043ad
...
...
@@ -33,14 +33,12 @@ using namespace std;
class
SGXRegistrationServer
:
public
AbstractRegServer
{
std
::
recursive_mutex
m
;
bool
is_cert_created
;
bool
cert_auto_sign
;
//std::string hash;
bool
isCertCreated
;
bool
autoSign
;
public
:
SGXRegistrationServer
(
AbstractServerConnector
&
connector
,
serverVersion_t
type
,
bool
auto_s
ign
=
false
);
SGXRegistrationServer
(
AbstractServerConnector
&
connector
,
serverVersion_t
type
,
bool
_autoS
ign
=
false
);
void
set_cert_created
(
bool
b
);
...
...
@@ -50,7 +48,7 @@ public:
};
extern
int
init
_registration_server
(
bool
sign_automatically
=
false
);
extern
int
init
RegistrationServer
(
bool
_autoSign
=
false
);
...
...
SGXWalletServer.cpp
View file @
f0f043ad
This diff is collapsed.
Click to expand it.
SGXWalletServer.h
View file @
f0f043ad
...
...
@@ -31,9 +31,6 @@
#endif
EXTERNC
int
init_https_server
(
bool
check_certs
);
EXTERNC
int
init_http_server
();
...
...
SGXWalletServer.hpp
View file @
f0f043ad
...
...
@@ -25,72 +25,116 @@
#define SGXWALLET_SGXWALLETSERVER_HPP
#include "abstractstubserver.h"
#include <mutex>
using
namespace
jsonrpc
;
using
namespace
std
;
class
SGXWalletServer
:
public
AbstractStubServer
{
SGXWalletServer
*
server
=
nullptr
;
SGXWalletServer
*
server
=
nullptr
;
std
::
recursive_mutex
m
;
public
:
SGXWalletServer
(
AbstractServerConnector
&
connector
,
serverVersion_t
type
);
SGXWalletServer
(
AbstractServerConnector
&
_connector
,
serverVersion_t
_type
);
virtual
Json
::
Value
importBLSKeyShare
(
const
std
::
string
&
_keyShare
,
const
std
::
string
&
_keyShareName
,
int
_t
,
int
_n
,
int
index
);
virtual
Json
::
Value
blsSignMessageHash
(
const
std
::
string
&
keyShareName
,
const
std
::
string
&
messageHash
,
int
t
,
int
n
,
int
signerIndex
);
virtual
Json
::
Value
importBLSKeyShare
(
const
std
::
string
&
keyShare
,
const
std
::
string
&
keyShareName
,
int
t
,
int
n
,
int
index
);
virtual
Json
::
Value
blsSignMessageHash
(
const
std
::
string
&
keyShareName
,
const
std
::
string
&
messageHash
,
int
t
,
int
n
,
int
signerIndex
);
virtual
Json
::
Value
importECDSAKey
(
const
std
::
string
&
key
,
const
std
::
string
&
keyName
);
virtual
Json
::
Value
importECDSAKey
(
const
std
::
string
&
key
,
const
std
::
string
&
keyName
);
virtual
Json
::
Value
generateECDSAKey
();
virtual
Json
::
Value
renameECDSAKey
(
const
std
::
string
&
KeyName
,
const
std
::
string
&
tempKeyName
);
virtual
Json
::
Value
ecdsaSignMessageHash
(
int
base
,
const
std
::
string
&
keyShareName
,
const
std
::
string
&
messageHash
);
virtual
Json
::
Value
getPublicECDSAKey
(
const
std
::
string
&
keyName
);
virtual
Json
::
Value
generateDKGPoly
(
const
std
::
string
&
polyName
,
int
t
);
virtual
Json
::
Value
getVerificationVector
(
const
std
::
string
&
polyName
,
int
t
,
int
n
);
virtual
Json
::
Value
getSecretShare
(
const
std
::
string
&
polyName
,
const
Json
::
Value
&
publicKeys
,
int
t
,
int
n
);
virtual
Json
::
Value
dkgVerification
(
const
std
::
string
&
publicShares
,
const
std
::
string
&
ethKeyName
,
const
std
::
string
&
SecretShare
,
int
t
,
int
n
,
int
index
);
virtual
Json
::
Value
createBLSPrivateKey
(
const
std
::
string
&
blsKeyName
,
const
std
::
string
&
ethKeyName
,
const
std
::
string
&
polyName
,
const
std
::
string
&
SecretShare
,
int
t
,
int
n
);
virtual
Json
::
Value
getBLSPublicKeyShare
(
const
std
::
string
&
blsKeyName
);
virtual
Json
::
Value
complaintResponse
(
const
std
::
string
&
polyName
,
int
ind
);
virtual
Json
::
Value
multG2
(
const
std
::
string
&
x
);
virtual
Json
::
Value
isPolyExists
(
const
std
::
string
&
polyName
);
virtual
Json
::
Value
renameECDSAKey
(
const
std
::
string
&
KeyName
,
const
std
::
string
&
tempKeyName
);
virtual
Json
::
Value
ecdsaSignMessageHash
(
int
base
,
const
std
::
string
&
keyShareName
,
const
std
::
string
&
messageHash
);
virtual
Json
::
Value
getPublicECDSAKey
(
const
std
::
string
&
keyName
);
virtual
Json
::
Value
generateDKGPoly
(
const
std
::
string
&
polyName
,
int
t
);
virtual
Json
::
Value
getVerificationVector
(
const
std
::
string
&
polyName
,
int
t
,
int
n
);
virtual
Json
::
Value
getSecretShare
(
const
std
::
string
&
polyName
,
const
Json
::
Value
&
publicKeys
,
int
t
,
int
n
);
virtual
Json
::
Value
dkgVerification
(
const
std
::
string
&
publicShares
,
const
std
::
string
&
ethKeyName
,
const
std
::
string
&
SecretShare
,
int
t
,
int
n
,
int
index
);
virtual
Json
::
Value
createBLSPrivateKey
(
const
std
::
string
&
blsKeyName
,
const
std
::
string
&
ethKeyName
,
const
std
::
string
&
polyName
,
const
std
::
string
&
SecretShare
,
int
t
,
int
n
);
virtual
Json
::
Value
getBLSPublicKeyShare
(
const
std
::
string
&
blsKeyName
);
virtual
Json
::
Value
complaintResponse
(
const
std
::
string
&
polyName
,
int
ind
);
virtual
Json
::
Value
multG2
(
const
std
::
string
&
x
);
virtual
Json
::
Value
isPolyExists
(
const
std
::
string
&
polyName
);
virtual
Json
::
Value
getServerStatus
();
}
;
static
shared_ptr
<
string
>
readFromDb
(
const
string
&
name
,
const
string
&
prefix
=
""
)
;
shared_ptr
<
string
>
readFromDb
(
const
string
&
name
,
const
string
&
prefix
=
""
);
void
writeDataToDB
(
const
string
&
Name
,
const
string
&
value
);
static
void
writeDataToDB
(
const
string
&
Name
,
const
string
&
value
);
void
writeKeyShare
(
const
string
&
_keyShareName
,
const
string
&
value
,
int
index
,
int
n
,
int
t
);
shared_ptr
<
std
::
string
>
readKeyShare
(
const
string
&
_keyShare
);
static
void
writeKeyShare
(
const
string
&
_keyShareName
,
const
string
&
value
,
int
index
,
int
n
,
int
t
);
Json
::
Value
importBLSKeyShareImpl
(
const
std
::
string
&
keyShare
,
const
std
::
string
&
keyShareName
,
int
t
,
int
n
,
int
index
);
Json
::
Value
blsSignMessageHashImpl
(
const
std
::
string
&
keyShareName
,
const
std
::
string
&
messageHash
,
int
t
,
int
n
,
int
signerIndex
);
static
shared_ptr
<
std
::
string
>
readKeyShare
(
const
string
&
_keyShare
);
Json
::
Value
importECDSAKeyImpl
(
const
std
::
string
&
key
,
const
std
::
string
&
keyName
);
Json
::
Value
generateECDSAKeyImpl
();
Json
::
Value
renameECDSAKeyImpl
(
const
std
::
string
&
KeyName
,
const
std
::
string
&
tempKeyName
);
Json
::
Value
ecdsaSignMessageHashImpl
(
int
base
,
const
std
::
string
&
keyName
,
const
std
::
string
&
messageHash
);
Json
::
Value
getPublicECDSAKeyImpl
(
const
std
::
string
&
keyName
);
static
Json
::
Value
importBLSKeyShareImpl
(
const
std
::
string
&
keyShare
,
const
std
::
string
&
keyShareName
,
int
t
,
int
n
,
int
index
);
Json
::
Value
generateDKGPolyImpl
(
const
std
::
string
&
polyName
,
int
t
);
Json
::
Value
getVerificationVectorImpl
(
const
std
::
string
&
polyName
,
int
t
,
int
n
);
Json
::
Value
getSecretShareImpl
(
const
std
::
string
&
polyName
,
const
Json
::
Value
&
publicKeys
,
int
t
,
int
n
);
Json
::
Value
dkgVerificationImpl
(
const
std
::
string
&
publicShares
,
const
std
::
string
&
ethKeyName
,
const
std
::
string
&
SecretShare
,
int
t
,
int
n
,
int
index
);
Json
::
Value
createBLSPrivateKeyImpl
(
const
std
::
string
&
blsKeyName
,
const
std
::
string
&
ethKeyName
,
const
std
::
string
&
polyName
,
const
std
::
string
&
SecretShare
,
int
t
,
int
n
);
Json
::
Value
getBLSPublicKeyShareImpl
(
const
std
::
string
&
blsKeyName
);
Json
::
Value
complaintResponseImpl
(
const
std
::
string
&
polyName
,
int
ind
);
Json
::
Value
multG2Impl
(
const
std
::
string
&
x
);
Json
::
Value
isPolyExistsImpl
(
const
std
::
string
&
polyName
);
static
Json
::
Value
blsSignMessageHashImpl
(
const
std
::
string
&
keyShareName
,
const
std
::
string
&
messageHash
,
int
t
,
int
n
,
int
signerIndex
);
Json
::
Value
getServerStatusImpl
();
static
Json
::
Value
importECDSAKeyImpl
(
const
std
::
string
&
_key
,
const
std
::
string
&
_keyName
);
static
Json
::
Value
generateECDSAKeyImpl
();
static
Json
::
Value
renameECDSAKeyImpl
(
const
std
::
string
&
KeyName
,
const
std
::
string
&
tempKeyName
);
static
Json
::
Value
ecdsaSignMessageHashImpl
(
int
base
,
const
std
::
string
&
keyName
,
const
std
::
string
&
messageHash
);
static
Json
::
Value
getPublicECDSAKeyImpl
(
const
std
::
string
&
keyName
);
static
Json
::
Value
generateDKGPolyImpl
(
const
std
::
string
&
polyName
,
int
t
);
static
Json
::
Value
getVerificationVectorImpl
(
const
std
::
string
&
polyName
,
int
t
,
int
n
);
static
Json
::
Value
getSecretShareImpl
(
const
std
::
string
&
polyName
,
const
Json
::
Value
&
publicKeys
,
int
t
,
int
n
);
static
Json
::
Value
dkgVerificationImpl
(
const
std
::
string
&
publicShares
,
const
std
::
string
&
ethKeyName
,
const
std
::
string
&
SecretShare
,
int
t
,
int
n
,
int
index
);
static
Json
::
Value
createBLSPrivateKeyImpl
(
const
std
::
string
&
blsKeyName
,
const
std
::
string
&
ethKeyName
,
const
std
::
string
&
polyName
,
const
std
::
string
&
SecretShare
,
int
t
,
int
n
);
static
Json
::
Value
getBLSPublicKeyShareImpl
(
const
std
::
string
&
blsKeyName
);
static
Json
::
Value
complaintResponseImpl
(
const
std
::
string
&
polyName
,
int
ind
);
static
Json
::
Value
multG2Impl
(
const
std
::
string
&
x
);
static
Json
::
Value
isPolyExistsImpl
(
const
std
::
string
&
polyName
);
static
Json
::
Value
getServerStatusImpl
();
static
void
printDB
();
static
int
initHttpServer
();
static
int
initHttpsServer
(
bool
_checkCerts
);
};
#endif //SGXWALLET_SGXWALLETSERVER_HPP
\ No newline at end of file
ServerInit.cpp
View file @
f0f043ad
...
...
@@ -64,6 +64,7 @@
#include <sys/types.h>
#include <sys/stat.h>
#include "SGXWalletServer.hpp"
#include "SGXWALLET_VERSION"
//#include <system>
...
...
@@ -95,7 +96,7 @@ void init_enclave() {
}
#endif
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"SGX_DEBUG_FLAG = {}"
,
SGX_DEBUG_FLAG
);
}
...
...
@@ -121,7 +122,7 @@ void init_enclave() {
exit
(
1
);
}
if
(
DEBUG_PRINT
)
{
if
(
printDebugInfo
)
{
spdlog
::
info
(
"libtgmp initialized"
);
//fprintf(stderr, "libtgmp initialized\n");
}
...
...
@@ -144,13 +145,13 @@ void init_all(bool check_cert, bool sign_automatically, void (*SEK_func)()) {
sgxServerInited
=
1
;
if
(
is_sgx_https
)
{
init_https_s
erver
(
check_cert
);
init_registration_s
erver
(
sign_automatically
);
if
(
useHTTPS
)
{
SGXWalletServer
::
initHttpsS
erver
(
check_cert
);
initRegistrationS
erver
(
sign_automatically
);
init_csrmanager_server
();
}
else
{
init_http_s
erver
();
SGXWalletServer
::
initHttpS
erver
();
}
//std::cerr << "enclave inited" << std::endl;
...
...
docker/start.sh
View file @
f0f043ad
...
...
@@ -20,7 +20,7 @@ if [ "$1" = -t ]; then
./testw
[
is_poly_test]
./testw
[
AES-encrypt-decrypt]
./testw
[
ecdsa_api_test]
./testw
[
dkg-encr_sshares]
#
./testw [dkg-encr_sshares]
./testw
[
bls_sign]
./testw
[
many_threads_test]
./testw
[
aes_dkg]
...
...
sgxwallet.c
View file @
f0f043ad
...
...
@@ -67,7 +67,7 @@ int main(int argc, char *argv[]) {
exit
(
1
);
}
is_aes
=
0
;
encryptKeys
=
0
;
while
((
opt
=
getopt
(
argc
,
argv
,
"cshd0aby"
))
!=
-
1
)
{
switch
(
opt
)
{
...
...
@@ -91,13 +91,13 @@ int main(int argc, char *argv[]) {
sign_automatically
=
true
;
break
;
case
'd'
:
DEBUG_PRINT
=
1
;
printDebugInfo
=
1
;
break
;
case
'0'
:
is_sgx_https
=
0
;
useHTTPS
=
0
;
break
;
case
'a'
:
is_ae
s
=
0
;
encryptKey
s
=
0
;
break
;
case
'b'
:
SEK_initializer
=
enter_SEK
;
...
...
sgxwallet_common.h
View file @
f0f043ad
...
...
@@ -35,9 +35,9 @@
extern
int
DEBUG_PRINT
;
extern
int
is_sgx_https
;
extern
int
is_ae
s
;
extern
int
printDebugInfo
;
extern
int
useHTTPS
;
extern
int
encryptKey
s
;
extern
bool
autoconfirm
;
#define BUF_LEN 1024
...
...
testw.cpp
View file @
f0f043ad
...
...
@@ -121,8 +121,8 @@ char *encryptTestKey() {
TEST_CASE
(
"BLS key encrypt"
,
"[bls-key-encrypt]"
)
{
DEBUG_PRINT
=
1
;
is_sgx_https
=
0
;
printDebugInfo
=
1
;
useHTTPS
=
0
;
autoconfirm
=
true
;
init_all
(
false
,
true
,
init_SEK
);
auto
key
=
encryptTestKey
();
...
...
@@ -134,8 +134,8 @@ TEST_CASE("BLS key encrypt", "[bls-key-encrypt]") {
TEST_CASE
(
"BLS key encrypt/decrypt"
,
"[bls-key-encrypt-decrypt]"
)
{
{
DEBUG_PRINT
=
1
;
is_sgx_https
=
0
;
printDebugInfo
=
1
;
useHTTPS
=
0
;
autoconfirm
=
true
;
init_all
(
false
,
true
,
init_SEK
);
...
...
@@ -549,8 +549,8 @@ string ConvertDecToHex(string dec, int numBytes = 32) {
TEST_CASE
(
"BLS_DKG test"
,
"[bls_dkg]"
)
{
is_sgx_https
=
0
;
DEBUG_PRINT
=
1
;
useHTTPS
=
0
;
printDebugInfo
=
1
;
cerr
<<
"test started"
<<
endl
;
init_all
(
false
,
true
,
init_SEK
);
cerr
<<
"Server inited"
<<
endl
;
...
...
@@ -683,7 +683,7 @@ TEST_CASE("BLS_DKG test", "[bls_dkg]") {
TEST_CASE
(
"API test"
,
"[api_test]"
)
{
autoconfirm
=
true
;
//DEBUG_PRINT = 1;
is_sgx_https
=
0
;
useHTTPS
=
0
;
//cerr << __GNUC__ << endl;
cerr
<<
"API test started"
<<
endl
;
init_all
(
false
,
true
,
init_SEK
);
...
...
@@ -789,7 +789,7 @@ TEST_CASE("API test", "[api_test]") {
TEST_CASE
(
"getServerStatus test"
,
"[getServerStatus_test]"
)
{
autoconfirm
=
true
;
is_sgx_https
=
0
;
useHTTPS
=
0
;
init_all
(
false
,
true
,
init_SEK
);
HttpClient
client
(
"http://localhost:1029"
);
StubClient
c
(
client
,
JSONRPC_CLIENT_V2
);
...
...
@@ -911,9 +911,9 @@ void SendRPCRequest() {
TEST_CASE
(
"ManySimultaneousThreads"
,
"[many_threads_test]"
)
{
autoconfirm
=
true
;
is_sgx_https
=
0
;
DEBUG_PRINT
=
1
;
is_ae
s
=
1
;
useHTTPS
=
0
;
printDebugInfo
=
1
;
encryptKey
s
=
1
;
init_all
(
false
,
true
,
init_SEK
);
...
...
@@ -932,9 +932,9 @@ TEST_CASE("ManySimultaneousThreads", "[many_threads_test]") {
TEST_CASE
(
"ecdsa API test"
,
"[ecdsa_api_test]"
)
{
autoconfirm
=
true
;
DEBUG_PRINT
=
1
;
is_sgx_https
=
0
;
is_ae
s
=
1
;
printDebugInfo
=
1
;
useHTTPS
=
0
;
encryptKey
s
=
1
;
cerr
<<
"ecdsa_api_test started"
<<
endl
;
init_all
(
false
,
true
,
init_SEK
);
...
...
@@ -984,8 +984,8 @@ TEST_CASE("ecdsa API test", "[ecdsa_api_test]") {
TEST_CASE
(
"dkg API test"
,
"[dkg_api_test]"
)
{
autoconfirm
=
true
;
DEBUG_PRINT
=
1
;
is_sgx_https
=
0
;
printDebugInfo
=
1
;
useHTTPS
=
0
;
cerr
<<
"dkg_api_test started"
<<
endl
;
init_all
(
false
,
true
,
init_SEK
);
...
...
@@ -1062,8 +1062,8 @@ TEST_CASE("dkg API test", "[dkg_api_test]") {
TEST_CASE
(
"isPolyExists test"
,
"[is_poly_test]"
)
{
autoconfirm
=
true
;
DEBUG_PRINT
=
1
;
is_sgx_https
=
0
;
printDebugInfo
=
1
;
useHTTPS
=
0
;
cerr
<<
"is_poly_test started"
<<
endl
;
init_all
(
false
,
true
,
init_SEK
);
...
...
@@ -1091,9 +1091,9 @@ TEST_CASE("isPolyExists test", "[is_poly_test]") {
TEST_CASE
(
"AES_DKG test"
,
"[aes_dkg]"
)
{
autoconfirm
=
true
;
is_sgx_https
=
0
;
DEBUG_PRINT
=
1
;
is_ae
s
=
1
;
useHTTPS
=
0
;
printDebugInfo
=
1
;
encryptKey
s
=
1
;
reset_db
();
...
...
@@ -1223,9 +1223,9 @@ TEST_CASE("AES_DKG test", "[aes_dkg]") {
TEST_CASE
(
"bls_sign_api test"
,
"[bls_sign]"
)
{
autoconfirm
=
true
;
is_sgx_https
=
0
;
DEBUG_PRINT
=
1
;
is_ae
s
=
1
;
useHTTPS
=
0
;
printDebugInfo
=
1
;
encryptKey
s
=
1
;
cerr
<<
"test started"
<<
endl
;
init_all
(
false
,
true
,
init_SEK
);
...
...
@@ -1258,8 +1258,8 @@ TEST_CASE("bls_sign_api test", "[bls_sign]") {
TEST_CASE
(
"AES encrypt/decrypt"
,
"[AES-encrypt-decrypt]"
)
{
{
autoconfirm
=
true
;
DEBUG_PRINT
=
1
;
is_sgx_https
=
0
;
printDebugInfo
=
1
;
useHTTPS
=
0
;
init_all
(
false
,
true
,
init_SEK
);
//init_enclave();
...
...
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