|
@@ -234,21 +234,27 @@ void deserialize_string_to_public_private_key_pair(uint8_t* private_public_key_s
|
|
|
|
|
|
uint32_t create_and_seal_ecdsa_signing_key_pair(__attribute__((unused)) sgx_ec256_public_t* pub_key, __attribute__((unused)) uint32_t* sealed_data_length, __attribute__((unused)) uint8_t* sealed_data)
|
|
uint32_t create_and_seal_ecdsa_signing_key_pair(__attribute__((unused)) sgx_ec256_public_t* pub_key, __attribute__((unused)) uint32_t* sealed_data_length, __attribute__((unused)) uint8_t* sealed_data)
|
|
{
|
|
{
|
|
- uint32_t ret_status;
|
|
|
|
- ret_status=create_ecdsa_key_pair(pub_key, &signing_priv_key);
|
|
|
|
|
|
+ uint32_t ret_status; sgx_ec256_private_t private_key;
|
|
|
|
+ ret_status=create_ecdsa_key_pair(pub_key, &private_key);
|
|
if(ret_status!=SGX_SUCCESS)
|
|
if(ret_status!=SGX_SUCCESS)
|
|
return ret_status;
|
|
return ret_status;
|
|
// generating the entire string as there is no SGX function to generate the public key from the private one.
|
|
// generating the entire string as there is no SGX function to generate the public key from the private one.
|
|
// uint8_t* private_public_key_string = (uint8_t*) malloc(3*SGX_ECP256_KEY_SIZE);
|
|
// uint8_t* private_public_key_string = (uint8_t*) malloc(3*SGX_ECP256_KEY_SIZE);
|
|
- uint8_t* sealed_data2 = (uint8_t*) malloc(*sealed_data_length);
|
|
|
|
|
|
+uint8_t* sealed_data2 = (uint8_t*) malloc(*sealed_data_length);
|
|
// serializing keypair to string
|
|
// serializing keypair to string
|
|
// serialize_signing_key_pair_to_string(pub_key, &signing_priv_key, private_public_key_string);
|
|
// serialize_signing_key_pair_to_string(pub_key, &signing_priv_key, private_public_key_string);
|
|
// sealing serialized keypair to disk
|
|
// sealing serialized keypair to disk
|
|
-// ret_status = sgx_unseal_data(NULL /*(sgx_sealed_data_t*)sealed_data2*/, NULL, 0, NULL /*temp_plaintext*/ ,0 /*&expected_plaintext_msg_length*/);
|
|
|
|
|
|
+ uint8_t* private_key_string = (uint8_t*) malloc(SGX_ECP256_KEY_SIZE);
|
|
|
|
+ uint32_t counter;
|
|
|
|
+for(counter=0;counter<SGX_ECP256_KEY_SIZE;counter++)
|
|
|
|
+ *(private_key_string+counter)=private_key.r[counter];
|
|
// sgx_seal_data(0, NULL, 3*SGX_ECP256_KEY_SIZE, private_public_key_string, *sealed_data_length, (sgx_sealed_data_t*) sealed_data2);
|
|
// sgx_seal_data(0, NULL, 3*SGX_ECP256_KEY_SIZE, private_public_key_string, *sealed_data_length, (sgx_sealed_data_t*) sealed_data2);
|
|
-uint8_t mydata[32]={1};
|
|
|
|
- ret_status = sgx_seal_data(0, NULL, SGX_ECP256_KEY_SIZE, mydata, *sealed_data_length, (sgx_sealed_data_t*) sealed_data2);
|
|
|
|
|
|
+//uint8_t mydata[32]={1};
|
|
|
|
+ ret_status = sgx_seal_data(0, NULL, SGX_ECP256_KEY_SIZE, private_key_string, *sealed_data_length, (sgx_sealed_data_t*) sealed_data2);
|
|
|
|
+for(counter=0;counter<*sealed_data_length;counter++)
|
|
|
|
+ *(sealed_data+counter)=*(sealed_data2+counter);
|
|
free(sealed_data2);
|
|
free(sealed_data2);
|
|
|
|
+ free(private_key_string); //free(private_key);
|
|
// free(private_public_key_string);
|
|
// free(private_public_key_string);
|
|
|
|
|
|
return ret_status; // SGX_SUCCESS;
|
|
return ret_status; // SGX_SUCCESS;
|