mirror of https://github.com/wolfSSL/wolfTPM.git
Peer review fixes and getting CI to pass.
parent
97d8845c6f
commit
e2d502e773
|
@ -1,8 +1,8 @@
|
|||
name: Swtpm Build Test
|
||||
name: WolfTPM Build Tests
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ '*' ]
|
||||
branches: [ 'master', 'main', 'release/**' ]
|
||||
pull_request:
|
||||
branches: [ '*' ]
|
||||
|
||||
|
@ -46,26 +46,34 @@ jobs:
|
|||
run: ./autogen.sh
|
||||
- name: configure
|
||||
run: ./configure --enable-swtpm
|
||||
- name: make test
|
||||
run: make check
|
||||
- name: make
|
||||
run: make
|
||||
- name: make check
|
||||
run: WOLFSSL_PATH=./wolfssl make check -j1
|
||||
|
||||
#test no wolfcrypt
|
||||
- name: configure no wolfCrypt
|
||||
run: ./configure --enable-swtpm --disable-wolfcrypt
|
||||
- name: make test no wolfCrypt
|
||||
run: make check
|
||||
- name: make no wolfCrypt
|
||||
run: make
|
||||
- name: make check no wolfCrypt
|
||||
run: WOLFSSL_PATH=./wolfssl make check -j1
|
||||
|
||||
#test no wrapper
|
||||
- name: configure no wrapper
|
||||
run: ./configure --enable-swtpm --disable-wrapper
|
||||
- name: make test no wolfCrypt
|
||||
run: make check
|
||||
- name: make no wrapper
|
||||
run: make
|
||||
- name: make check no wrapper
|
||||
run: WOLFSSL_PATH=./wolfssl make check -j1
|
||||
|
||||
# test small stack
|
||||
- name: configure smallstack
|
||||
run: ./configure --enable-swtpm --enable-smallstack
|
||||
- name: make test smallstack
|
||||
run: make check
|
||||
- name: make smallstack
|
||||
run: make
|
||||
- name: make check smallstack
|
||||
run: WOLFSSL_PATH=./wolfssl make check -j1
|
||||
|
||||
# test tislock
|
||||
- name: configure tislock
|
||||
|
@ -96,3 +104,14 @@ jobs:
|
|||
run: ./configure --enable-advio
|
||||
- name: make debug io
|
||||
run: make
|
||||
|
||||
# capture logs on failure
|
||||
- name: Upload failure logs
|
||||
if: failure()
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: wolftpm-test-logs
|
||||
path: |
|
||||
run.out
|
||||
test-suite.log
|
||||
retention-days: 5
|
||||
|
|
|
@ -69,8 +69,10 @@ static int LoadAuthKeyInfo(WOLFTPM2_DEV* dev, WOLFTPM2_KEY* authKey,
|
|||
int encType = ENCODING_TYPE_ASN1;
|
||||
byte* buf = NULL;
|
||||
size_t bufSz = 0;
|
||||
const char* fileEnd;
|
||||
|
||||
if (XSTRNCMP(file, ".pem", XSTRLEN(".pem")) == 0) {
|
||||
fileEnd = XSTRSTR(file, ".pem");
|
||||
if (fileEnd != NULL && fileEnd[XSTRLEN(".pem")] == '\0') {
|
||||
encType = ENCODING_TYPE_PEM;
|
||||
}
|
||||
|
||||
|
@ -211,7 +213,7 @@ int TPM2_Boot_SecretSeal_Example(void* userCtx, int argc, char *argv[])
|
|||
|
||||
/* Start an authenticated session (salted / unbound) */
|
||||
rc = wolfTPM2_StartSession(&dev, &tpmSession, &storage, NULL,
|
||||
TPM_SE_HMAC, paramEncAlg);
|
||||
TPM_SE_POLICY, paramEncAlg);
|
||||
if (rc != 0) goto exit;
|
||||
printf("Session Handle 0x%x\n", (word32)tpmSession.handle.hndl);
|
||||
printf("Parameter Encryption: %s\n", TPM2_GetAlgName(paramEncAlg));
|
||||
|
|
|
@ -67,8 +67,10 @@ static int LoadAuthKeyInfo(WOLFTPM2_DEV* dev, WOLFTPM2_KEY* authKey,
|
|||
int encType = ENCODING_TYPE_ASN1;
|
||||
byte* buf = NULL;
|
||||
size_t bufSz = 0;
|
||||
const char* fileEnd;
|
||||
|
||||
if (XSTRNCMP(file, ".pem", XSTRLEN(".pem")) == 0) {
|
||||
fileEnd = XSTRSTR(file, ".pem");
|
||||
if (fileEnd != NULL && fileEnd[XSTRLEN(".pem")] == '\0') {
|
||||
encType = ENCODING_TYPE_PEM;
|
||||
}
|
||||
|
||||
|
|
|
@ -76,6 +76,7 @@ int TPM2_Keyimport_Example(void* userCtx, int argc, char *argv[])
|
|||
byte* buf = NULL;
|
||||
size_t bufSz = 0;
|
||||
int isPublicKey = 0;
|
||||
const char* impFileEnd;
|
||||
|
||||
if (argc >= 2) {
|
||||
if (XSTRCMP(argv[1], "-?") == 0 ||
|
||||
|
@ -123,7 +124,8 @@ int TPM2_Keyimport_Example(void* userCtx, int argc, char *argv[])
|
|||
else if (alg == TPM_ALG_ECC)
|
||||
impFile = "./certs/example-ecc256-key.der";
|
||||
}
|
||||
if (XSTRNCMP(impFile, ".pem", XSTRLEN(".pem")) == 0) {
|
||||
impFileEnd = XSTRSTR(impFile, ".pem");
|
||||
if (impFileEnd != NULL && impFileEnd[XSTRLEN(".pem")] == '\0') {
|
||||
encType = ENCODING_TYPE_PEM;
|
||||
}
|
||||
|
||||
|
|
|
@ -86,6 +86,7 @@ static int PolicySign(TPM_ALG_ID alg, const char* keyFile, const char* password,
|
|||
ecc_key ecc;
|
||||
#endif
|
||||
} key;
|
||||
const char* keyFileEnd;
|
||||
|
||||
XMEMSET(&key, 0, sizeof(key));
|
||||
XMEMSET(&rng, 0, sizeof(rng));
|
||||
|
@ -96,7 +97,8 @@ static int PolicySign(TPM_ALG_ID alg, const char* keyFile, const char* password,
|
|||
return rc;
|
||||
}
|
||||
|
||||
if (XSTRNCMP(keyFile, ".pem", XSTRLEN(".pem")) == 0) {
|
||||
keyFileEnd = XSTRSTR(keyFile, ".pem");
|
||||
if (keyFileEnd != NULL && keyFileEnd[XSTRLEN(".pem")] == '\0') {
|
||||
encType = ENCODING_TYPE_PEM;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,11 @@
|
|||
|
||||
RESULT=0
|
||||
ENABLE_DESTRUCTIVE_TESTS=0
|
||||
PWD=$(pwd)
|
||||
|
||||
if [ -z "$WOLFSSL_PATH" ]; then
|
||||
WOLFSSL_PATH=../wolfssl
|
||||
fi
|
||||
|
||||
rm run.out
|
||||
touch run.out
|
||||
|
@ -84,6 +89,10 @@ RESULT=$?
|
|||
rm keyedhashblob.bin
|
||||
[ $RESULT -ne 0 ] && echo -e "keygen keyed hash load failed! $RESULT" && exit 1
|
||||
|
||||
# KeyGen Endorsement with Policy Secret
|
||||
# TODO Fix: (TPM2_Create TPM_RC_AUTH_UNAVAILABLE)
|
||||
#./examples/keygen/keygen rsakeyblobeh.bin -rsa -eh >> run.out
|
||||
|
||||
|
||||
# NV Tests
|
||||
echo -e "NV Tests"
|
||||
|
@ -128,16 +137,16 @@ RESULT=$?
|
|||
RESULT=$?
|
||||
[ $RESULT -ne 0 ] && echo -e "cert self-signed failed! $RESULT" && exit 1
|
||||
|
||||
cp ./certs/tpm-rsa-cert.pem ../wolfssl/certs/tpm-rsa-cert.pem >> run.out
|
||||
cp ./certs/tpm-ecc-cert.pem ../wolfssl/certs/tpm-ecc-cert.pem >> run.out
|
||||
cp ./certs/tpm-rsa-cert.pem $WOLFSSL_PATH/certs/tpm-rsa-cert.pem >> run.out
|
||||
cp ./certs/tpm-ecc-cert.pem $WOLFSSL_PATH/certs/tpm-ecc-cert.pem >> run.out
|
||||
|
||||
./examples/csr/csr >> run.out
|
||||
RESULT=$?
|
||||
[ $RESULT -ne 0 ] && echo -e "csr gen failed! $RESULT" && exit 1
|
||||
|
||||
./certs/certreq.sh 2>&1 >> run.out
|
||||
cp ./certs/ca-ecc-cert.pem ../wolfssl/certs/tpm-ca-ecc-cert.pem >> run.out
|
||||
cp ./certs/ca-rsa-cert.pem ../wolfssl/certs/tpm-ca-rsa-cert.pem >> run.out
|
||||
cp ./certs/ca-ecc-cert.pem $WOLFSSL_PATH/certs/tpm-ca-ecc-cert.pem >> run.out
|
||||
cp ./certs/ca-rsa-cert.pem $WOLFSSL_PATH/certs/tpm-ca-rsa-cert.pem >> run.out
|
||||
|
||||
|
||||
# PKCS7 Tests
|
||||
|
@ -164,12 +173,12 @@ generate_port() { # function to produce a random port number
|
|||
run_tpm_tls_client() { # Usage: run_tpm_tls_client [ecc/rsa] [tpmargs]]
|
||||
echo -e "TLS test (TPM as client) $1 $2"
|
||||
generate_port
|
||||
pushd ../wolfssl >> run.out
|
||||
./examples/server/server -p $port -g -A ./certs/tpm-ca-$1-cert.pem 2>&1 >> run.out &
|
||||
pushd $WOLFSSL_PATH >> run.out
|
||||
./examples/server/server -p $port -g -A ./certs/tpm-ca-$1-cert.pem 2>&1 >> $PWD/run.out &
|
||||
RESULT=$?
|
||||
[ $RESULT -ne 0 ] && echo -e "tls server $1 $2 failed! $RESULT" && exit 1
|
||||
popd >> run.out
|
||||
sleep 0.1
|
||||
sleep 0.2
|
||||
./examples/tls/tls_client -p=$port -$1 $2 2>&1 >> run.out
|
||||
RESULT=$?
|
||||
[ $RESULT -ne 0 ] && echo -e "tpm tls client $1 $2 failed! $RESULT" && exit 1
|
||||
|
@ -181,9 +190,9 @@ run_tpm_tls_server() { # Usage: run_tpm_tls_server [ecc/rsa] [tpmargs]]
|
|||
./examples/tls/tls_server -p=$port -$1 $2 2>&1 >> run.out &
|
||||
RESULT=$?
|
||||
[ $RESULT -ne 0 ] && echo -e "tpm tls server $1 $2 failed! $RESULT" && exit 1
|
||||
pushd ../wolfssl >> run.out
|
||||
sleep 0.1
|
||||
./examples/client/client -p $port -g -A ./certs/tpm-ca-$1-cert.pem 2>&1 >> run.out
|
||||
pushd $WOLFSSL_PATH >> run.out
|
||||
sleep 0.2
|
||||
./examples/client/client -p $port -g -A ./certs/tpm-ca-$1-cert.pem 2>&1 >> $PWD/run.out
|
||||
RESULT=$?
|
||||
[ $RESULT -ne 0 ] && echo -e "tls client $1 $2 failed! $RESULT" && exit 1
|
||||
popd >> run.out
|
||||
|
@ -226,9 +235,8 @@ RESULT=$?
|
|||
./examples/attestation/make_credential >> run.out
|
||||
RESULT=$?
|
||||
[ $RESULT -ne 0 ] && echo -e "make_credential failed! $RESULT" && exit 1
|
||||
./examples/attestation/make_credential -eh >> run.out
|
||||
RESULT=$?
|
||||
[ $RESULT -ne 0 ] && echo -e "make_credential eh failed! $RESULT" && exit 1
|
||||
# TODO: Requires keygen -ek to be working
|
||||
#./examples/attestation/make_credential -eh >> run.out
|
||||
# TODO: Test broken (TPM2_ActivateCredentials TPM_RC_INTEGRITY)
|
||||
#./examples/attestation/activate_credential >> run.out
|
||||
#./examples/attestation/activate_credential -eh >> run.out
|
||||
|
@ -287,6 +295,7 @@ then
|
|||
./examples/boot/secure_rot -nvindex=0x1400201 -authstr=test -lock >> run.out
|
||||
RESULT=$?
|
||||
[ $RESULT -ne 0 ] && echo -e "secure rot write ecc384 lock! $RESULT" && exit 1
|
||||
# Test expected failure case
|
||||
./examples/boot/secure_rot -nvindex=0x1400201 -write=./certs/example-ecc384-key-pub.der -sha384 >> run.out
|
||||
RESULT=$?
|
||||
[ $RESULT -eq 0 ] && echo -e "secure rot write ecc384 should be locked! $RESULT" && exit 1
|
||||
|
@ -296,7 +305,7 @@ fi
|
|||
RESULT=$?
|
||||
[ $RESULT -ne 0 ] && echo -e "secure rot write ecc384 read! $RESULT" && exit 1
|
||||
|
||||
# Test expected failure cases
|
||||
# Test expected failure case
|
||||
./examples/boot/secure_rot -nvindex=0x1400201 >> run.out
|
||||
RESULT=$?
|
||||
[ $RESULT -eq 0 ] && echo -e "secure rot write ecc384 read no auth! $RESULT" && exit 1
|
||||
|
@ -326,7 +335,10 @@ RESULT=$?
|
|||
# RSA
|
||||
./examples/pcr/policy_sign -pcr=16 -rsa -key=./certs/example-rsa2048-key.der -out=pcrsig.bin -outpolicy=policyauth.bin >> run.out
|
||||
RESULT=$?
|
||||
[ $RESULT -ne 0 ] && echo -e "policy sign rsa failed! $RESULT" && exit 1
|
||||
[ $RESULT -ne 0 ] && echo -e "policy sign rsa der failed! $RESULT" && exit 1
|
||||
./examples/pcr/policy_sign -pcr=16 -rsa -key=./certs/example-rsa2048-key.pem -out=pcrsig.bin -outpolicy=policyauth.bin >> run.out
|
||||
RESULT=$?
|
||||
[ $RESULT -ne 0 ] && echo -e "policy sign rsa pem failed! $RESULT" && exit 1
|
||||
|
||||
TMPFILE=$(mktemp)
|
||||
SECRET_STRING=`head -c 32 /dev/random | base64`
|
||||
|
@ -344,8 +356,10 @@ RESULT=$?
|
|||
TMPFILE=$(mktemp)
|
||||
SECRET_STRING=`head -c 32 /dev/random | base64`
|
||||
./examples/boot/secret_seal -rsa -publickey=./certs/example-rsa2048-key-pub.der -out=sealblob.bin -secretstr=$SECRET_STRING >> run.out
|
||||
RESULT=$?
|
||||
[ $RESULT -ne 0 ] && echo -e "secret seal rsa alt failed! $RESULT" && exit 1
|
||||
./examples/boot/secret_unseal -pcr=16 -pcrsig=pcrsig.bin -rsa -publickey=./certs/example-rsa2048-key-pub.der -seal=sealblob.bin | tee $TMPFILE >> run.out
|
||||
RESULT=$?
|
||||
[ $RESULT -ne 0 ] && echo -e "secret unseal rsa alt failed! $RESULT" && exit 1
|
||||
grep "$SECRET_STRING" $TMPFILE >> run.out
|
||||
RESULT=$?
|
||||
|
@ -354,13 +368,19 @@ rm $TMPFILE
|
|||
|
||||
# ECC
|
||||
./examples/pcr/policy_sign -pcr=16 -ecc -key=./certs/example-ecc256-key.der -out=pcrsig.bin -outpolicy=policyauth.bin >> run.out
|
||||
[ $RESULT -ne 0 ] && echo -e "policy sign ecc failed! $RESULT" && exit 1
|
||||
RESULT=$?
|
||||
[ $RESULT -ne 0 ] && echo -e "policy sign ecc der failed! $RESULT" && exit 1
|
||||
./examples/pcr/policy_sign -pcr=16 -ecc -key=./certs/example-ecc256-key.pem -out=pcrsig.bin -outpolicy=policyauth.bin >> run.out
|
||||
RESULT=$?
|
||||
[ $RESULT -ne 0 ] && echo -e "policy sign ecc pem failed! $RESULT" && exit 1
|
||||
|
||||
TMPFILE=$(mktemp)
|
||||
SECRET_STRING=`head -c 32 /dev/random | base64`
|
||||
./examples/boot/secret_seal -ecc -policy=policyauth.bin -out=sealblob.bin -secretstr=$SECRET_STRING >> run.out
|
||||
RESULT=$?
|
||||
[ $RESULT -ne 0 ] && echo -e "secret seal ecc failed! $RESULT" && exit 1
|
||||
./examples/boot/secret_unseal -pcr=16 -pcrsig=pcrsig.bin -ecc -publickey=./certs/example-ecc256-key-pub.der -seal=sealblob.bin | tee $TMPFILE >> run.out
|
||||
RESULT=$?
|
||||
[ $RESULT -ne 0 ] && echo -e "secret unseal ecc failed! $RESULT" && exit 1
|
||||
grep "$SECRET_STRING" $TMPFILE >> run.out
|
||||
RESULT=$?
|
||||
|
@ -371,8 +391,10 @@ rm $TMPFILE
|
|||
TMPFILE=$(mktemp)
|
||||
SECRET_STRING=`head -c 32 /dev/random | base64`
|
||||
./examples/boot/secret_seal -ecc -publickey=./certs/example-ecc256-key-pub.der -out=sealblob.bin -secretstr=$SECRET_STRING >> run.out
|
||||
RESULT=$?
|
||||
[ $RESULT -ne 0 ] && echo -e "secret seal ecc alt failed! $RESULT" && exit 1
|
||||
./examples/boot/secret_unseal -pcr=16 -pcrsig=pcrsig.bin -ecc -publickey=./certs/example-ecc256-key-pub.der -seal=sealblob.bin | tee $TMPFILE >> run.out
|
||||
RESULT=$?
|
||||
[ $RESULT -ne 0 ] && echo -e "secret unseal ecc alt failed! $RESULT" && exit 1
|
||||
grep "$SECRET_STRING" $TMPFILE >> run.out
|
||||
RESULT=$?
|
||||
|
|
|
@ -7244,7 +7244,7 @@ int wolfTPM2_PolicyRefMake(TPM_ALG_ID pcrAlg, byte* digest, word32* digestSz,
|
|||
}
|
||||
/* policyRef */
|
||||
if (rc == 0 && policyRefSz > 0) {
|
||||
rc = wc_HashUpdate(&hash_ctx, hashType, digest, inSz);
|
||||
rc = wc_HashUpdate(&hash_ctx, hashType, policyRef, policyRefSz);
|
||||
}
|
||||
if (rc == 0) {
|
||||
rc = wc_HashFinal(&hash_ctx, hashType, digest);
|
||||
|
|
Loading…
Reference in New Issue