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