Skip to content

Commit a9c81c0

Browse files
committed
Breaking: replace NameHandle with Handle
Signed-off-by: sal rashid <[email protected]>
1 parent d2f8072 commit a9c81c0

File tree

11 files changed

+136
-193
lines changed

11 files changed

+136
-193
lines changed

README.md

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -79,16 +79,9 @@ If you just want to issue JWT's, see
7979
rwc, err := OpenTPM(*tpmPath)
8080
rwr := transport.FromReadWriter(rwc)
8181

82-
pub, err := tpm2.ReadPublic{
83-
ObjectHandle: tpm2.TPMHandle(*handle),
84-
}.Execute(rwr)
85-
8682
r, err := saltpm.NewTPMCrypto(&saltpm.TPM{
8783
TpmDevice: rwc,
88-
NamedHandle: &tpm2.NamedHandle{
89-
Handle: tpm2.TPMHandle(*handle),
90-
Name: pub.Name,
91-
},
84+
Handle: tpm2.TPMHandle(persistentHandle),
9285
})
9386

9487
s, err := r.Sign(rand.Reader, digest, crypto.SHA256)
@@ -274,10 +267,7 @@ which you can call as:
274267

275268
rr, err := saltpm.NewTPMCrypto(&saltpm.TPM{
276269
TpmDevice: rwc,
277-
NamedHandle: &tpm2.NamedHandle{
278-
Handle: tpm2.TPMHandle(*handle),
279-
Name: pub.Name,
280-
},
270+
Handle: tpm2.TPMHandle(*handle*),
281271
AuthSession: se,
282272
})
283273
```

example/sign_verify_tpm/ecc/main.go

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import (
1717

1818
"github.com/google/go-tpm-tools/simulator"
1919
"github.com/google/go-tpm/tpm2"
20-
"github.com/google/go-tpm/tpm2/transport"
2120
"github.com/google/go-tpm/tpmutil"
2221
saltpm "github.com/salrashid123/signer/tpm"
2322
)
@@ -68,15 +67,6 @@ func main() {
6867
}
6968
}()
7069

71-
rwr := transport.FromReadWriter(rwc)
72-
73-
pub, err := tpm2.ReadPublic{
74-
ObjectHandle: tpm2.TPMHandle(*handle),
75-
}.Execute(rwr)
76-
if err != nil {
77-
log.Fatalf("error executing tpm2.ReadPublic %v", err)
78-
}
79-
8070
stringToSign := "foo"
8171
fmt.Printf("Data to sign %s\n", stringToSign)
8272

@@ -87,11 +77,8 @@ func main() {
8777
digest := h.Sum(nil)
8878

8979
er, err := saltpm.NewTPMCrypto(&saltpm.TPM{
90-
TpmDevice: rwc,
91-
NamedHandle: &tpm2.NamedHandle{
92-
Handle: tpm2.TPMHandle(*handle),
93-
Name: pub.Name,
94-
},
80+
TpmDevice: rwc,
81+
Handle: tpm2.TPMHandle(*handle),
9582
ECCRawOutput: true, // use raw output; not asn1
9683
})
9784
if err != nil {
@@ -130,10 +117,7 @@ func main() {
130117
// now verify with ASN1 output format for ecc using library managed device
131118
erasn, err := saltpm.NewTPMCrypto(&saltpm.TPM{
132119
TpmDevice: rwc,
133-
NamedHandle: &tpm2.NamedHandle{
134-
Handle: tpm2.TPMHandle(*handle),
135-
Name: pub.Name,
136-
},
120+
Handle: tpm2.TPMHandle(*handle),
137121
//ECCRawOutput: false,
138122
})
139123
if err != nil {

example/sign_verify_tpm/keyfile/main.go

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -108,13 +108,6 @@ func main() {
108108
log.Fatalf("can't load hmacKey : %v", err)
109109
}
110110

111-
pub, err := tpm2.ReadPublic{
112-
ObjectHandle: rsaKey.ObjectHandle,
113-
}.Execute(rwr)
114-
if err != nil {
115-
log.Fatalf("error executing tpm2.ReadPublic %v", err)
116-
}
117-
118111
stringToSign := "foo"
119112
fmt.Printf("Data to sign %s\n", stringToSign)
120113

@@ -126,10 +119,7 @@ func main() {
126119

127120
r, err := saltpm.NewTPMCrypto(&saltpm.TPM{
128121
TpmDevice: rwc,
129-
NamedHandle: &tpm2.NamedHandle{
130-
Handle: rsaKey.ObjectHandle,
131-
Name: pub.Name,
132-
},
122+
Handle: rsaKey.ObjectHandle,
133123
})
134124

135125
if err != nil {

example/sign_verify_tpm/policy_password/main.go

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,6 @@ func main() {
7575

7676
rwr := transport.FromReadWriter(rwc)
7777

78-
pub, err := tpm2.ReadPublic{
79-
ObjectHandle: tpm2.TPMHandle(*handle),
80-
}.Execute(rwr)
81-
if err != nil {
82-
log.Fatalf("error executing tpm2.ReadPublic %v", err)
83-
}
84-
8578
stringToSign := "foo"
8679
fmt.Printf("Data to sign %s\n", stringToSign)
8780

@@ -98,11 +91,8 @@ func main() {
9891
}
9992

10093
rr, err := saltpm.NewTPMCrypto(&saltpm.TPM{
101-
TpmDevice: rwc,
102-
NamedHandle: &tpm2.NamedHandle{
103-
Handle: tpm2.TPMHandle(*handle),
104-
Name: pub.Name,
105-
},
94+
TpmDevice: rwc,
95+
Handle: tpm2.TPMHandle(*handle),
10696
AuthSession: se,
10797
})
10898

example/sign_verify_tpm/policy_pcr/main.go

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,6 @@ func main() {
8383

8484
rwr := transport.FromReadWriter(rwc)
8585

86-
pub, err := tpm2.ReadPublic{
87-
ObjectHandle: tpm2.TPMHandle(*handle),
88-
}.Execute(rwr)
89-
if err != nil {
90-
log.Fatalf("error executing tpm2.ReadPublic %v", err)
91-
}
92-
9386
stringToSign := "foo"
9487
fmt.Printf("Data to sign %s\n", stringToSign)
9588

@@ -111,11 +104,8 @@ func main() {
111104
}
112105

113106
rr, err := saltpm.NewTPMCrypto(&saltpm.TPM{
114-
TpmDevice: rwc,
115-
NamedHandle: &tpm2.NamedHandle{
116-
Handle: tpm2.TPMHandle(*handle),
117-
Name: pub.Name,
118-
},
107+
TpmDevice: rwc,
108+
Handle: tpm2.TPMHandle(*handle),
119109
AuthSession: se,
120110
})
121111

example/sign_verify_tpm/rsapss/main.go

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import (
1616

1717
"github.com/google/go-tpm-tools/simulator"
1818
"github.com/google/go-tpm/tpm2"
19-
"github.com/google/go-tpm/tpm2/transport"
2019
"github.com/google/go-tpm/tpmutil"
2120
saltpm "github.com/salrashid123/signer/tpm"
2221
)
@@ -68,15 +67,6 @@ func main() {
6867
}
6968
}()
7069

71-
rwr := transport.FromReadWriter(rwc)
72-
73-
pub, err := tpm2.ReadPublic{
74-
ObjectHandle: tpm2.TPMHandle(*handle),
75-
}.Execute(rwr)
76-
if err != nil {
77-
log.Fatalf("error executing tpm2.ReadPublic %v", err)
78-
}
79-
8070
stringToSign := "foo"
8171
fmt.Printf("Data to sign %s\n", stringToSign)
8272

@@ -88,10 +78,7 @@ func main() {
8878

8979
r, err := saltpm.NewTPMCrypto(&saltpm.TPM{
9080
TpmDevice: rwc,
91-
NamedHandle: &tpm2.NamedHandle{
92-
Handle: tpm2.TPMHandle(*handle),
93-
Name: pub.Name,
94-
},
81+
Handle: tpm2.TPMHandle(*handle),
9582
})
9683

9784
if err != nil {

example/sign_verify_tpm/rsassa/main.go

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import (
1616

1717
"github.com/google/go-tpm-tools/simulator"
1818
"github.com/google/go-tpm/tpm2"
19-
"github.com/google/go-tpm/tpm2/transport"
2019
"github.com/google/go-tpm/tpmutil"
2120
saltpm "github.com/salrashid123/signer/tpm"
2221
)
@@ -67,15 +66,6 @@ func main() {
6766
}
6867
}()
6968

70-
rwr := transport.FromReadWriter(rwc)
71-
72-
pub, err := tpm2.ReadPublic{
73-
ObjectHandle: tpm2.TPMHandle(*handle),
74-
}.Execute(rwr)
75-
if err != nil {
76-
log.Fatalf("error executing tpm2.ReadPublic %v", err)
77-
}
78-
7969
stringToSign := "foo"
8070
fmt.Printf("Data to sign %s\n", stringToSign)
8171

@@ -87,10 +77,7 @@ func main() {
8777

8878
r, err := saltpm.NewTPMCrypto(&saltpm.TPM{
8979
TpmDevice: rwc,
90-
NamedHandle: &tpm2.NamedHandle{
91-
Handle: tpm2.TPMHandle(*handle),
92-
Name: pub.Name,
93-
},
80+
Handle: tpm2.TPMHandle(*handle),
9481
})
9582

9683
if err != nil {

tpm/tpm.go

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,12 @@ type TPM struct {
4343
publicKey crypto.PublicKey
4444
tpmPublic tpm2.TPMTPublic
4545

46-
NamedHandle *tpm2.NamedHandle // the name handle to the key to use
46+
//NamedHandle *tpm2.NamedHandle // the name handle to the key to use
47+
Handle tpm2.TPMHandle // the name handle to the key to use
48+
name tpm2.TPM2BName
4749
AuthSession Session // If the key needs a session, supply `Session` from this repo
4850
TpmDevice io.ReadWriteCloser // TPM read closer
4951
EncryptionHandle tpm2.TPMHandle // (optional) handle to use for transit encryption
50-
EncryptionPub *tpm2.TPMTPublic // (optional) public key to use for transit encryption
5152
}
5253

5354
// Configure a new TPM crypto.Signer
@@ -60,18 +61,17 @@ func NewTPMCrypto(conf *TPM) (TPM, error) {
6061
if conf.TpmDevice == nil {
6162
return TPM{}, fmt.Errorf("salrashid123/signer: TpmDevice must be specified")
6263
}
63-
if conf.NamedHandle == nil {
64-
return TPM{}, fmt.Errorf("salrashid123/signer: NameHandke must be specified")
65-
}
64+
6665
rwr := transport.FromReadWriter(conf.TpmDevice)
6766

6867
// todo: we should supply the encrypted session here, if set
6968
pub, err := tpm2.ReadPublic{
70-
ObjectHandle: conf.NamedHandle.Handle,
69+
ObjectHandle: tpm2.TPMIDHObject(conf.Handle.HandleValue()),
7170
}.Execute(rwr)
7271
if err != nil {
7372
return TPM{}, fmt.Errorf("salrashid123/signer: Unable to Read Public data from TPM: %v", err)
7473
}
74+
conf.name = pub.Name
7575

7676
pc, err := pub.OutPublic.Contents()
7777
if err != nil {
@@ -131,8 +131,18 @@ func (t TPM) Sign(rr io.Reader, digest []byte, opts crypto.SignerOpts) ([]byte,
131131

132132
var sess tpm2.Session
133133

134-
if t.EncryptionHandle != 0 && t.EncryptionPub != nil {
135-
sess = tpm2.HMAC(tpm2.TPMAlgSHA256, 16, tpm2.AESEncryption(128, tpm2.EncryptIn), tpm2.Salted(t.EncryptionHandle, *t.EncryptionPub))
134+
if t.EncryptionHandle != 0 {
135+
encryptionPub, err := tpm2.ReadPublic{
136+
ObjectHandle: t.EncryptionHandle,
137+
}.Execute(rwr)
138+
if err != nil {
139+
return nil, err
140+
}
141+
ePubName, err := encryptionPub.OutPublic.Contents()
142+
if err != nil {
143+
return nil, err
144+
}
145+
sess = tpm2.HMAC(tpm2.TPMAlgSHA256, 16, tpm2.AESEncryption(128, tpm2.EncryptIn), tpm2.Salted(t.EncryptionHandle, *ePubName))
136146
} else {
137147
sess = tpm2.HMAC(tpm2.TPMAlgSHA256, 16, tpm2.AESEncryption(128, tpm2.EncryptIn))
138148
}
@@ -175,8 +185,8 @@ func (t TPM) Sign(rr io.Reader, digest []byte, opts crypto.SignerOpts) ([]byte,
175185
}
176186
rspSign, err := tpm2.Sign{
177187
KeyHandle: tpm2.AuthHandle{
178-
Handle: t.NamedHandle.Handle,
179-
Name: t.NamedHandle.Name,
188+
Handle: t.Handle,
189+
Name: t.name,
180190
Auth: se,
181191
},
182192

@@ -220,8 +230,8 @@ func (t TPM) Sign(rr io.Reader, digest []byte, opts crypto.SignerOpts) ([]byte,
220230
}
221231
rspSign, err := tpm2.Sign{
222232
KeyHandle: tpm2.AuthHandle{
223-
Handle: t.NamedHandle.Handle,
224-
Name: t.NamedHandle.Name,
233+
Handle: t.Handle,
234+
Name: t.name,
225235
Auth: se,
226236
},
227237

0 commit comments

Comments
 (0)