Browse Source

verifier implemented, not yet tested

master
root 6 years ago
parent
commit
401b831e08
  1. 10
      CMakeLists.txt
  2. 8
      member.c
  3. 1
      member.h
  4. 147
      verifier.c
  5. 17
      verifier.h

10
CMakeLists.txt

@ -9,9 +9,17 @@ target_include_directories(ecdaa_issuer PUBLIC
${ECDAA_AMCL}
)
target_link_libraries(ecdaa_issuer /usr/local/lib/libecdaa.so)
add_executable(ecdaa_member member.c common.h client.h client.c server.h server.c issuer.h)
add_executable(ecdaa_member member.c common.h client.h client.c server.h server.c)
target_include_directories(ecdaa_member PUBLIC
${ECDAA_AMCL}
)
target_link_libraries(ecdaa_member /usr/local/lib/libecdaa.so)
target_link_libraries(ecdaa_member /usr/local/lib/libecdaa-tpm.so)
add_executable(ecdaa_verifier verifier.c common.h server.h server.c client.h client.c)
target_include_directories(ecdaa_verifier PUBLIC
${ECDAA_AMCL}
)
target_link_libraries(ecdaa_verifier /usr/local/lib/libecdaa.so)
target_link_libraries(ecdaa_verifier /usr/local/lib/libecdaa-tpm.so)

8
member.c

