Browse Source

generating member key does not work

master
Michael Preisach 4 years ago
parent
commit
d9edf10211
  1. 12
      create_tpm_key-util.c
  2. 30
      member-tpm.c

12
create_tpm_key-util.c

@ -170,8 +170,8 @@ int save_public_key_info(const struct test_context *ctx, const char* pub_key_fil
//cur=&buffer[1]; //cur=&buffer[1];
for (unsigned i=0; i < ctx->out_public.publicArea.unique.ecc.x.size; i++) { for (unsigned i=0; i < ctx->out_public.publicArea.unique.ecc.x.size; i++) {
//if (fprintf(pub_key_file_ptr, "%c", ctx->out_public.publicArea.unique.ecc.x.buffer[i]) != 1) { if (fprintf(pub_key_file_ptr, "%c", ctx->out_public.publicArea.unique.ecc.x.buffer[i]) != 1) {
if (fprintf(pub_key_file_ptr, "%02X", ctx->out_public.publicArea.unique.ecc.x.buffer[i]) != 2) { //if (fprintf(pub_key_file_ptr, "%02X", ctx->out_public.publicArea.unique.ecc.x.buffer[i]) != 2) {
//if (sprintf(cur, "%02X", ctx->out_public.publicArea.unique.ecc.x.buffer[i]) != 2) { //if (sprintf(cur, "%02X", ctx->out_public.publicArea.unique.ecc.x.buffer[i]) != 2) {
write_ret = -1; write_ret = -1;
break; break;
@ -182,8 +182,8 @@ int save_public_key_info(const struct test_context *ctx, const char* pub_key_fil
break; break;
for (unsigned i=0; i < ctx->out_public.publicArea.unique.ecc.y.size; i++) { for (unsigned i=0; i < ctx->out_public.publicArea.unique.ecc.y.size; i++) {
//if (fprintf(pub_key_file_ptr, "%c", ctx->out_public.publicArea.unique.ecc.y.buffer[i]) != 1) { if (fprintf(pub_key_file_ptr, "%c", ctx->out_public.publicArea.unique.ecc.y.buffer[i]) != 1) {
if (fprintf(pub_key_file_ptr, "%02X", ctx->out_public.publicArea.unique.ecc.y.buffer[i]) != 2) { //if (fprintf(pub_key_file_ptr, "%02X", ctx->out_public.publicArea.unique.ecc.y.buffer[i]) != 2) {
//if (sprintf(cur, "%02X", ctx->out_public.publicArea.unique.ecc.y.buffer[i]) != 2) { //if (sprintf(cur, "%02X", ctx->out_public.publicArea.unique.ecc.y.buffer[i]) != 2) {
write_ret = -1; write_ret = -1;
break; break;
@ -206,8 +206,8 @@ int save_public_key_info(const struct test_context *ctx, const char* pub_key_fil
write_ret = 0; write_ret = 0;
do { do {
for (int i=(sizeof(ctx->persistent_key_handle)-1); i >= 0; i--) { for (int i=(sizeof(ctx->persistent_key_handle)-1); i >= 0; i--) {
if (fprintf(handle_file_ptr, "%02X", (ctx->persistent_key_handle >> i*8) & 0xFF) != 2) { //if (fprintf(handle_file_ptr, "%02X", (ctx->persistent_key_handle >> i*8) & 0xFF) != 2) {
//if (fprintf(handle_file_ptr, "%c", (ctx->persistent_key_handle >> i*8) & 0xFF) != 1) { if (fprintf(handle_file_ptr, "%c", (ctx->persistent_key_handle >> i*8) & 0xFF) != 1) {
write_ret = -1; write_ret = -1;
break; break;
} }

30
member-tpm.c

@ -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;
} }

Loading…
Cancel
Save