7 changed files with 134 additions and 26 deletions
@ -0,0 +1,100 @@ |
|||||
|
#include <stdio.h> |
||||
|
#include <string.h> |
||||
|
#include <ecdaa-tpm.h> |
||||
|
#include "client.h" |
||||
|
|
||||
|
#define ISSUERIP "127.0.0.1" |
||||
|
#define ISSUERPORT 6590 |
||||
|
#define MEMBERIP "127.0.0.1" |
||||
|
#define MEMBERPORT 6591 |
||||
|
#define VERIFIERIP "127.0.0.1" |
||||
|
#define VERIFIERPORT 6592 |
||||
|
|
||||
|
|
||||
|
typedef struct member { |
||||
|
struct ecdaa_member_public_key_FP256BN mpk; |
||||
|
} member_t; |
||||
|
|
||||
|
typedef enum memberstate { |
||||
|
ON, |
||||
|
JOIN, |
||||
|
APPEND, |
||||
|
JOINED, |
||||
|
ATTEST, |
||||
|
PUBLISH |
||||
|
}memberstate_t; |
||||
|
|
||||
|
int process_member_client(int connfd); |
||||
|
|
||||
|
int main() { |
||||
|
int err = 0; |
||||
|
client_t *client; |
||||
|
|
||||
|
client = client_open(&process_member_client); |
||||
|
if (NULL == client) { |
||||
|
printf("listen failed, closing...\n"); |
||||
|
} |
||||
|
|
||||
|
for (; !err;) { |
||||
|
err = client_connect(client, ISSUERPORT, ISSUERIP); |
||||
|
if (1 == err) { |
||||
|
printf("graceful shutdown...\n"); |
||||
|
} else if (err) { |
||||
|
printf("accept failed, closing...\n"); |
||||
|
} |
||||
|
} |
||||
|
printf("shut down client\n"); |
||||
|
client_close(client); |
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
int process_member_client(int connfd) { |
||||
|
char inbuf[MAX_BUFSIZE]; |
||||
|
char outbuf[MAX_BUFSIZE]; |
||||
|
int n = 0; |
||||
|
memberstate_t state = JOIN; |
||||
|
|
||||
|
strncpy(outbuf, "JOIN", 4); |
||||
|
printf("< MEMBER: %s\n", outbuf); |
||||
|
write(connfd, outbuf, sizeof(outbuf)); |
||||
|
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; |
||||
|
} |
||||
|
|
||||
|
switch(state) { |
||||
|
case JOIN: |
||||
|
state = APPEND; |
||||
|
break; |
||||
|
case APPEND: |
||||
|
state = JOINED; |
||||
|
break; |
||||
|
case JOINED: |
||||
|
state = ATTEST; |
||||
|
state = PUBLISH; |
||||
|
break; |
||||
|
case ATTEST: |
||||
|
state = JOINED; |
||||
|
break; |
||||
|
case PUBLISH: |
||||
|
break; |
||||
|
} |
||||
|
|
||||
|
printf("> MEMBER: %s\n", inbuf); |
||||
|
strncpy(outbuf, "OK", 2); |
||||
|
printf("< MEMBER: %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; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue