1/*++
2
3TSS error return codes
4
5--*/
6
7#ifndef __TSS_ERROR_H__
8#define __TSS_ERROR_H__
9
10#include <tss/platform.h>
11
12//
13// error coding scheme for a Microsoft Windows platform -
14// refer to the TSS Specification Parts
15//
16//  Values are 32 bit values layed out as follows:
17//
18//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
19//   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
20//  +---+-+-+-----------------------+-------+-----------------------+
21//  |Lev|C|R|     Facility          | Layer |         Code          |
22//  +---+-+-+-----------------------+-------+-----------------------+
23//  | Platform specific coding      | TSS error coding system       |
24//  +---+-+-+-----------------------+-------+-----------------------+
25//
26//      Lev - is the Level code
27//
28//          00 - Success
29//          01 - Informational
30//          10 - Warning
31//          11 - Error
32//
33//      C - is the Customer code flag  (must actually be set)
34//
35//      R - is a reserved bit    (unused)
36//
37//      Facility - is the facility code: TCPA: proposal 0x028
38//
39//      Code - is the facility's status code
40//
41
42//
43// definitions for the code level information
44//
45#define TSS_LEVEL_SUCCESS  0x00     // code level success
46#define TSS_LEVEL_INFO     0x40000000L    // code level information
47#define TSS_LEVEL_WARNING  0x80000000L    // code level warning
48#define TSS_LEVEL_ERROR    0xC0000000L    // code level error
49
50//
51// some defines for the platform specific information
52//
53#define FACILITY_TSS            0x28L     // facility number for TCPA return codes
54#define FACILITY_TSS_CODEPOS   (FACILITY_TSS << 16)  // shift the facility info to the code
55                                                                        // position
56
57#define TSS_CUSTOM_CODEFLAG     0x20000000L    // bit position for the custom flag in
58                                                                        // return code
59
60//
61//
62// TSS error return codes
63//
64//
65#ifndef TSS_E_BASE
66#define TSS_E_BASE    0x00000000L
67#endif // TSS_E_BASE
68#ifndef TSS_W_BASE
69#define TSS_W_BASE    0x00000000L
70#endif // TSS_W_BASE
71#ifndef TSS_I_BASE
72#define TSS_I_BASE    0x00000000L
73#endif // TSS_I_BASE
74
75//
76// basic error return codes common to all TSS Service Provider Interface methods
77// and returned by all TSS SW stack components
78//
79
80//
81// MessageId: TSS_SUCCESS
82//
83// MessageText:
84//
85//  Successful completion of the operation.
86//
87#define TSS_SUCCESS     (UINT32)(0x00000000L)
88
89//
90// MessageId: TSS_E_FAIL
91//
92// MessageText:
93//
94//  An internal error has been detected, but the source is unknown.
95//
96#define TSS_E_FAIL     (UINT32)(TSS_E_BASE + 0x002L)
97
98//
99// MessageId: TSS_E_BAD_PARAMETER
100//
101// MessageText:
102//
103// One or more parameter is bad.
104//
105#define TSS_E_BAD_PARAMETER    (UINT32)(TSS_E_BASE + 0x003L)
106
107//
108// MessageId: TSS_E_INTERNAL_ERROR
109//
110// MessageText:
111//
112//  An internal SW error has been detected.
113//
114#define TSS_E_INTERNAL_ERROR    (UINT32)(TSS_E_BASE + 0x004L)
115
116//
117// MessageId: TSS_E_OUTOFMEMORY
118//
119// MessageText:
120//
121// Ran out of memory.
122//
123#define TSS_E_OUTOFMEMORY    (UINT32)(TSS_E_BASE + 0x005L)
124
125//
126// MessageId: TSS_E_NOTIMPL
127//
128// MessageText:
129//
130// Not implemented.
131//
132#define TSS_E_NOTIMPL     (UINT32)(TSS_E_BASE + 0x006L)
133
134//
135// MessageId: TSS_E_KEY_ALREADY_REGISTERED
136//
137// MessageText:
138//
139//  Key is already registered
140//
141#define TSS_E_KEY_ALREADY_REGISTERED  (UINT32)(TSS_E_BASE + 0x008L)
142
143
144//
145// MessageId: TSS_E_TPM_UNEXPECTED
146//
147// MessageText:
148//
149//  An unexpected TPM error has occurred.
150//
151#define TSS_E_TPM_UNEXPECTED    (UINT32)(TSS_E_BASE + 0x010L)
152
153//
154// MessageId: TSS_E_COMM_FAILURE
155//
156// MessageText:
157//
158//  A communications error with the TPM has been detected.
159//
160#define TSS_E_COMM_FAILURE    (UINT32)(TSS_E_BASE + 0x011L)
161
162//
163// MessageId: TSS_E_TIMEOUT
164//
165// MessageText:
166//
167//  The operation has timed out.
168//
169#define TSS_E_TIMEOUT     (UINT32)(TSS_E_BASE + 0x012L)
170
171//
172// MessageId: TSS_E_TPM_UNSUPPORTED_FEATURE
173//
174// MessageText:
175//
176//  The TPM does not support the requested feature.
177//
178#define TSS_E_TPM_UNSUPPORTED_FEATURE  (UINT32)(TSS_E_BASE + 0x014L)
179
180//
181// MessageId: TSS_E_CANCELED
182//
183// MessageText:
184//
185//  The action was canceled by request.
186//
187#define TSS_E_CANCELED     (UINT32)(TSS_E_BASE + 0x016L)
188
189//
190// MessageId: TSS_E_PS_KEY_NOTFOUND
191//
192// MessageText:
193//
194// The key cannot be found in the persistent storage database.
195//
196#define TSS_E_PS_KEY_NOTFOUND    (UINT32)(TSS_E_BASE + 0x020L)
197//
198// MessageId: TSS_E_PS_KEY_EXISTS
199//
200// MessageText:
201//
202// The key already exists in the persistent storage database.
203//
204#define TSS_E_PS_KEY_EXISTS            (UINT32)(TSS_E_BASE + 0x021L)
205
206//
207// MessageId: TSS_E_PS_BAD_KEY_STATE
208//
209// MessageText:
210//
211// The key data set not valid in the persistent storage database.
212//
213#define TSS_E_PS_BAD_KEY_STATE         (UINT32)(TSS_E_BASE + 0x022L)
214
215
216//
217// error codes returned by specific TSS Service Provider Interface methods
218// offset TSS_TSPI_OFFSET
219//
220
221//
222// MessageId: TSS_E_INVALID_OBJECT_TYPE
223//
224// MessageText:
225//
226// Object type not valid for this operation.
227//
228#define TSS_E_INVALID_OBJECT_TYPE   (UINT32)(TSS_E_BASE + 0x101L)
229
230//
231// MessageId: TSS_E_NO_CONNECTION
232//
233// MessageText:
234//
235// Core Service connection doesn't exist.
236//
237#define TSS_E_NO_CONNECTION    (UINT32)(TSS_E_BASE + 0x102L)
238
239//
240// MessageId: TSS_E_CONNECTION_FAILED
241//
242// MessageText:
243//
244// Core Service connection failed.
245//
246#define TSS_E_CONNECTION_FAILED   (UINT32)(TSS_E_BASE + 0x103L)
247
248//
249// MessageId: TSS_E_CONNECTION_BROKEN
250//
251// MessageText:
252//
253// Communication with Core Service failed.
254//
255#define TSS_E_CONNECTION_BROKEN   (UINT32)(TSS_E_BASE + 0x104L)
256
257//
258// MessageId: TSS_E_HASH_INVALID_ALG
259//
260// MessageText:
261//
262// Invalid hash algorithm.
263//
264#define TSS_E_HASH_INVALID_ALG   (UINT32)(TSS_E_BASE + 0x105L)
265
266//
267// MessageId: TSS_E_HASH_INVALID_LENGTH
268//
269// MessageText:
270//
271// Hash length is inconsistent with hash algorithm.
272//
273#define TSS_E_HASH_INVALID_LENGTH   (UINT32)(TSS_E_BASE + 0x106L)
274
275//
276// MessageId: TSS_E_HASH_NO_DATA
277//
278// MessageText:
279//
280// Hash object has no internal hash value.
281//
282#define TSS_E_HASH_NO_DATA    (UINT32)(TSS_E_BASE + 0x107L)
283
284
285//
286// MessageId: TSS_E_INVALID_ATTRIB_FLAG
287//
288// MessageText:
289//
290// Flag value for attrib-functions inconsistent.
291//
292#define TSS_E_INVALID_ATTRIB_FLAG   (UINT32)(TSS_E_BASE + 0x109L)
293
294//
295// MessageId: TSS_E_INVALID_ATTRIB_SUBFLAG
296//
297// MessageText:
298//
299// Subflag value for attrib-functions inconsistent.
300//
301#define TSS_E_INVALID_ATTRIB_SUBFLAG  (UINT32)(TSS_E_BASE + 0x10AL)
302
303//
304// MessageId: TSS_E_INVALID_ATTRIB_DATA
305//
306// MessageText:
307//
308// Data for attrib-functions invalid.
309//
310#define TSS_E_INVALID_ATTRIB_DATA   (UINT32)(TSS_E_BASE + 0x10BL)
311
312//
313// MessageId: TSS_E_INVALID_OBJECT_INITFLAG
314//
315// MessageText:
316//
317// Wrong flag information for object creation.
318//
319// The alternate spelling is supported to be compatible with a typo
320// in the 1.1b header files.
321//
322#define TSS_E_INVALID_OBJECT_INIT_FLAG  (UINT32)(TSS_E_BASE + 0x10CL)
323#define TSS_E_INVALID_OBJECT_INITFLAG   TSS_E_INVALID_OBJECT_INIT_FLAG
324
325//
326// MessageId: TSS_E_NO_PCRS_SET
327//
328// MessageText:
329//
330// No PCR register are selected or set.
331//
332#define TSS_E_NO_PCRS_SET    (UINT32)(TSS_E_BASE + 0x10DL)
333
334//
335// MessageId: TSS_E_KEY_NOT_LOADED
336//
337// MessageText:
338//
339// The addressed key is currently not loaded.
340//
341#define TSS_E_KEY_NOT_LOADED    (UINT32)(TSS_E_BASE + 0x10EL)
342
343//
344// MessageId: TSS_E_KEY_NOT_SET
345//
346// MessageText:
347//
348// No key information is currently available.
349//
350#define TSS_E_KEY_NOT_SET    (UINT32)(TSS_E_BASE + 0x10FL)
351
352//
353// MessageId: TSS_E_VALIDATION_FAILED
354//
355// MessageText:
356//
357// Internal validation of data failed.
358//
359#define TSS_E_VALIDATION_FAILED   (UINT32)(TSS_E_BASE + 0x110L)
360
361//
362// MessageId: TSS_E_TSP_AUTHREQUIRED
363//
364// MessageText:
365//
366// Authorization is required.
367//
368#define TSS_E_TSP_AUTHREQUIRED   (UINT32)(TSS_E_BASE + 0x111L)
369
370//
371// MessageId: TSS_E_TSP_AUTH2REQUIRED
372//
373// MessageText:
374//
375// Multiple authorization is required.
376//
377#define TSS_E_TSP_AUTH2REQUIRED   (UINT32)(TSS_E_BASE + 0x112L)
378
379//
380// MessageId: TSS_E_TSP_AUTHFAIL
381//
382// MessageText:
383//
384// Authorization failed.
385//
386#define TSS_E_TSP_AUTHFAIL    (UINT32)(TSS_E_BASE + 0x113L)
387
388//
389// MessageId: TSS_E_TSP_AUTH2FAIL
390//
391// MessageText:
392//
393// Multiple authorization failed.
394//
395#define TSS_E_TSP_AUTH2FAIL    (UINT32)(TSS_E_BASE + 0x114L)
396
397//
398// MessageId: TSS_E_KEY_NO_MIGRATION_POLICY
399//
400// MessageText:
401//
402// There's no migration policy object set for the addressed key.
403//
404#define TSS_E_KEY_NO_MIGRATION_POLICY  (UINT32)(TSS_E_BASE + 0x115L)
405
406//
407// MessageId: TSS_E_POLICY_NO_SECRET
408//
409// MessageText:
410//
411// No secret information is currently available for the addressed policy object.
412//
413#define TSS_E_POLICY_NO_SECRET   (UINT32)(TSS_E_BASE + 0x116L)
414
415//
416// MessageId: TSS_E_INVALID_OBJ_ACCESS
417//
418// MessageText:
419//
420// The operation failed due to an invalid object status.
421//
422#define TSS_E_INVALID_OBJ_ACCESS   (UINT32)(TSS_E_BASE + 0x117L)
423
424//
425// MessageId: TSS_E_INVALID_ENCSCHEME
426//
427// MessageText:
428//
429//
430//
431#define TSS_E_INVALID_ENCSCHEME   (UINT32)(TSS_E_BASE + 0x118L)
432
433
434//
435// MessageId: TSS_E_INVALID_SIGSCHEME
436//
437// MessageText:
438//
439//
440//
441#define TSS_E_INVALID_SIGSCHEME   (UINT32)(TSS_E_BASE + 0x119L)
442
443//
444// MessageId: TSS_E_ENC_INVALID_LENGTH
445//
446// MessageText:
447//
448//
449//
450#define TSS_E_ENC_INVALID_LENGTH   (UINT32)(TSS_E_BASE + 0x120L)
451
452
453//
454// MessageId: TSS_E_ENC_NO_DATA
455//
456// MessageText:
457//
458//
459//
460#define TSS_E_ENC_NO_DATA    (UINT32)(TSS_E_BASE + 0x121L)
461
462//
463// MessageId: TSS_E_ENC_INVALID_TYPE
464//
465// MessageText:
466//
467//
468//
469#define TSS_E_ENC_INVALID_TYPE   (UINT32)(TSS_E_BASE + 0x122L)
470
471
472//
473// MessageId: TSS_E_INVALID_KEYUSAGE
474//
475// MessageText:
476//
477//
478//
479#define TSS_E_INVALID_KEYUSAGE   (UINT32)(TSS_E_BASE + 0x123L)
480
481//
482// MessageId: TSS_E_VERIFICATION_FAILED
483//
484// MessageText:
485//
486//
487//
488#define TSS_E_VERIFICATION_FAILED   (UINT32)(TSS_E_BASE + 0x124L)
489
490//
491// MessageId: TSS_E_HASH_NO_IDENTIFIER
492//
493// MessageText:
494//
495// Hash algorithm identifier not set.
496//
497#define TSS_E_HASH_NO_IDENTIFIER   (UINT32)(TSS_E_BASE + 0x125L)
498
499//
500// MessageId: TSS_E_INVALID_HANDLE
501//
502// MessageText:
503//
504//  An invalid handle
505//
506#define TSS_E_INVALID_HANDLE    (UINT32)(TSS_E_BASE + 0x126L)
507
508//
509// MessageId: TSS_E_SILENT_CONTEXT
510//
511// MessageText:
512//
513//  A silent context requires user input
514//
515#define TSS_E_SILENT_CONTEXT           (UINT32)(TSS_E_BASE + 0x127L)
516
517//
518// MessageId: TSS_E_EK_CHECKSUM
519//
520// MessageText:
521//
522// TSP is instructed to verify the EK checksum and it does not verify.
523//
524#define TSS_E_EK_CHECKSUM             (UINT32)(TSS_E_BASE + 0x128L)
525
526
527//
528// MessageId: TSS_E_DELGATION_NOTSET
529//
530// MessageText:
531//
532// The Policy object does not have a delegation blob set.
533//
534#define TSS_E_DELEGATION_NOTSET      (UINT32)(TSS_E_BASE + 0x129L)
535
536//
537// MessageId: TSS_E_DELFAMILY_NOTFOUND
538//
539// MessageText:
540//
541// The specified delegation family was not found
542//
543#define TSS_E_DELFAMILY_NOTFOUND       (UINT32)(TSS_E_BASE + 0x130L)
544
545//
546// MessageId: TSS_E_DELFAMILY_ROWEXISTS
547//
548// MessageText:
549//
550// The specified delegation family table row is already in use and
551// the command flags does not allow the TSS to overwrite the existing
552// entry.
553//
554#define TSS_E_DELFAMILY_ROWEXISTS    (UINT32)(TSS_E_BASE + 0x131L)
555
556//
557// MessageId: TSS_E_VERSION_MISMATCH
558//
559// MessageText:
560//
561// The specified delegation family table row is already in use and
562// the command flags does not allow the TSS to overwrite the existing
563// entry.
564//
565#define TSS_E_VERSION_MISMATCH       (UINT32)(TSS_E_BASE + 0x132L)
566
567//
568//  MessageId: TSS_E_DAA_AR_DECRYPTION_ERROR
569//
570//  Decryption of the encrypted pseudonym has failed, due to
571//  either a wrong secret key or a wrong decryption condition.
572//
573#define TSS_E_DAA_AR_DECRYPTION_ERROR             (UINT32)(TSS_E_BASE + 0x133L)
574
575//
576//  MessageId: TSS_E_DAA_AUTHENTICATION_ERROR
577//
578//  The TPM could not be authenticated by the DAA Issuer.
579//
580#define TSS_E_DAA_AUTHENTICATION_ERROR            (UINT32)(TSS_E_BASE + 0x134L)
581
582//
583//  MessageId: TSS_E_DAA_CHALLENGE_RESPONSE_ERROR
584//
585//  DAA Challenge response error.
586//
587#define TSS_E_DAA_CHALLENGE_RESPONSE_ERROR        (UINT32)(TSS_E_BASE + 0x135L)
588
589//
590//  MessageId: TSS_E_DAA_CREDENTIAL_PROOF_ERROR
591//
592//  Verification of the credential TSS_DAA_CRED_ISSUER issued by
593//  the DAA Issuer has failed.
594//
595#define TSS_E_DAA_CREDENTIAL_PROOF_ERROR          (UINT32)(TSS_E_BASE + 0x136L)
596
597//
598//  MessageId: TSS_E_DAA_CREDENTIAL_REQUEST_PROOF_ERROR
599//
600//  Verification of the platform's credential request
601//  TSS_DAA_CREDENTIAL_REQUEST has failed.
602//
603#define TSS_E_DAA_CREDENTIAL_REQUEST_PROOF_ERROR  (UINT32)(TSS_E_BASE + 0x137L)
604
605//
606//  MessageId: TSS_E_DAA_ISSUER_KEY_ERROR
607//
608//  DAA Issuer's authentication key chain could not be verified or
609//  is not correct.
610//
611#define TSS_E_DAA_ISSUER_KEY_ERROR                (UINT32)(TSS_E_BASE + 0x138L)
612
613//
614//  MessageId: TSS_E_DAA_PSEUDONYM_ERROR
615//
616//  While verifying the pseudonym of the TPM, the private key of the
617//  TPM was found on the rogue list.
618//
619#define TSS_E_DAA_PSEUDONYM_ERROR                 (UINT32)(TSS_E_BASE + 0x139L)
620
621//
622//  MessageId: TSS_E_INVALID_RESOURCE
623//
624//  Pointer to memory wrong.
625//
626#define TSS_E_INVALID_RESOURCE                    (UINT32)(TSS_E_BASE + 0x13AL)
627
628//
629//  MessageId: TSS_E_NV_AREA_EXIST
630//
631//  The NV area referenced already exists
632//
633#define TSS_E_NV_AREA_EXIST                       (UINT32)(TSS_E_BASE + 0x13BL)
634
635//
636//  MessageId: TSS_E_NV_AREA_NOT_EXIST
637//
638//  The NV area referenced doesn't exist
639//
640#define TSS_E_NV_AREA_NOT_EXIST                   (UINT32)(TSS_E_BASE + 0x13CL)
641
642//
643//  MessageId: TSS_E_TSP_TRANS_AUTHFAIL
644//
645//  The transport session authorization failed
646//
647#define TSS_E_TSP_TRANS_AUTHFAIL                  (UINT32)(TSS_E_BASE + 0x13DL)
648
649//
650//  MessageId: TSS_E_TSP_TRANS_AUTHREQUIRED
651//
652//  Authorization for transport is required
653//
654#define TSS_E_TSP_TRANS_AUTHREQUIRED              (UINT32)(TSS_E_BASE + 0x13EL)
655
656//
657//  MessageId: TSS_E_TSP_TRANS_NOT_EXCLUSIVE
658//
659//  A command was executed outside of an exclusive transport session.
660//
661#define TSS_E_TSP_TRANS_NOTEXCLUSIVE              (UINT32)(TSS_E_BASE + 0x13FL)
662
663//
664//  MessageId: TSS_E_TSP_TRANS_FAIL
665//
666//  Generic transport protection error.
667//
668#define TSS_E_TSP_TRANS_FAIL                     (UINT32)(TSS_E_BASE + 0x140L)
669
670//
671//  MessageId: TSS_E_TSP_TRANS_NO_PUBKEY
672//
673//  A command could not be executed through a logged transport session
674//  because the command used a key and the key's public key is not
675//  known to the TSP.
676//
677#define TSS_E_TSP_TRANS_NO_PUBKEY                (UINT32)(TSS_E_BASE + 0x141L)
678
679//
680//  MessageId: TSS_E_NO_ACTIVE_COUNTER
681//
682//  The TPM active counter has not been set yet.
683//
684#define TSS_E_NO_ACTIVE_COUNTER                  (UINT32)(TSS_E_BASE + 0x142L)
685
686
687#endif // __TSS_ERROR_H__
688