On Tue, Jun 10, 2025 at 03:11:27PM -0400, Stefan Berger wrote:
> 
> 
> On 6/9/25 3:46 AM, Gary Lin wrote:
> > Add a few more tests to seal and unseal the key with the SHA384 PCR
> > bank instead of the default SHA256 PCR bank.
> > 
> > Signed-off-by: Gary Lin <g...@suse.com>
> > ---
> >   tests/tpm2_key_protector_test.in | 34 +++++++++++++++++++++++++++++---
> >   1 file changed, 31 insertions(+), 3 deletions(-)
> > 
> > diff --git a/tests/tpm2_key_protector_test.in 
> > b/tests/tpm2_key_protector_test.in
> > index fae27f9e4..52753d191 100644
> > --- a/tests/tpm2_key_protector_test.in
> > +++ b/tests/tpm2_key_protector_test.in
> > @@ -136,16 +136,28 @@ done
> >   # Export the TCTI variable for tpm2-tools
> >   export TPM2TOOLS_TCTI="device:${tpm2dev}"
> > +# Check if the sha384 bank is available
> > +if [ "$(tpm2_getcap pcrs | grep sha384)" != "" ]; then
> > +    with_sha384=true
> > +fi
> > +
> >   # Extend PCR 0
> >   tpm2_pcrextend 0:sha256=$(echo "test0" | sha256sum | cut -d ' ' -f 1) || 
> > exit 99
> > +if [ "${with_sha384}" = "true" ]; then
> > +    tpm2_pcrextend 0:sha384=$(echo "test0" | sha384sum | cut -d ' ' -f 1) 
> > || exit 99
> > +fi
> >   # Extend PCR 1
> >   tpm2_pcrextend 1:sha256=$(echo "test1" | sha256sum | cut -d ' ' -f 1) || 
> > exit 99
> > +if [ "${with_sha384}" = "true" ]; then
> > +    tpm2_pcrextend 1:sha384=$(echo "test1" | sha384sum | cut -d ' ' -f 1) 
> > || exit 99
> > +fi
> >   tpm2_seal_unseal() {
> >       srk_alg="$1"
> >       handle_type="$2"
> >       srk_test="$3"
> > +    pcr_bank="$4"
> 
> I would now adjust all existing callers to pass a 4th argument "" so that
> the number of arguments match.
> 
I was thinking about minimizing the diff, but adding the 4th argument is
better in the long run.

Will fix that in v2.

Thanks,

Gary Lin

> >       grub_srk_alg=${srk_alg}
> > @@ -164,13 +176,17 @@ tpm2_seal_unseal() {
> >     extra_opt="${extra_opt} --tpm2-asymmetric=${srk_alg}"
> >       fi
> > +    if [ "${pcr_bank}" = "" ]; then
> > +        pcr_bank="sha256"
> > +    fi
> > +
> 
> To avoid this the 4th argument should probably be "sha256" for all existing
> callers.
> 
> >       # Seal the password with grub-protect
> >       grub-protect ${extra_opt} \
> >     --tpm2-device="${tpm2dev}" \
> >     --action=add \
> >     --protector=tpm2 \
> >     --tpm2key \
> > -   --tpm2-bank=sha256 \
> > +   --tpm2-bank="${pcr_bank}" \
> >     --tpm2-pcrs=0,1 \
> >     --tpm2-keyfile="${lukskeyfile}" \
> >     --tpm2-outfile="${sealedkey}" || ret=$?
> > @@ -228,6 +244,7 @@ EOF
> >   tpm2_seal_unseal_nv() {
> >       handle_type="$1"
> >       key_type="$2"
> > +    pcr_bank="$3"
> 
> Same comments here...
> 
> >       extra_opt=""
> >       extra_grub_opt=""
> > @@ -238,10 +255,14 @@ tpm2_seal_unseal_nv() {
> >     nv_index="0x81000000"
> >       fi
> > +    if [ "${pcr_bank}" = "" ]; then
> > +        pcr_bank="sha256"
> > +    fi
> > +
> ... and here.
> 
> >       if [ "$key_type" = "tpm2key" ]; then
> >     extra_opt="--tpm2key"
> >       else
> > -   extra_grub_opt="--pcrs=0,1"
> > +   extra_grub_opt="--pcrs=0,1 -b ${pcr_bank}"
> >       fi
> >       grub_cfg=${tpm2testdir}/testcase.cfg
> > @@ -251,7 +272,7 @@ tpm2_seal_unseal_nv() {
> >     --tpm2-device="${tpm2dev}" \
> >     --action=add \
> >     --protector=tpm2 \
> > -   --tpm2-bank=sha256 \
> > +   --tpm2-bank="${pcr_bank}" \
> >     --tpm2-pcrs=0,1 \
> >     --tpm2-keyfile="${lukskeyfile}" \
> >     --tpm2-nvindex="${nv_index}" || ret=$?
> > @@ -300,6 +321,9 @@ srktests+=("RSA persistent no_fallback_srk")
> >   srktests+=("ECC persistent no_fallback_srk")
> >   srktests+=("RSA transient fallback_srk")
> >   srktests+=("ECC transient fallback_srk")
> > +if [ "${with_sha384}" = "true" ]; then
> > +    srktests+=("default transient no_fallback_srk sha384")
> > +fi
> >   exit_status=0
> > @@ -322,6 +346,10 @@ declare -a nvtests=()
> >   nvtests+=("persistent raw")
> >   nvtests+=("nvindex raw")
> >   nvtests+=("nvindex tpm2key")
> > +if [ "${with_sha384}" = "true" ]; then
> > +    nvtests+=("persistent raw sha384")
> > +    nvtests+=("nvindex tpm2key sha384")
> > +fi
> >   for i in "${!nvtests[@]}"; do
> >       tpm2_seal_unseal_nv ${nvtests[$i]} || ret=$?
> 

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to