SKALE-4262 write key owners to db

parent 331cc90a
...@@ -54,7 +54,6 @@ class LevelDB { ...@@ -54,7 +54,6 @@ class LevelDB {
static string sgx_data_folder; static string sgx_data_folder;
public: public:
static void initDataFolderAndDBs(); static void initDataFolderAndDBs();
...@@ -104,8 +103,6 @@ public: ...@@ -104,8 +103,6 @@ public:
virtual ~LevelDB(); virtual ~LevelDB();
static const string &getSgxDataFolder(); static const string &getSgxDataFolder();
}; };
......
...@@ -48,12 +48,9 @@ class SGXWalletServer : public AbstractStubServer { ...@@ -48,12 +48,9 @@ class SGXWalletServer : public AbstractStubServer {
static map<string,string> ecdsaRequests; static map<string,string> ecdsaRequests;
static recursive_mutex ecdsaRequestsLock; static recursive_mutex ecdsaRequestsLock;
static void checkForDuplicate(map <string, string> &_map, recursive_mutex &_m, const string &_key, static void checkForDuplicate(map <string, string> &_map, recursive_mutex &_m, const string &_key,
const string &_value); const string &_value);
public: public:
static bool verifyCert(string& _certFileName); static bool verifyCert(string& _certFileName);
......
...@@ -60,7 +60,7 @@ Json::Value importBLSReqMessage::process() { ...@@ -60,7 +60,7 @@ Json::Value importBLSReqMessage::process() {
auto result = SGXWalletServer::importBLSKeyShareImpl(keyShare, keyName); auto result = SGXWalletServer::importBLSKeyShareImpl(keyShare, keyName);
if (result["status"] == 0) { if (result["status"] == 0) {
auto cert = getStringRapid("cert"); auto cert = getStringRapid("cert");
keysByOwners[keyName] = cert; addKeyByOwner(keyName, cert);
} }
result["type"] = ZMQMessage::IMPORT_BLS_RSP; result["type"] = ZMQMessage::IMPORT_BLS_RSP;
return result; return result;
...@@ -72,7 +72,7 @@ Json::Value importECDSAReqMessage::process() { ...@@ -72,7 +72,7 @@ Json::Value importECDSAReqMessage::process() {
auto result = SGXWalletServer::importECDSAKeyImpl(key, keyName); auto result = SGXWalletServer::importECDSAKeyImpl(key, keyName);
if (result["status"] == 0) { if (result["status"] == 0) {
auto cert = getStringRapid("cert"); auto cert = getStringRapid("cert");
keysByOwners[keyName] = cert; addKeyByOwner(keyName, cert);
} }
result["type"] = ZMQMessage::IMPORT_ECDSA_RSP; result["type"] = ZMQMessage::IMPORT_ECDSA_RSP;
return result; return result;
...@@ -83,7 +83,7 @@ Json::Value generateECDSAReqMessage::process() { ...@@ -83,7 +83,7 @@ Json::Value generateECDSAReqMessage::process() {
string keyName = result["keyName"].asString(); string keyName = result["keyName"].asString();
if (result["status"] == 0) { if (result["status"] == 0) {
auto cert = getStringRapid("cert"); auto cert = getStringRapid("cert");
keysByOwners[keyName] = cert; addKeyByOwner(keyName, cert);
} }
result["type"] = ZMQMessage::GENERATE_ECDSA_RSP; result["type"] = ZMQMessage::GENERATE_ECDSA_RSP;
return result; return result;
...@@ -106,7 +106,7 @@ Json::Value generateDKGPolyReqMessage::process() { ...@@ -106,7 +106,7 @@ Json::Value generateDKGPolyReqMessage::process() {
auto result = SGXWalletServer::generateDKGPolyImpl(polyName, t); auto result = SGXWalletServer::generateDKGPolyImpl(polyName, t);
if (result["status"] == 0) { if (result["status"] == 0) {
auto cert = getStringRapid("cert"); auto cert = getStringRapid("cert");
keysByOwners[polyName] = cert; addKeyByOwner(polyName, cert);
} }
result["type"] = ZMQMessage::GENERATE_DKG_POLY_RSP; result["type"] = ZMQMessage::GENERATE_DKG_POLY_RSP;
return result; return result;
...@@ -167,7 +167,7 @@ Json::Value createBLSPrivateKeyReqMessage::process() { ...@@ -167,7 +167,7 @@ Json::Value createBLSPrivateKeyReqMessage::process() {
} }
auto result = SGXWalletServer::createBLSPrivateKeyV2Impl(blsKeyName, ethKeyName, polyName, secretShare, t, n); auto result = SGXWalletServer::createBLSPrivateKeyV2Impl(blsKeyName, ethKeyName, polyName, secretShare, t, n);
if (result["status"] == 0) { if (result["status"] == 0) {
keysByOwners[blsKeyName] = cert; addKeyByOwner(blsKeyName, cert);
} }
result["type"] = ZMQMessage::CREATE_BLS_PRIVATE_RSP; result["type"] = ZMQMessage::CREATE_BLS_PRIVATE_RSP;
return result; return result;
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include <fstream> #include <fstream>
#include "ZMQClient.h" #include "ZMQClient.h"
#include "LevelDB.h"
#include "SGXWalletServer.hpp" #include "SGXWalletServer.hpp"
#include "ReqMessage.h" #include "ReqMessage.h"
#include "RspMessage.h" #include "RspMessage.h"
...@@ -315,7 +316,12 @@ shared_ptr <ZMQMessage> ZMQMessage::buildResponse(string &_type, shared_ptr <rap ...@@ -315,7 +316,12 @@ shared_ptr <ZMQMessage> ZMQMessage::buildResponse(string &_type, shared_ptr <rap
std::map<string, string> ZMQMessage::keysByOwners; std::map<string, string> ZMQMessage::keysByOwners;
bool ZMQMessage::isKeyByOwner(const string& keyName, const string& cert) { bool ZMQMessage::isKeyByOwner(const string& keyName, const string& cert) {
return keysByOwners.count(keyName) && keysByOwners[keyName] == cert; auto value = LevelDB::getLevelDb()->readString(keyName);
return value && *value == cert;
}
void ZMQMessage::addKeyByOwner(const string& keyName, const string& cert) {
SGXWalletServer::writeDataToDB(keyName, cert);
} }
cache::lru_cache<string, pair < EVP_PKEY * , X509 *>> ZMQMessage::verifiedCerts(256); cache::lru_cache<string, pair < EVP_PKEY * , X509 *>> ZMQMessage::verifiedCerts(256);
......
...@@ -57,6 +57,8 @@ protected: ...@@ -57,6 +57,8 @@ protected:
static bool isKeyByOwner(const string& keyName, const string& cert); static bool isKeyByOwner(const string& keyName, const string& cert);
static void addKeyByOwner(const string& keyName, const string& cert);
public: public:
static constexpr const char *BLS_SIGN_REQ = "BLSSignReq"; static constexpr const char *BLS_SIGN_REQ = "BLSSignReq";
......
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