Unverified Commit 43b1c173 authored by kladko's avatar kladko

Fixing bugs

parent ce9fdbe2
......@@ -42,8 +42,9 @@
#include "EnclaveCommon.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__);
......@@ -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));
common_key[64] = 0;
ret = 0;
clean:
mpz_clear(skey);
point_clear(pub_keyB);
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) {
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_
}
strncpy(common_key + n_zeroes, arr_x, strlen(arr_x));
ret = 0;
clean:
mpz_clear(skey);
point_clear(pub_keyB);
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) {
LOG_ERROR("xor_encrypt: null cypher");
......@@ -193,12 +207,18 @@ void xor_encrypt(char *key, char *message, char *cypher) {
carray2Hex(cypher_bin, 32, cypher);
ret = 0;
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) {
LOG_ERROR("xor_encrypt: null cypher");
......@@ -238,7 +258,11 @@ void xor_decrypt(char *key, char *cypher, char *message) {
carray2Hex(msg_bin, 32, message);
ret = 0;
clean:
;
return ret;
}
......@@ -24,12 +24,12 @@
#ifndef 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
......@@ -706,7 +706,10 @@ void trustedGetEncryptedSecretShareAES(int *errStatus, char *errString, uint8_t
*dec_len = enc_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);
......@@ -718,7 +721,9 @@ void trustedGetEncryptedSecretShareAES(int *errStatus, char *errString, uint8_t
CHECK_STATUS("invalid decr secret share");
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 + strlen(cypher), pub_key_x, strlen(pub_key_x));
......@@ -782,11 +787,16 @@ void trustedDkgVerifyAES(int *errStatus, char *errString, const char *public_sha
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);
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);
CHECK_STATUS("invalid decr secret share");
......@@ -841,11 +851,20 @@ void trustedCreateBlsKeyAES(int *errStatus, char *errString, const char *s_share
s_share[192] = 0;
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;
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;
......
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