1a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler/* Copyright (c) 2013 The Chromium OS Authors. All rights reserved. 2887e3d4700338e7fb5af4d7e1e4ea0e561956d3eGaurav Shah * Use of this source code is governed by a BSD-style license that can be 3887e3d4700338e7fb5af4d7e1e4ea0e561956d3eGaurav Shah * found in the LICENSE file. 4887e3d4700338e7fb5af4d7e1e4ea0e561956d3eGaurav Shah * 5a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler * Some TPM constants and type definitions for standalone compilation for use 6a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler * in the firmware 7887e3d4700338e7fb5af4d7e1e4ea0e561956d3eGaurav Shah */ 889678602e66df24dea75b384ce079519cb8ec2a4Che-Liang Chiou#ifndef VBOOT_REFERENCE_TSS_CONSTANTS_H_ 989678602e66df24dea75b384ce079519cb8ec2a4Che-Liang Chiou#define VBOOT_REFERENCE_TSS_CONSTANTS_H_ 100c3ba249abb1dc60f5ebabccf84ff13206440b83Bill Richardson#include <stdint.h> 11887e3d4700338e7fb5af4d7e1e4ea0e561956d3eGaurav Shah 12887e3d4700338e7fb5af4d7e1e4ea0e561956d3eGaurav Shah#define TPM_MAX_COMMAND_SIZE 4096 13887e3d4700338e7fb5af4d7e1e4ea0e561956d3eGaurav Shah#define TPM_LARGE_ENOUGH_COMMAND_SIZE 256 /* saves space in the firmware */ 141fe1607679a17a37ab6be390e2f04155e5c37e8eRandall Spangler#define TPM_PUBEK_SIZE 256 15946370d012a809bba833ff9d37fe0ce86af09860Kees Cook#define TPM_PCR_DIGEST 20 16887e3d4700338e7fb5af4d7e1e4ea0e561956d3eGaurav Shah 175896b9664d088699e246de964a7c374af663a34eLuigi Semenzato#define TPM_E_NON_FATAL 0x800 185896b9664d088699e246de964a7c374af663a34eLuigi Semenzato 19887e3d4700338e7fb5af4d7e1e4ea0e561956d3eGaurav Shah#define TPM_SUCCESS ((uint32_t)0x00000000) 205896b9664d088699e246de964a7c374af663a34eLuigi Semenzato 21528f6a20dbcf6aeca9fd4825984719038040af9cRandall Spangler#define TPM_E_AREA_LOCKED ((uint32_t)0x0000003c) 22528f6a20dbcf6aeca9fd4825984719038040af9cRandall Spangler#define TPM_E_BADINDEX ((uint32_t)0x00000002) 23528f6a20dbcf6aeca9fd4825984719038040af9cRandall Spangler#define TPM_E_BAD_PRESENCE ((uint32_t)0x0000002d) 245d9509cbdee7b9c8dd91ed47d967569dbb9af83dChe-Liang Chiou#define TPM_E_IOERROR ((uint32_t)0x0000001f) 25528f6a20dbcf6aeca9fd4825984719038040af9cRandall Spangler#define TPM_E_INVALID_POSTINIT ((uint32_t)0x00000026) 26528f6a20dbcf6aeca9fd4825984719038040af9cRandall Spangler#define TPM_E_MAXNVWRITES ((uint32_t)0x00000048) 27528f6a20dbcf6aeca9fd4825984719038040af9cRandall Spangler#define TPM_E_OWNER_SET ((uint32_t)0x00000014) 28416f681882d8a35fa4c7ad9245a9e544c3115670Luigi Semenzato 295896b9664d088699e246de964a7c374af663a34eLuigi Semenzato#define TPM_E_NEEDS_SELFTEST ((uint32_t)(TPM_E_NON_FATAL + 1)) 305896b9664d088699e246de964a7c374af663a34eLuigi Semenzato#define TPM_E_DOING_SELFTEST ((uint32_t)(TPM_E_NON_FATAL + 2)) 315896b9664d088699e246de964a7c374af663a34eLuigi Semenzato 32416f681882d8a35fa4c7ad9245a9e544c3115670Luigi Semenzato#define TPM_E_ALREADY_INITIALIZED ((uint32_t)0x00005000) /* vboot local */ 334f11c36ebcc42a8f875ce6ea7cdc36f5c4e965deLuigi Semenzato#define TPM_E_INTERNAL_INCONSISTENCY ((uint32_t)0x00005001) /* vboot local */ 342666f10dec63de910696bfb84de2ea5d474b75e6Luigi Semenzato#define TPM_E_MUST_REBOOT ((uint32_t)0x00005002) /* vboot local */ 355e9c0b94b1a10ceffb5e01de78210efd5dcfe581Luigi Semenzato#define TPM_E_CORRUPTED_STATE ((uint32_t)0x00005003) /* vboot local */ 36205190d4ae8080298d9d1b580dd95c885f2af42cRandall Spangler#define TPM_E_COMMUNICATION_ERROR ((uint32_t)0x00005004) /* vboot local */ 37f0605cbdc36f58829a908a3333e438c565c8c7afKees Cook#define TPM_E_RESPONSE_TOO_LARGE ((uint32_t)0x00005005) /* vboot local */ 38adc676422972e28c1b38268852f6cec24a57366fKees Cook#define TPM_E_NO_DEVICE ((uint32_t)0x00005006) /* vboot local */ 3900cc72894f3ce5c3b0d337e424f19da089140237Kees Cook#define TPM_E_INPUT_TOO_SMALL ((uint32_t)0x00005007) /* vboot local */ 4000cc72894f3ce5c3b0d337e424f19da089140237Kees Cook#define TPM_E_WRITE_FAILURE ((uint32_t)0x00005008) /* vboot local */ 4100cc72894f3ce5c3b0d337e424f19da089140237Kees Cook#define TPM_E_READ_EMPTY ((uint32_t)0x00005009) /* vboot local */ 4200cc72894f3ce5c3b0d337e424f19da089140237Kees Cook#define TPM_E_READ_FAILURE ((uint32_t)0x0000500a) /* vboot local */ 4352a8d2df0612c63e148228a5c819d6be50d51f19Luigi Semenzato 44887e3d4700338e7fb5af4d7e1e4ea0e561956d3eGaurav Shah#define TPM_NV_INDEX0 ((uint32_t)0x00000000) 45887e3d4700338e7fb5af4d7e1e4ea0e561956d3eGaurav Shah#define TPM_NV_INDEX_LOCK ((uint32_t)0xffffffff) 46ded1cecd3631ffe62a03c44c7c7aa28fb3f8fdadLuigi Semenzato#define TPM_NV_PER_GLOBALLOCK (((uint32_t)1)<<15) 475896b9664d088699e246de964a7c374af663a34eLuigi Semenzato#define TPM_NV_PER_PPWRITE (((uint32_t)1)<<0) 485896b9664d088699e246de964a7c374af663a34eLuigi Semenzato#define TPM_NV_PER_READ_STCLEAR (((uint32_t)1)<<31) 495896b9664d088699e246de964a7c374af663a34eLuigi Semenzato#define TPM_NV_PER_WRITE_STCLEAR (((uint32_t)1)<<14) 505896b9664d088699e246de964a7c374af663a34eLuigi Semenzato 515896b9664d088699e246de964a7c374af663a34eLuigi Semenzato#define TPM_TAG_RQU_COMMAND ((uint16_t) 0xc1) 525896b9664d088699e246de964a7c374af663a34eLuigi Semenzato#define TPM_TAG_RQU_AUTH1_COMMAND ((uint16_t) 0xc2) 535896b9664d088699e246de964a7c374af663a34eLuigi Semenzato#define TPM_TAG_RQU_AUTH2_COMMAND ((uint16_t) 0xc3) 545896b9664d088699e246de964a7c374af663a34eLuigi Semenzato 555896b9664d088699e246de964a7c374af663a34eLuigi Semenzato#define TPM_TAG_RSP_COMMAND ((uint16_t) 0xc4) 565896b9664d088699e246de964a7c374af663a34eLuigi Semenzato#define TPM_TAG_RSP_AUTH1_COMMAND ((uint16_t) 0xc5) 575896b9664d088699e246de964a7c374af663a34eLuigi Semenzato#define TPM_TAG_RSP_AUTH2_COMMAND ((uint16_t) 0xc6) 58887e3d4700338e7fb5af4d7e1e4ea0e561956d3eGaurav Shah 59887e3d4700338e7fb5af4d7e1e4ea0e561956d3eGaurav Shahtypedef uint8_t TSS_BOOL; 60887e3d4700338e7fb5af4d7e1e4ea0e561956d3eGaurav Shahtypedef uint16_t TPM_STRUCTURE_TAG; 61887e3d4700338e7fb5af4d7e1e4ea0e561956d3eGaurav Shah 62887e3d4700338e7fb5af4d7e1e4ea0e561956d3eGaurav Shahtypedef struct tdTPM_PERMANENT_FLAGS 63887e3d4700338e7fb5af4d7e1e4ea0e561956d3eGaurav Shah{ 64a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TPM_STRUCTURE_TAG tag; 65a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL disable; 66a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL ownership; 67a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL deactivated; 68a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL readPubek; 69a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL disableOwnerClear; 70a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL allowMaintenance; 71a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL physicalPresenceLifetimeLock; 72a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL physicalPresenceHWEnable; 73a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL physicalPresenceCMDEnable; 74a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL CEKPUsed; 75a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL TPMpost; 76a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL TPMpostLock; 77a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL FIPS; 78a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL Operator; 79a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL enableRevokeEK; 80a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL nvLocked; 81a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL readSRKPub; 82a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL tpmEstablished; 83a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL maintenanceDone; 84a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL disableFullDALogicInfo; 85887e3d4700338e7fb5af4d7e1e4ea0e561956d3eGaurav Shah} TPM_PERMANENT_FLAGS; 86887e3d4700338e7fb5af4d7e1e4ea0e561956d3eGaurav Shah 875896b9664d088699e246de964a7c374af663a34eLuigi Semenzatotypedef struct tdTPM_STCLEAR_FLAGS{ 88a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TPM_STRUCTURE_TAG tag; 89a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL deactivated; 90a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL disableForceClear; 91a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL physicalPresence; 92a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL physicalPresenceLock; 93a2db67d204c0dd3d152ff54958bf42c5dbe394ffRandall Spangler TSS_BOOL bGlobalLock; 945896b9664d088699e246de964a7c374af663a34eLuigi Semenzato} TPM_STCLEAR_FLAGS; 95887e3d4700338e7fb5af4d7e1e4ea0e561956d3eGaurav Shah 9689678602e66df24dea75b384ce079519cb8ec2a4Che-Liang Chiou#endif /* VBOOT_REFERENCE_TSS_CONSTANTS_H_ */ 97