Skip to content

Commit bd234ca

Browse files
committed
bump dependency
1 parent b64bf0a commit bd234ca

File tree

4 files changed

+60
-23
lines changed

4 files changed

+60
-23
lines changed

example/README.md

+42
Original file line numberDiff line numberDiff line change
@@ -126,5 +126,47 @@ go run sign_verify_tpm/policy_pcr/main.go --handle=0x81008006 --tpm-path="127.0.
126126
go run sign_verify_tpm/policy_password/main.go --handle=0x81008007 --tpm-path="127.0.0.1:2321"
127127
```
128128

129+
Note, you can define your own policy for import too...just implement the "session" interface from the signer:
130+
131+
```golang
132+
type Session interface {
133+
GetSession() (auth tpm2.Session, closer func() error, err error) // this supplies the session handle to the library
134+
}
135+
```
136+
137+
eg:
138+
139+
```golang
140+
// for pcr sessions
141+
type MyCustomSession struct {
142+
rwr transport.TPM
143+
sel []tpm2.TPMSPCRSelection
144+
}
145+
146+
func NewMyCustomSession(rwr transport.TPM, sel []tpm2.TPMSPCRSelection) (MyCustomSession, error) {
147+
return MyCustomSession{rwr, sel}, nil
148+
}
149+
150+
func (p MyCustomSession) GetSession() (auth tpm2.Session, closer func() error, err error) {
151+
152+
sess, closer, err := tpm2.PolicySession(p.rwr, tpm2.TPMAlgSHA256, 16)
153+
if err != nil {
154+
return nil, nil, err
155+
}
156+
157+
// implement whatever you want here, i'm just using policypcr
158+
159+
_, err = tpm2.PolicyPCR{
160+
PolicySession: sess.Handle(),
161+
Pcrs: tpm2.TPMLPCRSelection{
162+
PCRSelections: p.sel,
163+
},
164+
}.Execute(p.rwr)
165+
if err != nil {
166+
return nil, nil, err
167+
}
168+
return sess, closer, nil
169+
}
170+
```
129171
---
130172

tpm/go.mod

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ go 1.22
55
toolchain go1.22.2
66

77
require (
8-
github.com/google/go-tpm v0.9.1-0.20240510201744-5c2f0887e003
8+
github.com/google/go-tpm v0.9.1
99
github.com/google/go-tpm-tools v0.4.4
1010
github.com/stretchr/testify v1.8.3
1111
)
@@ -23,7 +23,7 @@ require (
2323
github.com/pmezard/go-difflib v1.0.0 // indirect
2424
go.uber.org/multierr v1.11.0 // indirect
2525
golang.org/x/crypto v0.17.0 // indirect
26-
golang.org/x/sys v0.15.0 // indirect
26+
golang.org/x/sys v0.21.0 // indirect
2727
google.golang.org/protobuf v1.31.0 // indirect
2828
gopkg.in/yaml.v3 v3.0.1 // indirect
2929
)

tpm/go.sum

+4
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ github.com/google/go-tdx-guest v0.3.1 h1:gl0KvjdsD4RrJzyLefDOvFOUH3NAJri/3qvaL5m
1818
github.com/google/go-tdx-guest v0.3.1/go.mod h1:/rc3d7rnPykOPuY8U9saMyEps0PZDThLk/RygXm04nE=
1919
github.com/google/go-tpm v0.9.1-0.20240510201744-5c2f0887e003 h1:gfGQAIxsEEAuYuFvjCGpDnTwisMJOz+rUfJMkk4yTmc=
2020
github.com/google/go-tpm v0.9.1-0.20240510201744-5c2f0887e003/go.mod h1:h9jEsEECg7gtLis0upRBQU+GhYVH6jMjrFxI8u6bVUY=
21+
github.com/google/go-tpm v0.9.1 h1:0pGc4X//bAlmZzMKf8iz6IsDo1nYTbYJ6FZN/rg4zdM=
22+
github.com/google/go-tpm v0.9.1/go.mod h1:h9jEsEECg7gtLis0upRBQU+GhYVH6jMjrFxI8u6bVUY=
2123
github.com/google/go-tpm-tools v0.4.4 h1:oiQfAIkc6xTy9Fl5NKTeTJkBTlXdHsxAofmQyxBKY98=
2224
github.com/google/go-tpm-tools v0.4.4/go.mod h1:T8jXkp2s+eltnCDIsXR84/MTcVU9Ja7bh3Mit0pa4AY=
2325
github.com/google/go-tspi v0.3.0 h1:ADtq8RKfP+jrTyIWIZDIYcKOMecRqNJFOew2IT0Inus=
@@ -42,6 +44,8 @@ golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq
4244
golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
4345
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
4446
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
47+
golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
48+
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
4549
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
4650
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
4751
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=

tpm/tpm.go

+12-21
Original file line numberDiff line numberDiff line change
@@ -168,13 +168,12 @@ func (t TPM) Sign(rr io.Reader, digest []byte, opts crypto.SignerOpts) ([]byte,
168168
var se tpm2.Session
169169
if t.AuthSession != nil {
170170
var err error
171-
se, err = t.AuthSession.GetSession()
171+
var closer func() error
172+
se, closer, err = t.AuthSession.GetSession()
172173
if err != nil {
173174
return nil, fmt.Errorf("signer: error getting session %s", err)
174175
}
175-
defer func() {
176-
_, err = (&tpm2.FlushContext{FlushHandle: se.Handle()}).Execute(rwr)
177-
}()
176+
defer closer()
178177
} else {
179178
se = tpm2.PasswordAuth(nil)
180179
}
@@ -302,8 +301,7 @@ func (t TPM) TLSCertificate() (tls.Certificate, error) {
302301
}
303302

304303
type Session interface {
305-
io.Closer // read closer to the TPM
306-
GetSession() (auth tpm2.Session, err error) // this supplies the session handle to the library
304+
GetSession() (auth tpm2.Session, closer func() error, err error) // this supplies the session handle to the library
307305
}
308306

309307
// for pcr sessions
@@ -316,10 +314,10 @@ func NewPCRSession(rwr transport.TPM, sel []tpm2.TPMSPCRSelection) (PCRSession,
316314
return PCRSession{rwr, sel}, nil
317315
}
318316

319-
func (p PCRSession) GetSession() (auth tpm2.Session, err error) {
320-
sess, _, err := tpm2.PolicySession(p.rwr, tpm2.TPMAlgSHA256, 16)
317+
func (p PCRSession) GetSession() (auth tpm2.Session, closer func() error, err error) {
318+
sess, closer, err := tpm2.PolicySession(p.rwr, tpm2.TPMAlgSHA256, 16)
321319
if err != nil {
322-
return nil, err
320+
return nil, nil, err
323321
}
324322
_, err = tpm2.PolicyPCR{
325323
PolicySession: sess.Handle(),
@@ -328,13 +326,9 @@ func (p PCRSession) GetSession() (auth tpm2.Session, err error) {
328326
},
329327
}.Execute(p.rwr)
330328
if err != nil {
331-
return nil, err
329+
return nil, nil, err
332330
}
333-
return sess, nil
334-
}
335-
336-
func (p PCRSession) Close() error {
337-
return nil
331+
return sess, closer, nil
338332
}
339333

340334
// for password sessions
@@ -347,10 +341,7 @@ func NewPasswordSession(rwr transport.TPM, password []byte) (PasswordSession, er
347341
return PasswordSession{rwr, password}, nil
348342
}
349343

350-
func (p PasswordSession) GetSession() (auth tpm2.Session, err error) {
351-
return tpm2.PasswordAuth(p.password), nil
352-
}
353-
354-
func (p PasswordSession) Close() error {
355-
return nil
344+
func (p PasswordSession) GetSession() (auth tpm2.Session, closer func() error, err error) {
345+
c := func() error { return nil }
346+
return tpm2.PasswordAuth(p.password), c, nil
356347
}

0 commit comments

Comments
 (0)