From 3c7fce72b2af7e565dc84c1c87ed89dc7654f57b Mon Sep 17 00:00:00 2001 From: Andrew Lytvynov Date: Tue, 17 Jun 2025 14:39:15 -0700 Subject: [PATCH] WIP: print supported tpm commands --- feature/tpm/tpm.go | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/feature/tpm/tpm.go b/feature/tpm/tpm.go index 18e56ae89..f571524b0 100644 --- a/feature/tpm/tpm.go +++ b/feature/tpm/tpm.go @@ -5,6 +5,7 @@ package tpm import ( + "log" "slices" "sync" @@ -63,6 +64,44 @@ func infoFromCapabilities(tpm transport.TPM) *tailcfg.TPMInfo { } cap.apply(info, props.TPMProperty[0].Value) } + { + resp, err := tpm2.GetCapability{ + Capability: tpm2.TPMCapCommands, + Property: 0, + PropertyCount: (1024 - 4 - 4) / 4, + }.Execute(tpm) + if err != nil { + log.Printf("GetCapability: %v", err) + return info + } + cmd, err := resp.CapabilityData.Data.Command() + if err != nil { + log.Printf("Data.Command: %v", err) + return info + } + for _, cc := range cmd.CommandAttributes { + log.Printf("supported command 0x%x", cc.CommandIndex) + } + } + { + resp, err := tpm2.GetCapability{ + Capability: tpm2.TPMCapAlgs, + Property: 0, + PropertyCount: (1024 - 4 - 4) / 4, + }.Execute(tpm) + if err != nil { + log.Printf("GetCapability: %v", err) + return info + } + alg, err := resp.CapabilityData.Data.Algorithms() + if err != nil { + log.Printf("Data.Command: %v", err) + return info + } + for _, a := range alg.AlgProperties { + log.Printf("supported algorithm 0x%x", a.Alg) + } + } return info }