diff --git a/common.h b/common.h index d4c93d8..18add67 100644 --- a/common.h +++ b/common.h @@ -18,7 +18,7 @@ #define NONCE_SIZE 64 #define MAX_MSGSIZE 15000 #define MAX_CHKSUMSIZE 1024 -#define MAX_BUFSIZE (((MAX_MSGSIZE + 2) / 3) * 4) + (((MAX_CHKSUMSIZE + 2) / 3) * 4) + 2048 +#define MAX_BUFSIZE (((MAX_MSGSIZE + 2) / 3) * 4) + (((MAX_CHKSUMSIZE + 2) / 3) * 4) + 1536 /* #define MAX_MSGSIZE ((MAX_BUFSIZE - 1536) / 2) - MAX_CHKSUMSIZE //for bin to hex*/ /* #define MAX_MSGSIZE ((MAX_BUFSIZE - 1536) / 4 * 3) - MAX_CHKSUMSIZE //for base64 */ diff --git a/member-tpm.c b/member-tpm.c index 4f1e2e6..e02c2db 100644 --- a/member-tpm.c +++ b/member-tpm.c @@ -207,8 +207,8 @@ int member_signmsg(char *buffer) { } current[0] = '1'; current = ¤t[1]; - strncpy(current, (char *)member.bsn, MAX_BSNSIZE); - current = ¤t[MAX_BSNSIZE]; + bytes = ecdaa_encode(member.bsn, current, MAX_BSNSIZE); + current = ¤t[bytes]; } else { if (0 != ecdaa_signature_TPM_FP256BN_sign(&sig, chksum, chksum_len, NULL, 0, &member.cred, ecdaa_rand, &(ctx.tpm_ctx))) { printf("member_signmsg: Signing message failed.\n"); @@ -220,14 +220,15 @@ int member_signmsg(char *buffer) { bzero(binbuf, MAX_BUFSIZE); ecdaa_signature_FP256BN_serialize(binbuf, &sig, has_nym); bytes = ecdaa_encode(binbuf, current, sig_len); + current[bytes] = '\n'; #ifdef DEBUG + printf("%s",buffer); printf("member_signmsg: has_nym: %u, sig_len: %lu\n",has_nym, sig_len); printf("member_signmsg: msg: %s, len: %lu\n", msg, msg_len); printf("member_signmsg: chksum: %s, len: %lu\n", chksum, chksum_len); printf("member_signmsg: bsn: %s, len: %lu\n", (char *)member.bsn, strlen((char *)member.bsn)); printf("member_signmsg: sig: %s, len: %lu\n", current, sig_len); #endif - current[bytes] = '\n'; tpm_cleanup(&ctx); return 2; //send to verifier before closing } diff --git a/member.c b/member.c index f7dfcb1..15392bd 100644 --- a/member.c +++ b/member.c @@ -192,8 +192,8 @@ int member_signmsg(char *buffer) { } current[0] = '1'; current = ¤t[1]; - strncpy(current, (char *)member.bsn, MAX_BSNSIZE); - current = ¤t[MAX_BSNSIZE]; + bytes = ecdaa_encode(member.bsn, current, MAX_BSNSIZE); + current = ¤t[bytes]; } else { if (0 != ecdaa_signature_FP256BN_sign(&sig, chksum, chksum_len, NULL, 0, &member.msk, &member.cred, ecdaa_rand)) { printf("member_signmsg: Signing message failed.\n"); diff --git a/verifier.c b/verifier.c index 3ee710e..ade3082 100644 --- a/verifier.c +++ b/verifier.c @@ -182,6 +182,8 @@ int verifier_verifymsg(char *buffer) { #ifdef DEBUG printf("verifier_verifymsg: nym detected, signature length = %ld.\n",sig_len); #endif + ecdaa_decode(current, bsn, MAX_BSNSIZE); + bsn_len = strlen(bsn); } else { sig_len = ecdaa_signature_FP256BN_length(); }