mirror of
https://github.com/tailscale/tailscale.git
synced 2025-07-29 15:23:45 +00:00
feature/tpm: log timing of TPM commands
This commit is contained in:
parent
191a482daa
commit
5d18458663
@ -16,6 +16,7 @@ import (
|
|||||||
"slices"
|
"slices"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/google/go-tpm/tpm2"
|
"github.com/google/go-tpm/tpm2"
|
||||||
"github.com/google/go-tpm/tpm2/transport"
|
"github.com/google/go-tpm/tpm2/transport"
|
||||||
@ -128,6 +129,7 @@ func newStore(logf logger.Logf, path string) (ipn.StateStore, error) {
|
|||||||
key: key,
|
key: key,
|
||||||
cache: make(map[ipn.StateKey][]byte),
|
cache: make(map[ipn.StateKey][]byte),
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := store.writeSealed(); err != nil {
|
if err := store.writeSealed(); err != nil {
|
||||||
return nil, fmt.Errorf("failed to write initial state file: %w", err)
|
return nil, fmt.Errorf("failed to write initial state file: %w", err)
|
||||||
}
|
}
|
||||||
@ -186,6 +188,8 @@ func (s *tpmStore) WriteState(k ipn.StateKey, bs []byte) error {
|
|||||||
}
|
}
|
||||||
s.cache[k] = bytes.Clone(bs)
|
s.cache[k] = bytes.Clone(bs)
|
||||||
|
|
||||||
|
s.logf("================ tpmStore.WriteState %q", k)
|
||||||
|
|
||||||
return s.writeSealed()
|
return s.writeSealed()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -314,14 +318,19 @@ func withSRK(logf logger.Logf, tpm transport.TPM, fn func(srk tpm2.AuthHandle) e
|
|||||||
|
|
||||||
// tpmSeal seals the data using SRK of the local TPM.
|
// tpmSeal seals the data using SRK of the local TPM.
|
||||||
func tpmSeal(logf logger.Logf, data []byte) (*tpmSealedData, error) {
|
func tpmSeal(logf logger.Logf, data []byte) (*tpmSealedData, error) {
|
||||||
|
start := time.Now()
|
||||||
tpm, err := open()
|
tpm, err := open()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("opening TPM: %w", err)
|
return nil, fmt.Errorf("opening TPM: %w", err)
|
||||||
}
|
}
|
||||||
|
logf("tpm: open %v", time.Since(start))
|
||||||
|
start = time.Now()
|
||||||
defer tpm.Close()
|
defer tpm.Close()
|
||||||
|
|
||||||
var res *tpmSealedData
|
var res *tpmSealedData
|
||||||
err = withSRK(logf, tpm, func(srk tpm2.AuthHandle) error {
|
err = withSRK(logf, tpm, func(srk tpm2.AuthHandle) error {
|
||||||
|
logf("tpm: withSRK %v", time.Since(start))
|
||||||
|
start = time.Now()
|
||||||
sealCmd := tpm2.Create{
|
sealCmd := tpm2.Create{
|
||||||
ParentHandle: srk,
|
ParentHandle: srk,
|
||||||
InSensitive: tpm2.TPM2BSensitiveCreate{
|
InSensitive: tpm2.TPM2BSensitiveCreate{
|
||||||
@ -345,6 +354,8 @@ func tpmSeal(logf logger.Logf, data []byte) (*tpmSealedData, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("tpm2.Create: %w", err)
|
return fmt.Errorf("tpm2.Create: %w", err)
|
||||||
}
|
}
|
||||||
|
logf("tpm: tpm2.Create %v", time.Since(start))
|
||||||
|
start = time.Now()
|
||||||
|
|
||||||
res = &tpmSealedData{
|
res = &tpmSealedData{
|
||||||
Private: sealRes.OutPrivate.Buffer,
|
Private: sealRes.OutPrivate.Buffer,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user