Network wrapper protocol as part of the practical master thesis
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

61 lines
1.5 KiB

#include <stdio.h>
#include <string.h>
#include <ecdaa.h>
#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;
}
}
}