in samplecode/remoteattestation/MessageHandler/MessageHandler.cpp [85:133]
string MessageHandler::generateMSG1() {
int retGIDStatus = 0;
int count = 0;
sgx_ra_msg1_t sgxMsg1Obj;
while (1) {
retGIDStatus = sgx_ra_get_msg1(this->enclave->getContext(),
this->enclave->getID(),
sgx_ra_get_ga,
&sgxMsg1Obj);
if (retGIDStatus == SGX_SUCCESS) {
break;
} else if (retGIDStatus == SGX_ERROR_BUSY) {
if (count == 5) { //retried 5 times, so fail out
Log("Error, sgx_ra_get_msg1 is busy - 5 retries failed", log::error);
break;;
} else {
sleep(3);
count++;
}
} else { //error other than busy
Log("Error, failed to generate MSG1", log::error);
break;
}
}
if (SGX_SUCCESS == retGIDStatus) {
Log("MSG1 generated Successfully");
Messages::MessageMSG1 msg;
msg.set_type(RA_MSG1);
for (auto x : sgxMsg1Obj.g_a.gx)
msg.add_gax(x);
for (auto x : sgxMsg1Obj.g_a.gy)
msg.add_gay(x);
for (auto x : sgxMsg1Obj.gid) {
msg.add_gid(x);
}
return nm->serialize(msg);
}
return "";
}