Browse Source

changing file format of pubkey and handle to %02X

master
Michael Preisach 4 years ago
parent
commit
e8f1d1a403
  1. 8
      create_tpm_key-util.c
  2. 50
      member-tpm.c
  3. 4
      member.c

8
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;

50
member-tpm.c

@ -271,34 +271,14 @@ int member_verifymsg(char *buffer) {
return 2; //send to verifier before closing 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>" //"JOINSTART <issuer.nonce>" > "APPEND <member.mpk>"
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 = 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);
ret = ecdaa_member_key_pair_TPM_FP256BN_generate(&member.mpk, member.pk_in, member.nonce, NONCE_SIZE, &member.ctx); if (0 != 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\n");
fprintf(stderr, "Error generating member key-pair. Error %d\n", ret);
return -1; return -1;
} }
bzero(buffer, MAX_BUFSIZE); bzero(buffer, MAX_BUFSIZE);
@ -307,8 +287,8 @@ int member_joinappend(char *buffer) {
current = &buffer[7]; current = &buffer[7];
bzero(binbuf, MAX_BUFSIZE); bzero(binbuf, MAX_BUFSIZE);
ecdaa_member_public_key_FP256BN_serialize(binbuf, &member.mpk); ecdaa_member_public_key_FP256BN_serialize(binbuf, &member.mpk);
ret = ecdaa_encode(binbuf, current, ECDAA_MEMBER_PUBLIC_KEY_FP256BN_LENGTH); bytes = ecdaa_encode(binbuf, current, ECDAA_MEMBER_PUBLIC_KEY_FP256BN_LENGTH);
current[ret] = '\n'; current[bytes] = '\n';
return 0; return 0;
} }
@ -317,31 +297,29 @@ int member_joinfinish(char *buffer) {
char *current = &buffer[12]; char *current = &buffer[12];
uint8_t *bincur; uint8_t *bincur;
uint8_t binbuf[MAX_BUFSIZE]; uint8_t binbuf[MAX_BUFSIZE];
int bytes = 0;
int ret = 0; int ret = 0;
bzero(binbuf, MAX_BUFSIZE); bzero(binbuf, MAX_BUFSIZE);
ret = ecdaa_decode(current, binbuf, ECDAA_CREDENTIAL_FP256BN_LENGTH); bytes = ecdaa_decode(current, binbuf, ECDAA_CREDENTIAL_FP256BN_LENGTH);
current = &current[ret]; current = &current[bytes];
bincur = &binbuf[ECDAA_CREDENTIAL_FP256BN_LENGTH]; bincur = &binbuf[ECDAA_CREDENTIAL_FP256BN_LENGTH];
ecdaa_decode(current, bincur, ECDAA_CREDENTIAL_FP256BN_SIGNATURE_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); ret = ecdaa_credential_FP256BN_deserialize_with_signature(&member.cred, &member.mpk, &member.ipk.gpk, binbuf, bincur);
if(-1 == ret) { if(-1 == ret) {
printf("member_joinfinish: credential is malformed!\n"); printf("member_joinfinish: credential is malformed!\n");
strncpy(buffer, "ERR", 3);
ret = -1; ret = -1;
} else if(-2 == ret) { } else if(-2 == ret) {
printf("member_joinfinish: siganture of credential is invalid\n"); printf("member_joinfinish: siganture of credential is invalid\n");
strncpy(buffer, "ERR", 3);
ret = -1; 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) || 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)) { 0 != ecdaa_credential_FP256BN_serialize_file(member_credential_file, &member.cred)) {
printf("issuer_setup: Error saving key-pair or credential to disk\n"); printf("issuer_setup: Error saving key-pair or credential to disk\n");
strncpy(buffer, "ERR", 3);
ret = -1; ret = -1;
} else { } else {
strncpy(buffer, "OK", 2); ret = 1;
} }
return ret; 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++) { for (unsigned i=0; i < ECP_FP256BN_LENGTH; i++) {
unsigned char byt; unsigned char byt;
int ret=0; int ret=0;
//if (fscanf(pub_key_file_ptr, "%02X", &byt) != 1) { if (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;
@ -384,8 +362,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;
} }

4
member.c

@ -244,11 +244,9 @@ int member_joinfinish(char *buffer) {
bzero(buffer, MAX_BUFSIZE); bzero(buffer, MAX_BUFSIZE);
if(-1 == ret) { if(-1 == ret) {
printf("member_joinfinish: credential is malformed!\n"); printf("member_joinfinish: credential is malformed!\n");
strncpy(buffer, "ERR", 3);
ret = -1; ret = -1;
} else if(-2 == ret) { } else if(-2 == ret) {
printf("member_joinfinish: siganture of credential is invalid\n"); printf("member_joinfinish: siganture of credential is invalid\n");
strncpy(buffer, "ERR", 3);
ret = -1; ret = -1;
} }
printf("member_joinfinish: writing key-pair and credential to disk\n"); printf("member_joinfinish: writing key-pair and credential to disk\n");
@ -258,7 +256,7 @@ int member_joinfinish(char *buffer) {
printf("issuer_joinfinish: Error saving key-pair or credential to disk\n"); printf("issuer_joinfinish: Error saving key-pair or credential to disk\n");
ret = -1; ret = -1;
} else { } else {
ret = 1; ret = 1;
} }
return ret; return ret;
} }

Loading…
Cancel
Save