|
|
@ -61,16 +61,21 @@ int main(int argc, char *argv[]) { |
|
|
printf("Error: error reading in public key files '%s' and '%s'\n", tpm_key_file, tpm_handle_file); |
|
|
printf("Error: error reading in public key files '%s' and '%s'\n", tpm_key_file, tpm_handle_file); |
|
|
return 1; |
|
|
return 1; |
|
|
} |
|
|
} |
|
|
|
|
|
printf("Loaded pubkey and handle\n"); |
|
|
member.state = ON; |
|
|
member.state = ON; |
|
|
remote_ip = argv[2]; |
|
|
remote_ip = argv[2]; |
|
|
ret = client_connect(&member_join, remote_ip, ISSUERPORT); |
|
|
ret = client_connect(&member_join, remote_ip, ISSUERPORT); |
|
|
if (0 >= ret || JOINED != member.state) { |
|
|
if (0 >= ret || JOINED != member.state) { |
|
|
printf("Join process failed!\n"); |
|
|
printf("Join process failed!\n"); |
|
|
return 1; |
|
|
return 1; |
|
|
} else { |
|
|
|
|
|
printf("Join process was successful\n"); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
printf("Join process was successful\n"); |
|
|
} else if (0 == strncasecmp("--send", argv[1], 6) || 0 == strncasecmp("-s", argv[1], 2)) { |
|
|
} else if (0 == strncasecmp("--send", argv[1], 6) || 0 == strncasecmp("-s", argv[1], 2)) { |
|
|
|
|
|
if (0 != read_public_key_from_files(member.pk_in, &sk_handle, tpm_key_file, tpm_handle_file)) { |
|
|
|
|
|
printf("Error: reading in public key files '%s' and '%s' failed\n", tpm_key_file, tpm_handle_file); |
|
|
|
|
|
return 1; |
|
|
|
|
|
} |
|
|
|
|
|
printf("Loaded pubkey and handle\n"); |
|
|
msg_len = ecdaa_read_from_file(msg, MAX_MSGSIZE, MSGFILE); |
|
|
msg_len = ecdaa_read_from_file(msg, MAX_MSGSIZE, MSGFILE); |
|
|
if (msg_len < 0) { |
|
|
if (msg_len < 0) { |
|
|
printf("Could not open message file %s\n", MSGFILE); |
|
|
printf("Could not open message file %s\n", MSGFILE); |
|
|
@ -81,10 +86,7 @@ int main(int argc, char *argv[]) { |
|
|
printf("Could not open checksum file %s\n", CHKSUMFILE); |
|
|
printf("Could not open checksum file %s\n", CHKSUMFILE); |
|
|
return 1; |
|
|
return 1; |
|
|
} |
|
|
} |
|
|
if (0 != read_public_key_from_files(member.pk_in, &sk_handle, tpm_key_file, tpm_handle_file)) { |
|
|
printf("Loaded message and checksum\n"); |
|
|
printf("Error: reading in public key files '%s' and '%s' failed\n", tpm_key_file, tpm_handle_file); |
|
|
|
|
|
return 1; |
|
|
|
|
|
} |
|
|
|
|
|
if (0 > ecdaa_read_from_file(member.nonce, NONCE_SIZE, member_nonce_file) || |
|
|
if (0 > ecdaa_read_from_file(member.nonce, NONCE_SIZE, member_nonce_file) || |
|
|
0 != ecdaa_member_public_key_FP256BN_deserialize_file(&member.mpk, member_public_key_file, member.nonce, NONCE_SIZE) || |
|
|
0 != ecdaa_member_public_key_FP256BN_deserialize_file(&member.mpk, member_public_key_file, member.nonce, NONCE_SIZE) || |
|
|
0 != ecdaa_credential_FP256BN_deserialize_file(&member.cred, member_credential_file)) { |
|
|
0 != ecdaa_credential_FP256BN_deserialize_file(&member.cred, member_credential_file)) { |
|
|
@ -275,13 +277,15 @@ int member_verifymsg(char *buffer) { |
|
|
int member_joinappend(char *buffer) { |
|
|
int member_joinappend(char *buffer) { |
|
|
char *current = &buffer[10]; |
|
|
char *current = &buffer[10]; |
|
|
uint8_t binbuf[MAX_BUFSIZE]; |
|
|
uint8_t binbuf[MAX_BUFSIZE]; |
|
|
|
|
|
int ret = 0; |
|
|
int bytes = 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); |
|
|
ecdaa_write_buffer_to_file(member_nonce_file, member.nonce, NONCE_SIZE); |
|
|
if (0 != ecdaa_member_key_pair_TPM_FP256BN_generate(&member.mpk, member.pk_in, member.nonce, NONCE_SIZE, &member.ctx)) { |
|
|
bzero(buffer, MAX_BUFSIZE); |
|
|
fprintf(stderr, "Error generating member key-pair\n"); |
|
|
if (0 != (ret = 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: ret = %d\n", ret); |
|
|
|
|
|
strncpy(buffer, "ERR\n", 4); |
|
|
return -1; |
|
|
return -1; |
|
|
} |
|
|
} |
|
|
bzero(buffer, MAX_BUFSIZE); |
|
|
|
|
|
strncpy(buffer, "APPEND ", 7); |
|
|
strncpy(buffer, "APPEND ", 7); |
|
|
|
|
|
|
|
|
current = &buffer[7]; |
|
|
current = &buffer[7]; |
|
|
@ -338,8 +342,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++) { |
|
|
for (unsigned i=0; i < ECP_FP256BN_LENGTH; i++) { |
|
|
unsigned char byt; |
|
|
unsigned char byt; |
|
|
int ret=0; |
|
|
int ret=0; |
|
|
if (ret = fscanf(pub_key_file_ptr, "%02X", &byt) != 1) { |
|
|
//if (ret = fscanf(pub_key_file_ptr, "%02X", &byt) != 1) {
|
|
|
//if (ret = fscanf(pub_key_file_ptr, "%c", &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); |
|
|
printf("read_public_key: i=%d, len=%d, returnvalue=%d\n", i, ECP_FP256BN_LENGTH, ret); |
|
|
ret = -1; |
|
|
ret = -1; |
|
|
break; |
|
|
break; |
|
|
@ -362,8 +366,8 @@ int read_public_key_from_files(uint8_t *public_key, TPM2_HANDLE *key_handle, con |
|
|
do { |
|
|
do { |
|
|
for (int i=(sizeof(TPM2_HANDLE)-1); i >= 0; i--) { |
|
|
for (int i=(sizeof(TPM2_HANDLE)-1); i >= 0; i--) { |
|
|
unsigned char byt; |
|
|
unsigned char byt; |
|
|
if (fscanf(handle_file_ptr, "%02X", &byt) != 1) { |
|
|
//if (fscanf(handle_file_ptr, "%02X", &byt) != 1) {
|
|
|
//if (fscanf(handle_file_ptr, "%c", &byt) != 1) {
|
|
|
if (fscanf(handle_file_ptr, "%c", &byt) != 1) { |
|
|
ret = -1; |
|
|
ret = -1; |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
|