Browse Source

fixed bug in verifying attestation message

master
Michael Preisach 5 years ago
parent
commit
e120116817
  1. BIN
      ecdaa_verifier
  2. 15
      verifier.c

BIN
ecdaa_verifier

Binary file not shown.

15
verifier.c

@ -113,10 +113,10 @@ int verifier_getissuer(char *buffer) {
ecdaa_hextobin(current, binbuf, ECDAA_ISSUER_PUBLIC_KEY_FP256BN_LENGTH); ecdaa_hextobin(current, binbuf, ECDAA_ISSUER_PUBLIC_KEY_FP256BN_LENGTH);
ret = ecdaa_issuer_public_key_FP256BN_deserialize(&verifier.ipk, binbuf); ret = ecdaa_issuer_public_key_FP256BN_deserialize(&verifier.ipk, binbuf);
if (-1 == ret) { if (-1 == ret) {
printf("verifier_getpublic: member public key is malformed!\n"); printf("verifier_getpublic: issuer public key is malformed!\n");
ret = -1; ret = -1;
} else if (-2 == ret) { } else if (-2 == ret) {
printf("verifier_getpublic: signature of member public key is invalid\n"); printf("verifier_getpublic: signature of issuer public key is invalid\n");
ret = -1; ret = -1;
} else { } else {
verifier.state = GOTISSUER; verifier.state = GOTISSUER;
@ -182,7 +182,7 @@ int verifier_checkattest(char *buffer) {
char *current = &buffer[7]; //"ATTEST " char *current = &buffer[7]; //"ATTEST "
char msg[MAX_MSGSIZE]; char msg[MAX_MSGSIZE];
strncpy(msg, buffer, MAX_MSGSIZE); strncpy(msg, current, MAX_MSGSIZE);
size_t msg_len = strlen(msg); size_t msg_len = strlen(msg);
current = &current[MAX_MSGSIZE]; current = &current[MAX_MSGSIZE];
@ -207,14 +207,17 @@ int verifier_checkattest(char *buffer) {
struct ecdaa_signature_FP256BN sig; struct ecdaa_signature_FP256BN sig;
int ret = ecdaa_signature_FP256BN_deserialize(&sig, binbuf, has_nym); int ret = ecdaa_signature_FP256BN_deserialize(&sig, binbuf, has_nym);
if (0 != ret) { if (0 != ret) {
printf("verifier_checkattest: error reading signature"); printf("verifier_checkattest: error reading signature\n");
return -1; return -1;
} }
printf("verifier_checkattest: msg: %s, len: %lu\n",msg, msg_len);
printf("verifier_checkattest: bsn: %s, len: %lu\n",bsn, bsn_len);
printf("verifier_checkattest: sig: %s", current);
ret = ecdaa_signature_FP256BN_verify(&sig, &verifier.ipk.gpk, &verifier.revocations, (uint8_t *) msg, msg_len, ret = ecdaa_signature_FP256BN_verify(&sig, &verifier.ipk.gpk, &verifier.revocations, (uint8_t *) msg, msg_len,
(uint8_t *) bsn, bsn_len); (uint8_t *) bsn, bsn_len);
if (0 == ret) { if (0 != ret) {
printf("verifier_checkattest: signature not valid"); printf("verifier_checkattest: signature not valid\n");
return -1; return -1;
} }

Loading…
Cancel
Save