Navigating the Specification
The TPM 2.0 specification is not an easy read by any means. Although this is true of most technical specifications, TPM 2.0 presents some unique challenges. The specification is long—1,000 pages at last count—and written in a very concise and formal syntax that often attaches significant functional meaning to what appear to be rather insignificant punctuation marks. Part 2 of the specification was written to be parsed by code-generator tools in order to generate C headers and some marshaling and unmarshalling functions, which explains the emphasis on punctuation marks and the style of the specification's tables. At times, explanations of important concepts are tersely expressed and difficult to find. Although technically correct, these explanations can be hard to follow. And while the single-minded desire for conciseness and avoidance of redundancy at all costs in writing the specification enhances maintainability, it also adversely affects readability.
The goal was a specification that was highly maintainable; we think the developers succeeded admirably, perhaps even too well!
On the other hand, from a technical perspective, the specification is very robust; the information you need is there—the challenge is to find it. It's like putting together a really large puzzle; you have all the pieces, but they aren't always where you expect them to be. This chapter aims to help you put the pieces together much faster by passing on some hard-earned lessons that we, the authors, have learned as we have negotiated this terrain. We urge you to keep in mind that the specification is quite logical once you get used to it. You will be assimilated!
To summarize, learning TPM 2.0 isn't a trivial task. But the good news for you is that we intend to give you a huge boost.
This chapter discusses the following:
• The high-level structure of the TPM 2.0 library specification
• Some definitions that are required to understand the specification
• The command schematic tables
• Some details of the data structures
• Table decorations
• Command schematic syntax
• Tips on where to find crucial and commonly used information
• Some other TPM 2.0-related specifications you need to know about
• Our strategies for learning the specification
■ Note this chapter doesn't proceed through the four parts of the specification in sequential order. that might seem logical, but having tried it, we can vouch that it's not the best way for newcomers to understand the specification. in order to jump-start your understanding, we alter the order in a way that we hope enhances the learning process.