diff options
Diffstat (limited to 'kdmlib')
-rw-r--r-- | kdmlib/kdmtsak.cpp | 36 | ||||
-rw-r--r-- | kdmlib/kdmtsak.h | 29 |
2 files changed, 36 insertions, 29 deletions
diff --git a/kdmlib/kdmtsak.cpp b/kdmlib/kdmtsak.cpp index 2602025bb..ab73826c9 100644 --- a/kdmlib/kdmtsak.cpp +++ b/kdmlib/kdmtsak.cpp @@ -20,7 +20,41 @@ #include "kdmtsak.h" +#define FIFO_FILE "/tmp/ksocket-global/tsak" + int main (int argc, char *argv[]) { - return tde_sak_verify_calling_process(); + int mPipe_fd; + char readbuf[128]; + int numread; + + int verifier_result = tde_sak_verify_calling_process(); + + if (verifier_result == 0) { + // OK, the calling process is authorized to retrieve SAK data + // First, flush the buffer + mPipe_fd = open(FIFO_FILE, O_RDWR | O_NONBLOCK); + numread = 1; + while (numread > 0) { + numread = read(mPipe_fd, readbuf, 128); + } + // Now wait for SAK press + mPipe_fd = open(FIFO_FILE, O_RDWR); + if (mPipe_fd > -1) { + numread = read(mPipe_fd, readbuf, 128); + readbuf[numread] = 0; + readbuf[127] = 0; + close(mPipe_fd); + if (strcmp(readbuf, "SAK\n\r") == 0) { + return 0; + } + else { + return 1; + } + } + return 6; + } + else { + return verifier_result; + } }
\ No newline at end of file diff --git a/kdmlib/kdmtsak.h b/kdmlib/kdmtsak.h index 171bece0b..21b2f85c7 100644 --- a/kdmlib/kdmtsak.h +++ b/kdmlib/kdmtsak.h @@ -37,15 +37,10 @@ #include "config.h" -#define FIFO_FILE "/tmp/ksocket-global/tsak" - // #define DEBUG inline int tde_sak_verify_calling_process() { - int mPipe_fd; - char readbuf[128]; - int numread; bool authorized = false; pid_t parentproc = getppid(); @@ -134,33 +129,11 @@ inline int tde_sak_verify_calling_process() } if (authorized == true) { - // OK, the calling process is authorized to retrieve SAK data - // First, flush the buffer - mPipe_fd = open(FIFO_FILE, O_RDWR | O_NONBLOCK); - numread = 1; - while (numread > 0) { - numread = read(mPipe_fd, readbuf, 128); - } - // Now wait for SAK press - mPipe_fd = open(FIFO_FILE, O_RDWR); - if (mPipe_fd > -1) { - numread = read(mPipe_fd, readbuf, 128); - readbuf[numread] = 0; - readbuf[127] = 0; - close(mPipe_fd); - if (strcmp(readbuf, "SAK\n\r") == 0) { - return 0; - } - else { - return 1; - } - } - return 6; + return 0; } } return 5; } -#undef FIFO_FILE #undef DEBUG
\ No newline at end of file |