Added init

parent a3c8adac
...@@ -68,10 +68,18 @@ libff::alt_bn128_Fr *keyFromString(const char* _keyString) { ...@@ -68,10 +68,18 @@ libff::alt_bn128_Fr *keyFromString(const char* _keyString) {
return new libff::alt_bn128_Fr(_keyString); return new libff::alt_bn128_Fr(_keyString);
} }
bool check_key(int *err_status, char *err_string, const char *_keyString) {
int inited = 0;
void init() {
if (inited == 1)
return;
inited = 1;
libff::init_alt_bn128_params(); libff::init_alt_bn128_params();
}
bool check_key(int *err_status, char *err_string, const char *_keyString) {
......
...@@ -26,5 +26,7 @@ EXTERNC void carray2Hex(const unsigned char *d, int _len, char* _hexArray); ...@@ -26,5 +26,7 @@ EXTERNC void carray2Hex(const unsigned char *d, int _len, char* _hexArray);
EXTERNC bool hex2carray(const char * _hex, uint64_t *_bin_len, EXTERNC bool hex2carray(const char * _hex, uint64_t *_bin_len,
uint8_t* _bin ); uint8_t* _bin );
EXTERNC void init();
#endif //SGXWALLET_BLSUTILS_H #endif //SGXWALLET_BLSUTILS_H
...@@ -51,11 +51,15 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ...@@ -51,11 +51,15 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "../sgxwallet_common.h" #include "../sgxwallet_common.h"
void *(*gmp_realloc_func)(void *, size_t, size_t); void *(*gmp_realloc_func)(void *, size_t, size_t);
void *(*oc_realloc_func)(void *, size_t, size_t); void *(*oc_realloc_func)(void *, size_t, size_t);
void (*gmp_free_func)(void *, size_t); void (*gmp_free_func)(void *, size_t);
void (*oc_free_func)(void *, size_t); void (*oc_free_func)(void *, size_t);
void *reallocate_function(void *, size_t, size_t); void *reallocate_function(void *, size_t, size_t);
void free_function(void *, size_t); void free_function(void *, size_t);
...@@ -97,10 +101,10 @@ void *reallocate_function(void *ptr, size_t osize, size_t nsize) { ...@@ -97,10 +101,10 @@ void *reallocate_function(void *ptr, size_t osize, size_t nsize) {
* free() and try again, but would you trust the OS at this point? * free() and try again, but would you trust the OS at this point?
*/ */
if (!sgx_is_outside_enclave((void *)ptr, nsize)) if (!sgx_is_outside_enclave((void *) ptr, nsize))
abort(); abort();
return (void *)nptr; return (void *) nptr;
} }
void e_mpz_add(mpz_t *c_un, mpz_t *a_un, mpz_t *b_un) {} void e_mpz_add(mpz_t *c_un, mpz_t *a_un, mpz_t *b_un) {}
...@@ -120,6 +124,7 @@ void generate_ecdsa_key(int *err_status, char *err_string, ...@@ -120,6 +124,7 @@ void generate_ecdsa_key(int *err_status, char *err_string,
void encrypt_key(int *err_status, char *err_string, char *key, void encrypt_key(int *err_status, char *err_string, char *key,
uint8_t *encrypted_key, uint32_t *enc_len) { uint8_t *encrypted_key, uint32_t *enc_len) {
init();
*err_status = -1; *err_status = -1;
memset(err_string, 0, BUF_LEN); memset(err_string, 0, BUF_LEN);
...@@ -131,7 +136,7 @@ void encrypt_key(int *err_status, char *err_string, char *key, ...@@ -131,7 +136,7 @@ void encrypt_key(int *err_status, char *err_string, char *key,
check_key(err_status, err_string, key); check_key(err_status, err_string, key);
if (*err_status != 0) { if (*err_status != 0) {
snprintf(err_string + strlen(err_string), BUF_LEN,"check_key failed"); snprintf(err_string + strlen(err_string), BUF_LEN, "check_key failed");
return; return;
} }
...@@ -140,7 +145,7 @@ void encrypt_key(int *err_status, char *err_string, char *key, ...@@ -140,7 +145,7 @@ void encrypt_key(int *err_status, char *err_string, char *key,
*err_status = -4; *err_status = -4;
if (sealedLen > BUF_LEN) { if (sealedLen > BUF_LEN) {
snprintf(err_string, BUF_LEN,"sealedLen > MAX_ENCRYPTED_KEY_LENGTH"); snprintf(err_string, BUF_LEN, "sealedLen > MAX_ENCRYPTED_KEY_LENGTH");
return; return;
} }
...@@ -148,16 +153,15 @@ void encrypt_key(int *err_status, char *err_string, char *key, ...@@ -148,16 +153,15 @@ void encrypt_key(int *err_status, char *err_string, char *key,
memset(encrypted_key, 0, BUF_LEN); memset(encrypted_key, 0, BUF_LEN);
if (sgx_seal_data(0, NULL, MAX_KEY_LENGTH, (uint8_t*) key, sealedLen, (sgx_sealed_data_t*) encrypted_key) != if (sgx_seal_data(0, NULL, MAX_KEY_LENGTH, (uint8_t *) key, sealedLen, (sgx_sealed_data_t *) encrypted_key) !=
SGX_SUCCESS) { SGX_SUCCESS) {
snprintf(err_string, BUF_LEN,"SGX seal data failed"); snprintf(err_string, BUF_LEN, "SGX seal data failed");
return; return;
} }
*enc_len = sealedLen; *enc_len = sealedLen;
char key2[BUF_LEN]; char key2[BUF_LEN];
memset(key2, 0, BUF_LEN); memset(key2, 0, BUF_LEN);
...@@ -165,16 +169,15 @@ void encrypt_key(int *err_status, char *err_string, char *key, ...@@ -165,16 +169,15 @@ void encrypt_key(int *err_status, char *err_string, char *key,
decrypt_key(err_status, err_string, encrypted_key, sealedLen, key2); decrypt_key(err_status, err_string, encrypted_key, sealedLen, key2);
if (*err_status != 0) { if (*err_status != 0) {
snprintf(err_string + strlen(err_string), BUF_LEN , ":decrypt_key failed"); snprintf(err_string + strlen(err_string), BUF_LEN, ":decrypt_key failed");
return; return;
} }
uint64_t key2Len = strnlen(key2, MAX_KEY_LENGTH); uint64_t key2Len = strnlen(key2, MAX_KEY_LENGTH);
if (key2Len == MAX_KEY_LENGTH) { if (key2Len == MAX_KEY_LENGTH) {
snprintf(err_string, MAX_ERR_LEN,"Key2 is not null terminated"); snprintf(err_string, MAX_ERR_LEN, "Key2 is not null terminated");
return; return;
} }
...@@ -188,7 +191,9 @@ void encrypt_key(int *err_status, char *err_string, char *key, ...@@ -188,7 +191,9 @@ void encrypt_key(int *err_status, char *err_string, char *key,
} }
void decrypt_key(int *err_status, char *err_string, uint8_t *encrypted_key, void decrypt_key(int *err_status, char *err_string, uint8_t *encrypted_key,
uint32_t enc_len, char* key) { uint32_t enc_len, char *key) {
init();
uint32_t decLen; uint32_t decLen;
...@@ -196,10 +201,10 @@ void decrypt_key(int *err_status, char *err_string, uint8_t *encrypted_key, ...@@ -196,10 +201,10 @@ void decrypt_key(int *err_status, char *err_string, uint8_t *encrypted_key,
*err_status = -9; *err_status = -9;
sgx_status_t status = sgx_unseal_data( sgx_status_t status = sgx_unseal_data(
(const sgx_sealed_data_t *)encrypted_key, NULL, 0, (uint8_t*) key, &decLen); (const sgx_sealed_data_t *) encrypted_key, NULL, 0, (uint8_t *) key, &decLen);
if (status != SGX_SUCCESS) { 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 with status %d", status);
return; return;
} }
...@@ -224,7 +229,7 @@ void decrypt_key(int *err_status, char *err_string, uint8_t *encrypted_key, ...@@ -224,7 +229,7 @@ void decrypt_key(int *err_status, char *err_string, uint8_t *encrypted_key,
for (int i = keyLen; i < MAX_KEY_LENGTH; i++) { for (int i = keyLen; i < MAX_KEY_LENGTH; i++) {
if (key[i] != 0) { if (key[i] != 0) {
snprintf(err_string, BUF_LEN,"Unpadded key"); snprintf(err_string, BUF_LEN, "Unpadded key");
return; return;
} }
} }
...@@ -235,16 +240,15 @@ void decrypt_key(int *err_status, char *err_string, uint8_t *encrypted_key, ...@@ -235,16 +240,15 @@ void decrypt_key(int *err_status, char *err_string, uint8_t *encrypted_key,
} }
void bls_sign_message(int *err_status, char *err_string, uint8_t *encrypted_key, void bls_sign_message(int *err_status, char *err_string, uint8_t *encrypted_key,
uint32_t enc_len, char *_hashX, uint32_t enc_len, char *_hashX,
char* _hashY, char *signature) { char *_hashY, char *signature) {
char key[BUF_LEN]; char key[BUF_LEN];
char sig[BUF_LEN]; char sig[BUF_LEN];
init();
decrypt_key(err_status, err_string, encrypted_key, enc_len, key); decrypt_key(err_status, err_string, encrypted_key, enc_len, key);
...@@ -253,7 +257,7 @@ void bls_sign_message(int *err_status, char *err_string, uint8_t *encrypted_key ...@@ -253,7 +257,7 @@ void bls_sign_message(int *err_status, char *err_string, uint8_t *encrypted_key
return; return;
} }
sign(key, _hashX, _hashY, sig ); sign(key, _hashX, _hashY, sig);
strncpy(signature, sig, BUF_LEN); strncpy(signature, sig, BUF_LEN);
...@@ -292,7 +296,7 @@ void ecdsa_sign_message(int *err_status, char *err_string, uint8_t *encrypted_k ...@@ -292,7 +296,7 @@ void ecdsa_sign_message(int *err_status, char *err_string, uint8_t *encrypted_k
RAND_add(entropy_buf, sizeof(entropy_buf), ADD_ENTROPY_SIZE); RAND_add(entropy_buf, sizeof(entropy_buf), ADD_ENTROPY_SIZE);
RAND_seed(entropy_buf, sizeof(entropy_buf)); RAND_seed(entropy_buf, sizeof(entropy_buf));
EC_KEY * ec = NULL; EC_KEY *ec = NULL;
int eccgroup; int eccgroup;
eccgroup = OBJ_txt2nid("secp384r1"); eccgroup = OBJ_txt2nid("secp384r1");
ec = EC_KEY_new_by_curve_name(eccgroup); ec = EC_KEY_new_by_curve_name(eccgroup);
...@@ -322,7 +326,7 @@ void ecdsa_sign_message(int *err_status, char *err_string, uint8_t *encrypted_k ...@@ -322,7 +326,7 @@ void ecdsa_sign_message(int *err_status, char *err_string, uint8_t *encrypted_k
for (i = 0; i < 1000; i++) { for (i = 0; i < 1000; i++) {
// Add context // Add context
EVP_MD_CTX* context = EVP_MD_CTX_new(); EVP_MD_CTX *context = EVP_MD_CTX_new();
// Init, update, final // Init, update, final
EVP_SignInit_ex(context, EVP_sha1(), NULL); EVP_SignInit_ex(context, EVP_sha1(), NULL);
EVP_SignUpdate(context, &buffer, 100); EVP_SignUpdate(context, &buffer, 100);
......
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