Browse Source

Previous commit had a buggy sgx_seal_data implementation - wrong parameters - and no error checking. Fixed that.

dettanym 5 years ago
parent
commit
53aa094042
2 changed files with 5 additions and 7 deletions
  1. 3 3
      App/App.cpp
  2. 2 4
      LocalAttestationCode/EnclaveMessageExchange.cpp

+ 3 - 3
App/App.cpp

@@ -717,16 +717,16 @@ uint32_t create_and_seal_signing_key_pair_to_disk( __attribute__((unused))  int
   if(length == 0xFFFFFFFF)
     return 0xFFFFFFFF;
   printf("0x%x input msg, 0x%x bytes for sealed msg in parameter value\n", SGX_ECP256_KEY_SIZE, length); fflush(stdout); 
-  uint8_t* sealed_data2=(uint8_t*) malloc(*actual_sealed_msg_length);
+  uint8_t* sealed_data2=(uint8_t*) malloc(length);
   printf("Made call to sgx_calc_sealed_data_size\n");  fflush(stdout); 
-  Decryptor_create_and_seal_ecdsa_signing_key_pair(e2_enclave_id, &ret_status, pub_key, actual_sealed_msg_length, sealed_data2);
+  Decryptor_create_and_seal_ecdsa_signing_key_pair(e2_enclave_id, &ret_status, pub_key, &length, sealed_data2);
   if(ret_status != SGX_SUCCESS)
   {
     printf("create_and_seal called returned an error: %x", ret_status); 
     free(sealed_data2);
     return 0xFFFFFFFF;
   }
-  printf("It returned sgx_success\n"); fflush(stdout); 
+  printf("It returned sgx_success\n"); fflush(stdout); *actual_sealed_msg_length=length;
 /*  
   ret_status = write_to_fd(fd, sealed_data, actual_sealed_msg_length);
   free(sealed_data);

+ 2 - 4
LocalAttestationCode/EnclaveMessageExchange.cpp

@@ -247,13 +247,11 @@ uint32_t create_and_seal_ecdsa_signing_key_pair(__attribute__((unused))   sgx_ec
 //    ret_status = sgx_unseal_data(NULL /*(sgx_sealed_data_t*)sealed_data2*/, NULL, 0, NULL  /*temp_plaintext*/ ,0 /*&expected_plaintext_msg_length*/);
   // 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}; 
-	sgx_seal_data(0, NULL, SGX_ECP256_KEY_SIZE,mydata, *sealed_data_length, (sgx_sealed_data_t*) sealed_data2); 
+     ret_status = sgx_seal_data(0, NULL, SGX_ECP256_KEY_SIZE, mydata, *sealed_data_length, (sgx_sealed_data_t*) sealed_data2); 
     free(sealed_data2);
-
   //  free(private_public_key_string);
-//    return ret_status;
-	return SGX_SUCCESS; 
 
+	return ret_status; // SGX_SUCCESS; 
 }