Skip to content

Commit b186ecc

Browse files
committed
Fixes for CI failures
1 parent eae465e commit b186ecc

File tree

4 files changed

+36
-6
lines changed

4 files changed

+36
-6
lines changed

.github/workflows/fwtpm-test.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,13 @@ jobs:
351351
apt-get update -qq
352352
apt-get install -y -qq autoconf automake libtool
353353
354+
- name: Install STM32Cube H5 SDK
355+
run: |
356+
mkdir -p $HOME/STM32Cube/Repository
357+
git clone --depth 1 --branch v1.5.0 \
358+
https://github.com/STMicroelectronics/STM32CubeH5.git \
359+
$HOME/STM32Cube/Repository/STM32Cube_FW_H5_V1.5.1
360+
354361
- name: Build wolfSSL (for fwTPM STM32 port)
355362
working-directory: ./wolfssl
356363
run: |

examples/run_examples.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ run_tpm_tls_client() { # Usage: run_tpm_tls_client [ecc/rsa] [tpmargs] [tlsversi
416416
generate_port
417417
pushd $WOLFSSL_PATH >> $TPMPWD/run.out 2>&1
418418
echo -e "./examples/server/server -v $3 -p $port -w -g -A ./certs/tpm-ca-$1-cert.pem"
419-
./examples/server/server -p $port -w -g -A ./certs/tpm-ca-$1-cert.pem >> $TPMPWD/run.out 2>&1 &
419+
./examples/server/server -v $3 -p $port -w -g -A ./certs/tpm-ca-$1-cert.pem >> $TPMPWD/run.out 2>&1 &
420420
RESULT=$?
421421
[ $RESULT -ne 0 ] && echo -e "tls server $1 $2 failed! $RESULT" && exit 1
422422
popd >> $TPMPWD/run.out 2>&1
@@ -437,10 +437,10 @@ run_tpm_tls_server() { # Usage: run_tpm_tls_server [ecc/rsa] [tpmargs] [tlsversi
437437
RESULT=$?
438438
[ $RESULT -ne 0 ] && echo -e "tpm tls server $1 $2 failed! $RESULT" && exit 1
439439
pushd $WOLFSSL_PATH >> $TPMPWD/run.out 2>&1
440-
sleep 0.1
440+
sleep 1
441441

442442
echo -e "./examples/client/client -v $3 -p $port -w -g -A ./certs/tpm-ca-$1-cert.pem $4"
443-
./examples/client/client -p $port -w -g -A ./certs/tpm-ca-$1-cert.pem $4 >> $TPMPWD/run.out 2>&1
443+
./examples/client/client -v $3 -p $port -w -g -A ./certs/tpm-ca-$1-cert.pem $4 >> $TPMPWD/run.out 2>&1
444444
RESULT=$?
445445
[ $RESULT -ne 0 ] && echo -e "tls client $1 $2 failed! $RESULT" && exit 1
446446
popd >> $TPMPWD/run.out 2>&1

src/fwtpm/fwtpm_command.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3100,17 +3100,25 @@ static TPM_RC FwCmd_Create(FWTPM_CTX* ctx, TPM2_Packet* cmd,
31003100
cmd->pos += outsideInfoSize;
31013101
}
31023102

3103-
/* Skip creationPCR */
3103+
/* Parse creationPCR (TPML_PCR_SELECTION) - skip */
31043104
if (rc == 0) {
31053105
if (cmd->pos + 4 > cmdSize) {
31063106
rc = TPM_RC_COMMAND_SIZE;
31073107
}
31083108
}
31093109
if (rc == 0) {
31103110
TPM2_Packet_ParseU32(cmd, &creationPcrCount);
3111-
for (s = 0; s < creationPcrCount; s++) {
3111+
for (s = 0; s < creationPcrCount && rc == 0; s++) {
3112+
if (cmd->pos + 3 > cmdSize) {
3113+
rc = TPM_RC_COMMAND_SIZE;
3114+
break;
3115+
}
31123116
cmd->pos += 2; /* hashAlg */
31133117
TPM2_Packet_ParseU8(cmd, &selectSize);
3118+
if (cmd->pos + selectSize > cmdSize) {
3119+
rc = TPM_RC_COMMAND_SIZE;
3120+
break;
3121+
}
31143122
cmd->pos += selectSize;
31153123
}
31163124
}

src/tpm2_cryptocb.c

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,8 +268,22 @@ int wolfTPM2_CryptoDevCb(int devId, wc_CryptoInfo* info, void* ctx)
268268
}
269269
#ifndef WOLFTPM2_USE_SW_ECDHE
270270
else {
271-
/* Generate ephemeral key - if one isn't already created */
271+
/* Generate ephemeral key - if one isn't already created
272+
* or if the curve has changed (e.g. TLS 1.3 key share
273+
* negotiation may generate a key for one curve, then
274+
* fall back to a different curve) */
272275
key = tlsCtx->ecdhKey;
276+
if (key->handle.hndl != 0 &&
277+
key->handle.hndl != TPM_RH_NULL &&
278+
(int)key->pub.publicArea.parameters.eccDetail.curveID
279+
!= curve_id) {
280+
/* curve changed, release old key */
281+
rc = wolfTPM2_UnloadHandle(tlsCtx->dev,
282+
&key->handle);
283+
if (rc != 0) {
284+
return rc;
285+
}
286+
}
273287
if (key->handle.hndl == 0 ||
274288
key->handle.hndl == TPM_RH_NULL) {
275289
rc = wolfTPM2_ECDHGenKey(tlsCtx->dev, tlsCtx->ecdhKey,
@@ -842,6 +856,7 @@ int wolfTPM2_PK_RsaSign(WOLFSSL* ssl,
842856
inPad, inPadSz,
843857
out, (int*)outSz);
844858
}
859+
TPM2_ForceZero(inPad, sizeof(inPad));
845860
}
846861
wc_FreeRsaKey(&rsapub);
847862
}

0 commit comments

Comments
 (0)