in samplecode/psi/MessageHandler/MessageHandler.cpp [266:320]
void MessageHandler::assembleAttestationMSG(Messages::AttestationMessage msg, ra_samp_response_header_t **pp_att_msg) {
sample_ra_att_result_msg_t *p_att_result_msg = NULL;
ra_samp_response_header_t* p_att_result_msg_full = NULL;
int total_size = msg.size() + sizeof(ra_samp_response_header_t) + msg.result_size();
p_att_result_msg_full = (ra_samp_response_header_t*) malloc(total_size);
memset(p_att_result_msg_full, 0, total_size);
p_att_result_msg_full->type = RA_ATT_RESULT;
p_att_result_msg_full->size = msg.size();
p_att_result_msg = (sample_ra_att_result_msg_t *) p_att_result_msg_full->body;
p_att_result_msg->platform_info_blob.sample_epid_group_status = msg.epid_group_status();
p_att_result_msg->platform_info_blob.sample_tcb_evaluation_status = msg.tcb_evaluation_status();
p_att_result_msg->platform_info_blob.pse_evaluation_status = msg.pse_evaluation_status();
for (int i=0; i<PSVN_SIZE; i++)
p_att_result_msg->platform_info_blob.latest_equivalent_tcb_psvn[i] = msg.latest_equivalent_tcb_psvn(i);
for (int i=0; i<ISVSVN_SIZE; i++)
p_att_result_msg->platform_info_blob.latest_pse_isvsvn[i] = msg.latest_pse_isvsvn(i);
for (int i=0; i<PSDA_SVN_SIZE; i++)
p_att_result_msg->platform_info_blob.latest_psda_svn[i] = msg.latest_psda_svn(i);
for (int i=0; i<GID_SIZE; i++)
p_att_result_msg->platform_info_blob.performance_rekey_gid[i] = msg.performance_rekey_gid(i);
for (int i=0; i<SAMPLE_NISTP256_KEY_SIZE; i++) {
p_att_result_msg->platform_info_blob.signature.x[i] = msg.ec_sign256_x(i);
p_att_result_msg->platform_info_blob.signature.y[i] = msg.ec_sign256_y(i);
}
for (int i=0; i<SAMPLE_MAC_SIZE; i++)
p_att_result_msg->mac[i] = msg.mac_smk(i);
p_att_result_msg->secret.payload_size = msg.result_size();
for (int i=0; i<12; i++)
p_att_result_msg->secret.reserved[i] = msg.reserved(i);
for (int i=0; i<SAMPLE_SP_TAG_SIZE; i++)
p_att_result_msg->secret.payload_tag[i] = msg.payload_tag(i);
for (int i=0; i<SAMPLE_SP_TAG_SIZE; i++)
p_att_result_msg->secret.payload_tag[i] = msg.payload_tag(i);
for (int i=0; i<msg.result_size(); i++) {
p_att_result_msg->secret.payload[i] = (uint8_t)msg.payload(i);
}
*pp_att_msg = p_att_result_msg_full;
}