Unverified Commit 43b1c173 authored by kladko's avatar kladko

Fixing bugs

parent ce9fdbe2
...@@ -42,8 +42,9 @@ ...@@ -42,8 +42,9 @@
#include "EnclaveCommon.h" #include "EnclaveCommon.h"
#include <string.h> #include <string.h>
void 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;
LOG_INFO(__FUNCTION__); LOG_INFO(__FUNCTION__);
...@@ -94,13 +95,20 @@ void gen_session_key(char *skey_str, char *pb_keyB, char *common_key) { ...@@ -94,13 +95,20 @@ void gen_session_key(char *skey_str, char *pb_keyB, char *common_key) {
strncpy(common_key + n_zeroes, arr_x, strlen(arr_x)); strncpy(common_key + n_zeroes, arr_x, strlen(arr_x));
common_key[64] = 0; common_key[64] = 0;
ret = 0;
clean: clean:
mpz_clear(skey); mpz_clear(skey);
point_clear(pub_keyB); point_clear(pub_keyB);
point_clear(session_key); point_clear(session_key);
return ret;
} }
void session_key_recover(const char *skey_str, const char *sshare, char *common_key) { int session_key_recover(const char *skey_str, const char *sshare, char *common_key) {
int ret = -1;
if (!common_key) { if (!common_key) {
LOG_ERROR("session_key_recover: Null common_key"); LOG_ERROR("session_key_recover: Null common_key");
...@@ -149,13 +157,19 @@ void session_key_recover(const char *skey_str, const char *sshare, char *common_ ...@@ -149,13 +157,19 @@ void session_key_recover(const char *skey_str, const char *sshare, char *common_
} }
strncpy(common_key + n_zeroes, arr_x, strlen(arr_x)); strncpy(common_key + n_zeroes, arr_x, strlen(arr_x));
ret = 0;
clean: clean:
mpz_clear(skey); mpz_clear(skey);
point_clear(pub_keyB); point_clear(pub_keyB);
point_clear(session_key); point_clear(session_key);
return ret;
} }
void xor_encrypt(char *key, char *message, char *cypher) { int xor_encrypt(char *key, char *message, char *cypher) {
int ret = -1;
if (!cypher) { if (!cypher) {
LOG_ERROR("xor_encrypt: null cypher"); LOG_ERROR("xor_encrypt: null cypher");
...@@ -193,12 +207,18 @@ void xor_encrypt(char *key, char *message, char *cypher) { ...@@ -193,12 +207,18 @@ void xor_encrypt(char *key, char *message, char *cypher) {
carray2Hex(cypher_bin, 32, cypher); carray2Hex(cypher_bin, 32, cypher);
ret = 0;
clean: clean:
; ;
return ret;
} }
void xor_decrypt(char *key, char *cypher, char *message) { int xor_decrypt(char *key, char *cypher, char *message) {
int ret = -1;
if (!cypher) { if (!cypher) {
LOG_ERROR("xor_encrypt: null cypher"); LOG_ERROR("xor_encrypt: null cypher");
...@@ -238,7 +258,11 @@ void xor_decrypt(char *key, char *cypher, char *message) { ...@@ -238,7 +258,11 @@ void xor_decrypt(char *key, char *cypher, char *message) {
carray2Hex(msg_bin, 32, message); carray2Hex(msg_bin, 32, message);
ret = 0;
clean: clean:
; ;
return ret;
} }
...@@ -24,12 +24,12 @@ ...@@ -24,12 +24,12 @@
#ifndef SGXD_DRIVE_KEY_DKG_H #ifndef SGXD_DRIVE_KEY_DKG_H
#define SGXD_DRIVE_KEY_DKG_H #define SGXD_DRIVE_KEY_DKG_H
void gen_session_key(char* skey, char* pub_keyB, char* common_key); int gen_session_key(char* skey, char* pub_keyB, char* common_key);
void session_key_recover(const char *skey_str, const char* sshare, char* common_key); int session_key_recover(const char *skey_str, const char* sshare, char* common_key);
void xor_encrypt(char* key, char* message, char* cypher); int xor_encrypt(char* key, char* message, char* cypher);
void xor_decrypt(char* key, char* cypher, char* message); int xor_decrypt(char* key, char* cypher, char* message);
#endif //SGXD_DRIVE_KEY_DKG_H #endif //SGXD_DRIVE_KEY_DKG_H
...@@ -706,7 +706,10 @@ void trustedGetEncryptedSecretShareAES(int *errStatus, char *errString, uint8_t ...@@ -706,7 +706,10 @@ void trustedGetEncryptedSecretShareAES(int *errStatus, char *errString, uint8_t
*dec_len = enc_len; *dec_len = enc_len;
SAFE_CHAR_BUF(common_key, ECDSA_SKEY_LEN); SAFE_CHAR_BUF(common_key, ECDSA_SKEY_LEN);
gen_session_key(skey, pub_keyB, common_key);
status = gen_session_key(skey, pub_keyB, common_key);
CHECK_STATUS("gen_session_key failed")
SAFE_CHAR_BUF(s_share, ECDSA_SKEY_LEN); SAFE_CHAR_BUF(s_share, ECDSA_SKEY_LEN);
...@@ -718,7 +721,9 @@ void trustedGetEncryptedSecretShareAES(int *errStatus, char *errString, uint8_t ...@@ -718,7 +721,9 @@ void trustedGetEncryptedSecretShareAES(int *errStatus, char *errString, uint8_t
CHECK_STATUS("invalid decr secret share"); CHECK_STATUS("invalid decr secret share");
SAFE_CHAR_BUF(cypher, ECDSA_SKEY_LEN); SAFE_CHAR_BUF(cypher, ECDSA_SKEY_LEN);
xor_encrypt(common_key, s_share, cypher); status=xor_encrypt(common_key, s_share, cypher);
CHECK_STATUS("xor_encrypt failed")
strncpy(result_str, cypher, strlen(cypher)); strncpy(result_str, cypher, strlen(cypher));
strncpy(result_str + strlen(cypher), pub_key_x, strlen(pub_key_x)); strncpy(result_str + strlen(cypher), pub_key_x, strlen(pub_key_x));
...@@ -782,11 +787,16 @@ void trustedDkgVerifyAES(int *errStatus, char *errString, const char *public_sha ...@@ -782,11 +787,16 @@ void trustedDkgVerifyAES(int *errStatus, char *errString, const char *public_sha
SAFE_CHAR_BUF(common_key, ECDSA_SKEY_LEN); SAFE_CHAR_BUF(common_key, ECDSA_SKEY_LEN);
session_key_recover(skey, s_share, common_key); status = session_key_recover(skey, s_share, common_key);
CHECK_STATUS("session_key_recover failed");
SAFE_CHAR_BUF(decr_sshare, ECDSA_SKEY_LEN); SAFE_CHAR_BUF(decr_sshare, ECDSA_SKEY_LEN);
xor_decrypt(common_key, encr_sshare, decr_sshare); status=xor_decrypt(common_key, encr_sshare, decr_sshare);
CHECK_STATUS("xor_decrypt failed")
status = mpz_set_str(s, decr_sshare, 16); status = mpz_set_str(s, decr_sshare, 16);
CHECK_STATUS("invalid decr secret share"); CHECK_STATUS("invalid decr secret share");
...@@ -841,11 +851,20 @@ void trustedCreateBlsKeyAES(int *errStatus, char *errString, const char *s_share ...@@ -841,11 +851,20 @@ void trustedCreateBlsKeyAES(int *errStatus, char *errString, const char *s_share
s_share[192] = 0; s_share[192] = 0;
SAFE_CHAR_BUF(common_key, 65); SAFE_CHAR_BUF(common_key, 65);
session_key_recover(skey, s_share, common_key);
status = session_key_recover(skey, s_share, common_key);
CHECK_STATUS("session_key_recover failed");
common_key[64] = 0; common_key[64] = 0;
SAFE_CHAR_BUF(decr_sshare, 65); SAFE_CHAR_BUF(decr_sshare, 65);
xor_decrypt(common_key, encr_sshare, decr_sshare);
status = xor_decrypt(common_key, encr_sshare, decr_sshare);
CHECK_STATUS("xor_decrypt failed");
decr_sshare[64] = 0; decr_sshare[64] = 0;
......
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