|
|
|
@ -271,34 +271,14 @@ int member_verifymsg(char *buffer) { |
|
|
|
return 2; //send to verifier before closing
|
|
|
|
} |
|
|
|
|
|
|
|
//"PUBLISH" > "PUBLISH <member.mpk>"
|
|
|
|
/* int member_publish(char *buffer) { */ |
|
|
|
/* char *current; */ |
|
|
|
/* int ret = 0; */ |
|
|
|
/* uint8_t binbuf[MAX_BUFSIZE]; */ |
|
|
|
/* bzero(buffer, MAX_BUFSIZE); */ |
|
|
|
|
|
|
|
/* strncpy(buffer, "PUBLISH ", 8); */ |
|
|
|
|
|
|
|
/* current = &buffer[8]; */ |
|
|
|
/* bzero(binbuf, MAX_BUFSIZE); */ |
|
|
|
/* ecdaa_member_public_key_FP256BN_serialize(binbuf, &member.mpk); */ |
|
|
|
/* ret = ecdaa_encode(binbuf, current, ECDAA_MEMBER_PUBLIC_KEY_FP256BN_LENGTH); */ |
|
|
|
|
|
|
|
/* current[ret] = '\n'; */ |
|
|
|
|
|
|
|
/* return 0; */ |
|
|
|
/* } */ |
|
|
|
|
|
|
|
//"JOINSTART <issuer.nonce>" > "APPEND <member.mpk>"
|
|
|
|
int member_joinappend(char *buffer) { |
|
|
|
char *current = &buffer[10]; |
|
|
|
uint8_t binbuf[MAX_BUFSIZE]; |
|
|
|
int ret = ecdaa_decode(current, member.nonce, NONCE_SIZE); |
|
|
|
int bytes = ecdaa_decode(current, member.nonce, NONCE_SIZE); |
|
|
|
ecdaa_write_buffer_to_file(member_nonce_file, member.nonce, NONCE_SIZE); |
|
|
|
ret = ecdaa_member_key_pair_TPM_FP256BN_generate(&member.mpk, member.pk_in, member.nonce, NONCE_SIZE, &member.ctx); |
|
|
|
if (0 != ret) { |
|
|
|
fprintf(stderr, "Error generating member key-pair. Error %d\n", ret); |
|
|
|
if (0 != ecdaa_member_key_pair_TPM_FP256BN_generate(&member.mpk, member.pk_in, member.nonce, NONCE_SIZE, &member.ctx)) { |
|
|
|
fprintf(stderr, "Error generating member key-pair\n"); |
|
|
|
return -1; |
|
|
|
} |
|
|
|
bzero(buffer, MAX_BUFSIZE); |
|
|
|
@ -307,8 +287,8 @@ int member_joinappend(char *buffer) { |
|
|
|
current = &buffer[7]; |
|
|
|
bzero(binbuf, MAX_BUFSIZE); |
|
|
|
ecdaa_member_public_key_FP256BN_serialize(binbuf, &member.mpk); |
|
|
|
ret = ecdaa_encode(binbuf, current, ECDAA_MEMBER_PUBLIC_KEY_FP256BN_LENGTH); |
|
|
|
current[ret] = '\n'; |
|
|
|
bytes = ecdaa_encode(binbuf, current, ECDAA_MEMBER_PUBLIC_KEY_FP256BN_LENGTH); |
|
|
|
current[bytes] = '\n'; |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
@ -317,31 +297,29 @@ int member_joinfinish(char *buffer) { |
|
|
|
char *current = &buffer[12]; |
|
|
|
uint8_t *bincur; |
|
|
|
uint8_t binbuf[MAX_BUFSIZE]; |
|
|
|
int bytes = 0; |
|
|
|
int ret = 0; |
|
|
|
bzero(binbuf, MAX_BUFSIZE); |
|
|
|
ret = ecdaa_decode(current, binbuf, ECDAA_CREDENTIAL_FP256BN_LENGTH); |
|
|
|
bytes = ecdaa_decode(current, binbuf, ECDAA_CREDENTIAL_FP256BN_LENGTH); |
|
|
|
|
|
|
|
current = ¤t[ret]; |
|
|
|
current = ¤t[bytes]; |
|
|
|
bincur = &binbuf[ECDAA_CREDENTIAL_FP256BN_LENGTH]; |
|
|
|
ecdaa_decode(current, bincur, ECDAA_CREDENTIAL_FP256BN_SIGNATURE_LENGTH); |
|
|
|
ret = ecdaa_credential_FP256BN_deserialize_with_signature(&member.cred, &member.mpk, &member.ipk.gpk, binbuf, bincur); |
|
|
|
if(-1 == ret) { |
|
|
|
printf("member_joinfinish: credential is malformed!\n"); |
|
|
|
strncpy(buffer, "ERR", 3); |
|
|
|
ret = -1; |
|
|
|
} else if(-2 == ret) { |
|
|
|
printf("member_joinfinish: siganture of credential is invalid\n"); |
|
|
|
strncpy(buffer, "ERR", 3); |
|
|
|
ret = -1; |
|
|
|
} |
|
|
|
printf("member_joinfinish: writing key-pair and credential to disk\n"); |
|
|
|
printf("member_joinfinish: writing public key and credential to disk\n"); |
|
|
|
if(0 != ecdaa_member_public_key_FP256BN_serialize_file(member_public_key_file, &member.mpk) || |
|
|
|
0 != ecdaa_credential_FP256BN_serialize_file(member_credential_file, &member.cred)) { |
|
|
|
printf("issuer_setup: Error saving key-pair or credential to disk\n"); |
|
|
|
strncpy(buffer, "ERR", 3); |
|
|
|
ret = -1; |
|
|
|
} else { |
|
|
|
strncpy(buffer, "OK", 2); |
|
|
|
ret = 1; |
|
|
|
} |
|
|
|
|
|
|
|
return ret; |
|
|
|
@ -360,8 +338,8 @@ int read_public_key_from_files(uint8_t *public_key, TPM2_HANDLE *key_handle, con |
|
|
|
for (unsigned i=0; i < ECP_FP256BN_LENGTH; i++) { |
|
|
|
unsigned char byt; |
|
|
|
int ret=0; |
|
|
|
//if (fscanf(pub_key_file_ptr, "%02X", &byt) != 1) {
|
|
|
|
if (ret = fscanf(pub_key_file_ptr, "%c", &byt) != 1) { |
|
|
|
if (fscanf(pub_key_file_ptr, "%02X", &byt) != 1) { |
|
|
|
//if (ret = fscanf(pub_key_file_ptr, "%c", &byt) != 1) {
|
|
|
|
printf("read_public_key: i=%d, len=%d, returnvalue=%d\n", i, ECP_FP256BN_LENGTH, ret); |
|
|
|
ret = -1; |
|
|
|
break; |
|
|
|
@ -384,8 +362,8 @@ int read_public_key_from_files(uint8_t *public_key, TPM2_HANDLE *key_handle, con |
|
|
|
do { |
|
|
|
for (int i=(sizeof(TPM2_HANDLE)-1); i >= 0; i--) { |
|
|
|
unsigned char byt; |
|
|
|
//if (fscanf(handle_file_ptr, "%02X", &byt) != 1) {
|
|
|
|
if (fscanf(handle_file_ptr, "%c", &byt) != 1) { |
|
|
|
if (fscanf(handle_file_ptr, "%02X", &byt) != 1) { |
|
|
|
//if (fscanf(handle_file_ptr, "%c", &byt) != 1) {
|
|
|
|
ret = -1; |
|
|
|
break; |
|
|
|
} |
|
|
|
|