Unverified Commit dd4e9d36 authored by kladko's avatar kladko

SKALE-3067-cleanup

parent 8b7bc690
...@@ -42,15 +42,19 @@ ...@@ -42,15 +42,19 @@
#include "EnclaveCommon.h" #include "EnclaveCommon.h"
#include <string.h> #include <string.h>
int gen_session_key(char *skey_str, char *pb_keyB, char *common_key) { int gen_session_key(char *skey_str, char *pb_keyB, char *common_key) {
int ret = -1; int ret = -1;
LOG_INFO(__FUNCTION__); LOG_INFO(__FUNCTION__);
SAFE_CHAR_BUF(pb_keyB_x, 65);SAFE_CHAR_BUF(pb_keyB_y, 65); SAFE_CHAR_BUF(pb_keyB_x, 65);SAFE_CHAR_BUF(pb_keyB_y, 65);
mpz_t skey; mpz_t skey;
mpz_init(skey); mpz_init(skey);
point pub_keyB = point_init(); point pub_keyB = point_init();
......
...@@ -144,10 +144,14 @@ string ConvertG2ToString(const libff::alt_bn128_G2 &elem, int base = 10, const s ...@@ -144,10 +144,14 @@ string ConvertG2ToString(const libff::alt_bn128_G2 &elem, int base = 10, const s
vector <libff::alt_bn128_Fr> SplitStringToFr(const char *coeffs, const char symbol) { vector <libff::alt_bn128_Fr> SplitStringToFr(const char *coeffs, const char symbol) {
vector <libff::alt_bn128_Fr> result; vector <libff::alt_bn128_Fr> result;
string str(coeffs); string str(coeffs);
string delim; string delim;
CHECK_ARG_CLEAN(coeffs);
try { try {
delim.push_back(symbol); delim.push_back(symbol);
...@@ -183,6 +187,8 @@ int gen_dkg_poly(char *secret, unsigned _t) { ...@@ -183,6 +187,8 @@ int gen_dkg_poly(char *secret, unsigned _t) {
int status = 1; int status = 1;
string result; string result;
CHECK_ARG_CLEAN(secret);
try { try {
for (size_t i = 0; i < _t; ++i) { for (size_t i = 0; i < _t; ++i) {
libff::alt_bn128_Fr cur_coef = libff::alt_bn128_Fr::random_element(); libff::alt_bn128_Fr cur_coef = libff::alt_bn128_Fr::random_element();
...@@ -247,6 +253,14 @@ void calc_secret_shares(const char *decrypted_coeffs, ...@@ -247,6 +253,14 @@ void calc_secret_shares(const char *decrypted_coeffs,
string result; string result;
char symbol = ':'; char symbol = ':';
CHECK_ARG_CLEAN(decrypted_coeffs);
CHECK_ARG_CLEAN(secret_shares);
CHECK_ARG_CLEAN(_n > 0);
CHECK_ARG_CLEAN(_t <= _n);
try { try {
vector <libff::alt_bn128_Fr> poly = SplitStringToFr(decrypted_coeffs, symbol); vector <libff::alt_bn128_Fr> poly = SplitStringToFr(decrypted_coeffs, symbol);
...@@ -260,18 +274,27 @@ void calc_secret_shares(const char *decrypted_coeffs, ...@@ -260,18 +274,27 @@ void calc_secret_shares(const char *decrypted_coeffs,
} catch (exception &e) { } catch (exception &e) {
LOG_ERROR(e.what()); LOG_ERROR(e.what());
return; goto clean;
} catch (...) { } catch (...) {
LOG_ERROR("Unknown throwable"); LOG_ERROR("Unknown throwable");
return; goto clean;
} }
clean:
;
} }
int calc_secret_share(const char *decrypted_coeffs, char *s_share, int calc_secret_share(const char *decrypted_coeffs, char *s_share,
unsigned _t, unsigned _n, unsigned ind) { unsigned _t, unsigned _n, unsigned ind) {
int result = 1; int result = 1;
CHECK_ARG_CLEAN(decrypted_coeffs);
CHECK_ARG_CLEAN(s_share);
CHECK_ARG_CLEAN(_n > 0);
CHECK_ARG_CLEAN(_t <= _n);
try { try {
char symbol = ':'; char symbol = ':';
vector <libff::alt_bn128_Fr> poly = SplitStringToFr(decrypted_coeffs, symbol); vector <libff::alt_bn128_Fr> poly = SplitStringToFr(decrypted_coeffs, symbol);
...@@ -300,35 +323,19 @@ int calc_secret_share(const char *decrypted_coeffs, char *s_share, ...@@ -300,35 +323,19 @@ int calc_secret_share(const char *decrypted_coeffs, char *s_share,
return result; return result;
} }
void calc_secret_shareG2_old(const char *decrypted_coeffs, char *s_shareG2,
unsigned _t, unsigned ind) {
try {
char symbol = ':';
vector <libff::alt_bn128_Fr> poly = SplitStringToFr(decrypted_coeffs, symbol);
libff::alt_bn128_Fr secret_share = PolynomialValue(poly, libff::alt_bn128_Fr(ind), _t);
libff::alt_bn128_G2 secret_shareG2 = secret_share * libff::alt_bn128_G2::one();
string secret_shareG2_str = ConvertG2ToString(secret_shareG2);
strncpy(s_shareG2, secret_shareG2_str.c_str(), secret_shareG2_str.length() + 1); int calc_secret_shareG2(const char *s_share, char *s_shareG2) {
} catch (exception &e) {
LOG_ERROR(e.what());
} catch (...) {
LOG_ERROR("Unknown throwable");
}
}
int calc_secret_shareG2(const char *s_share, char *s_shareG2) {
int result = 1; int result = 1;
mpz_t share; mpz_t share;
mpz_init(share); mpz_init(share);
CHECK_ARG_CLEAN(s_share);
CHECK_ARG_CLEAN(s_shareG2);
try { try {
...@@ -370,13 +377,21 @@ int calc_secret_shareG2(const char *s_share, char *s_shareG2) { ...@@ -370,13 +377,21 @@ int calc_secret_shareG2(const char *s_share, char *s_shareG2) {
int calc_public_shares(const char *decrypted_coeffs, char *public_shares, int calc_public_shares(const char *decrypted_coeffs, char *public_shares,
unsigned _t) { unsigned _t) {
try {
// calculate for each node a list of public shares // calculate for each node a list of public shares
int ret = 1;
string result; string result;
char symbol = ':'; char symbol = ':';
CHECK_ARG_CLEAN(decrypted_coeffs);
CHECK_ARG_CLEAN(public_shares);
CHECK_ARG_CLEAN(_t > 0);
try {
vector <libff::alt_bn128_Fr> poly = SplitStringToFr(decrypted_coeffs, symbol); vector <libff::alt_bn128_Fr> poly = SplitStringToFr(decrypted_coeffs, symbol);
if (poly.size() != _t) { if (poly.size() != _t) {
return 1; goto clean;
} }
for (size_t i = 0; i < _t; ++i) { for (size_t i = 0; i < _t; ++i) {
libff::alt_bn128_G2 pub_share = poly.at(i) * libff::alt_bn128_G2::one(); libff::alt_bn128_G2 pub_share = poly.at(i) * libff::alt_bn128_G2::one();
...@@ -385,15 +400,18 @@ int calc_public_shares(const char *decrypted_coeffs, char *public_shares, ...@@ -385,15 +400,18 @@ int calc_public_shares(const char *decrypted_coeffs, char *public_shares,
result += pub_share_str + ","; result += pub_share_str + ",";
} }
strncpy(public_shares, result.c_str(), result.length()); strncpy(public_shares, result.c_str(), result.length());
return 0; ret = 0;
} catch (exception &e) { } catch (exception &e) {
LOG_ERROR(e.what()); LOG_ERROR(e.what());
return 1; ret = 1;
} catch (...) { } catch (...) {
LOG_ERROR("Unknown throwable"); LOG_ERROR("Unknown throwable");
return 1; ret = 1;
} }
clean:
return ret;
} }
string ConvertHexToDec(string hex_str) { string ConvertHexToDec(string hex_str) {
......
...@@ -52,8 +52,6 @@ EXTERNC int Verification ( char * public_shares, mpz_t decr_secret_share, int _t ...@@ -52,8 +52,6 @@ EXTERNC int Verification ( char * public_shares, mpz_t decr_secret_share, int _t
EXTERNC int calc_bls_public_key(char* skey, char* pub_key); EXTERNC int calc_bls_public_key(char* skey, char* pub_key);
EXTERNC void calc_secret_shareG2_old(const char* public_shares, char * s_shareG2,
unsigned _t, unsigned ind);
EXTERNC int calc_secret_shareG2(const char* s_share, char * s_shareG2); EXTERNC int calc_secret_shareG2(const char* s_share, char * s_shareG2);
#endif #endif
......
...@@ -21,6 +21,10 @@ ...@@ -21,6 +21,10 @@
@date 2019 @date 2019
*/ */
#define SAFE_FREE(__X__) if (__X__) {free(__X__); __X__ = NULL;}
#define SAFE_DELETE(__X__) if (__X__) {delete(__X__); __X__ = NULL;}
#define SAFE_CHAR_BUF(__X__, __Y__) ;char __X__ [ __Y__ ]; memset(__X__, 0, __Y__);
#ifdef USER_SPACE #ifdef USER_SPACE
#include <gmp.h> #include <gmp.h>
#else #else
...@@ -104,7 +108,7 @@ void domain_parameters_clear(domain_parameters curve) ...@@ -104,7 +108,7 @@ void domain_parameters_clear(domain_parameters curve)
point_clear(curve->G); point_clear(curve->G);
mpz_clear(curve->n); mpz_clear(curve->n);
mpz_clear(curve->h); mpz_clear(curve->h);
free(curve->name); SAFE_FREE(curve->name);
free(curve); free(curve);
} }
...@@ -68,5 +68,11 @@ extern domain_parameters curve; ...@@ -68,5 +68,11 @@ extern domain_parameters curve;
#define SAFE_DELETE(__X__) if (__X__) {delete(__X__); __X__ = NULL;} #define SAFE_DELETE(__X__) if (__X__) {delete(__X__); __X__ = NULL;}
#define SAFE_CHAR_BUF(__X__, __Y__) ;char __X__ [ __Y__ ]; memset(__X__, 0, __Y__); #define SAFE_CHAR_BUF(__X__, __Y__) ;char __X__ [ __Y__ ]; memset(__X__, 0, __Y__);
#define CHECK_ARG_CLEAN(_EXPRESSION_) \
if (!(_EXPRESSION_)) { \
LOG_ERROR("State check failed::");LOG_ERROR(#_EXPRESSION_); \
LOG_ERROR(__FILE__); LOG_ERROR(__FUNCTION__);\
goto clean;}
#endif //SGXWALLET_ENCLAVECOMMON_H #endif //SGXWALLET_ENCLAVECOMMON_H
...@@ -27,6 +27,10 @@ ...@@ -27,6 +27,10 @@
#include <assert.h> #include <assert.h>
#include <stdbool.h> #include <stdbool.h>
#define SAFE_FREE(__X__) if (__X__) {free(__X__); __X__ = NULL;}
#define SAFE_DELETE(__X__) if (__X__) {delete(__X__); __X__ = NULL;}
#define SAFE_CHAR_BUF(__X__, __Y__) ;char __X__ [ __Y__ ]; memset(__X__, 0, __Y__);
#ifdef USER_SPACE #ifdef USER_SPACE
#include <gmp.h> #include <gmp.h>
#else #else
...@@ -338,6 +342,6 @@ void point_clear(point p) ...@@ -338,6 +342,6 @@ void point_clear(point p)
return; return;
mpz_clear(p->x); mpz_clear(p->x);
mpz_clear(p->y); mpz_clear(p->y);
free(p); SAFE_FREE(p);
} }
...@@ -26,6 +26,11 @@ ...@@ -26,6 +26,11 @@
#include <stdbool.h> #include <stdbool.h>
#include <assert.h> #include <assert.h>
#define SAFE_FREE(__X__) if (__X__) {free(__X__); __X__ = NULL;}
#define SAFE_DELETE(__X__) if (__X__) {delete(__X__); __X__ = NULL;}
#define SAFE_CHAR_BUF(__X__, __Y__) ;char __X__ [ __Y__ ]; memset(__X__, 0, __Y__);
#ifdef USER_SPACE #ifdef USER_SPACE
#include <gmp.h> #include <gmp.h>
......
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