#include #include #include #include #include "util.h" #include "covert_channel.h" // wait valid0 signal void wait_valid0() { while (1) { if (check_state(func_valid0)) { break; } usleep(1000000); } } // wait valid1 signal void wait_valid1() { while (1) { if (check_state(func_valid1)) { break; } usleep(1000000); } } char read_data() { #ifdef DEBUG debug_print(); #endif char data = 0; if (check_state(func_0)) { data |= (1 << 0); } if (check_state(func_1)) { data |= (1 << 1); } if (check_state(func_2)) { data |= (1 << 2); } if (check_state(func_3)) { data |= (1 << 3); } if (check_state(func_4)) { data |= (1 << 4); } if (check_state(func_5)) { data |= (1 << 5); } if (check_state(func_6)) { data |= (1 << 6); } if (check_state(func_7)) { data |= (1 << 7); } return data; } int main() { printf("Sender process\n"); char buf[256] = {'\0'}; int index = 0; while (1) { assert(index < 255); printf("waiting ...\n"); // wait valid signal if (index % 2 == 0) { wait_valid0(); } else { wait_valid1(); } buf[index] = read_data(); printf("recved caracter(%c)\n", buf[index]); // set ready signal func_ready(); if (check_state(func_last)) { // is last ? break; } index++; } printf("Received key: %s\n", buf); return 0; }