/* Copyright (C) 2019-Present SKALE Labs This file is part of sgxwallet. sgxwallet is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. sgxwallet is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with sgxwallet. If not, see <https://www.gnu.org/licenses/>. @file TestUtils.h @author Stan Kladko @date 2020 */ #ifndef SGXWALLET_TESTUTILS_H #define SGXWALLET_TESTUTILS_H #include <dkg/dkg.h> #include <libff/algebra/curves/alt_bn128/alt_bn128_pp.hpp> #include <dkg/dkg.h> #include "sgxwallet_common.h" #include "third_party/intel/create_enclave.h" #include "secure_enclave_u.h" #include "third_party/intel/sgx_detect.h" #include <gmp.h> #include <sgx_urts.h> #include <stdio.h> #include <jsonrpccpp/client/connectors/httpclient.h> #include <sgx_tcrypto.h> #include "stubclient.h" #include <jsonrpccpp/server/connectors/httpserver.h> #include "zmq_src/ZMQClient.h" #include "abstractstubserver.h" using namespace std; using namespace jsonrpc; class TestUtils { public: static default_random_engine randGen; static string stringFromFr(libff::alt_bn128_Fr &el); static string convertDecToHex(string dec, int numBytes = 32); static void genTestKeys(); static void resetDB(); static shared_ptr<string> encryptTestKey(); static vector <libff::alt_bn128_Fr> splitStringToFr(const char *coeffs, const char symbol); static vector <string> splitStringTest(const char *coeffs, const char symbol); static libff::alt_bn128_G2 vectStringToG2(const vector <string> &G2_str_vect); static void sendRPCRequest(); static void sendRPCRequestV2(); static void destroyEnclave(); static void doDKG(StubClient &c, int n, int t, vector<string>& _ecdsaKeyNames, vector<string>& _blsKeyNames, int schainID, int dkgID); static void doDKGV2(StubClient &c, int n, int t, vector<string>& _ecdsaKeyNames, vector<string>& _blsKeyNames, int schainID, int dkgID); static void doZMQBLS(shared_ptr<ZMQClient> _zmqClient, StubClient &c, int n, int t, vector<string>& _ecdsaKeyNames, vector<string>& _blsKeyNames, int schainID, int dkgID); static void sendRPCRequestZMQ(); }; int sessionKeyRecoverDH(const char *skey_str, const char *sshare, char *common_key); int xorDecryptDH(char *key, const char *cypher, vector<char>& message); int xorDecryptDHV2(char *key, const char *cypher, vector<char>& message); #endif //SGXWALLET_TESTW_H