protobufLAInitiator.cpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include "protobufLAInitiator.h"
  2. namespace protobufLAInitiator
  3. {
  4. int generate_protobuf_dh_msg1(uint32_t own_enclave_id, protobuf_sgx_dh_msg1_t& protobuf_msg1,
  5. uint32_t* session_id)
  6. {
  7. sgx_dh_msg1_t dh_msg1; //Diffie-Hellman Message 1
  8. memset(&dh_msg1, 0, sizeof(sgx_dh_msg1_t));
  9. uint32_t ret_status;
  10. Decryptor_session_request_wrapper(own_enclave_id, &ret_status, &dh_msg1, session_id);
  11. if(ret_status != SGX_SUCCESS)
  12. return 0xffffffff;
  13. protobufSgxTransformsInitiator::encode_msg1_to_protobuf(protobuf_msg1, &dh_msg1);
  14. printf("Generated the following Msg1: ------------- \n"); fflush(stdout);
  15. protobufSgxTransformsInitiator::print_initialized_msg1(protobuf_msg1, &dh_msg1);
  16. return 0;
  17. }
  18. int process_protobuf_dh_msg2_generate_protobuf_dh_msg3(uint32_t own_enclave_id,
  19. protobuf_sgx_dh_msg2_t& protobuf_msg2, protobuf_sgx_dh_msg3_t& protobuf_msg3,
  20. uint32_t* session_id)
  21. {
  22. uint32_t ret_status;
  23. sgx_dh_msg2_t dh_msg2; //Diffie-Hellman Message 2
  24. sgx_dh_msg3_t dh_msg3; //Diffie-Hellman Message 3
  25. sgx_key_128bit_t dh_aek; // Session Key
  26. memset(&dh_aek,0, sizeof(sgx_key_128bit_t));
  27. memset(&dh_msg2, 0, sizeof(sgx_dh_msg2_t));
  28. memset(&dh_msg3, 0, sizeof(sgx_dh_msg3_t));
  29. if(protobufSgxTransformsInitiator::decode_msg2_from_protobuf(protobuf_msg2, &dh_msg2)!=0)
  30. return -1;
  31. // process msg2 and generate msg3
  32. Decryptor_exchange_report_wrapper(own_enclave_id, &ret_status, &dh_msg2, &dh_msg3, session_id);
  33. if(ret_status!=SGX_SUCCESS)
  34. return ret_status;
  35. // convert msg3 sgx_dh_msg3_t object to a protobuf msg3 object.
  36. protobufSgxTransformsInitiator::encode_msg3_to_protobuf(protobuf_msg3, &dh_msg3);
  37. return 0;
  38. }
  39. };