4
4
"fmt"
5
5
"github.com/chrisfenner/tpm-top/internal/opener"
6
6
"github.com/chrisfenner/tpm-top/internal/pcr-allocate"
7
+ "github.com/chrisfenner/tpm-top/internal/rc"
7
8
"github.com/google/go-tpm/tpm2"
8
9
"github.com/google/go-tpm/tpmutil"
9
10
"io"
@@ -21,6 +22,12 @@ var funcMap = map[string]toolFunc{
21
22
"extend" : extend ,
22
23
}
23
24
25
+ type toolFuncNoTpm func ([]string ) int
26
+
27
+ var funcMapNoTpm = map [string ]toolFuncNoTpm {
28
+ "explain" : explain ,
29
+ }
30
+
24
31
func startup (tpm io.ReadWriter , args []string ) int {
25
32
if len (args ) != 0 {
26
33
fmt .Fprintf (os .Stderr , "'startup' command expects 0 arguments" )
@@ -133,12 +140,34 @@ func extend(tpm io.ReadWriter, args []string) int {
133
140
return 0
134
141
}
135
142
143
+ func explain (args []string ) int {
144
+ if len (args ) != 1 {
145
+ fmt .Fprintf (os .Stderr , "'explain' command expects 1 argument: an error code\n " )
146
+ return 1
147
+ }
148
+ code , err := strconv .ParseInt (args [0 ], 0 , 32 )
149
+ if err != nil {
150
+ fmt .Fprintf (os .Stderr , "could not parse error code: %v\n " , err )
151
+ return 1
152
+ }
153
+ err = rc .MakeError (int (code ))
154
+ if err == nil {
155
+ fmt .Printf ("RC_SUCCESS! 😎\n " )
156
+ } else {
157
+ fmt .Printf ("%s\n " , err )
158
+ }
159
+ return 0
160
+ }
161
+
136
162
func usage () {
137
163
fmt .Printf ("tpm-tool usage: tpm-tool (function) [(arguments)]\n " )
138
164
fmt .Printf ("Supported functions:\n " )
139
165
for name , _ := range funcMap {
140
166
fmt .Printf (" %s\n " , name )
141
167
}
168
+ for name , _ := range funcMapNoTpm {
169
+ fmt .Printf (" %s\n " , name )
170
+ }
142
171
}
143
172
144
173
func mainWithExitCode () int {
@@ -148,6 +177,10 @@ func mainWithExitCode() int {
148
177
return 1
149
178
}
150
179
cmd := os .Args [1 ]
180
+ funNoTpm , ok := funcMapNoTpm [cmd ]
181
+ if ok {
182
+ return funNoTpm (os .Args [2 :])
183
+ }
151
184
fun , ok := funcMap [cmd ]
152
185
if ! ok {
153
186
fmt .Fprintf (os .Stderr , "Unsupported command '%s'\n " , cmd )
0 commit comments