Skip to content

Commit a52c3b1

Browse files
committed
Used W port.h file operations for keyblob and added username argument so can append any username needed.
1 parent 3775d18 commit a52c3b1

File tree

2 files changed

+30
-22
lines changed

2 files changed

+30
-22
lines changed

examples/client/common.c

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -760,36 +760,42 @@ static int readKeyBlob(const char* filename, WOLFTPM2_KEYBLOB* key)
760760
{
761761
int rc = 0;
762762
#if !defined(NO_FILESYSTEM) && !defined(NO_WRITE_TEMP_FILES)
763-
XFILE fp = NULL;
763+
WFILE* fp = NULL;
764764
size_t fileSz = 0;
765765
size_t bytes_read = 0;
766766
byte pubAreaBuffer[sizeof(TPM2B_PUBLIC)];
767767
int pubAreaSize;
768768

769769
WLOG(WS_LOG_DEBUG, "Entering readKeyBlob()");
770770

771-
XMEMSET(key, 0, sizeof(WOLFTPM2_KEYBLOB));
771+
WMEMSET(key, 0, sizeof(WOLFTPM2_KEYBLOB));
772+
773+
if (WFOPEN(NULL, &fp, filename, "rb") != 0) {
774+
printf("Failed to open file %s\n", filename);
775+
rc = BUFFER_E; goto exit;
776+
}
777+
if (fp != WBADFILE) {
778+
WFSEEK(NULL, fp, 0, WSEEK_END);
779+
fileSz = WFTELL(NULL, fp);
780+
WREWIND(NULL, fp);
772781

773-
fp = XFOPEN(filename, "rb");
774-
if (fp != XBADFILE) {
775-
XFSEEK(fp, 0, XSEEK_END);
776-
fileSz = XFTELL(fp);
777-
XREWIND(fp);
778782
if (fileSz > sizeof(key->priv) + sizeof(key->pub)) {
779783
printf("File size check failed\n");
780784
rc = BUFFER_E; goto exit;
781785
}
782786
printf("Reading %d bytes from %s\n", (int)fileSz, filename);
783787

784-
bytes_read = XFREAD(&key->pub.size, 1, sizeof(key->pub.size), fp);
788+
bytes_read = WFREAD(NULL, &key->pub.size, 1,
789+
sizeof(key->pub.size), fp);
785790
if (bytes_read != sizeof(key->pub.size)) {
786791
printf("Read %zu, expected size marker of %zu bytes\n",
787792
bytes_read, sizeof(key->pub.size));
788793
goto exit;
789794
}
790795
fileSz -= bytes_read;
791796

792-
bytes_read = XFREAD(pubAreaBuffer, 1, sizeof(UINT16) + key->pub.size, fp);
797+
bytes_read = WFREAD(NULL, pubAreaBuffer, 1,
798+
sizeof(UINT16) + key->pub.size, fp);
793799
if (bytes_read != sizeof(UINT16) + key->pub.size) {
794800
printf("Read %zu, expected public blob %zu bytes\n",
795801
bytes_read, sizeof(UINT16) + key->pub.size);
@@ -804,7 +810,7 @@ static int readKeyBlob(const char* filename, WOLFTPM2_KEYBLOB* key)
804810

805811
if (fileSz > 0) {
806812
printf("Reading the private part of the key\n");
807-
bytes_read = XFREAD(&key->priv, 1, fileSz, fp);
813+
bytes_read = WFREAD(NULL, &key->priv, 1, fileSz, fp);
808814
if (bytes_read != fileSz) {
809815
printf("Read %zu, expected private blob %zu bytes\n",
810816
bytes_read, fileSz);
@@ -824,14 +830,13 @@ static int readKeyBlob(const char* filename, WOLFTPM2_KEYBLOB* key)
824830
else {
825831
rc = BUFFER_E;
826832
printf("File %s not found!\n", filename);
827-
printf("Keys can be generated by running:\n"
828-
" ./examples/keygen/keygen rsa_test_blob.raw -rsa -t\n"
829-
" ./examples/keygen/keygen ecc_test_blob.raw -ecc -t\n");
833+
printf("Key can be generated by running:\n"
834+
" ./examples/keygen/keygen keyblob.bin -rsa -t -pem -eh\n");
830835
}
831836

832837
exit:
833838
if (fp)
834-
XFCLOSE(fp);
839+
WFCLOSE(NULL, fp);
835840
#else
836841
(void)filename;
837842
(void)key;

examples/echoserver/echoserver.c

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2100,32 +2100,35 @@ static int LoadPubKeyList(StrList* strList, int format, PwMapList* mapList)
21002100
#endif
21012101

21022102
#ifdef WOLFSSH_TPM
2103-
static char* LoadTpmSshKey(const char* keyFile)
2103+
static char* LoadTpmSshKey(const char* keyFile, const char* username)
21042104
{
21052105
WFILE* file = NULL;
21062106
char* buffer = NULL;
21072107
char* ret = NULL;
21082108
long length;
2109+
size_t usernameLen;
21092110

21102111
if (WFOPEN(NULL, &file, keyFile, "rb") != 0) {
21112112
fprintf(stderr,
21122113
"Failed to open TPM key file: %s\n", keyFile);
21132114
return NULL;
21142115
}
2115-
2116-
WFSEEK(NULL, file, 0, SEEK_END);
2116+
WFSEEK(NULL, file, 0, WSEEK_END);
21172117
length = WFTELL(NULL, file);
2118-
WFSEEK(NULL, file, 0, SEEK_SET);
2118+
WREWIND(NULL, file);
21192119

2120-
buffer = (char*)WMALLOC(length + 8 + 1, NULL, DYNTYPE_BUFFER);
2120+
usernameLen = WSTRLEN(username);
2121+
buffer = (char*)WMALLOC(length + usernameLen + 2, NULL, DYNTYPE_BUFFER);
21212122
if (buffer) {
21222123
if (WFREAD(NULL, buffer, 1, length, file) == (size_t)length) {
21232124
while (length > 0 && (buffer[length-1] == '\n' ||
21242125
buffer[length-1] == '\r')) {
21252126
length--;
21262127
}
2127-
WMEMCPY(buffer + length, " hansel\n", 8);
2128-
buffer[length + 8] = '\0';
2128+
buffer[length] = ' ';
2129+
WMEMCPY(buffer + length + 1, username, usernameLen);
2130+
buffer[length + 1 + usernameLen] = '\n';
2131+
buffer[length + 2 + usernameLen] = '\0';
21292132
ret = buffer;
21302133
}
21312134
else {
@@ -2634,7 +2637,7 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
26342637
/* Load custom TPM key if specified */
26352638
#ifdef WOLFSSH_TPM
26362639
if (tpmKeyPath != NULL) {
2637-
const char* newBuffer = LoadTpmSshKey(tpmKeyPath);
2640+
const char* newBuffer = LoadTpmSshKey(tpmKeyPath, "hansel");
26382641
if (newBuffer != NULL) {
26392642
sampleTpmPublicKeyRsaBuffer = newBuffer;
26402643
}

0 commit comments

Comments
 (0)