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