Message *dfs_msg_recv(void *socket, char **buf) { unsigned long len; *buf = dfs_prim_msg_recv(socket, &len); dfs_end_time(message_comm_type); Message *reply = message__unpack(NULL, len, *buf); if (reply->has_encrypted_payload) { assert(registered_aes_key && (socket == registered_aes_sock)); dfs_out("\t\tdecrypt %x/%x (%d)\n", *(unsigned long *)reply->encrypted_payload.data, *(unsigned long *)registered_aes_key, reply->encrypted_payload.len); char *dec = dfs_aes_decrypt(registered_aes_key, NULL, reply->encrypted_payload.data, reply->encrypted_payload.len); Message *nreply = message__unpack(NULL, reply->encrypted_payload.len, dec); if (!nreply) { dfs_out("\nERROR: decryption of incoming failed\n"); return NULL; } message__free_unpacked(reply, NULL); free(*buf); reply = nreply; *buf = dec; } dfs_out("Received %s%s from %s, seq %d, %d bytes, res %d ('%s')\n", reply->has_encrypted_payload ? "enc " : "", dfs_msgname(reply->type), reply->name ? reply->name : "NO NAME!", reply->seq, len, reply->res, reply->res ? strerror(-reply->res):""); return reply; }
int main(int argc, char *argv[]) { Message *m; uint8_t buf[MAX_MSG_SIZE]; size_t msg_len = read_buffer(MAX_MSG_SIZE, buf); m = message__unpack(NULL,msg_len, buf); if(m == NULL) { fprintf(stderr,"error unpacking incoming message\n"); exit(1); } printf("Received: np=%d npm=%d npa=%d load=%f uthresh=%f lthresh=%f\n", m->np,m->npm,m->npa,m->load,m->uthresh,m->lthresh); message__free_unpacked(m, NULL); return 0; }