#include #include #include #include "server.h" #include "client.h" typedef struct issuer { struct ecdaa_issuer_public_key_FP256BN ipk; struct ecdaa_issuer_secret_key_FP256BN isk; } issuer_t; int process_issuer(int connfd); int main() { int err = 0; server_t *server; server = server_open(&process_issuer); if (NULL == server) { printf("listen failed, closing...\n"); } for (; !err;) { err = server_accept(server); if (1 == err) { printf("graceful shutdown...\n"); } else if (err) { printf("accept failed, closing...\n"); } } printf("shut down server\n"); server_close(server); return 0; } int process_issuer(int connfd) { char inbuf[MAX_BUFSIZE]; char outbuf[MAX_BUFSIZE]; int n = 0; for (;;) { bzero(inbuf, MAX_BUFSIZE); bzero(outbuf, MAX_BUFSIZE); if (0 >= read(connfd, inbuf, sizeof(inbuf))) { printf("process_issuer: cannot read from socket\n"); return -1; } printf("> ISSUER: %s\n", inbuf); strncpy(outbuf, "OK", 2); printf("< ISSUER: %s\n", outbuf); write(connfd, outbuf, sizeof(outbuf)); if (0 == strncmp("exit", inbuf, 4)) { printf("process_issuer: exiting gracefully\n"); return 0; } if (0 == strncmp("shutdown", inbuf, 8)) { printf("process_issuer: shutting down gracefully\n"); return 1; } } }