in samplecode/remoteattestation/MessageHandler/MessageHandler.cpp [408:458]
vector<string> MessageHandler::incomingHandler(string v, int type) {
vector<string> res;
string s;
bool ret;
switch (type) {
case RA_VERIFICATION: { //Verification request
Messages::InitialMessage init_msg;
ret = init_msg.ParseFromString(v);
if (ret && init_msg.type() == RA_VERIFICATION) {
s = this->handleVerification();
res.push_back(to_string(RA_MSG0));
}
}
break;
case RA_MSG0: { //Reply to MSG0
Messages::MessageMsg0 msg0;
ret = msg0.ParseFromString(v);
if (ret && (msg0.type() == RA_MSG0)) {
s = this->handleMSG0(msg0);
res.push_back(to_string(RA_MSG1));
}
}
break;
case RA_MSG2: { //MSG2
Messages::MessageMSG2 msg2;
ret = msg2.ParseFromString(v);
if (ret && (msg2.type() == RA_MSG2)) {
s = this->handleMSG2(msg2);
res.push_back(to_string(RA_MSG3));
}
}
break;
case RA_ATT_RESULT: { //Reply to MSG3
Messages::AttestationMessage att_msg;
ret = att_msg.ParseFromString(v);
if (ret && att_msg.type() == RA_ATT_RESULT) {
s = this->handleAttestationResult(att_msg);
res.push_back(to_string(RA_APP_ATT_OK));
}
}
break;
default:
Log("Unknown type: %d", type, log::error);
break;
}
res.push_back(s);
return res;
}