Browse Source

Can seal a fixed msg of the same buffer length. can generate keypair. cannot seal keypair yet.

dettanym 5 years ago
parent
commit
62087a9143

+ 7 - 7
App/App.cpp

@@ -710,24 +710,24 @@ uint32_t unseal_signing_key_pair_from_disk(int fd, __attribute__((unused))  sgx_
 */
 uint32_t create_and_seal_signing_key_pair_to_disk( __attribute__((unused))  int fd, __attribute__((unused))   sgx_ec256_public_t* pub_key, __attribute__((unused))  uint32_t* actual_sealed_msg_length)
 {
- // uint32_t ret_status;
+ uint32_t ret_status;
   // Generating a signing ECDSA key to sign the encryption key.
   uint32_t length; 
-  Decryptor_calculate_sealed_data_size(e2_enclave_id, &length, 3*SGX_ECP256_KEY_SIZE); // sgx_calc_sealed_data_size(0,3*SGX_ECP256_KEY_SIZE);
+  Decryptor_calculate_sealed_data_size(e2_enclave_id, &length, SGX_ECP256_KEY_SIZE); // sgx_calc_sealed_data_size(0,3*SGX_ECP256_KEY_SIZE);
   if(length == 0xFFFFFFFF)
     return 0xFFFFFFFF;
-  printf("0x%x input msg, 0x%x bytes for sealed msg in parameter value\n", 3*SGX_ECP256_KEY_SIZE, length); fflush(stdout); 
-//  uint8_t* sealed_data=(uint8_t*) malloc(*actual_sealed_msg_length);
+  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);
   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_data);
+  Decryptor_create_and_seal_ecdsa_signing_key_pair(e2_enclave_id, &ret_status, pub_key, actual_sealed_msg_length, sealed_data2);
   if(ret_status != SGX_SUCCESS)
   {
     printf("create_and_seal called returned an error: %x", ret_status); 
-    free(sealed_data);
+    free(sealed_data2);
     return 0xFFFFFFFF;
   }
   printf("It returned sgx_success\n"); fflush(stdout); 
-  
+/*  
   ret_status = write_to_fd(fd, sealed_data, actual_sealed_msg_length);
   free(sealed_data);
   return ret_status;*/ return 0; 

+ 6 - 3
LocalAttestationCode/EnclaveMessageExchange.cpp

@@ -239,15 +239,18 @@ uint32_t create_and_seal_ecdsa_signing_key_pair(__attribute__((unused))   sgx_ec
     if(ret_status!=SGX_SUCCESS)
        return ret_status;
     // 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);
     // 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
 //    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); 
     free(sealed_data2);
-    free(private_public_key_string);
+
+  //  free(private_public_key_string);
 //    return ret_status;
 	return SGX_SUCCESS; 
 

+ 1 - 1
LocalAttestationCode/LocalAttestationCode.edl

@@ -39,7 +39,7 @@ enclave  {
         public uint32_t exchange_report([in] sgx_dh_msg2_t *dh_msg2, [out] sgx_dh_msg3_t *dh_msg3, [in] uint32_t *session_id);
 //	public uint32_t create_ecdsa_signing_key_pair(); 
 //	public uint32_t create_ecdsa_signing_key_pair([in, out]sgx_ec256_public_t* pub_key);
-        public uint32_t create_and_seal_ecdsa_signing_key_pair([out]sgx_ec256_public_t* pub_key, [in, out] uint32_t* sealed_data_length, [out] uint8_t* sealed_data);
+        public uint32_t create_and_seal_ecdsa_signing_key_pair([out]sgx_ec256_public_t* pub_key, [in] uint32_t* sealed_data_length, [out] uint8_t* sealed_data);
         public uint32_t unseal_and_restore_sealed_signing_key_pair([out] sgx_ec256_public_t* pub_key, [in] uint8_t* sealed_data, [in] uint32_t* sealed_data_length);
         uint32_t create_ecdsa_key_pair([out] sgx_ec256_public_t* pub_key, [out] sgx_ec256_private_t* priv_key);
 void serialize_signing_key_pair_to_string([in] sgx_ec256_public_t* pub_key, [in] sgx_ec256_private_t* signing_priv_key, [out] uint8_t* private_public_key_string);