Home | History | Annotate | Line # | Download | only in tss
      1 /*++
      2 
      3 Global defines for TSS.
      4 
      5 --*/
      6 
      7 #ifndef __TSS_DEFINES_H__
      8 #define __TSS_DEFINES_H__
      9 
     10 #include <tss/platform.h>
     11 #include <tss/tpm.h>
     12 
     13 
     14 //////////////////////////////////////////////////////////////////////////
     15 // Object types:
     16 //////////////////////////////////////////////////////////////////////////
     17 
     18 //
     19 // definition of the object types that can be created via CreateObject
     20 //
     21 #define   TSS_OBJECT_TYPE_POLICY    (0x01)      // Policy object
     22 #define   TSS_OBJECT_TYPE_RSAKEY    (0x02)      // RSA-Key object
     23 #define   TSS_OBJECT_TYPE_ENCDATA   (0x03)      // Encrypted data object
     24 #define   TSS_OBJECT_TYPE_PCRS      (0x04)      // PCR composite object
     25 #define   TSS_OBJECT_TYPE_HASH      (0x05)      // Hash object
     26 #define   TSS_OBJECT_TYPE_DELFAMILY (0x06)      // Delegation Family object
     27 #define   TSS_OBJECT_TYPE_NV        (0x07)      // NV object
     28 #define   TSS_OBJECT_TYPE_MIGDATA   (0x08)      // CMK Migration data object
     29 #define   TSS_OBJECT_TYPE_DAA_CERTIFICATE (0x09) // DAA credential
     30 #define   TSS_OBJECT_TYPE_DAA_ISSUER_KEY  (0x0a) // DAA cred. issuer keypair
     31 #define   TSS_OBJECT_TYPE_DAA_ARA_KEY     (0x0b) // DAA anonymity revocation
     32                                                  // authority keypair
     33 
     34 
     35 //////////////////////////////////////////////////////////////////////////
     36 // CreateObject: Flags
     37 //////////////////////////////////////////////////////////////////////////
     38 
     39 
     40 //************************************
     41 // Flags for creating RSAKEY object: *
     42 //************************************
     43 
     44 //
     45 //
     46 //   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
     47 //   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
     48 //   ---------------------------------------------------------------
     49 //                                                              |x x|Auth
     50 //                                                            |x|    Volatility
     51 //                                                          |x|      Migration
     52 //                                                  |x x x x|        Type
     53 //                                          |x x x x|                Size
     54 //                                      |x x|                        CMK
     55 //                                |x x x|                            Version
     56 //              |0 0 0 0 0 0 0 0 0|                                  Reserved
     57 //  |x x x x x x|                                                    Fixed Type
     58 //
     59 
     60 //  Authorization:
     61 //
     62 //   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
     63 //   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
     64 //   ---------------------------------------------------------------
     65 //
     66 //   Never                                                      |0 0|
     67 //   Always                                                     |0 1|
     68 //   Private key always                                         |1 0|
     69 //
     70 #define   TSS_KEY_NO_AUTHORIZATION            (0x00000000) // no auth needed
     71                                                            // for this key
     72 #define   TSS_KEY_AUTHORIZATION               (0x00000001) // key needs auth
     73                                                            // for all ops
     74 #define   TSS_KEY_AUTHORIZATION_PRIV_USE_ONLY (0x00000002) // key needs auth
     75                                                            // for privkey ops,
     76                                                            // noauth for pubkey
     77 
     78 //
     79 //  Volatility
     80 //
     81 //   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
     82 //   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
     83 //   ---------------------------------------------------------------
     84 //
     85 //   Non Volatile                                             |0|
     86 //   Volatile                                                 |1|
     87 //
     88 #define    TSS_KEY_NON_VOLATILE      (0x00000000)   // Key is non-volatile
     89 #define    TSS_KEY_VOLATILE          (0x00000004)   // Key is volatile
     90 
     91 //
     92 //  Migration
     93 //
     94 //   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
     95 //   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
     96 //   ---------------------------------------------------------------
     97 //
     98 //   Non Migratable                                         |0|
     99 //   Migratable                                             |1|
    100 //
    101 #define   TSS_KEY_NOT_MIGRATABLE     (0x00000000)   // key is not migratable
    102 #define   TSS_KEY_MIGRATABLE         (0x00000008)   // key is migratable
    103 
    104 //
    105 //  Usage
    106 //
    107 //   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
    108 //   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
    109 //   ---------------------------------------------------------------
    110 //
    111 //   Default (Legacy)                               |0 0 0 0|
    112 //   Signing                                        |0 0 0 1|
    113 //   Storage                                        |0 0 1 0|
    114 //   Identity                                       |0 0 1 1|
    115 //   AuthChange                                     |0 1 0 0|
    116 //   Bind                                           |0 1 0 1|
    117 //   Legacy                                         |0 1 1 0|
    118 //
    119 #define   TSS_KEY_TYPE_DEFAULT    (0x00000000)   // indicate a default key
    120                                                  // (Legacy-Key)
    121 #define   TSS_KEY_TYPE_SIGNING    (0x00000010)   // indicate a signing key
    122 #define   TSS_KEY_TYPE_STORAGE    (0x00000020)   // used as storage key
    123 #define   TSS_KEY_TYPE_IDENTITY   (0x00000030)   // indicate an idendity key
    124 #define   TSS_KEY_TYPE_AUTHCHANGE (0x00000040)   // indicate an ephemeral key
    125 #define   TSS_KEY_TYPE_BIND       (0x00000050)   // indicate a key for TPM_Bind
    126 #define   TSS_KEY_TYPE_LEGACY     (0x00000060)   // indicate a key that can
    127                                                  // perform signing and binding
    128 #define   TSS_KEY_TYPE_MIGRATE    (0x00000070)   // indicate a key that can
    129                                                  // act as a CMK MA
    130 #define   TSS_KEY_TYPE_BITMASK    (0x000000F0)   // mask to extract key type
    131 
    132 //
    133 //  Key size
    134 //
    135 //   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
    136 //   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
    137 //   ---------------------------------------------------------------
    138 //
    139 // DEFAULT                                  |0 0 0 0|
    140 //   512                                    |0 0 0 1|
    141 //  1024                                    |0 0 1 0|
    142 //  2048                                    |0 0 1 1|
    143 //  4096                                    |0 1 0 0|
    144 //  8192                                    |0 1 0 1|
    145 // 16384                                    |0 1 1 0|
    146 //
    147 #define TSS_KEY_SIZE_DEFAULT (UINT32)(0x00000000) // indicate tpm-specific size
    148 #define TSS_KEY_SIZE_512     (UINT32)(0x00000100) // indicate a 512-bit key
    149 #define TSS_KEY_SIZE_1024    (UINT32)(0x00000200) // indicate a 1024-bit key
    150 #define TSS_KEY_SIZE_2048    (UINT32)(0x00000300) // indicate a 2048-bit key
    151 #define TSS_KEY_SIZE_4096    (UINT32)(0x00000400) // indicate a 4096-bit key
    152 #define TSS_KEY_SIZE_8192    (UINT32)(0x00000500) // indicate a 8192-bit key
    153 #define TSS_KEY_SIZE_16384   (UINT32)(0x00000600) // indicate a 16384-bit key
    154 #define TSS_KEY_SIZE_BITMASK (UINT32)(0x00000F00) // mask to extract key size
    155 
    156 //
    157 //  Certified Migratability
    158 //
    159 //   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
    160 //   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
    161 //   ---------------------------------------------------------------
    162 //
    163 // DEFAULT                              |0 0|
    164 // Not Certified Migratable             |0 0|
    165 // Certified Migratable                 |0 1|
    166 //
    167 #define TSS_KEY_NOT_CERTIFIED_MIGRATABLE (UINT32)(0x00000000)
    168 #define TSS_KEY_CERTIFIED_MIGRATABLE     (UINT32)(0x00001000)
    169 
    170 //
    171 //  Specification version
    172 //
    173 //   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
    174 //   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
    175 //   ---------------------------------------------------------------
    176 //
    177 // Context default                |0 0 0|
    178 // TPM_KEY 1.1b key               |0 0 1|
    179 // TPM_KEY12 1.2 key              |0 1 0|
    180 //
    181 #define TSS_KEY_STRUCT_DEFAULT            (UINT32)(0x00000000)
    182 #define TSS_KEY_STRUCT_KEY                (UINT32)(0x00004000)
    183 #define TSS_KEY_STRUCT_KEY12              (UINT32)(0x00008000)
    184 #define TSS_KEY_STRUCT_BITMASK            (UINT32)(0x0001C000)
    185 
    186 
    187 //
    188 //  fixed KeyTypes (templates)
    189 //
    190 //   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
    191 //   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
    192 //   ---------------------------------------------------------------
    193 //
    194 //  |0 0 0 0 0 0|                             Empty Key
    195 //  |0 0 0 0 0 1|                             Storage Root Key
    196 //
    197 #define   TSS_KEY_EMPTY_KEY (0x00000000) // no TPM key template
    198                                          // (empty TSP key object)
    199 #define   TSS_KEY_TSP_SRK   (0x04000000) // use a TPM SRK template
    200                                          // (TSP key object for SRK)
    201 #define   TSS_KEY_TEMPLATE_BITMASK (0xFC000000) // bitmask to extract key
    202                                                 // template
    203 
    204 
    205 //*************************************
    206 // Flags for creating ENCDATA object: *
    207 //*************************************
    208 
    209 //
    210 //  Type
    211 //
    212 //   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
    213 //   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
    214 //   ---------------------------------------------------------------
    215 //
    216 //   Seal                                                     |0 0 1|
    217 //   Bind                                                     |0 1 0|
    218 //   Legacy                                                   |0 1 1|
    219 //
    220 //   ENCDATA Reserved:
    221 //  |x x x x x x x x x x x x x x x x x x x x x x x x x x x x x|
    222 //
    223 #define   TSS_ENCDATA_SEAL     (0x00000001)   // data for seal operation
    224 #define   TSS_ENCDATA_BIND     (0x00000002)   // data for bind operation
    225 #define   TSS_ENCDATA_LEGACY   (0x00000003)   // data for legacy bind operation
    226 
    227 
    228 //**********************************
    229 // Flags for creating HASH object: *
    230 //**********************************
    231 
    232 //
    233 //  Algorithm
    234 //
    235 //   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
    236 //   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
    237 //   ---------------------------------------------------------------
    238 //
    239 //   DEFAULT
    240 //  |0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0|
    241 //   SHA1
    242 //  |0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1|
    243 //   OTHER
    244 //  |1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1|
    245 //
    246 #define   TSS_HASH_DEFAULT    (0x00000000)   // Default hash algorithm
    247 #define   TSS_HASH_SHA1       (0x00000001)   // SHA-1 with 20 bytes
    248 #define   TSS_HASH_OTHER      (0xFFFFFFFF)   // Not-specified hash algorithm
    249 
    250 
    251 //************************************
    252 // Flags for creating POLICY object: *
    253 //************************************
    254 
    255 //
    256 //  Type
    257 //
    258 //   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
    259 //   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
    260 //   ---------------------------------------------------------------
    261 //
    262 //   Usage                                                    |0 0 1|
    263 //   Migration                                                |0 1 0|
    264 //   Operator                                                 |0 1 1|
    265 //
    266 //   POLICY Reserved:
    267 //  |x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x|
    268 
    269 #define   TSS_POLICY_USAGE         (0x00000001)   // usage policy object
    270 #define   TSS_POLICY_MIGRATION     (0x00000002)   // migration policy object
    271 #define   TSS_POLICY_OPERATOR      (0x00000003)   // migration policy object
    272 
    273 
    274 //******************************************
    275 // Flags for creating PCRComposite object: *
    276 //******************************************
    277 
    278 //
    279 //   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
    280 //   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
    281 //   ---------------------------------------------------------------
    282 //                                                              |x x| Struct
    283 //  |x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x|     Reserved
    284 //
    285 
    286 //  PCRComposite Version:
    287 //
    288 //   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
    289 //   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
    290 //   ---------------------------------------------------------------
    291 // TPM_PCR_DEFAULT                                            |0 0 0|
    292 // TPM_PCR_INFO                                               |0 0 1|
    293 // TPM_PCR_INFO_LONG                                          |0 1 0|
    294 // TPM_PCR_INFO_SHORT                                         |0 1 1|
    295 //
    296 
    297 #define   TSS_PCRS_STRUCT_DEFAULT    (0x00000000) // depends on context
    298 #define   TSS_PCRS_STRUCT_INFO       (0x00000001) // TPM_PCR_INFO
    299 #define   TSS_PCRS_STRUCT_INFO_LONG  (0x00000002) // TPM_PCR_INFO_LONG
    300 #define   TSS_PCRS_STRUCT_INFO_SHORT (0x00000003) // TPM_PCR_INFO_SHORT
    301 
    302 
    303 
    304 //////////////////////////////////////////////////////////////////////////
    305 // Attribute Flags, Subflags, and Values
    306 //////////////////////////////////////////////////////////////////////////
    307 
    308 
    309 //******************
    310 // Context object: *
    311 //******************
    312 
    313 //
    314 // Attributes
    315 //
    316 #define TSS_TSPATTRIB_CONTEXT_SILENT_MODE        (0x00000001)
    317                                                     // dialog display control
    318 #define TSS_TSPATTRIB_CONTEXT_MACHINE_NAME       (0x00000002)
    319                                                     // remote machine name
    320 #define TSS_TSPATTRIB_CONTEXT_VERSION_MODE       (0x00000003)
    321                                                     // context version
    322 #define TSS_TSPATTRIB_CONTEXT_TRANSPORT          (0x00000004)
    323                                                     // transport control
    324 #define TSS_TSPATTRIB_CONTEXT_CONNECTION_VERSION (0x00000005)
    325                                                     // connection version
    326 #define TSS_TSPATTRIB_SECRET_HASH_MODE           (0x00000006)
    327                                                     // flag indicating whether
    328                                                     // NUL is included in the
    329                                                     // hash of the password
    330 //
    331 // SubFlags for Flag TSS_TSPATTRIB_CONTEXT_TRANSPORT
    332 //
    333 #define   TSS_TSPATTRIB_CONTEXTTRANS_CONTROL   (0x00000008)
    334 #define   TSS_TSPATTRIB_CONTEXTTRANS_MODE      (0x00000010)
    335 
    336 //
    337 // Values for the TSS_TSPATTRIB_CONTEXT_SILENT_MODE attribute
    338 //
    339 #define   TSS_TSPATTRIB_CONTEXT_NOT_SILENT (0x00000000) // TSP dialogs enabled
    340 #define   TSS_TSPATTRIB_CONTEXT_SILENT     (0x00000001) // TSP dialogs disabled
    341 
    342 //
    343 // Values for the TSS_TSPATTRIB_CONTEXT_VERSION_MODE attribute
    344 //
    345 #define   TSS_TSPATTRIB_CONTEXT_VERSION_AUTO (0x00000001)
    346 #define   TSS_TSPATTRIB_CONTEXT_VERSION_V1_1 (0x00000002)
    347 #define   TSS_TSPATTRIB_CONTEXT_VERSION_V1_2 (0x00000003)
    348 
    349 //
    350 // Values for the subflag TSS_TSPATTRIB_CONTEXT_TRANS_CONTROL
    351 //
    352 #define   TSS_TSPATTRIB_DISABLE_TRANSPORT      (0x00000016)
    353 #define   TSS_TSPATTRIB_ENABLE_TRANSPORT       (0x00000032)
    354 
    355 //
    356 // Values for the subflag TSS_TSPATTRIB_CONTEXT_TRANS_MODE
    357 //
    358 #define   TSS_TSPATTRIB_TRANSPORT_NO_DEFAULT_ENCRYPTION (0x00000000)
    359 #define   TSS_TSPATTRIB_TRANSPORT_DEFAULT_ENCRYPTION    (0x00000001)
    360 #define   TSS_TSPATTRIB_TRANSPORT_AUTHENTIC_CHANNEL     (0x00000002)
    361 #define   TSS_TSPATTRIB_TRANSPORT_EXCLUSIVE             (0x00000004)
    362 #define   TSS_TSPATTRIB_TRANSPORT_STATIC_AUTH           (0x00000008)
    363 
    364 //
    365 // Values for the TSS_TSPATTRIB_CONTEXT_CONNECTION_VERSION attribute
    366 //
    367 #define TSS_CONNECTION_VERSION_1_1                      (0x00000001)
    368 #define TSS_CONNECTION_VERSION_1_2                      (0x00000002)
    369 
    370 
    371 //
    372 // Subflags of TSS_TSPATTRIB_SECRET_HASH_MODE
    373 //
    374 #define TSS_TSPATTRIB_SECRET_HASH_MODE_POPUP     (0x00000001)
    375 
    376 //
    377 // Values for TSS_TSPATTRIB_SECRET_HASH_MODE_POPUP subflag
    378 //
    379 #define TSS_TSPATTRIB_HASH_MODE_NOT_NULL         (0x00000000)
    380 #define TSS_TSPATTRIB_HASH_MODE_NULL             (0x00000001)
    381 
    382 
    383 // *************
    384 // TPM object: *
    385 // *************
    386 
    387 //
    388 // Attributes:
    389 //
    390 #define TSS_TSPATTRIB_TPM_CALLBACK_COLLATEIDENTITY  0x00000001
    391 #define TSS_TSPATTRIB_TPM_CALLBACK_ACTIVATEIDENTITY 0x00000002
    392 #define TSS_TSPATTRIB_TPM_ORDINAL_AUDIT_STATUS      0x00000003
    393 #define TSS_TSPATTRIB_TPM_CREDENTIAL                0x00001000
    394 
    395 //
    396 // Subflags for TSS_TSPATTRIB_TPM_ORDINAL_AUDIT_STATUS
    397 //
    398 #define TPM_CAP_PROP_TPM_CLEAR_ORDINAL_AUDIT        0x00000000
    399 #define TPM_CAP_PROP_TPM_SET_ORDINAL_AUDIT          0x00000001
    400 
    401 //
    402 // Subflags for TSS_TSPATTRIB_TPM_CREDENTIAL
    403 //
    404 #define TSS_TPMATTRIB_EKCERT                        0x00000001
    405 #define TSS_TPMATTRIB_TPM_CC                        0x00000002
    406 #define TSS_TPMATTRIB_PLATFORMCERT                  0x00000003
    407 #define TSS_TPMATTRIB_PLATFORM_CC                   0x00000004
    408 
    409 
    410 //*****************
    411 // Policy object: *
    412 //*****************
    413 
    414 //
    415 // Attributes
    416 //
    417 #define TSS_TSPATTRIB_POLICY_CALLBACK_HMAC           (0x00000080)
    418                                         // enable/disable callback function
    419 
    420 #define TSS_TSPATTRIB_POLICY_CALLBACK_XOR_ENC        (0x00000100)
    421                                         // enable/disable callback function
    422 
    423 #define TSS_TSPATTRIB_POLICY_CALLBACK_TAKEOWNERSHIP  (0x00000180)
    424                                         // enable/disable callback function
    425 
    426 #define TSS_TSPATTRIB_POLICY_CALLBACK_CHANGEAUTHASYM (0x00000200)
    427                                         // enable/disable callback function
    428 
    429 #define TSS_TSPATTRIB_POLICY_SECRET_LIFETIME         (0x00000280)
    430                                         // set lifetime mode for policy secret
    431 
    432 #define TSS_TSPATTRIB_POLICY_POPUPSTRING             (0x00000300)
    433                                         // set a NULL terminated UNICODE string
    434                                         // which is displayed in the TSP policy
    435                                         // popup dialog
    436 #define TSS_TSPATTRIB_POLICY_CALLBACK_SEALX_MASK     (0x00000380)
    437                                         // enable/disable callback function
    438 #if 0
    439 /* This attribute flag is defined earlier with the context attributes.
    440  * It is valid for both context and policy objects. It is copied
    441  * here as a reminder to avoid collisions.
    442  */
    443 #define TSS_TSPATTRIB_SECRET_HASH_MODE               (0x00000006)
    444                                                     // flag indicating whether
    445                                                     // NUL is included in the
    446                                                     // hash of the password
    447 #endif
    448 
    449 
    450 #define TSS_TSPATTRIB_POLICY_DELEGATION_INFO         (0x00000001)
    451 #define TSS_TSPATTRIB_POLICY_DELEGATION_PCR          (0x00000002)
    452 
    453 //
    454 // SubFlags for Flag TSS_TSPATTRIB_POLICY_SECRET_LIFETIME
    455 //
    456 #define TSS_SECRET_LIFETIME_ALWAYS  (0x00000001) // secret will not be
    457                                                  // invalidated
    458 #define TSS_SECRET_LIFETIME_COUNTER (0x00000002) // secret lifetime
    459                                                  // controlled by counter
    460 #define TSS_SECRET_LIFETIME_TIMER   (0x00000003) // secret lifetime
    461                                                  // controlled by time
    462 #define TSS_TSPATTRIB_POLSECRET_LIFETIME_ALWAYS  TSS_SECRET_LIFETIME_ALWAYS
    463 #define TSS_TSPATTRIB_POLSECRET_LIFETIME_COUNTER TSS_SECRET_LIFETIME_COUNTER
    464 #define TSS_TSPATTRIB_POLSECRET_LIFETIME_TIMER   TSS_SECRET_LIFETIME_TIMER
    465 
    466 // Alternate names misspelled in the 1.1 TSS spec.
    467 #define TSS_TSPATTRIB_POLICYSECRET_LIFETIME_ALWAYS  TSS_SECRET_LIFETIME_ALWAYS
    468 #define TSS_TSPATTRIB_POLICYSECRET_LIFETIME_COUNTER TSS_SECRET_LIFETIME_COUNTER
    469 #define TSS_TSPATTRIB_POLICYSECRET_LIFETIME_TIMER   TSS_SECRET_LIFETIME_TIMER
    470 
    471 //
    472 // Subflags of TSS_TSPATTRIB_POLICY_DELEGATION_INFO
    473 //
    474 #define TSS_TSPATTRIB_POLDEL_TYPE                (0x00000001)
    475 #define TSS_TSPATTRIB_POLDEL_INDEX               (0x00000002)
    476 #define TSS_TSPATTRIB_POLDEL_PER1                (0x00000003)
    477 #define TSS_TSPATTRIB_POLDEL_PER2                (0x00000004)
    478 #define TSS_TSPATTRIB_POLDEL_LABEL               (0x00000005)
    479 #define TSS_TSPATTRIB_POLDEL_FAMILYID            (0x00000006)
    480 #define TSS_TSPATTRIB_POLDEL_VERCOUNT            (0x00000007)
    481 #define TSS_TSPATTRIB_POLDEL_OWNERBLOB           (0x00000008)
    482 #define TSS_TSPATTRIB_POLDEL_KEYBLOB             (0x00000009)
    483 
    484 //
    485 // Subflags of TSS_TSPATTRIB_POLICY_DELEGATION_PCR
    486 //
    487 #define TSS_TSPATTRIB_POLDELPCR_LOCALITY         (0x00000001)
    488 #define TSS_TSPATTRIB_POLDELPCR_DIGESTATRELEASE  (0x00000002)
    489 #define TSS_TSPATTRIB_POLDELPCR_SELECTION        (0x00000003)
    490 
    491 //
    492 // Values for the Policy TSS_TSPATTRIB_POLDEL_TYPE attribute
    493 //
    494 #define TSS_DELEGATIONTYPE_NONE                  (0x00000001)
    495 #define TSS_DELEGATIONTYPE_OWNER                 (0x00000002)
    496 #define TSS_DELEGATIONTYPE_KEY                   (0x00000003)
    497 
    498 
    499 
    500 //
    501 //  Flags used for the 'mode' parameter in Tspi_Policy_SetSecret()
    502 //
    503 #define TSS_SECRET_MODE_NONE     (0x00000800) // No authorization will be
    504                                               // processed
    505 #define TSS_SECRET_MODE_SHA1     (0x00001000) // Secret string will not be
    506                                               // touched by TSP
    507 #define TSS_SECRET_MODE_PLAIN    (0x00001800) // Secret string will be hashed
    508                                               // using SHA1
    509 #define TSS_SECRET_MODE_POPUP    (0x00002000) // TSS SP will ask for a secret
    510 #define TSS_SECRET_MODE_CALLBACK (0x00002800) // Application has to provide a
    511                                               // call back function
    512 
    513 
    514 
    515 //******************
    516 // EncData object: *
    517 //******************
    518 
    519 //
    520 // Attributes
    521 //
    522 #define TSS_TSPATTRIB_ENCDATA_BLOB     (0x00000008)
    523 #define TSS_TSPATTRIB_ENCDATA_PCR      (0x00000010)
    524 #define TSS_TSPATTRIB_ENCDATA_PCR_LONG (0x00000018)
    525 #define TSS_TSPATTRIB_ENCDATA_SEAL     (0x00000020)
    526 
    527 //
    528 // SubFlags for Flag TSS_TSPATTRIB_ENCDATA_BLOB
    529 //
    530 #define TSS_TSPATTRIB_ENCDATABLOB_BLOB   (0x00000001)   // encrypted data blob
    531 
    532 //
    533 // SubFlags for Flag TSS_TSPATTRIB_ENCDATA_PCR
    534 //
    535 #define TSS_TSPATTRIB_ENCDATAPCR_DIGEST_ATCREATION       (0x00000002)
    536 #define TSS_TSPATTRIB_ENCDATAPCR_DIGEST_ATRELEASE        (0x00000003)
    537 #define TSS_TSPATTRIB_ENCDATAPCR_SELECTION               (0x00000004)
    538 // support typo from 1.1 headers
    539 #define TSS_TSPATTRIB_ENCDATAPCR_DIGEST_RELEASE \
    540                           TSS_TSPATTRIB_ENCDATAPCR_DIGEST_ATRELEASE
    541 
    542 #define TSS_TSPATTRIB_ENCDATAPCRLONG_LOCALITY_ATCREATION (0x00000005)
    543 #define TSS_TSPATTRIB_ENCDATAPCRLONG_LOCALITY_ATRELEASE  (0x00000006)
    544 #define TSS_TSPATTRIB_ENCDATAPCRLONG_CREATION_SELECTION  (0x00000007)
    545 #define TSS_TSPATTRIB_ENCDATAPCRLONG_RELEASE_SELECTION   (0x00000008)
    546 #define TSS_TSPATTRIB_ENCDATAPCRLONG_DIGEST_ATCREATION   (0x00000009)
    547 #define TSS_TSPATTRIB_ENCDATAPCRLONG_DIGEST_ATRELEASE    (0x0000000A)
    548 
    549 
    550 //
    551 // Attribute subflags TSS_TSPATTRIB_ENCDATA_SEAL
    552 //
    553 #define TSS_TSPATTRIB_ENCDATASEAL_PROTECT_MODE           (0x00000001)
    554 
    555 //
    556 // Attribute values for
    557 //    TSS_TSPATTRIB_ENCDATA_SEAL/TSS_TSPATTRIB_ENCDATASEAL_PROTECT_MODE
    558 //
    559 #define  TSS_TSPATTRIB_ENCDATASEAL_NOPROTECT             (0x00000000)
    560 #define  TSS_TSPATTRIB_ENCDATASEAL_PROTECT               (0x00000001)
    561 
    562 // Accounting for typos in original header files
    563 #define  TSS_TSPATTRIB_ENCDATASEAL_NO_PROTECT                                \
    564                                            TSS_TSPATTRIB_ENCDATASEAL_NOPROTECT
    565 
    566 //*************
    567 // NV object: *
    568 //*************
    569 
    570 //
    571 // Attributes
    572 //
    573 #define TSS_TSPATTRIB_NV_INDEX                     (0x00000001)
    574 #define TSS_TSPATTRIB_NV_PERMISSIONS               (0x00000002)
    575 #define TSS_TSPATTRIB_NV_STATE                     (0x00000003)
    576 #define TSS_TSPATTRIB_NV_DATASIZE                  (0x00000004)
    577 #define TSS_TSPATTRIB_NV_PCR                       (0x00000005)
    578 
    579 #define TSS_TSPATTRIB_NVSTATE_READSTCLEAR          (0x00100000)
    580 #define TSS_TSPATTRIB_NVSTATE_WRITESTCLEAR         (0x00200000)
    581 #define TSS_TSPATTRIB_NVSTATE_WRITEDEFINE          (0x00300000)
    582 
    583 #define TSS_TSPATTRIB_NVPCR_READPCRSELECTION       (0x01000000)
    584 #define TSS_TSPATTRIB_NVPCR_READDIGESTATRELEASE    (0x02000000)
    585 #define TSS_TSPATTRIB_NVPCR_READLOCALITYATRELEASE  (0x03000000)
    586 #define TSS_TSPATTRIB_NVPCR_WRITEPCRSELECTION      (0x04000000)
    587 #define TSS_TSPATTRIB_NVPCR_WRITEDIGESTATRELEASE   (0x05000000)
    588 #define TSS_TSPATTRIB_NVPCR_WRITELOCALITYATRELEASE (0x06000000)
    589 
    590 /* NV index flags
    591  *
    592  * From the TPM spec, Part 2, Section 19.1.
    593  *
    594  *        3                   2                   1
    595  *      1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
    596  *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    597  *     |T|P|U|D| resvd |   Purview     |          Index                |
    598  *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    599  */
    600 #define TSS_NV_TPM                (0x80000000) // TPM mfr reserved bit
    601 #define TSS_NV_PLATFORM           (0x40000000) // Platform mfr reserved bit
    602 #define TSS_NV_USER               (0x20000000) // User reserved bit
    603 #define TSS_NV_DEFINED            (0x10000000) // "Defined permanently" flag
    604 #define TSS_NV_MASK_TPM           (0x80000000) // mask to extract 'T'
    605 #define TSS_NV_MASK_PLATFORM      (0x40000000) // mask to extract 'P'
    606 #define TSS_NV_MASK_USER          (0x20000000) // mask to extract 'U'
    607 #define TSS_NV_MASK_DEFINED       (0x10000000) // mask to extract 'D'
    608 #define TSS_NV_MASK_RESERVED      (0x0f000000) // mask to extract reserved bits
    609 #define TSS_NV_MASK_PURVIEW       (0x00ff0000) // mask to extract purview byte
    610 #define TSS_NV_MASK_INDEX         (0x0000ffff) // mask to extract index byte
    611 
    612 // This is the index of the NV storage area where the number of sessions
    613 // per locality is stored.
    614 #define TSS_NV_INDEX_SESSIONS     (0x00011101)
    615 
    616 
    617 //******************
    618 // MigData object: *
    619 //******************
    620 
    621 //
    622 // Attributes
    623 //
    624 #define TSS_MIGATTRIB_MIGRATIONBLOB                    (0x00000010)
    625 #define TSS_MIGATTRIB_MIGRATIONTICKET                  (0x00000020)
    626 #define TSS_MIGATTRIB_AUTHORITY_DATA                   (0x00000030)
    627 #define TSS_MIGATTRIB_MIG_AUTH_DATA                    (0x00000040)
    628 #define TSS_MIGATTRIB_TICKET_DATA                      (0x00000050)
    629 #define TSS_MIGATTRIB_PAYLOAD_TYPE                     (0x00000060)
    630 
    631 //
    632 // Attribute subflags TSS_MIGATTRIB_MIGRATIONBLOB
    633 //
    634 #define TSS_MIGATTRIB_MIGRATION_XOR_BLOB               (0x00000101)
    635 #define TSS_MIGATTRIB_MIGRATION_REWRAPPED_BLOB         (0x00000102)
    636 #define TSS_MIGATTRIB_MIG_MSALIST_PUBKEY_BLOB          (0x00000103)
    637 #define TSS_MIGATTRIB_MIG_AUTHORITY_PUBKEY_BLOB        (0x00000104)
    638 #define TSS_MIGATTRIB_MIG_DESTINATION_PUBKEY_BLOB      (0x00000105)
    639 #define TSS_MIGATTRIB_MIG_SOURCE_PUBKEY_BLOB           (0x00000106)
    640 #define TSS_MIGATTRIB_MIG_REWRAPPED_BLOB               TSS_MIGATTRIB_MIGRATION_REWRAPPED_BLOB
    641 #define TSS_MIGATTRIB_MIG_XOR_BLOB                     TSS_MIGATTRIB_MIGRATION_XOR_BLOB
    642 
    643 //
    644 // Attribute subflags TSS_MIGATTRIB_MIGRATIONTICKET
    645 //
    646 // none
    647 
    648 //
    649 // Attribute subflags TSS_MIGATTRIB_AUTHORITY_DATA
    650 //
    651 #define TSS_MIGATTRIB_AUTHORITY_DIGEST                 (0x00000301)
    652 #define TSS_MIGATTRIB_AUTHORITY_APPROVAL_HMAC          (0x00000302)
    653 #define TSS_MIGATTRIB_AUTHORITY_MSALIST                (0x00000303)
    654 
    655 //
    656 // Attribute subflags TSS_MIGATTRIB_MIG_AUTH_DATA
    657 //
    658 #define TSS_MIGATTRIB_MIG_AUTH_AUTHORITY_DIGEST        (0x00000401)
    659 #define TSS_MIGATTRIB_MIG_AUTH_DESTINATION_DIGEST      (0x00000402)
    660 #define TSS_MIGATTRIB_MIG_AUTH_SOURCE_DIGEST           (0x00000403)
    661 
    662 //
    663 // Attribute subflags TSS_MIGATTRIB_TICKET_DATA
    664 //
    665 #define TSS_MIGATTRIB_TICKET_SIG_DIGEST                (0x00000501)
    666 #define TSS_MIGATTRIB_TICKET_SIG_VALUE                 (0x00000502)
    667 #define TSS_MIGATTRIB_TICKET_SIG_TICKET                (0x00000503)
    668 #define TSS_MIGATTRIB_TICKET_RESTRICT_TICKET           (0x00000504)
    669 
    670 //
    671 // Attribute subflags TSS_MIGATTRIB_PAYLOAD_TYPE
    672 //
    673 #define TSS_MIGATTRIB_PT_MIGRATE_RESTRICTED            (0x00000601)
    674 #define TSS_MIGATTRIB_PT_MIGRATE_EXTERNAL              (0x00000602)
    675 
    676 
    677 
    678 
    679 //***************
    680 // Hash object: *
    681 //***************
    682 
    683 //
    684 // Attributes
    685 //
    686 #define TSS_TSPATTRIB_HASH_IDENTIFIER (0x00001000) // Hash algorithm identifier
    687 #define TSS_TSPATTRIB_ALG_IDENTIFIER  (0x00002000) // ASN.1 alg identifier
    688 
    689 
    690 
    691 //***************
    692 // PCRs object: *
    693 //***************
    694 
    695 //
    696 // Attributes
    697 //
    698 #define TSS_TSPATTRIB_PCRS_INFO  (0x00000001) // info
    699 
    700 //
    701 // Subflags for TSS_TSPATTRIB_PCRS_INFO flag
    702 //
    703 #define TSS_TSPATTRIB_PCRSINFO_PCRSTRUCT (0x00000001) // type of pcr struct
    704                                                       // TSS_PCRS_STRUCT_TYPE_XX
    705 
    706 //****************************
    707 // Delegation Family object: *
    708 //****************************
    709 
    710 //
    711 // Attributes
    712 //
    713 #define TSS_TSPATTRIB_DELFAMILY_STATE            (0x00000001)
    714 #define TSS_TSPATTRIB_DELFAMILY_INFO             (0x00000002)
    715 
    716 // DELFAMILY_STATE sub-attributes
    717 #define TSS_TSPATTRIB_DELFAMILYSTATE_LOCKED      (0x00000001)
    718 #define TSS_TSPATTRIB_DELFAMILYSTATE_ENABLED     (0x00000002)
    719 
    720 // DELFAMILY_INFO sub-attributes
    721 #define TSS_TSPATTRIB_DELFAMILYINFO_LABEL        (0x00000003)
    722 #define TSS_TSPATTRIB_DELFAMILYINFO_VERCOUNT     (0x00000004)
    723 #define TSS_TSPATTRIB_DELFAMILYINFO_FAMILYID     (0x00000005)
    724 
    725 // Bitmasks for the 'ulFlags' argument to Tspi_TPM_Delegate_CreateDelegation.
    726 // Only one bit used for now.
    727 #define TSS_DELEGATE_INCREMENTVERIFICATIONCOUNT               ((UINT32)1)
    728 
    729 // Bitmasks for the 'ulFlags' argument to
    730 // Tspi_TPM_Delegate_CacheOwnerDelegation. Only 1 bit is used for now.
    731 #define TSS_DELEGATE_CACHEOWNERDELEGATION_OVERWRITEEXISTING   ((UINT32)1)
    732 
    733 
    734 
    735 //*************************
    736 // DAA Credential Object: *
    737 //*************************
    738 
    739 //
    740 // Attribute flags
    741 //
    742 #define TSS_TSPATTRIB_DAACRED_COMMIT                   (0x00000001)
    743 #define TSS_TSPATTRIB_DAACRED_ATTRIB_GAMMAS            (0x00000002)
    744 #define TSS_TSPATTRIB_DAACRED_CREDENTIAL_BLOB          (0x00000003)
    745 #define TSS_TSPATTRIB_DAACRED_CALLBACK_SIGN            (0x00000004)
    746 #define TSS_TSPATTRIB_DAACRED_CALLBACK_VERIFYSIGNATURE (0x00000005)
    747 
    748 //
    749 // Subflags for TSS_TSPATTRIB_DAACRED_COMMIT
    750 //
    751 #define TSS_TSPATTRIB_DAACOMMIT_NUMBER              (0x00000001)
    752 #define TSS_TSPATTRIB_DAACOMMIT_SELECTION           (0x00000002)
    753 #define TSS_TSPATTRIB_DAACOMMIT_COMMITMENTS         (0x00000003)
    754 
    755 //
    756 // Subflags for TSS_TSPATTRIB_DAACRED_ATTRIB_GAMMAS
    757 //
    758 #define TSS_TSPATTRIB_DAAATTRIBGAMMAS_BLOB          (0xffffffff)
    759 
    760 
    761 
    762 //*************************
    763 // DAA Issuer Key Object: *
    764 //*************************
    765 
    766 //
    767 // Attribute flags
    768 //
    769 #define TSS_TSPATTRIB_DAAISSUERKEY_BLOB              (0x00000001)
    770 #define TSS_TSPATTRIB_DAAISSUERKEY_PUBKEY            (0x00000002)
    771 
    772 //
    773 // Subflags for TSS_TSPATTRIB_DAAISSUERKEY_BLOB
    774 //
    775 #define TSS_TSPATTRIB_DAAISSUERKEYBLOB_PUBLIC_KEY     (0x00000001)
    776 #define TSS_TSPATTRIB_DAAISSUERKEYBLOB_SECRET_KEY     (0x00000002)
    777 #define TSS_TSPATTRIB_DAAISSUERKEYBLOB_KEYBLOB        (0x00000003)
    778 #define TSS_TSPATTRIB_DAAISSUERKEYBLOB_PROOF          (0x00000004)
    779 
    780 //
    781 // Subflags for TSS_TSPATTRIB_DAAISSUERKEY_PUBKEY
    782 //
    783 #define TSS_TSPATTRIB_DAAISSUERKEYPUBKEY_NUM_ATTRIBS          (0x00000001)
    784 #define TSS_TSPATTRIB_DAAISSUERKEYPUBKEY_NUM_PLATFORM_ATTRIBS (0x00000002)
    785 #define TSS_TSPATTRIB_DAAISSUERKEYPUBKEY_NUM_ISSUER_ATTRIBS   (0x00000003)
    786 
    787 
    788 
    789 //***************************************
    790 // DAA Anonymity Revocation Key Object: *
    791 //***************************************
    792 
    793 //
    794 // Attribute flags
    795 //
    796 #define TSS_TSPATTRIB_DAAARAKEY_BLOB                 (0x00000001)
    797 
    798 //
    799 // Subflags for TSS_TSPATTRIB_DAAARAKEY_BLOB
    800 //
    801 #define TSS_TSPATTRIB_DAAARAKEYBLOB_PUBLIC_KEY     (0x00000001)
    802 #define TSS_TSPATTRIB_DAAARAKEYBLOB_SECRET_KEY     (0x00000002)
    803 #define TSS_TSPATTRIB_DAAARAKEYBLOB_KEYBLOB        (0x00000003)
    804 
    805 
    806 
    807 //
    808 // Structure payload flags for TSS_DAA_PSEUDONYM,
    809 // (TSS_DAA_PSEUDONYM.payloadFlag)
    810 //
    811 #define TSS_FLAG_DAA_PSEUDONYM_PLAIN                 (0x00000000)
    812 #define TSS_FLAG_DAA_PSEUDONYM_ENCRYPTED             (0x00000001)
    813 
    814 
    815 //**************
    816 // Key Object: *
    817 //**************
    818 
    819 //
    820 // Attribute flags
    821 //
    822 #define TSS_TSPATTRIB_KEY_BLOB       (0x00000040) // key info as blob data
    823 #define TSS_TSPATTRIB_KEY_INFO       (0x00000080) // keyparam info as blob data
    824 #define TSS_TSPATTRIB_KEY_UUID       (0x000000C0) // key UUID info as blob data
    825 #define TSS_TSPATTRIB_KEY_PCR        (0x00000100) // composite digest value for
    826                                                   // the key
    827 #define TSS_TSPATTRIB_RSAKEY_INFO    (0x00000140) // public key info
    828 #define TSS_TSPATTRIB_KEY_REGISTER   (0x00000180) // register location
    829 #define TSS_TSPATTRIB_KEY_PCR_LONG   (0x000001c0) // PCR_INFO_LONG for the key
    830 #define TSS_TSPATTRIB_KEY_CONTROLBIT (0x00000200) // key control flags
    831 #define TSS_TSPATTRIB_KEY_CMKINFO    (0x00000400) // CMK info
    832 
    833 //
    834 // SubFlags for Flag TSS_TSPATTRIB_KEY_BLOB
    835 //
    836 #define TSS_TSPATTRIB_KEYBLOB_BLOB        (0x00000008) // key info using the
    837                                                        // key blob
    838 #define TSS_TSPATTRIB_KEYBLOB_PUBLIC_KEY  (0x00000010) // public key info
    839                                                        // using the blob
    840 #define TSS_TSPATTRIB_KEYBLOB_PRIVATE_KEY (0x00000028) // encrypted private key
    841                                                        // blob
    842 
    843 //
    844 // SubFlags for Flag TSS_TSPATTRIB_KEY_INFO
    845 //
    846 #define TSS_TSPATTRIB_KEYINFO_SIZE          (0x00000080) // key size in bits
    847 #define TSS_TSPATTRIB_KEYINFO_USAGE         (0x00000100) // key usage info
    848 #define TSS_TSPATTRIB_KEYINFO_KEYFLAGS      (0x00000180) // key flags
    849 #define TSS_TSPATTRIB_KEYINFO_AUTHUSAGE     (0x00000200) // key auth usage info
    850 #define TSS_TSPATTRIB_KEYINFO_ALGORITHM     (0x00000280) // key algorithm ID
    851 #define TSS_TSPATTRIB_KEYINFO_SIGSCHEME     (0x00000300) // key sig scheme
    852 #define TSS_TSPATTRIB_KEYINFO_ENCSCHEME     (0x00000380) // key enc scheme
    853 #define TSS_TSPATTRIB_KEYINFO_MIGRATABLE    (0x00000400) // if true then key is
    854                                                          // migratable
    855 #define TSS_TSPATTRIB_KEYINFO_REDIRECTED    (0x00000480) // key is redirected
    856 #define TSS_TSPATTRIB_KEYINFO_VOLATILE      (0x00000500) // if true key is
    857                                                          // volatile
    858 #define TSS_TSPATTRIB_KEYINFO_AUTHDATAUSAGE (0x00000580) // if true auth is
    859                                                          // required
    860 #define TSS_TSPATTRIB_KEYINFO_VERSION       (0x00000600) // version info as TSS
    861                                                          // version struct
    862 #define TSS_TSPATTRIB_KEYINFO_CMK           (0x00000680) // if true then key
    863                                                          // is certified
    864                                                          // migratable
    865 #define TSS_TSPATTRIB_KEYINFO_KEYSTRUCT     (0x00000700) // type of key struct
    866                                                          // used for this key
    867                                                          // (TPM_KEY or
    868                                                          // TPM_KEY12)
    869 #define TSS_TSPATTRIB_KEYCONTROL_OWNEREVICT (0x00000780) // Get current status
    870 							 // of owner evict flag
    871 
    872 //
    873 // SubFlags for Flag TSS_TSPATTRIB_RSAKEY_INFO
    874 //
    875 #define TSS_TSPATTRIB_KEYINFO_RSA_EXPONENT  (0x00001000)
    876 #define TSS_TSPATTRIB_KEYINFO_RSA_MODULUS   (0x00002000)
    877 #define TSS_TSPATTRIB_KEYINFO_RSA_KEYSIZE   (0x00003000)
    878 #define TSS_TSPATTRIB_KEYINFO_RSA_PRIMES    (0x00004000)
    879 
    880 //
    881 // SubFlags for Flag TSS_TSPATTRIB_KEY_PCR
    882 //
    883 #define TSS_TSPATTRIB_KEYPCR_DIGEST_ATCREATION  (0x00008000)
    884 #define TSS_TSPATTRIB_KEYPCR_DIGEST_ATRELEASE   (0x00010000)
    885 #define TSS_TSPATTRIB_KEYPCR_SELECTION          (0x00018000)
    886 
    887 //
    888 // SubFlags for TSS_TSPATTRIB_KEY_REGISTER
    889 //
    890 #define TSS_TSPATTRIB_KEYREGISTER_USER    (0x02000000)
    891 #define TSS_TSPATTRIB_KEYREGISTER_SYSTEM  (0x04000000)
    892 #define TSS_TSPATTRIB_KEYREGISTER_NO      (0x06000000)
    893 
    894 //
    895 // SubFlags for Flag TSS_TSPATTRIB_KEY_PCR_LONG
    896 //
    897 #define TSS_TSPATTRIB_KEYPCRLONG_LOCALITY_ATCREATION (0x00040000) /* UINT32 */
    898 #define TSS_TSPATTRIB_KEYPCRLONG_LOCALITY_ATRELEASE  (0x00080000) /* UINT32 */
    899 #define TSS_TSPATTRIB_KEYPCRLONG_CREATION_SELECTION  (0x000C0000) /* DATA */
    900 #define TSS_TSPATTRIB_KEYPCRLONG_RELEASE_SELECTION   (0x00100000) /* DATA */
    901 #define TSS_TSPATTRIB_KEYPCRLONG_DIGEST_ATCREATION   (0x00140000) /* DATA */
    902 #define TSS_TSPATTRIB_KEYPCRLONG_DIGEST_ATRELEASE    (0x00180000) /* DATA */
    903 
    904 //
    905 // SubFlags for Flag TSS_TSPATTRIB_KEY_CMKINFO
    906 //
    907 #define TSS_TSPATTRIB_KEYINFO_CMK_MA_APPROVAL  (0x00000010)
    908 #define TSS_TSPATTRIB_KEYINFO_CMK_MA_DIGEST    (0x00000020)
    909 
    910 
    911 //
    912 // Attribute Values
    913 //
    914 
    915 //
    916 // key size definitions
    917 //
    918 #define TSS_KEY_SIZEVAL_512BIT      (0x0200)
    919 #define TSS_KEY_SIZEVAL_1024BIT     (0x0400)
    920 #define TSS_KEY_SIZEVAL_2048BIT     (0x0800)
    921 #define TSS_KEY_SIZEVAL_4096BIT     (0x1000)
    922 #define TSS_KEY_SIZEVAL_8192BIT     (0x2000)
    923 #define TSS_KEY_SIZEVAL_16384BIT    (0x4000)
    924 
    925 //
    926 // key usage definitions
    927 // Values intentionally moved away from corresponding TPM values to avoid
    928 // possible misuse
    929 //
    930 #define TSS_KEYUSAGE_BIND           (0x00)
    931 #define TSS_KEYUSAGE_IDENTITY       (0x01)
    932 #define TSS_KEYUSAGE_LEGACY         (0x02)
    933 #define TSS_KEYUSAGE_SIGN           (0x03)
    934 #define TSS_KEYUSAGE_STORAGE        (0x04)
    935 #define TSS_KEYUSAGE_AUTHCHANGE     (0x05)
    936 #define TSS_KEYUSAGE_MIGRATE        (0x06)
    937 
    938 //
    939 // key flag definitions
    940 //
    941 #define TSS_KEYFLAG_REDIRECTION          (0x00000001)
    942 #define TSS_KEYFLAG_MIGRATABLE           (0x00000002)
    943 #define TSS_KEYFLAG_VOLATILEKEY          (0x00000004)
    944 #define TSS_KEYFLAG_CERTIFIED_MIGRATABLE (0x00000008)
    945 
    946 //
    947 //  algorithm ID definitions
    948 //
    949 //  This table defines the algo id's
    950 //  Values intentionally moved away from corresponding TPM values to avoid
    951 //  possible misuse
    952 //
    953 #define   TSS_ALG_RSA               (0x20)
    954 #define   TSS_ALG_DES               (0x21)
    955 #define   TSS_ALG_3DES              (0x22)
    956 #define   TSS_ALG_SHA               (0x23)
    957 #define   TSS_ALG_HMAC              (0x24)
    958 #define   TSS_ALG_AES128            (0x25)
    959 #define   TSS_ALG_AES192            (0x26)
    960 #define   TSS_ALG_AES256            (0x27)
    961 #define   TSS_ALG_XOR               (0x28)
    962 #define   TSS_ALG_MGF1              (0x29)
    963 
    964 #define   TSS_ALG_AES               TSS_ALG_AES128
    965 
    966 // Special values for
    967 //   Tspi_Context_GetCapability(TSS_TSPCAP_ALG)
    968 //   Tspi_Context_GetCapability(TSS_TCSCAP_ALG)
    969 #define   TSS_ALG_DEFAULT           (0xfe)
    970 #define   TSS_ALG_DEFAULT_SIZE      (0xff)
    971 
    972 
    973 //
    974 // key signature scheme definitions
    975 //
    976 #define TSS_SS_NONE                 (0x10)
    977 #define TSS_SS_RSASSAPKCS1V15_SHA1  (0x11)
    978 #define TSS_SS_RSASSAPKCS1V15_DER   (0x12)
    979 #define	TSS_SS_RSASSAPKCS1V15_INFO  (0x13)
    980 
    981 //
    982 // key encryption scheme definitions
    983 //
    984 #define TSS_ES_NONE                 (0x10)
    985 #define TSS_ES_RSAESPKCSV15         (0x11)
    986 #define TSS_ES_RSAESOAEP_SHA1_MGF1  (0x12)
    987 #define TSS_ES_SYM_CNT              (0x13)
    988 #define TSS_ES_SYM_OFB              (0x14)
    989 #define TSS_ES_SYM_CBC_PKCS5PAD     (0x15)
    990 
    991 
    992 //
    993 // persistent storage registration definitions
    994 //
    995 #define TSS_PS_TYPE_USER   (1) // Key is registered persistantly in the user
    996                                // storage database.
    997 #define TSS_PS_TYPE_SYSTEM (2) // Key is registered persistantly in the system
    998                                // storage database.
    999 
   1000 //
   1001 // migration scheme definitions
   1002 // Values intentionally moved away from corresponding TPM values to avoid
   1003 // possible misuse
   1004 //
   1005 #define TSS_MS_MIGRATE                   (0x20)
   1006 #define TSS_MS_REWRAP                    (0x21)
   1007 #define TSS_MS_MAINT                     (0x22)
   1008 #define TSS_MS_RESTRICT_MIGRATE          (0x23)
   1009 #define TSS_MS_RESTRICT_APPROVE_DOUBLE   (0x24)
   1010 #define TSS_MS_RESTRICT_MIGRATE_EXTERNAL (0x25)
   1011 
   1012 //
   1013 // TPM key authorization
   1014 // Values intentionally moved away from corresponding TPM values to avoid
   1015 // possible misuse
   1016 //
   1017 #define TSS_KEYAUTH_AUTH_NEVER         (0x10)
   1018 #define TSS_KEYAUTH_AUTH_ALWAYS        (0x11)
   1019 #define TSS_KEYAUTH_AUTH_PRIV_USE_ONLY (0x12)
   1020 
   1021 
   1022 //
   1023 // Flags for TPM status information (GetStatus and SetStatus)
   1024 //
   1025 #define TSS_TPMSTATUS_DISABLEOWNERCLEAR      (0x00000001) // persistent flag
   1026 #define TSS_TPMSTATUS_DISABLEFORCECLEAR      (0x00000002) // volatile flag
   1027 #define TSS_TPMSTATUS_DISABLED               (0x00000003) // persistent flag
   1028 #define TSS_TPMSTATUS_DEACTIVATED            (0x00000004) // volatile flag
   1029 #define TSS_TPMSTATUS_OWNERSETDISABLE        (0x00000005) // persistent flag
   1030                                                           // for SetStatus
   1031                                                           // (disable flag)
   1032 #define TSS_TPMSTATUS_SETOWNERINSTALL        (0x00000006) // persistent flag
   1033                                                           // (ownership flag)
   1034 #define TSS_TPMSTATUS_DISABLEPUBEKREAD       (0x00000007) // persistent flag
   1035 #define TSS_TPMSTATUS_ALLOWMAINTENANCE       (0x00000008) // persistent flag
   1036 #define TSS_TPMSTATUS_PHYSPRES_LIFETIMELOCK  (0x00000009) // persistent flag
   1037 #define TSS_TPMSTATUS_PHYSPRES_HWENABLE      (0x0000000A) // persistent flag
   1038 #define TSS_TPMSTATUS_PHYSPRES_CMDENABLE     (0x0000000B) // persistent flag
   1039 #define TSS_TPMSTATUS_PHYSPRES_LOCK          (0x0000000C) // volatile flag
   1040 #define TSS_TPMSTATUS_PHYSPRESENCE           (0x0000000D) // volatile flag
   1041 #define TSS_TPMSTATUS_PHYSICALDISABLE        (0x0000000E) // persistent flag
   1042                                                           // (SetStatus
   1043                                                           //  disable flag)
   1044 #define TSS_TPMSTATUS_CEKP_USED              (0x0000000F) // persistent flag
   1045 #define TSS_TPMSTATUS_PHYSICALSETDEACTIVATED (0x00000010) // persistent flag
   1046                                                           // (deactivated flag)
   1047 #define TSS_TPMSTATUS_SETTEMPDEACTIVATED     (0x00000011) // volatile flag
   1048                                                           // (deactivated flag)
   1049 #define TSS_TPMSTATUS_POSTINITIALISE         (0x00000012) // volatile flag
   1050 #define TSS_TPMSTATUS_TPMPOST                (0x00000013) // persistent flag
   1051 #define TSS_TPMSTATUS_TPMPOSTLOCK            (0x00000014) // persistent flag
   1052 #define TSS_TPMSTATUS_DISABLEPUBSRKREAD      (0x00000016) // persistent flag
   1053 #define TSS_TPMSTATUS_MAINTENANCEUSED        (0x00000017) // persistent flag
   1054 #define TSS_TPMSTATUS_OPERATORINSTALLED      (0x00000018) // persistent flag
   1055 #define TSS_TPMSTATUS_OPERATOR_INSTALLED     (TSS_TPMSTATUS_OPERATORINSTALLED)
   1056 #define TSS_TPMSTATUS_FIPS                   (0x00000019) // persistent flag
   1057 #define TSS_TPMSTATUS_ENABLEREVOKEEK         (0x0000001A) // persistent flag
   1058 #define TSS_TPMSTATUS_ENABLE_REVOKEEK        (TSS_TPMSTATUS_ENABLEREVOKEEK)
   1059 #define TSS_TPMSTATUS_NV_LOCK                (0x0000001B) // persistent flag
   1060 #define TSS_TPMSTATUS_TPM_ESTABLISHED        (0x0000001C) // persistent flag
   1061 #define TSS_TPMSTATUS_RESETLOCK              (0x0000001D) // volatile flag
   1062 #define TSS_TPMSTATUS_DISABLE_FULL_DA_LOGIC_INFO (0x0000001D) //persistent flag
   1063 
   1064 
   1065 //
   1066 // Capability flag definitions
   1067 //
   1068 // TPM capabilities
   1069 //
   1070 #define TSS_TPMCAP_ORD                   (0x10)
   1071 #define TSS_TPMCAP_ALG                   (0x11)
   1072 #define TSS_TPMCAP_FLAG                  (0x12)
   1073 #define TSS_TPMCAP_PROPERTY              (0x13)
   1074 #define TSS_TPMCAP_VERSION               (0x14)
   1075 #define TSS_TPMCAP_VERSION_VAL           (0x15)
   1076 #define TSS_TPMCAP_NV_LIST               (0x16)
   1077 #define TSS_TPMCAP_NV_INDEX              (0x17)
   1078 #define TSS_TPMCAP_MFR                   (0x18)
   1079 #define TSS_TPMCAP_SYM_MODE              (0x19)
   1080 #define TSS_TPMCAP_HANDLE                (0x1a)
   1081 #define TSS_TPMCAP_TRANS_ES              (0x1b)
   1082 #define TSS_TPMCAP_AUTH_ENCRYPT          (0x1c)
   1083 #define TSS_TPMCAP_SET_PERM_FLAGS        (0x1d)  // cf. TPM_SET_PERM_FLAGS
   1084 #define TSS_TPMCAP_SET_VENDOR            (0x1e)  // cf. TPM_SET_VENDOR
   1085 #define TSS_TPMCAP_DA_LOGIC              (0x1f)
   1086 
   1087 //
   1088 // Sub-Capability Flags for TSS_TPMCAP_PROPERTY
   1089 //
   1090 #define TSS_TPMCAP_PROP_PCR                 (0x10)
   1091 #define TSS_TPMCAP_PROP_DIR                 (0x11)
   1092 #define TSS_TPMCAP_PROP_MANUFACTURER        (0x12)
   1093 #define TSS_TPMCAP_PROP_SLOTS               (0x13)
   1094 #define TSS_TPMCAP_PROP_KEYS                TSS_TPMCAP_PROP_SLOTS
   1095 #define TSS_TPMCAP_PROP_FAMILYROWS          (0x14)
   1096 #define TSS_TPMCAP_PROP_DELEGATEROWS        (0x15)
   1097 #define TSS_TPMCAP_PROP_OWNER               (0x16)
   1098 #define TSS_TPMCAP_PROP_MAXKEYS             (0x18)
   1099 #define TSS_TPMCAP_PROP_AUTHSESSIONS        (0x19)
   1100 #define TSS_TPMCAP_PROP_MAXAUTHSESSIONS     (0x1a)
   1101 #define TSS_TPMCAP_PROP_TRANSESSIONS        (0x1b)
   1102 #define TSS_TPMCAP_PROP_MAXTRANSESSIONS     (0x1c)
   1103 #define TSS_TPMCAP_PROP_SESSIONS            (0x1d)
   1104 #define TSS_TPMCAP_PROP_MAXSESSIONS         (0x1e)
   1105 #define TSS_TPMCAP_PROP_CONTEXTS            (0x1f)
   1106 #define TSS_TPMCAP_PROP_MAXCONTEXTS         (0x20)
   1107 #define TSS_TPMCAP_PROP_DAASESSIONS         (0x21)
   1108 #define TSS_TPMCAP_PROP_MAXDAASESSIONS      (0x22)
   1109 #define TSS_TPMCAP_PROP_DAA_INTERRUPT       (0x23)
   1110 #define TSS_TPMCAP_PROP_COUNTERS            (0x24)
   1111 #define TSS_TPMCAP_PROP_MAXCOUNTERS         (0x25)
   1112 #define TSS_TPMCAP_PROP_ACTIVECOUNTER       (0x26)
   1113 #define TSS_TPMCAP_PROP_MIN_COUNTER         (0x27)
   1114 #define TSS_TPMCAP_PROP_TISTIMEOUTS         (0x28)
   1115 #define TSS_TPMCAP_PROP_STARTUPEFFECTS      (0x29)
   1116 #define TSS_TPMCAP_PROP_MAXCONTEXTCOUNTDIST (0x2a)
   1117 #define TSS_TPMCAP_PROP_CMKRESTRICTION      (0x2b)
   1118 #define TSS_TPMCAP_PROP_DURATION            (0x2c)
   1119 #define TSS_TPMCAP_PROP_MAXNVAVAILABLE      (0x2d)
   1120 #define TSS_TPMCAP_PROP_INPUTBUFFERSIZE     (0x2e)
   1121 #define TSS_TPMCAP_PROP_REVISION            (0x2f)
   1122 #define TSS_TPMCAP_PROP_LOCALITIES_AVAIL    (0x32)
   1123 
   1124 //
   1125 // Resource type flags
   1126 // Sub-Capability Flags for TSS_TPMCAP_HANDLE
   1127 //
   1128 #define TSS_RT_KEY                     ((UINT32)0x00000010)
   1129 #define TSS_RT_AUTH                    ((UINT32)0x00000020)
   1130 #define TSS_RT_TRANS                   ((UINT32)0x00000030)
   1131 #define TSS_RT_COUNTER                 ((UINT32)0x00000040)
   1132 
   1133 
   1134 //
   1135 // TSS Core Service Capabilities
   1136 //
   1137 #define TSS_TCSCAP_ALG                   (0x00000001)
   1138 #define TSS_TCSCAP_VERSION               (0x00000002)
   1139 #define TSS_TCSCAP_CACHING               (0x00000003)
   1140 #define TSS_TCSCAP_PERSSTORAGE           (0x00000004)
   1141 #define TSS_TCSCAP_MANUFACTURER          (0x00000005)
   1142 #define TSS_TCSCAP_PLATFORM_CLASS        (0x00000006)
   1143 #define TSS_TCSCAP_TRANSPORT             (0x00000007)
   1144 #define TSS_TCSCAP_PLATFORM_INFO         (0x00000008)
   1145 
   1146 //
   1147 // Sub-Capability Flags TSS-CoreService-Capabilities
   1148 //
   1149 #define TSS_TCSCAP_PROP_KEYCACHE         (0x00000100)
   1150 #define TSS_TCSCAP_PROP_AUTHCACHE        (0x00000101)
   1151 #define TSS_TCSCAP_PROP_MANUFACTURER_STR (0x00000102)
   1152 #define TSS_TCSCAP_PROP_MANUFACTURER_ID  (0x00000103)
   1153 #define TSS_TCSCAP_PLATFORM_VERSION      (0x00001100)
   1154 #define TSS_TCSCAP_PLATFORM_TYPE         (0x00001101)
   1155 #define TSS_TCSCAP_TRANS_EXCLUSIVE       (0x00002100)
   1156 #define TSS_TCSCAP_PROP_HOST_PLATFORM    (0x00003001)
   1157 #define TSS_TCSCAP_PROP_ALL_PLATFORMS    (0x00003002)
   1158 
   1159 //
   1160 // TSS Service Provider Capabilities
   1161 //
   1162 #define TSS_TSPCAP_ALG                   (0x00000010)
   1163 #define TSS_TSPCAP_VERSION               (0x00000011)
   1164 #define TSS_TSPCAP_PERSSTORAGE           (0x00000012)
   1165 #define TSS_TSPCAP_MANUFACTURER          (0x00000013)
   1166 #define TSS_TSPCAP_RETURNVALUE_INFO      (0x00000015)
   1167 #define TSS_TSPCAP_PLATFORM_INFO         (0x00000016)
   1168 
   1169 // Sub-Capability Flags for TSS_TSPCAP_MANUFACTURER
   1170 //
   1171 #define TSS_TSPCAP_PROP_MANUFACTURER_STR (0x00000102)
   1172 #define TSS_TSPCAP_PROP_MANUFACTURER_ID  (0x00000103)
   1173 
   1174 // Sub-Capability Flags for TSS_TSPCAP_PLATFORM_INFO
   1175 //
   1176 #define TSS_TSPCAP_PLATFORM_TYPE         (0x00000201)
   1177 #define TSS_TSPCAP_PLATFORM_VERSION      (0x00000202)
   1178 
   1179 
   1180 
   1181 // Sub-Capability Flags for TSS_TSPCAP_RETURNVALUE_INFO
   1182 //
   1183 #define TSS_TSPCAP_PROP_RETURNVALUE_INFO (0x00000201)
   1184 
   1185 //
   1186 // Event type definitions
   1187 //
   1188 #define TSS_EV_CODE_CERT                 (0x00000001)
   1189 #define TSS_EV_CODE_NOCERT               (0x00000002)
   1190 #define TSS_EV_XML_CONFIG                (0x00000003)
   1191 #define TSS_EV_NO_ACTION                 (0x00000004)
   1192 #define TSS_EV_SEPARATOR                 (0x00000005)
   1193 #define TSS_EV_ACTION                    (0x00000006)
   1194 #define TSS_EV_PLATFORM_SPECIFIC         (0x00000007)
   1195 
   1196 
   1197 //
   1198 // TSP random number limits
   1199 //
   1200 #define TSS_TSPCAP_RANDOMLIMIT     (0x00001000)   // Errata: Missing from spec
   1201 
   1202 //
   1203 // UUIDs
   1204 //
   1205 // Errata: This are not in the spec
   1206 #define TSS_UUID_SRK  {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 1}} // Storage root key
   1207 #define TSS_UUID_SK   {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 2}} // System key
   1208 #define TSS_UUID_RK   {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 3}} // roaming key
   1209 #define TSS_UUID_CRK  {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 8}} // CMK roaming key
   1210 #define TSS_UUID_USK1 {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 4}} // user storage key 1
   1211 #define TSS_UUID_USK2 {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 5}} // user storage key 2
   1212 #define TSS_UUID_USK3 {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 6}} // user storage key 3
   1213 #define TSS_UUID_USK4 {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 7}} // user storage key 4
   1214 #define TSS_UUID_USK5 {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 9}} // user storage key 5
   1215 #define TSS_UUID_USK6 {0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 10}}// user storage key 6
   1216 
   1217 // macro to derive UUIDs for keys whose "OwnerEvict" key is set.
   1218 #define TSS_UUID_OWNEREVICT(i) {0, 0, 0, 0, 0, {0, 0, 0, 0, 1, (i)}}
   1219 
   1220 
   1221 //
   1222 // TPM well-known secret
   1223 //
   1224 #define TSS_WELL_KNOWN_SECRET \
   1225         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
   1226          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
   1227 
   1228 
   1229 // Values for the "direction" parameters in the Tspi_PcrComposite_XX functions.
   1230 #define TSS_PCRS_DIRECTION_CREATION                        ((UINT32)1)
   1231 #define TSS_PCRS_DIRECTION_RELEASE                         ((UINT32)2)
   1232 
   1233 
   1234 //
   1235 // TSS blob version definition for ASN.1 blobs
   1236 //
   1237 #define TSS_BLOB_STRUCT_VERSION                              0x01
   1238 
   1239 //
   1240 // TSS blob type definitions for ASN.1 blobs
   1241 //
   1242 #define TSS_BLOB_TYPE_KEY                                    0x01
   1243 #define TSS_BLOB_TYPE_PUBKEY                                 0x02
   1244 #define TSS_BLOB_TYPE_MIGKEY                                 0x03
   1245 #define TSS_BLOB_TYPE_SEALEDDATA                             0x04
   1246 #define TSS_BLOB_TYPE_BOUNDDATA                              0x05
   1247 #define TSS_BLOB_TYPE_MIGTICKET                              0x06
   1248 #define TSS_BLOB_TYPE_PRIVATEKEY                             0x07
   1249 #define TSS_BLOB_TYPE_PRIVATEKEY_MOD1                        0x08
   1250 #define TSS_BLOB_TYPE_RANDOM_XOR                             0x09
   1251 #define TSS_BLOB_TYPE_CERTIFY_INFO                           0x0A
   1252 #define TSS_BLOB_TYPE_KEY_1_2                                0x0B
   1253 #define TSS_BLOB_TYPE_CERTIFY_INFO_2                         0x0C
   1254 #define TSS_BLOB_TYPE_CMK_MIG_KEY                            0x0D
   1255 #define TSS_BLOB_TYPE_CMK_BYTE_STREAM                        0x0E
   1256 
   1257 
   1258 
   1259 //
   1260 // Values for TPM_CMK_DELEGATE bitmasks
   1261 // For now these are exactly the same values as the corresponding
   1262 // TPM_CMK_DELEGATE_* bitmasks.
   1263 //
   1264 #define TSS_CMK_DELEGATE_SIGNING       (((UINT32)1)<<31)
   1265 #define TSS_CMK_DELEGATE_STORAGE       (((UINT32)1)<<30)
   1266 #define TSS_CMK_DELEGATE_BIND          (((UINT32)1)<<29)
   1267 #define TSS_CMK_DELEGATE_LEGACY        (((UINT32)1)<<28)
   1268 #define TSS_CMK_DELEGATE_MIGRATE       (((UINT32)1)<<27)
   1269 
   1270 
   1271 //
   1272 // Constants for DAA
   1273 //
   1274 #define TSS_DAA_LENGTH_N                256             // Length of the RSA Modulus (2048 bits)
   1275 #define TSS_DAA_LENGTH_F                13              // Length of the f_i's (information encoded into the certificate, 104 bits)
   1276 #define TSS_DAA_LENGTH_E                46              // Length of the e's (exponents, part of certificate, 386 bits)
   1277 #define TSS_DAA_LENGTH_E_PRIME          15              // Length of the interval the e's are chosen from (120 bits)
   1278 #define TSS_DAA_LENGTH_V                317             // Length of the v's (random value, part of certificate, 2536 bits)
   1279 #define TSS_DAA_LENGTH_SAFETY           10              // Length of the security parameter controlling the statistical zero-knowledge property (80 bits)
   1280 #define TSS_DAA_LENGTH_HASH     TPM_SHA1_160_HASH_LEN   // Length of the output of the hash function SHA-1 used for the Fiat-Shamir heuristic(160 bits)
   1281 #define TSS_DAA_LENGTH_S                128             // Length of the split large exponent for easier computations on the TPM (1024 bits)
   1282 #define TSS_DAA_LENGTH_GAMMA            204             // Length of the modulus 'Gamma' (1632 bits)
   1283 #define TSS_DAA_LENGTH_RHO              26              // Length of the order 'rho' of the sub group of Z*_Gamma that is used for roggue tagging (208 bits)
   1284 #define TSS_DAA_LENGTH_MFG1_GAMMA       214             // Length of the output of MGF1 in conjunction with the modulus Gamma (1712 bits)
   1285 #define TSS_DAA_LENGTH_MGF1_AR          25              // Length of the output of MGF1 used for anonymity revocation (200 bits)
   1286 
   1287 
   1288 #endif // __TSS_DEFINES_H__
   1289