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
5 years ago
by
kladko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix test
parent
c2dd35d5
1 merge request
!1
Develop
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
()
);
}
...
...
This diff is collapsed.
Click to expand it.
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
);
...
...
This diff is collapsed.
Click to expand it.
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
);
}
...
...
This diff is collapsed.
Click to expand it.
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;
}
...
...
This diff is collapsed.
Click to expand it.
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
);
}
...
...
This diff is collapsed.
Click to expand it.
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
);
...
...
This diff is collapsed.
Click to expand it.
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
();
...
...
This diff is collapsed.
Click to expand it.
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
This diff is collapsed.
Click to expand it.
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;
...
...
This diff is collapsed.
Click to expand it.
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]
...
...
This diff is collapsed.
Click to expand it.
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
;
...
...
This diff is collapsed.
Click to expand it.
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
...
...
This diff is collapsed.
Click to expand it.
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();
...
...
This diff is collapsed.
Click to expand it.
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