Unverified Commit 1b12bcfd authored by svetaro's avatar svetaro

SKALE-1795 GetPublicBLSKey fixed

parent 93b8db50
......@@ -165,7 +165,7 @@ std::string BLSPrivateKeyShareSGX::signWithHelperSGXstr(
// strncpy(signature, "8175162913343900215959836578795929492705714455632345516427532159927644835012:15265825550804683171644566522808807137117748565649051208189914766494241035855", 1024);
printf("---: %s\n", signature);
printf("sig is: %s\n", signature);
if (status != SGX_SUCCESS) {
......@@ -301,6 +301,7 @@ std::shared_ptr<BLSSigShare> BLSPrivateKeyShareSGX::signWithHelperSGX(
std::string signature = signWithHelperSGXstr(hash_byte_arr, _signerIndex);
auto sig = make_shared<string>(signature);
//BLSSigShare* sig_test = new BLSSigShare(sig, _signerIndex, requiredSigners, totalSigners);
......
......@@ -9,6 +9,7 @@
#include <memory>
#include "SGXWalletServer.hpp"
#include "RPCException.h"
#include <../trusted_libff/libff/algebra/curves/alt_bn128/alt_bn128_pp.hpp>
#include <../trusted_libff/libff/algebra/fields/fp.hpp>
......@@ -128,22 +129,25 @@ std::string get_secret_shares(const std::string& polyName, const char* encrypted
uint32_t dec_len;
char cur_share[193];
char s_shareG2[320];
std::string pub_keyB = publicKeys.at(i);//publicKeys.substr(128*i, 128*i + 128);
std::cerr << "pub_keyB is " << pub_keyB << std::endl;
char pubKeyB[129];
strncpy(pubKeyB, pub_keyB.c_str(), 128);
pubKeyB[128] = 0;
get_encr_sshare(eid, &err_status, errMsg1, encrypted_skey, &dec_len,
cur_share, pubKeyB, t, n, i + 1 );
cur_share, s_shareG2, pubKeyB, t, n, i + 1 );
result += cur_share;
uint32_t enc_len = BUF_LEN;
carray2Hex(encrypted_skey, enc_len, hexEncrKey);
//std::cerr << "hexEncrKey: " << hexEncrKey << std::endl;
std::string name = "DKG_DH_KEY_" + polyName + "_" + std::to_string(i) + ":";
//writeDataToDB(name, hexEncrKey);
std::cerr << "name to write to db is " << name << std::endl;
std::cerr << "hexEncrKey: " << hexEncrKey << std::endl;
// writeDataToDB(name, hexEncrKey);
std::cerr << errMsg1 << std::endl << std::endl;
//std::cerr << "iteration " << i <<" result length is " << result.length() << std::endl ;
......@@ -198,8 +202,9 @@ bool CreateBLSShare( const std::string& BLSKeyName, const char * s_shares, const
uint8_t encr_key[BUF_LEN];
hex2carray(encryptedKeyHex, &dec_key_len, encr_key);
//std::cerr << " key hex is " << encryptedKeyHex << std::endl;
create_bls_key(eid, &err_status, errMsg1, s_shares, encr_key, dec_key_len, encr_bls_key);
uint32_t enc_bls_len = 0;
create_bls_key(eid, &err_status, errMsg1, s_shares, encr_key, dec_key_len, encr_bls_key, &enc_bls_len);
std::cerr << "er msg is " << errMsg1 << std::endl;
if ( err_status != 0){
......@@ -207,16 +212,19 @@ bool CreateBLSShare( const std::string& BLSKeyName, const char * s_shares, const
}
else {
char *hexBLSKey = (char *) calloc(2 * BUF_LEN, 1);
uint32_t enc_len = BUF_LEN;
carray2Hex(encr_bls_key, enc_len, hexBLSKey);
std::cerr << "enc_bls_len " << enc_bls_len << std::endl;
carray2Hex(encr_bls_key, enc_bls_len, hexBLSKey);
writeDataToDB(BLSKeyName, hexBLSKey);
std::cerr << "hexBLSKey length is " << strlen(hexBLSKey) << std::endl;
std::cerr << "bls key " << BLSKeyName << " is " << hexBLSKey << std::endl;
free(hexBLSKey);
return true;
}
}
std::string GetBLSPubKey(const char * encryptedKeyHex){
std::vector<std::string> GetBLSPubKey(const char * encryptedKeyHex){
char* errMsg1 = (char*) calloc(1024,1);
int err_status = 0;
......@@ -224,11 +232,18 @@ std::string GetBLSPubKey(const char * encryptedKeyHex){
uint8_t encr_bls_key[BUF_LEN];
uint8_t encr_key[BUF_LEN];
hex2carray(encryptedKeyHex, &dec_key_len, encr_key);
// for ( int i = 0; i < BUF_LEN; i++ )
// std::cerr << encr_key[i] << " ";
char pub_key[320];
std::cerr << "dec_key_len is " << dec_key_len << std::endl;
get_bls_pub_key(eid, &err_status, errMsg1, encr_key, dec_key_len, pub_key);
std::string result = pub_key;
std::cerr << "errMsg1 is " << errMsg1 << std::endl;
std::vector<std::string> pub_key_vect = SplitString(pub_key, ':');
std::cerr << "pub key is" << std::endl;
for ( int i = 0; i < 4; i++)
std::cerr << pub_key_vect.at(i) << std::endl;
return pub_key_vect;
}
std::pair<std::string, std::string> response_to_complaint(const std::string& polyName, const char* encryptedPolyHex, int n, int t, int ind){
......@@ -241,10 +256,11 @@ std::pair<std::string, std::string> response_to_complaint(const std::string& pol
uint8_t* encr_dkg_poly = (uint8_t*) calloc(DKG_MAX_SEALED_LEN, 1);
hex2carray2(encryptedPolyHex, &enc_len, encr_dkg_poly, 6100);
status = set_encrypted_dkg_poly(eid, &err_status, errMsg1, encr_dkg_poly);
std::string DH_key_name = polyName + "_" + std::to_string(ind) + ":";
std::shared_ptr<std::string> hexEncrKey_ptr = readFromDb(DH_key_name, "DKG_DH_KEY_");
std::cerr << "encr DH key is " << hexEncrKey_ptr << std::endl;
char *hexEncrKey = (char *) calloc(2 * BUF_LEN, 1);
......@@ -255,7 +271,7 @@ std::pair<std::string, std::string> response_to_complaint(const std::string& pol
uint32_t dec_len;
char decrpyted_DHkey[ECDSA_SKEY_LEN];
char s_shareG2[257];
char s_shareG2[320];//[257];
status = complaint_response(eid, &err_status, errMsg1, encrypted_DHkey, encr_dkg_poly, &dec_len,
decrpyted_DHkey, s_shareG2, t, n, ind);
......@@ -264,12 +280,11 @@ std::pair<std::string, std::string> response_to_complaint(const std::string& pol
result.first = decrpyted_DHkey;
result.second = s_shareG2;
//std::cerr << errMsg1 << std::endl << std::endl;
std::cerr << errMsg1 << std::endl << std::endl;
//std::cerr << "iteration " << i <<" result length is " << result.length() << std::endl ;
//std::cerr << "iteration " << i <<" share length is " << strlen(cur_share) << std::endl;
//std::cerr << "iteration " << i <<" share is " << cur_share << std::endl;
//result += '\0';
free(encr_dkg_poly);
free(errMsg1);
......@@ -277,3 +292,4 @@ std::pair<std::string, std::string> response_to_complaint(const std::string& pol
return result;
}
......@@ -22,8 +22,7 @@ std::pair<std::string, std::string> response_to_complaint(const std::string& pol
bool CreateBLSShare( const std::string& BLSKeyName, const char * s_shares, const char * encryptedKeyHex);
std::string GetBLSPubKey(const char * encryptedKeyHex);
std::vector<std::string> GetBLSPubKey(const char * encryptedKeyHex);
#endif //SGXD_DKGCRYPTO_H
......@@ -115,7 +115,7 @@ Json::Value blsSignMessageHashImpl(const std::string &keyShareName, const std::s
try {
value = readKeyShare(keyShareName);
value = readFromDb(keyShareName);
} catch (RPCException _e) {
result["status"] = _e.status;
result["errorMessage"] = _e.errString;
......@@ -174,7 +174,8 @@ Json::Value generateECDSAKeyImpl() {
throw RPCException(UNKNOWN_ERROR, "");
}
// std::cerr << "write encr key" << keys.at(0) << std::endl;
std::string keyName = "tmp_NEK:" + keys.at(2);
std::cerr << "encr key length is" << keys.at(0).length() << std::endl;
std::string keyName = "NEK:" + keys.at(2);
//writeECDSAKey(keyName, keys.at(0));
writeDataToDB(keyName, keys.at(0));
......@@ -409,7 +410,6 @@ Json::Value DKGVerificationImpl(const std::string& publicShares, const std::stri
Json::Value CreateBLSPrivateKeyImpl(const std::string & BLSKeyName, const std::string& EthKeyName, const std::string& polyName, const std::string & SecretShare, int t, int n){
std::cerr << "CreateBLSPrivateKeyImpl entered" << std::endl;
std::cerr << " enter DKGVerificationImpl" << std::endl;
Json::Value result;
result["status"] = 0;
......@@ -422,7 +422,7 @@ Json::Value CreateBLSPrivateKeyImpl(const std::string & BLSKeyName, const std::s
return result;
}
std::vector<std::string> sshares_vect;
//std::cerr << "sshares are " << std::endl;
std::cerr << "sshares are " << SecretShare << std::endl;
char sshares[192 * n + 1];
for ( int i = 0; i < n ; i++){
std::string cur_share = SecretShare.substr(192*i, 192*i + 192);
......@@ -469,8 +469,12 @@ Json::Value GetBLSPublicKeyShareImpl(const std::string & BLSKeyName){
try {
std::shared_ptr<std::string> encryptedKeyHex_ptr = readFromDb(BLSKeyName, "");
std::string public_key = GetBLSPubKey(encryptedKeyHex_ptr->c_str());
result["BLSPublicKeyShare"] = public_key;
std::cerr << "encr_bls_key_share is " << *encryptedKeyHex_ptr << std::endl;
std::cerr << "length is " << encryptedKeyHex_ptr->length()<< std::endl;
std::vector<std::string> public_key_vect = GetBLSPubKey(encryptedKeyHex_ptr->c_str());
for ( uint8_t i = 0; i < 4; i++) {
result["BLSPublicKeyShare"][i] = public_key_vect.at(i);
}
} catch (RPCException &_e) {
std::cerr << " err str " << _e.errString << std::endl;
......@@ -487,6 +491,7 @@ Json::Value ComplaintResponseImpl(const std::string& polyName, int n, int t, int
result["errorMessage"] = "";
try {
std::shared_ptr<std::string> encr_poly_ptr = readFromDb(polyName, "DKGPoly:");
std::cerr << "encr_poly is " << *encr_poly_ptr << std::endl;
std::pair<std::string, std::string> response = response_to_complaint(polyName, encr_poly_ptr->c_str(), n, t, ind);
result["share*G2"] = response.second;
......@@ -622,7 +627,7 @@ void writeKeyShare(const string &_keyShareName, const string &value, int index,
auto key = "BLSKEYSHARE:" + _keyShareName;
if (levelDb->readString(_keyShareName) != nullptr) {
throw new RPCException(KEY_SHARE_ALREADY_EXISTS, "Key share with this name already exists");
throw RPCException(KEY_SHARE_ALREADY_EXISTS, "Key share with this name already exists");
}
levelDb->writeString(key, value);
......@@ -648,7 +653,7 @@ void writeECDSAKey(const string &_keyName, const string &value) {
auto key = "ECDSAKEY:" + _keyName;
if (levelDb->readString(_keyName) != nullptr) {
throw new RPCException(KEY_SHARE_ALREADY_EXISTS, "Key with this name already exists");
throw RPCException(KEY_SHARE_ALREADY_EXISTS, "Key with this name already exists");
}
levelDb->writeString(key, value);
......@@ -664,7 +669,7 @@ void writeDKGPoly(const string &_polyName, const string &value) {
auto key = "DKGPoly:" + _polyName;
if (levelDb->readString(_polyName) != nullptr) {
throw new RPCException(KEY_SHARE_ALREADY_EXISTS, "Poly with this name already exists");
throw RPCException(KEY_SHARE_ALREADY_EXISTS, "Poly with this name already exists");
}
levelDb->writeString(key, value);
......@@ -681,7 +686,7 @@ void writeDataToDB(const string & Name, const string &value) {
if (levelDb->readString(Name) != nullptr) {
std::cerr << "name " << Name << " already exists" << std::endl;
throw new RPCException(KEY_SHARE_ALREADY_EXISTS, "Data with this name already exists");
throw RPCException(KEY_SHARE_ALREADY_EXISTS, "Data with this name already exists");
}
levelDb->writeString(key, value);
......
//
// Created by kladko on 11/19/19.
//
std::vector<std::string> BLSutils::SplitString(std::string& str, const std::string& delim){
std::vector<std::string> tokens;
size_t prev = 0, pos = 0;
do {
pos = str.find(delim, prev);
if (pos == std::string::npos) pos = str.length();
std::string token = str.substr(prev, pos-prev);
if (!token.empty()) tokens.push_back(token);
prev = pos + delim.length();
} while (pos < str.length() && prev < str.length());
return tokens;
}
bool checkPolyName (std::string polyName){
}
\ No newline at end of file
//
// Created by kladko on 11/19/19.
//
#ifndef SGXD_SERVERDATACHECKER_H
#define SGXD_SERVERDATACHECKER_H
#endif // SGXD_SERVERDATACHECKER_H
......@@ -30,7 +30,7 @@
#include "BLSCrypto.h"
#include "ServerInit.h"
#include <iostream>
......@@ -42,6 +42,7 @@ void init_daemon() {
static std::string dbName("./" WALLETDB_NAME);
levelDb = new LevelDB(dbName);
}
......@@ -63,6 +64,8 @@ void init_enclave() {
}
#endif
std::cerr << "SGX_DEBUG_FLAG = " << SGX_DEBUG_FLAG << std::endl;
status = sgx_create_enclave_search(ENCLAVE_NAME, SGX_DEBUG_FLAG, &token,
&updated, &eid, 0);
......
......@@ -27,6 +27,7 @@ class AbstractStubServer : public jsonrpc::AbstractServer<AbstractStubServer>
this->bindAndAddMethod(jsonrpc::Procedure("DKGVerification", jsonrpc::PARAMS_BY_NAME, jsonrpc::JSON_OBJECT, "publicShares",jsonrpc::JSON_STRING, "EthKeyName",jsonrpc::JSON_STRING, "SecretShare",jsonrpc::JSON_STRING,"t",jsonrpc::JSON_INTEGER, "n",jsonrpc::JSON_INTEGER, "index",jsonrpc::JSON_INTEGER, NULL), &AbstractStubServer::DKGVerificationI);
this->bindAndAddMethod(jsonrpc::Procedure("CreateBLSPrivateKey", jsonrpc::PARAMS_BY_NAME, jsonrpc::JSON_OBJECT, "BLSKeyName",jsonrpc::JSON_STRING, "EthKeyName",jsonrpc::JSON_STRING, "polyName", jsonrpc::JSON_STRING, "SecretShare",jsonrpc::JSON_STRING,"t", jsonrpc::JSON_INTEGER,"n",jsonrpc::JSON_INTEGER, NULL), &AbstractStubServer::CreateBLSPrivateKeyI);
this->bindAndAddMethod(jsonrpc::Procedure("GetBLSPublicKeyShare", jsonrpc::PARAMS_BY_NAME, jsonrpc::JSON_OBJECT, "BLSKeyName",jsonrpc::JSON_STRING, NULL), &AbstractStubServer::GetBLSPublicKeyShareI);
this->bindAndAddMethod(jsonrpc::Procedure("ComplaintResponse", jsonrpc::PARAMS_BY_NAME, jsonrpc::JSON_OBJECT, "polyName",jsonrpc::JSON_STRING, "n",jsonrpc::JSON_INTEGER,"t",jsonrpc::JSON_INTEGER, "ind",jsonrpc::JSON_INTEGER, NULL), &AbstractStubServer::ComplaintResponseI);
}
......@@ -36,7 +37,7 @@ class AbstractStubServer : public jsonrpc::AbstractServer<AbstractStubServer>
}
inline virtual void blsSignMessageHashI(const Json::Value &request, Json::Value &response)
{
response = this->blsSignMessageHash(request["keyShareName"].asString(), request["messageHash"].asString(), request["n"].asInt(), request["signerIndex"].asInt(), request["t"].asInt());
response = this->blsSignMessageHash(request["keyShareName"].asString(), request["messageHash"].asString(), request["n"].asInt(), request["t"].asInt(), request["signerIndex"].asInt());
}
inline virtual void importECDSAKeyI(const Json::Value &request, Json::Value &response)
{
......@@ -83,6 +84,10 @@ class AbstractStubServer : public jsonrpc::AbstractServer<AbstractStubServer>
{
response = this->GetBLSPublicKeyShare(request["BLSKeyName"].asString());
}
inline virtual void ComplaintResponseI(const Json::Value &request, Json::Value &response)
{
response = this->ComplaintResponse( request["polyName"].asString(), request["n"].asInt(), request["t"].asInt(),request["ind"].asInt());
}
virtual Json::Value importBLSKeyShare(int index, const std::string& keyShare, const std::string& keyShareName, int n, int t) = 0;
virtual Json::Value blsSignMessageHash(const std::string& keyShareName, const std::string& messageHash, int n, int signerIndex, int t) = 0;
......@@ -98,6 +103,7 @@ class AbstractStubServer : public jsonrpc::AbstractServer<AbstractStubServer>
virtual Json::Value DKGVerification( const std::string& publicShares, const std::string& EthKeyName, const std::string& SecretShare, int t, int n, int index) = 0;
virtual Json::Value CreateBLSPrivateKey(const std::string & BLSKeyName, const std::string& EthKeyName, const std::string& polyName, const std::string & SecretShare, int t, int n) = 0;
virtual Json::Value GetBLSPublicKeyShare(const std::string & BLSKeyName) = 0;
virtual Json::Value ComplaintResponse(const std::string& polyName, int n, int t, int ind) = 0;
};
#endif //JSONRPC_CPP_STUB_ABSTRACTSTUBSERVER_H_
......@@ -61,9 +61,15 @@ std::string *stringFromG1(libff::alt_bn128_G1 *_g1) {
}
libff::alt_bn128_Fr *keyFromString(const char *_keyString) {
libff::alt_bn128_Fr *keyFromString(const char *_keyStringHex) {
mpz_t skey;
mpz_init(skey);
mpz_set_str(skey, _keyStringHex, 16);
return new libff::alt_bn128_Fr(_keyString);
char skey_dec[mpz_sizeinbase (skey, 10) + 2];
char * skey_str = mpz_get_str(skey_dec, 10, skey);
return new libff::alt_bn128_Fr(skey_dec);
}
......
......@@ -104,13 +104,14 @@ void gen_dkg_poly( char* secret, unsigned _t ){
libff::alt_bn128_Fr PolynomialValue(const std::vector<libff::alt_bn128_Fr>& pol, libff::alt_bn128_Fr point, unsigned _t) {
libff::alt_bn128_Fr value = libff::alt_bn128_Fr::zero();
libff::alt_bn128_Fr pow = libff::alt_bn128_Fr::one();
for (size_t i = 0; i < _t; ++i) {
if (i == _t - 1 && pol[i] == libff::alt_bn128_Fr::zero()) {
//snprintf(err_string, BUF_LEN,"sgx_unseal_data failed with status
}
for (unsigned i = 0; i < pol.size(); ++i) {
// if (i == _t - 1 && pol[i] == libff::alt_bn128_Fr::zero()) {
// //snprintf(err_string, BUF_LEN,"sgx_unseal_data failed with status
// }
value += pol[i] * pow;
pow *= point;
}
......@@ -149,11 +150,16 @@ void calc_secret_share(const char* decrypted_koefs, char * s_share,
}
void calc_secret_shareG2(const char* decrypted_koefs, char * s_shareG2,
void calc_secret_shareG2_old(const char* decrypted_koefs, char * s_shareG2,
unsigned _t, unsigned ind){
libff::init_alt_bn128_params();
char symbol = ':';
std::vector<libff::alt_bn128_Fr> poly = SplitStringToFr(decrypted_koefs, symbol);
// if ( poly.size() != _t){
// //"t != poly.size()" +
// //strncpy(s_shareG2, std::to_string(poly.size()).c_str(), 18);
// }
libff::alt_bn128_Fr secret_share = PolynomialValue(poly, libff::alt_bn128_Fr(ind), _t);
......@@ -161,7 +167,27 @@ void calc_secret_shareG2(const char* decrypted_koefs, char * s_shareG2,
std::string secret_shareG2_str = ConvertG2ToString(secret_shareG2);
strncpy(s_shareG2, secret_shareG2_str.c_str(), secret_shareG2_str.length());
strncpy(s_shareG2, secret_shareG2_str.c_str(), secret_shareG2_str.length() + 1);
//strncpy(s_shareG2, decrypted_koefs, 320);
}
void calc_secret_shareG2(const char* s_share, char * s_shareG2){
libff::init_alt_bn128_params();
mpz_t share;
mpz_init(share);
mpz_set_str(share, s_share, 16);
char arr[mpz_sizeinbase (share, 10) + 2];
char * share_str = mpz_get_str(arr, 10, share);
libff::alt_bn128_Fr secret_share(share_str);
libff::alt_bn128_G2 secret_shareG2 = secret_share * libff::alt_bn128_G2::one();
std::string secret_shareG2_str = ConvertG2ToString(secret_shareG2);
strncpy(s_shareG2, secret_shareG2_str.c_str(), secret_shareG2_str.length() + 1);
}
void calc_public_shares(const char* decrypted_koefs, char * public_shares,
......@@ -238,11 +264,6 @@ int Verification ( char * public_shares, mpz_t decr_secret_share, int _t, int in
char * tmp = mpz_get_str(arr, 10, decr_secret_share);
libff::alt_bn128_Fr sshare(tmp);
// strncpy(public_shares, tmp, strlen(tmp));
// std::string res = ConvertHexToDec("fe43567238abcdef98760");
// strncpy(public_shares, res.c_str(), res.length());
......@@ -273,8 +294,18 @@ int Verification ( char * public_shares, mpz_t decr_secret_share, int _t, int in
}
void calc_bls_public_key(char* skey, char* pub_key){
libff::alt_bn128_Fr bls_skey(skey);
void calc_bls_public_key(char* skey_hex, char* pub_key){
libff::init_alt_bn128_params();
mpz_t skey;
mpz_init(skey);
mpz_set_str(skey, skey_hex, 16);
char skey_dec[mpz_sizeinbase (skey, 10) + 2];
char * skey_str = mpz_get_str(skey_dec, 10, skey);
libff::alt_bn128_Fr bls_skey(skey_dec);
libff::alt_bn128_G2 public_key = bls_skey * libff::alt_bn128_G2::one();
public_key.to_affine_coordinates();
......
......@@ -28,7 +28,9 @@ EXTERNC int Verification ( char * public_shares, mpz_t decr_secret_share, int _t
EXTERNC void calc_bls_public_key(char* skey, char* pub_key);
EXTERNC void calc_secret_shareG2(const char* public_shares, char * s_shareG2,
EXTERNC void calc_secret_shareG2_old(const char* public_shares, char * s_shareG2,
unsigned _t, unsigned ind);
EXTERNC void calc_secret_shareG2(const char* s_share, char * s_shareG2);
#endif //SGXD_DKGUTILS_H
......@@ -332,7 +332,6 @@ void decrypt_key(int *err_status, char *err_string, uint8_t *encrypted_key,
init();
uint32_t decLen;
*err_status = -9;
......@@ -345,9 +344,10 @@ void decrypt_key(int *err_status, char *err_string, uint8_t *encrypted_key,
return;
}
//snprintf(err_string, BUF_LEN, "decr key is %s", key);
if (decLen != MAX_KEY_LENGTH) {
snprintf(err_string, BUF_LEN, "decLen != MAX_KEY_LENGTH");
if (decLen > MAX_KEY_LENGTH) {
snprintf(err_string, BUF_LEN, "wrong decLen");//"decLen != MAX_KEY_LENGTH");
return;
}
......@@ -364,12 +364,14 @@ void decrypt_key(int *err_status, char *err_string, uint8_t *encrypted_key,
// check that key is padded with 0s
for (int i = keyLen; i < MAX_KEY_LENGTH; i++) {
if (key[i] != 0) {
snprintf(err_string, BUF_LEN, "Unpadded key");
return;
}
}
// for (int i = keyLen; i < MAX_KEY_LENGTH; i++) {
// if (key[i] != 0) {
// snprintf(err_string, BUF_LEN, "Unpadded key");
// return;
// }
// }
//strncpy(key, "2f993bb09f16c402a27dae868c02791bca7fcf564f1c9e2ba50b142b843a4b60", BUF_LEN);
*err_status = 0;
return;
......@@ -392,9 +394,12 @@ void bls_sign_message(int *err_status, char *err_string, uint8_t *encrypted_key,
decrypt_key(err_status, err_string, encrypted_key, enc_len, key);
if (*err_status != 0) {
strncpy(signature, err_string, BUF_LEN);
return;
}
enclave_sign(key, _hashX, _hashY, sig);
strncpy(signature, sig, BUF_LEN);
......@@ -435,7 +440,7 @@ void decrypt_dkg_secret (int *err_status, char* err_string, uint8_t* encrypted_d
(const sgx_sealed_data_t *)encrypted_dkg_secret, NULL, 0, decrypted_dkg_secret, &decr_len);
if (status != SGX_SUCCESS) {
snprintf(err_string, BUF_LEN,"sgx_unseal_data failed with status %d", status);
snprintf(err_string, BUF_LEN,"sgx_unseal_data - encrypted_dkg_secret failed with status %d", status);
return;
}
......@@ -455,7 +460,7 @@ void get_secret_shares(int *err_status, char* err_string, uint8_t* encrypted_dkg
// (const sgx_sealed_data_t *)encrypted_dkg_secret, NULL, 0, (uint8_t*)decrypted_dkg_secret, &decr_len);
if (*err_status != 0) {
snprintf(err_string, BUF_LEN,"sgx_unseal_data failed with status %d", *err_status);
snprintf(err_string, BUF_LEN,"sgx_unseal_data - encrypted_dkg_secret failed with status %d", *err_status);
return;
}
......@@ -493,7 +498,7 @@ void ecdsa_sign1(int *err_status, char *err_string, uint8_t *encrypted_key, uint
(const sgx_sealed_data_t *)encrypted_key, NULL, 0, skey, &dec_len);
if (status != SGX_SUCCESS) {
snprintf(err_string, BUF_LEN,"sgx_unseal_data failed with status %d", status);
snprintf(err_string, BUF_LEN,"sgx_unseal_data failed - encrypted_key with status %d", status);
return;
}
......@@ -561,14 +566,14 @@ void set_encrypted_dkg_poly(int *err_status, char *err_string, uint8_t* encrypte
(const sgx_sealed_data_t *)encrypted_poly, NULL, 0, Decrypted_dkg_poly, &decr_len);
if (status != SGX_SUCCESS) {
snprintf(err_string, BUF_LEN,"sgx_unseal_data failed with status %d", status);
snprintf(err_string, BUF_LEN,"sgx_unseal_data - encrypted_poly failed with status %d", status);
return;
}
}
void get_encr_sshare(int *err_status, char *err_string, uint8_t *encrypted_skey, uint32_t* dec_len,
char* result_str, char* pub_keyB, uint8_t _t, uint8_t _n, uint8_t ind ){
char* result_str, char * s_shareG2, char* pub_keyB, uint8_t _t, uint8_t _n, uint8_t ind ){
char skey[ECDSA_SKEY_LEN];
char *pub_key_x = (char *)calloc(1024, 1);
......@@ -583,7 +588,7 @@ void get_encr_sshare(int *err_status, char *err_string, uint8_t *encrypted_skey,
(const sgx_sealed_data_t *)encrypted_skey, NULL, 0, (uint8_t *)skey, &enc_len);
if (status != SGX_SUCCESS) {
snprintf(err_string, BUF_LEN,"sgx_unseal_data failed with status %d", status);
snprintf(err_string, BUF_LEN,"sgx_unseal_data failed - encrypted_skey with status %d", status);
return;
}
snprintf(err_string, BUF_LEN,"unsealed random skey is %s\n", skey);
......@@ -599,6 +604,8 @@ void get_encr_sshare(int *err_status, char *err_string, uint8_t *encrypted_skey,
calc_secret_share(Decrypted_dkg_poly, s_share, _t, _n, ind);
snprintf(err_string + 88, BUF_LEN,"\nsecret share is %s", s_share);
calc_secret_shareG2(s_share, s_shareG2);
char* cypher = (char *)malloc(65);
xor_encrypt(common_key, s_share, cypher);
//snprintf(err_string, BUF_LEN ,"cypher is %s length is %d", cypher, strlen(cypher));
......@@ -623,22 +630,27 @@ void complaint_response(int *err_status, char *err_string, uint8_t *encrypted_DH
uint32_t enc_len;
sgx_status_t status = sgx_unseal_data(
(const sgx_sealed_data_t *)encrypted_DHkey, NULL, 0, (uint8_t *)DH_key, &enc_len);
if (status != SGX_SUCCESS) {
snprintf(err_string, BUF_LEN,"sgx_unseal_data failed with status %d", status);
return;
}
// sgx_status_t status = sgx_unseal_data(
// (const sgx_sealed_data_t *)encrypted_DHkey, NULL, 0, (uint8_t *)DH_key, &enc_len);
// if (status != SGX_SUCCESS) {
// snprintf(err_string, BUF_LEN,"sgx_unseal_data - encrypted_DHkey failed with status %d", status);
// return;
// }
char* decrypted_dkg_secret = (char*)malloc(DKG_BUFER_LENGTH);
uint32_t decr_len;
decrypt_dkg_secret(err_status, err_string, encrypted_dkg_secret, (uint8_t*)decrypted_dkg_secret, &decr_len);
if (*err_status != 0) {
snprintf(err_string, BUF_LEN,"sgx_unseal_data failed with status %d", *err_status);
snprintf(err_string, BUF_LEN,"sgx_unseal_data - encrypted_dkg_secret failed with status %d", *err_status);
return;
}
calc_secret_shareG2(decrypted_dkg_secret, s_shareG2, _t, ind1);
calc_secret_shareG2_old(decrypted_dkg_secret, s_shareG2, _t, ind1);
//snprintf(err_string, BUF_LEN,"poly:%s", decrypted_dkg_secret);
// snprintf(err_string, BUF_LEN,"what the fuck");
//snprintf(err_string, BUF_LEN,"s_shareG2:%s", s_shareG2);
free(decrypted_dkg_secret);
}
......@@ -686,7 +698,7 @@ void dkg_verification(int *err_status, char* err_string, const char * public_sha
}
void create_bls_key(int *err_status, char* err_string, const char* s_shares,
uint8_t* encrypted_key, uint64_t key_len, uint8_t * encr_bls_key){
uint8_t* encrypted_key, uint64_t key_len, uint8_t * encr_bls_key, uint32_t *enc_bls_key_len){
//uint32_t dec_len = 625;
char skey[ECDSA_SKEY_LEN];
......@@ -762,18 +774,19 @@ void create_bls_key(int *err_status, char* err_string, const char* s_shares,
mpz_mod(bls_key, sum, q);
char key_share[mpz_sizeinbase(bls_key, 10) + 2];
char *key = mpz_get_str(key_share, 10, bls_key);
char key_share[mpz_sizeinbase(bls_key, 16) + 2];
char *key = mpz_get_str(key_share, 16, bls_key);
snprintf(err_string, BUF_LEN,"bls private key is %s", key_share);
uint32_t sealedLen = sgx_calc_sealed_data_size(0, ECDSA_SKEY_LEN);
status = sgx_seal_data(0, NULL, ECDSA_SKEY_LEN, (uint8_t *)key_share, sealedLen,(sgx_sealed_data_t*)encr_bls_key);
if( status != SGX_SUCCESS) {
snprintf(err_string, BUF_LEN,"seal bls private key failed with status %d ", status);
return;
}
*enc_bls_key_len = sealedLen;
//snprintf(err_string, BUF_LEN,"sshare is %s", decr_sshare);
//snprintf(err_string, BUF_LEN,"encr_share is %s", encr_sshare);
//snprintf(err_string, BUF_LEN,"common_key is %s", common_key);
......@@ -793,18 +806,18 @@ void create_bls_key(int *err_status, char* err_string, const char* s_shares,
void get_bls_pub_key(int *err_status, char* err_string, uint8_t* encrypted_key, uint64_t key_len, char* bls_pub_key){
char skey[ECDSA_SKEY_LEN];
char skey_hex[ECDSA_SKEY_LEN];
sgx_status_t status = sgx_unseal_data(
(const sgx_sealed_data_t *)encrypted_key, NULL, 0, (uint8_t *)skey, &key_len);
uint32_t len = key_len;
sgx_status_t status = sgx_unseal_data(
(const sgx_sealed_data_t *)encrypted_key, NULL, 0, (uint8_t *)skey_hex, &len);
if (status != SGX_SUCCESS) {
snprintf(err_string, BUF_LEN,"sgx_unseal_data failed with status %d", status);
return;
}
calc_bls_public_key(skey, bls_pub_key);
calc_bls_public_key(skey_hex, bls_pub_key);
}
......
......@@ -113,6 +113,7 @@ enclave {
[out, count = 1024] uint8_t *encrypted_skey,
[user_check] uint32_t* dec_len,
[out, count = 193] char* result_str,
[out, count = 320] char* s_shareG2,
[in, count = 129] char* pub_keyB,
uint8_t _t,
uint8_t _n,
......@@ -135,7 +136,8 @@ enclave {
[in, count = 6145] const char* s_shares,
[in, count = 1024] uint8_t* encrypted_key,
uint64_t key_len,
[out, count = 1024] uint8_t * encr_bls_key);
[out, count = 1024] uint8_t * encr_bls_key,
[user_check] uint32_t *enc_bls_key_len);
public void get_bls_pub_key(
[user_check]int *err_status,
......@@ -151,7 +153,7 @@ enclave {
[in, count = 3050] uint8_t *encrypted_dkg_secret,
[user_check] uint32_t* dec_len,
[out, count = 65] char* DH_key,
[out, count = 257] char* s_shareG2,
[out, count = 320] char* s_shareG2,
uint8_t _t,
uint8_t _n,
uint8_t ind1);
......
......@@ -46,7 +46,7 @@
#define COULD_NOT_ACCESS_DATABASE -9
#define NULL_DATABASE -10
#define WALLETDB_NAME "sgxwallet.db"
#define WALLETDB_NAME "sgxwallet.db" //"test_sgxwallet.db"//
#define ENCLAVE_NAME "secure_enclave.signed.so"
......
......@@ -98,7 +98,7 @@
{
"name": "generateDKGPoly",
"params": {
"polyName": "key1",
"polyName": "POLY:SCHAIN_ID :NODE_ID :DKG_ID",
"t": 3
},
"returns": {
......@@ -176,7 +176,7 @@
"returns": {
"status": 0,
"errorMessage": "12345",
"BLSPublicKeyShare": "123"
"BLSPublicKeyShare": []
}
},
......
......@@ -26,7 +26,7 @@ class StubClient : public jsonrpc::Client
else
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
}
Json::Value blsSignMessageHash(const std::string& keyShareName, const std::string& messageHash, int n, int signerIndex, int t) throw (jsonrpc::JsonRpcException)
Json::Value blsSignMessageHash(const std::string& keyShareName, const std::string& messageHash, int n, int t, int signerIndex) throw (jsonrpc::JsonRpcException)
{
Json::Value p;
p["keyShareName"] = keyShareName;
......@@ -173,6 +173,20 @@ class StubClient : public jsonrpc::Client
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
}
Json::Value ComplaintResponse(const std::string& polyName, int n, int t, int ind) throw (jsonrpc::JsonRpcException)
{
Json::Value p;
p["polyName"] = polyName;
p["n"] = n;
p["t"] = t;
p["ind"] = ind;
Json::Value result = this->CallMethod("ComplaintResponse",p);
if (result.isObject())
return result;
else
throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString());
}
};
#endif //JSONRPC_CPP_STUB_STUBCLIENT_H_
......@@ -524,8 +524,8 @@ TEST_CASE( "DKG encrypted secret shares test", "[dkg-encr_sshares]" ) {
char *pub_key_y = (char *)calloc(1024, 1);
char *pub_keyB = "c0152c48bf640449236036075d65898fded1e242c00acb45519ad5f788ea7cbf9a5df1559e7fc87932eee5478b1b9023de19df654395574a690843988c3ff475";
status = get_encr_sshare(eid, &err_status, errMsg, encr_pr_DHkey, &enc_len, result,
char s_shareG2[320];
status = get_encr_sshare(eid, &err_status, errMsg, encr_pr_DHkey, &enc_len, result, s_shareG2,
pub_keyB, 2, 2, 1);
REQUIRE(status == SGX_SUCCESS);
printf(" get_encr_sshare completed with status: %d %s \n", err_status, errMsg);
......@@ -563,7 +563,8 @@ TEST_CASE( "DKG verification test", "[dkg-verify]" ) {
char *pub_keyB = "c0152c48bf640449236036075d65898fded1e242c00acb45519ad5f788ea7cbf9a5df1559e7fc87932eee5478b1b9023de19df654395574a690843988c3ff475";
status = get_encr_sshare(eid, &err_status, errMsg, encr_pr_DHkey, &enc_len, result,
char s_shareG2[320];
status = get_encr_sshare(eid, &err_status, errMsg, encr_pr_DHkey, &enc_len, result, s_shareG2,
pub_keyB, 2, 2, 1);
REQUIRE(status == SGX_SUCCESS);
printf(" get_encr_sshare completed with status: %d %s \n", err_status, errMsg);
......@@ -700,6 +701,24 @@ TEST_CASE("get public ECDSA key", "[get_pub_ecdsa_key_test]") {
}*/
TEST_CASE( "dkg_complaint test1", "[dkgc]" ) {
init_daemon();
init_enclave();
char* encr_poly = "04000200000000000406ffffff02000000000000000000000b000000000000ff0000000000000000877a3884976af70f3de0ed7ad82b16cad2b5e69bf9976f3012a421ee7025c4b5000000f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ba090000000000000000000000000000ba090000000000000000000000000000426594165b64a693699c19f0efcbe2b1e7bde98de433a929f8fcdbc093e5f490d3f17674667de6160945584897077c401f3fa0bc05b26dc6ffea9a3d38bbcedaccb45bc39858050e97a5ae98f02ecd17ac32784d2cda930481805c1b9db38443ccef23a3c0bcc3f010a562bfc7b9d9db73fa412273ff884fdb8c0b9e72dfb114707f930bee9d44241fcfb7fd455d68b5cdf2b687afcf9fa8b568a7b17ea60258d821fbdeafdc8524db14165530836216eaccd3d7f9e03762db61d0c506f4fbb4f6d21336c8fd1e59cf6c57d91046cd0a4b0e044daab39371bb9dcbf11aa652246b6a93ff536629c8b54fa7e8074795190edc702ca162386f1c26c3601c2ea27a677194a2c183396ecad15c0d5da95a8137c4e7967c2b3f829a6d80d4fa13a53058e7aa3b807ca665770ba6495e38526f92479aac823e8224ca633982722424dc2498929bd076daea93a73d4ad60e4924496bcca55a95977139801cb7407caf4bba76ac972ea91cbee2661d18d404cd652b0df6ef09736f473d4cead9a218809e0a726bfcf2823006375d25b07c514eab9249a4d17da0f2a3f05886dc3698bba6de7b2e32beb96386a69385274dac607e2e7f7e68fa7673b83c99798298e44d64c118c42ce8a0102cb45cb892283c5d201c19ae12a38890e18ef610f87fd63c3571b8e9ba782ebd62282e14cc4bf5cb9eb4280a5cb63b4b31a88720c043fd1e0c3b916016cc46c480bab1e7fdf5a2960df8babdbe19083e17bd65c58482affb3dd549f5674eb761be49b80c16ded7f41bc1993d5af5d27a55b9be24fa20d288087978c70119bed4c441f0e109baf95d80df7623ff6ad31f28e906413d12ebeb4669f96c34931511b37b6a5be5935c905c893ed9b0518275bd5cf241c73f6d06169f30a74e65e6f240f8e2ed696a9964851fb18b827bbc15ea20738891a7a69312d85e47b42bd24dca3285876ad41a1750d53e5f919a453a91ddb11943292ced0130828dfa08c9d3cea0a50a2619af4735770df386074c72cd60b87ede0fe53885340b907c9c02d8a7fc4c7bf509c169b049ef627c33926c9247d9e1a44c27b86b722385d8e61af40919e96ed8feb2b781bfa68095d07966381bfaac7389010b45db671e3d5e7f488ad7ff69ac6fc599fb4f259c9cb9d1ee7265312ecc4dc4ad89b9850445a7e094a7a9f7e7cf71a159f4db849d0b7f9346065ac8e509fc3f7932db1f91c3a1e34604cbedd071772bbd414d4b96328aedf372ff4e4170ca0c23bbadd447b49eff0ae2c37b51052c6e1cf2a0ef0106fa892a4a18165bfeea92c565ae5aecfa8163aa12c762f40135664b467bd58470216b1124413a2a723a358a759425cf293a6cf0b42662892f42d62e6a446016365c22ab26ca4e7dbd1c404a3f2f515fb4fd2e33efc82cca453b63d6d9e8fc0369c0192684731314ab2d684f948171c1917f99603667367b8fa69d207e3bf9c05b13b4720f493642a497b403934dbb7865dd0d0c893483b5c2986baac9d7f50612abe37f2274531ad80aba90d76117d81f99cf7459097cd7a90c441339b581dcd0bf2e74a912415918546bb5c645362dd4424631588a95a0945cd723df229b1b6da93142de12084ef56c93e2f342ba524a15c94b6334ad3f8baaa05e5e55888559a0b73be9116ed2bb713eb01f188ac86ab6ff4b0228eeb7bf481369fad1b5dc8d1718e62f65eb2c4a2906539526cfd45d4ae6f1a903f88ae4cf7f9a4fb290a14db3595ac581d70daf5b020864b315c17a99d23f19f7aa255372fd5b709eacf27503e3ab8fba5785944158aeb73c5b432c65286ae05d1ee95b5c922e24a83ecef7f4d96bfe86bd7990c13db918dbba8977f3cbfe1854a8cdcc63ea73ce3f93757ef6cb77e8144c2df51a0de62eaa982a803b35f24c6f5edf2bbacce988bfe37e394ef2acb2f364c8939365c38c56d32d8c9e1600c8b521ed80f5ad82334e915b862ff3dbf343b914170be3b881a4696c6f97100b005435cbdbb7dd7ff7bec17b179ab7645166dacf59544d7cf7cfcb94ac35acde7311d2213f9aeb5734ccbd1ad800d517c0218b92310ebd9d76b96908aba2c8779111b5ed6acfa15817b4e7bbee845b1b4eb9b8daa4cdf0a0349dfde69f63355b2a32197fb2c4a504721d6857a97da303b14dc58831cbdccba06f4bb3616bc1f33e77e1df9a5419cf7613f4d363297a1c1b6f2010f5029c48fc6909076d1883ee7b21254753f9f420bd6602d49a359719a89c5a8d3c0a93337a1c937161e1490598c3b00cac95f1240b69b4080a81942e8f1900f978b16daac1c732b37083e800ca03bf8dc38d5e2cc45aac155d169050ec49070de42e1f7cdf59556788576366930f444b310e9c16ab39c0c704eabb135935dcc218ecf3327b78256674b5b43a6886ee3099d96c5a9d6d00a65b620986abed68eaafcab311da531847e9da30276ca398fee82c77293ce55c41e562cda9801bf76eac8d41345fa6b13e31dafbf774046a21e00fa07e882133b70a0853c51ab329e8c0ff5b6c93e385609a295a8d380c33e1ee9e69e812ad404d1252d56bc3ba583aaf4581f81f7ea2b34666eca35883922dde55007a0f0049149fea6d4a0911a001e48dc105020ffd84a45a7db78dd5b1e78a14a47d1ecb6d9ffc12e5183a3dc06f03e74a449e89b46ef91a74462938e6898fed3fb72b17a5a207da6ae04c1859da383a9a300ff31f3e5a668027e4f38cc35bd6c0a5a7532f8d33ee4ea2b77dd6b0d51475b263d26c3fde0ff79ccdca8b386bcf586384f18b95cc73b834d2969da753acc42c81ac171fa19be22652d5e0eadb37445dcbcf9bd3fc4220ac1977191a38cba9ced7b5a3c8defd07a1ff68dc85f2f8c88d3314ddf4f135aaf459127715de101943988add0333e38b7b85449111a6b72fa6965d1369a897508a4990d8150da9cd68f5c60f612dafb598463d23cfb6a3369418197d16709ec9b4f15dd9e85f7a4ae86152600d6bc7c1ba30516bc17e8852f087c3ef390ab05f6c57a4ab405fedbc04849a163ed292c45bb02afc2e059ca08adf3d51e2f9a79637f6cf5e222f9ea27ec37c67849c937a99e270f1d05add89ab42b6fe1648f02fcbfbefb2f176597df1e23c41c39c29ba2d48c2788ea95327657fdb41ec24aff3259631046f5a62c07288181453942a1f24f495d087522569eef5b117477349720adde22136fdceb92173741ed0ba4252ee7332e5f835a18f6708cf429167e328a8ed33518610ccea3b750c1460a140f2645bf28fa6bad57d298463e117426ea1b8b944e04032df3413391653805149ef7dba49fb4221bc64f40c039bbaf4ecaac256084402699a89bd440539e565582f2cfb0e35ab41f70326cd3f24168a3c2816553aa8ed19facb6d3a07af5ec7a5f9f80e96c9e41adbd6fa0d44bda9cb954fed933912ec9d320cf5c2fc687bd89a5c5a1ddd87b7e3db33c0138aaaa92dd4f4619c8f9dfcc269aa8fbeb7ede7e05c2f778b05d8339fa175e2447844cd86dd886b40cb3badc4ce986aa93a3d973d1c4a76b6bdc0";
std::pair<std::string, std::string> result = response_to_complaint("pp2", encr_poly, 2, 2, 0);
}
TEST_CASE( "pub_bls_key", "[pub_bls]" ) {
init_daemon();
init_enclave();
char *encryptedKeyHex =
"04000200000000000406ffffff02000000000000000000000b000000000000ff0000000000000000813f8390f6228a568e181a4dadb6508e3e66f5247175d65dbd0d8c7fbfa4df45000000f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000008000000000000000000000000000000000dc044ae0cd79faaf41e8a7abb412790476738a98b5b6ce95fa1a32db5551b0a0d867305f4de558c64fee730a1f62394633c7d4ca65e3a40b7883e89c2801c61918b01c5de8624a52963df6f4de8581bcbdd2f9b69720d4cc764e03a04c7a99314bfdb5d2d55deda2ca40cd691f093fb2ecbae24cdacdd4d5de93189c6dfd6792d7b95bd5e330aec3538e7a85d15793"; // encryptTestKey();
//writeDataToDB("test_bls_key0", encryptedKeyHex);
std::vector<std::string> result = GetBLSPubKey(encryptedKeyHex);
//std::cerr << "pub key " << result << std::endl;
sgx_destroy_enclave(eid);
}
#include "stubclient.h"
#include <jsonrpccpp/client/connectors/httpclient.h>
......@@ -722,17 +741,17 @@ TEST_CASE("API test", "[api_test]") {
try {
//levelDb->deleteOlegKey("0");
//levelDb->deleteOlegKey("1");
levelDb->deleteDHDKGKey("p2_0:");
levelDb->deleteDHDKGKey("p2_1:");
// levelDb->deleteDHDKGKey("p2_0:");
//levelDb->deleteDHDKGKey("p2_1:");
//cout << c.generateECDSAKey() << endl;
// cout << c.generateECDSAKey() << endl;
// cout << c.renameESDSAKey("NODE_1CHAIN_1","tmp_NEK:bcacde0d26c0ea2c7e649992e7f791e1fba2492f5b7ae63dadb799075167c7fc");
//cout<<c.getPublicECDSAKey("test_key1");
//cout << c.ecdsaSignMessageHash(16, "known_key1","0x09c6137b97cdf159b9950f1492ee059d1e2b10eaf7d51f3a97d61f2eee2e81db" );
// cout << c.blsSignMessageHash(TEST_BLS_KEY_NAME, "0x09c6137b97cdf159b9950f1492ee059d1e2b10eaf7d51f3a97d61f2eee2e81db", 2,2,1 );
// cout << c.generateDKGPoly("p2", 2);
//cout << c.getVerificationVector("polyy", 5, 5);
// cout << c.generateDKGPoly("pp2", 2);
// cout << c.getVerificationVector("polyy", 5, 5);
// cout << c.getSecretShare("p2",
// "505f55a38f9c064da744f217d1cb993a17705e9839801958cda7c884e08ab4dad7fd8d22953d3ac7f0913de24fd67d7ed36741141b8a3da152d7ba954b0f14e232d69c361f0bc9e05f1cf8ef387122dc1d2f7cee7b6cda3537fc9427c02328b01f02fd94ec933134dc795a642864f8cb41ae263e11abaf992e21fcf9be732deb",
......@@ -745,7 +764,7 @@ TEST_CASE("API test", "[api_test]") {
Json::Value publicKeys;
publicKeys.append("505f55a38f9c064da744f217d1cb993a17705e9839801958cda7c884e08ab4dad7fd8d22953d3ac7f0913de24fd67d7ed36741141b8a3da152d7ba954b0f14e2");
publicKeys.append("378b3e6fdfe2633256ae1662fcd23466d02ead907b5d4366136341cea5e46f5a7bb67d897d6e35f619810238aa143c416f61c640ed214eb9c67a34c4a31b7d25e6e");
cout << c.getSecretShare("p2", publicKeys, 2, 2);
// cout << c.getSecretShare("pp2", publicKeys, 2, 2);
// cout << c.generateDKGPoly("p3", 3);
// cout << c.getSecretShare("p3",
// "669aa790e1c5f5199af82ab0b6f1965c382d23a2ebdda581454adba3fd082a30edab62b545f78f1e402ceef7340a0364a7046633d6151fe7e657d8b8a6352378b3e6fdfe2633256ae1662fcd23466d02ead907b5d4366136341cea5e46f5a7bb67d897d6e35f619810238aa143c416f61c640ed214eb9c67a34c4a31b7d25e6e9d43f1c88581f53af993da1654c9f91829c1fe5344c4452ef8d2d8675c6a051c19029f6e4f82b035fb3552058cf22c5bbafd9e6456d579634987281765d130b0",
......@@ -770,12 +789,21 @@ TEST_CASE("API test", "[api_test]") {
// std::string shares = "252122c309ed1f32faa897ede140c5b9c1bc07d5d9c94b7a22d4eeb13da7b7142aa466376a6008de4aab9858aa34848775282c4c3b56370bf25827321619c6e47701c8a32e3f4bb28f5a3b12a09800f318c550cedff6150e9a673ea56ece8b76df831dbef474cfc38be1c980130a8d273ff410fbf87deece9d7756a1b08ba9e954c1676cc7f2cac16e16cff0c877d8cf967381321fb4cc78e3638245a1dc85419766d281aff4935cc6eac25c9842032c8f7fae567c57622969599a72c42d2e1e";
std::string shares = "252122c309ed1f32faa897ede140c5b9c1bc07d5d9c94b7a22d4eeb13da7b7142aa466376a6008de4aab9858aa34848775282c4c3b56370bf25827321619c6e47701c8a32e3f4bb28f5a3b12a09800f318c550cedff6150e9a673ea56ece8b7637092c06c423b627c38ff86d1e66608bdc1496ef855b86e9f773441ac0b285d92aa466376a6008de4aab9858aa34848775282c4c3b56370bf25827321619c6e47701c8a32e3f4bb28f5a3b12a09800f318c550cedff6150e9a673ea56ece8b76";
// cout << c.CreateBLSPrivateKey( "test_bls","key0", "oleh1", shares, 2, 2 );
//cout << c.CreateBLSPrivateKey( "test_bls1","key0", "oleh1", shares, 2, 2 );
//cout << c.GetBLSPublicKeyShare("test_bls_key0");
std::string s_share = "13b871ad5025fed10a41388265b19886e78f449f758fe8642ade51440fcf850bb2083f87227d8fb53fdfb2854e2d0abec4f47e2197b821b564413af96124cd84a8700f8eb9ed03161888c9ef58d6e5896403de3608e634e23e92fba041aa283484427d0e6de20922216c65865cfe26edd2cf9cbfc3116d007710e8d82feafd9135c497bef0c800ca310ba6044763572681510dad5e043ebd87ffaa1a4cd45a899222207f3d05dec8110d132ad34c62d6a3b40bf8e9f40f875125c3035062d2ca";
std::string EthKeyName = "tmp_NEK:8abc8e8280fb060988b65da4b8cb00779a1e816ec42f8a40ae2daa520e484a01";
//cout << c.CreateBLSPrivateKey( "test_blskey", EthKeyName, "JCGMt", s_share, 2, 2 );
//cout << c.GetBLSPublicKeyShare("test_blskey");
// cout << c.GetBLSPublicKeyShare("test_bls_key");
cout << c.blsSignMessageHash("dOsRY","38433e5ce087dcc1be82fcc834eae83c256b3db87d34f84440d0b708daa0c6f7", 2, 2, 1);
//cout << c.ComplaintResponse("pp2", 2, 2, 0);
} catch (JsonRpcException &e) {
cerr << e.what() << endl;
}
sgx_destroy_enclave(eid);
}
......@@ -13,6 +13,8 @@
#include <sgx_tgmp.h>
namespace libff {
template<mp_size_t n> class bigint;
......
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