This book describes the primary uses for TPMs, and practical considerations such as when TPMs can and should be used, when they shouldn't be, what advantages they provide, and how to actually make use of them, with use cases and worked examples of how to implement these use cases on a real system. Topics covered include when to use a TPM; TPM concepts and functionality; programming introduction; provisioning: getting the TPM ready to use; first steps: TPM keys; machine authentication; data protection; attestation; other TPM features; software and specifications; and troubleshooting. Appendices contain basic cryptographic concepts; command equivalence and requirements charts; and complete code samples.