@ -1,8 +1,4 @@
#include <stdio.h>
#include <string.h>
#include <ecdaa-tpm.h>
#include "client.h"
#include "server.h"
#include "member.h"
typedef enum memberstate {
ON,
@ -22,8 +18,6 @@ typedef struct member {
member_t member;
int process_member(char *buffer);
int member_join(char* buffer);
int member_attest(char* buffer);
int member_publish(char* buffer);

1
member.h

@ -7,6 +7,7 @@
#include <stdio.h>
#include <string.h>
#include <ecdaa.h>
#include <ecdaa-tpm.h>
#include "server.h"
#include "client.h"
#include "common.h"

147
verifier.c

@ -1,63 +1,66 @@
#include <stdio.h>
#include <string.h>
#include <ecdaa-tpm.h>
#include "client.h"
#include "server.h"
#include "verifier.h"
typedef enum memberstate {
typedef enum verifierstate {
ON,
JOIN,
APPEND,
JOINPROCEED,
JOINED,
ATTEST,
PUBLISH
} memberstate_e;
ASKISSUER,
GOTISSUER,
ASKMEMBER,
GOTMEMBER
} verifierstate_e;
typedef struct member {
struct ecdaa_member_public_key_FP256BN mpk;
struct ecdaa_member_public_key_FP256BN msk;
memberstate_e state;
} member_t;
typedef struct verifier {
struct ecdaa_verifier_public_key_FP256BN mpk;
struct ecdaa_verifier_public_key_FP256BN ipk;
verifierstate_e state;
} verifier_t;
member_t member;
verifier_t verifier;
int process_member(char *buffer);
int verifier_getissuer(char *buffer);
int member_join(char* buffer);
int member_attest(char* buffer);
int member_publish(char* buffer);
int verifier_getmember(char *buffer);
int main() {
int err = 0;
if (2 != server_start(&process_member, MEMBERPORT)) {
if (2 != server_start(&process_verifier, VERIFIERPORT)) {
printf("server failed\n");
}
return 0;
}
int process_member(char *buffer) {
int process_verifier(char *buffer) {
int ret = 0;
printf("> MEMBER: %s\n", buffer);
printf("> VERIFIER: %s\n", buffer);
if (0 == strncasecmp("ATTEST", buffer, 6)) {
printf("attest()\n");
if (0 == strncasecmp("VERIFY", buffer, 6)) {
switch (verifier.state) {
case GOTMEMBER:
printf("verify()\n");
bzero(buffer, MAX_BUFSIZE);
strncpy(buffer, "ATTEST ", 7);
member_attest(buffer);
} else if (0 == strncasecmp("PUBLISH", buffer, 7)) {
printf("publish()\n");
strncpy(buffer, "OK\n", 3);
break;
default:
bzero(buffer, MAX_BUFSIZE);
strncpy(buffer, "ERR\n", 4);
}
} else if (0 == strncasecmp("LINk", buffer, 4)) {
printf("getpublished()\n");
bzero(buffer, MAX_BUFSIZE);
strncpy(buffer, "OK\n", 3);
} else if (0 == strncasecmp("GETPUBLISHED", buffer, 12)) {
printf("link()\n");
verifier.state = ON;
ret = client_connect(&verifier_getissuer, ISSUERIP, ISSUERPORT);
if (0 >= ret || GOTISSUER != verifier.state) {
printf("process_verifier: issuer connection failed\n");
bzero(buffer, MAX_BUFSIZE);
strncpy(buffer, "PUBLISH ", 8);
member_publish(buffer);
} else if (0 == strncasecmp("JOIN", buffer, 4)) {
printf("join()\n");
member.state = JOIN;
ret = client_connect(&member_join, ISSUERIP, ISSUERPORT);
if (0 >= ret || JOINED != member.state) {
printf("process_member: issuer connection failed\n");
strncpy(buffer, "ERR\n", 4);
} else {
ret = client_connect(&verifier_getmember, MEMBERIP, MEMBERPORT);
if (0 >= ret || GOTMEMBER != verifier.state) {
printf("process_verifier: issuer connection failed\n");
bzero(buffer, MAX_BUFSIZE);
strncpy(buffer, "ERR\n", 4);
} else {
@ -65,6 +68,7 @@ int process_member(char *buffer) {
strncpy(buffer, "OK\n", 3);
}
ret = 0;
}
} else if (0 == strncasecmp("EXIT", buffer, 4)) {
printf("exit()\n");
bzero(buffer, MAX_BUFSIZE);
@ -81,49 +85,58 @@ int process_member(char *buffer) {
ret = 0;
}
printf("< MEMBER: %s\n", buffer);
printf("< VERIFIER: %s\n", buffer);
return ret;
}
int member_join(char *buffer) {
int verifier_getissuer(char *buffer) {
int ret = 0;
printf("ISSUER > MEMBER: %s", buffer);
switch (member.state) {
case JOIN:
printf("ISSUER > VERIFIER: %s", buffer);
switch (verifier.state) {
case ON:
bzero(buffer, MAX_BUFSIZE);
strncpy(buffer, "JOIN\n", 5);
member.state = APPEND;
break;
case APPEND:
if (0 == strncasecmp("JOINSTART", buffer, 9)) {
bzero(buffer, MAX_BUFSIZE);
strncpy(buffer, "APPEND\n", 7);
member.state = JOINPROCEED;
}
strncpy(buffer, "PUBLISH\n", 8);
verifier.state = ASKISSUER;
break;
case JOINPROCEED:
if (0 == strncasecmp("JOINPROCEED", buffer, 11)) {
case ASKISSUER:
if (0 == strncasecmp("PUBLISH", buffer, 7)) {
bzero(buffer, MAX_BUFSIZE);
member.state = JOINED;
verifier.state = GOTISSUER;
ret = 1;
}
break;
default:
ret -1;
ret - 1;
}
if(0 == ret) {
printf("ISSUER < MEMBER: %s", buffer);
if (0 == ret) {
printf("ISSUER < VERIFIER: %s", buffer);
}
return ret;
}
int member_attest(char* buffer) {
strncat(buffer, "<attestval>\n", 13);
return 0;
}
int verifier_getmember(char *buffer) {
int ret = 0;
int member_publish(char* buffer) {
strncat(buffer, "<publicval>\n", 12);
return 0;
printf("ISSUER > VERIFIER: %s", buffer);
switch (verifier.state) {
case ON:
bzero(buffer, MAX_BUFSIZE);
strncpy(buffer, "PUBLISH\n", 8);
verifier.state = ASKMEMBER;
break;
case ASKMEMBER:
if (0 == strncasecmp("PUBLISH", buffer, 7)) {
bzero(buffer, MAX_BUFSIZE);
verifier.state = GOTMEMBER;
ret = 1;
}
break;
default:
ret - 1;
}
if (0 == ret) {
printf("ISSUER < VERIFIER: %s", buffer);
}
return ret;
}

17
verifier.h

@ -0,0 +1,17 @@
//
// Created by root on 11/5/19.
//
#ifndef ECDAA_ISSUER_MEMBER_H
#define ECDAA_ISSUER_MEMBER_H
#include <stdio.h>
#include <string.h>
#include <ecdaa.h>
#include <ecdaa-tpm.h>
#include "server.h"
#include "client.h"
#include "common.h"
int process_verifier(char *buffer);
#endif //ECDAA_ISSUER_ISSUER_H
Loading…
Cancel
Save