Browse Source

added verifier function attest

master
root 6 years ago
parent
commit
f601244ae4
  1. 42
      verifier.c

42
verifier.c

@ -5,7 +5,8 @@ typedef enum verifierstate {
ASKISSUER, ASKISSUER,
GOTISSUER, GOTISSUER,
ASKMEMBER, ASKMEMBER,
GOTMEMBER GOTMEMBER,
ASKATTEST,
} verifierstate_e; } verifierstate_e;
typedef struct verifier { typedef struct verifier {
@ -132,7 +133,7 @@ int verifier_getmember(char *buffer) {
int ret = 0; int ret = 0;
switch (verifier.state) { switch (verifier.state) {
case ON: case GOTISSUER:
bzero(buffer, MAX_BUFSIZE); bzero(buffer, MAX_BUFSIZE);
strncpy(buffer, "PUBLISH\n", 8); strncpy(buffer, "PUBLISH\n", 8);
verifier.state = ASKMEMBER; verifier.state = ASKMEMBER;
@ -167,9 +168,40 @@ int verifier_getmember(char *buffer) {
//"ATTEST" > "OK" //"ATTEST" > "OK"
int verifier_attestmember(char *buffer) { int verifier_attestmember(char *buffer) {
bzero(buffer, MAX_BUFSIZE); int ret = 0;
strncat(buffer, "OK\n", 16);
return 0; switch (verifier.state) {
case GOTMEMBER:
bzero(buffer, MAX_BUFSIZE);
strncpy(buffer, "ATTEST\n", 8);
verifier.state = ASKATTEST;
break;
case ASKATTEST:
if (0 == strncasecmp("ATTEST", buffer, 7)) {
printf("MEMBER > VERIFIER: %s", buffer);
uint8_t binbuf[MAX_BUFSIZE];
char *current = &buffer[8];
ecdaa_hextobin(current, binbuf, ECDAA_MEMBER_PUBLIC_KEY_FP256BN_LENGTH);
ret = ecdaa_member_public_key_FP256BN_deserialize_no_check(&verifier.mpk, binbuf);
if (-1 == ret) {
printf("verifier_attestmember: member public key is malformed!\n");
ret = -1;
} else if (-2 == ret) {
printf("verifier_attestmember: signature of member public key is invalid\n");
ret = -1;
} else {
verifier.state = GOTMEMBER;
ret = 1;
}
}
break;
default:
ret = -1;
}
if (0 == ret) {
printf("MEMBER < VERIFIER: %s", buffer);
}
return ret;
} }
//"LINK" > "NOT IMPLEMENTED" //"LINK" > "NOT IMPLEMENTED"

Loading…
Cancel
Save