Unverified Commit 5c2a8faf authored by kladko's avatar kladko

SKALE-2895-fix-build-and-docs

parent 7bcecc6a
...@@ -45,7 +45,7 @@ EXTERNC void enclave_init(); ...@@ -45,7 +45,7 @@ EXTERNC void enclave_init();
void get_global_random(unsigned char* _randBuff); void get_global_random(unsigned char* _randBuff, uint64_t size);
EXTERNC void LOG_INFO(const char* msg); EXTERNC void LOG_INFO(const char* msg);
EXTERNC void LOG_WARN(const char* _msg); EXTERNC void LOG_WARN(const char* _msg);
......
...@@ -92,25 +92,39 @@ void signature_extract_public_key(point public_key, mpz_t private_key, domain_pa ...@@ -92,25 +92,39 @@ void signature_extract_public_key(point public_key, mpz_t private_key, domain_pa
void signature_sign(signature sig, mpz_t message, mpz_t private_key, domain_parameters curve) { void signature_sign(signature sig, mpz_t message, mpz_t private_key, domain_parameters curve) {
//message must not have a bit length longer than that of n //message must not have a bit length longer than that of n
//see: Guide to Elliptic Curve Cryptography, section 4.4.1. //see: Guide to Elliptic Curve Cryptography, section 4.4.1.
for (int i = 0; i < 5000; i++ ) {
assert(mpz_sizeinbase(message, 2) <= mpz_sizeinbase(curve->n, 2)); assert(mpz_sizeinbase(message, 2) <= mpz_sizeinbase(curve->n, 2));
point Q = point_init(); point Q = point_init();
//Initializing variables //Initializing variables
mpz_t k, x, r, t1, t2, t3, t4, t5, s, n_div_2, rem, neg, seed; mpz_t k, x, r, t1, t2, t3, t4, t5, s, n_div_2, rem, neg, seed;
mpz_init(k); mpz_init(x); mpz_init(r); mpz_init(t1); mpz_init(t2); mpz_init(t3); mpz_init(s); mpz_init(k);
mpz_init(t4); mpz_init(t5); mpz_init(n_div_2); mpz_init(rem); mpz_init(neg); mpz_init(seed); mpz_init(x);
mpz_init(r);
unsigned char *rand_char = (unsigned char *) calloc(32,1); mpz_init(t1);
mpz_init(t2);
get_global_random(rand_char); mpz_init(t3);
mpz_init(s);
mpz_init(t4);
mpz_init(t5);
mpz_init(n_div_2);
mpz_init(rem);
mpz_init(neg);
mpz_init(seed);
unsigned char *rand_char = (unsigned char *) calloc(32, 1);
get_global_random(rand_char, 32);
gmp_randstate_t r_state; gmp_randstate_t r_state;
signature_sign_start: signature_sign_start:
//Set k
get_global_random(rand_char); get_global_random(rand_char, 32);
mpz_import(seed, 32, 1, sizeof(rand_char[0]), 0, 0, rand_char); mpz_import(seed, 32, 1, sizeof(rand_char[0]), 0, 0, rand_char);
...@@ -169,10 +183,21 @@ void signature_sign(signature sig, mpz_t message, mpz_t private_key, domain_para ...@@ -169,10 +183,21 @@ void signature_sign(signature sig, mpz_t message, mpz_t private_key, domain_para
free(rand_char); free(rand_char);
point_clear(Q); point_clear(Q);
mpz_clear(k); mpz_clear(r); mpz_clear(s); mpz_clear(x); mpz_clear(rem); mpz_clear(neg); mpz_clear(k);
mpz_clear(t1); mpz_clear(t2); mpz_clear(t3); mpz_clear(seed); mpz_clear(n_div_2); mpz_clear(r);
mpz_clear(s);
mpz_clear(x);
mpz_clear(rem);
mpz_clear(neg);
mpz_clear(t1);
mpz_clear(t2);
mpz_clear(t3);
mpz_clear(seed);
mpz_clear(n_div_2);
mpz_clear(s_mul_2); mpz_clear(s_mul_2);
}
} }
#endif #endif
......
...@@ -129,14 +129,15 @@ void *reallocate_function(void *ptr, size_t osize, size_t nsize) { ...@@ -129,14 +129,15 @@ void *reallocate_function(void *ptr, size_t osize, size_t nsize) {
return (void *) nptr; return (void *) nptr;
} }
void get_global_random(unsigned char* _randBuff) { void get_global_random(unsigned char* _randBuff, uint64_t _size) {
assert(_size <= 32);
sgx_sha_state_handle_t shaStateHandle; sgx_sha_state_handle_t shaStateHandle;
assert(sgx_sha256_init(&shaStateHandle) == SGX_SUCCESS); assert(sgx_sha256_init(&shaStateHandle) == SGX_SUCCESS);
assert(sgx_sha256_update(globalRandom, 32, shaStateHandle) == SGX_SUCCESS); assert(sgx_sha256_update(globalRandom, 32, shaStateHandle) == SGX_SUCCESS);
assert(sgx_sha256_get_hash(shaStateHandle, globalRandom) == SGX_SUCCESS); assert(sgx_sha256_get_hash(shaStateHandle, globalRandom) == SGX_SUCCESS);
assert(sgx_sha256_get_hash(shaStateHandle, globalRandom) == SGX_SUCCESS); assert(sgx_sha256_get_hash(shaStateHandle, globalRandom) == SGX_SUCCESS);
assert(sgx_sha256_close(shaStateHandle) == SGX_SUCCESS); assert(sgx_sha256_close(shaStateHandle) == SGX_SUCCESS);
memcpy(_randBuff, globalRandom, 32); memcpy(_randBuff, globalRandom, _size);
} }
...@@ -156,7 +157,7 @@ void trustedGenerateEcdsaKey(int *errStatus, char *errString, ...@@ -156,7 +157,7 @@ void trustedGenerateEcdsaKey(int *errStatus, char *errString,
domain_parameters_load_curve(curve, secp256k1); domain_parameters_load_curve(curve, secp256k1);
unsigned char *rand_char = (unsigned char *) calloc(32, 1); unsigned char *rand_char = (unsigned char *) calloc(32, 1);
sgx_read_rand(rand_char, 32); get_global_random(rand_char, 32);
mpz_t seed; mpz_t seed;
mpz_init(seed); mpz_init(seed);
...@@ -936,7 +937,7 @@ void trustedGenerateEcdsaKeyAES(int *errStatus, char *errString, ...@@ -936,7 +937,7 @@ void trustedGenerateEcdsaKeyAES(int *errStatus, char *errString,
domain_parameters_load_curve(curve, secp256k1); domain_parameters_load_curve(curve, secp256k1);
unsigned char *rand_char = (unsigned char *) calloc(32, 1); unsigned char *rand_char = (unsigned char *) calloc(32, 1);
sgx_read_rand(rand_char, 32); get_global_random(rand_char, 32);
mpz_t seed; mpz_t seed;
mpz_init(seed); mpz_init(seed);
......
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