xref: /aosp_15_r20/external/gsc-utils/tpm_generated/error_codes.h (revision 4f2df630800bdcf1d4f0decf95d8a1cb87344f5f)
1*4f2df630SAndroid Build Coastguard Worker // Copyright 2014 The ChromiumOS Authors
2*4f2df630SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*4f2df630SAndroid Build Coastguard Worker // found in the LICENSE file.
4*4f2df630SAndroid Build Coastguard Worker 
5*4f2df630SAndroid Build Coastguard Worker #ifndef TRUNKS_ERROR_CODES_H_
6*4f2df630SAndroid Build Coastguard Worker #define TRUNKS_ERROR_CODES_H_
7*4f2df630SAndroid Build Coastguard Worker 
8*4f2df630SAndroid Build Coastguard Worker #include <string>
9*4f2df630SAndroid Build Coastguard Worker 
10*4f2df630SAndroid Build Coastguard Worker #include "tpm_generated.h"  // For TPM_RC.
11*4f2df630SAndroid Build Coastguard Worker #include "trunks_export.h"
12*4f2df630SAndroid Build Coastguard Worker 
13*4f2df630SAndroid Build Coastguard Worker namespace trunks {
14*4f2df630SAndroid Build Coastguard Worker 
15*4f2df630SAndroid Build Coastguard Worker // Use the TPM_RC type but with different layer bits (12 - 15). Choose the layer
16*4f2df630SAndroid Build Coastguard Worker // value arbitrarily. Currently TSS2 uses 9 for TCTI and 8 for SAPI.
17*4f2df630SAndroid Build Coastguard Worker // TCTI and SAPI error codes taken from
18*4f2df630SAndroid Build Coastguard Worker // http://www.trustedcomputinggroup.org/resources/
19*4f2df630SAndroid Build Coastguard Worker // tss_system_level_api_and_tpm_command_transmission_interface_specification
20*4f2df630SAndroid Build Coastguard Worker const TPM_RC kTrunksErrorBase = (7 << 12);
21*4f2df630SAndroid Build Coastguard Worker const TPM_RC kTctiErrorBase = (8 << 12);
22*4f2df630SAndroid Build Coastguard Worker const TPM_RC kSapiErrorBase = (9 << 12);
23*4f2df630SAndroid Build Coastguard Worker const TPM_RC kResourceManagerTpmErrorBase = (11 << 12);
24*4f2df630SAndroid Build Coastguard Worker const TPM_RC kResourceManagerErrorBase = (12 << 12);
25*4f2df630SAndroid Build Coastguard Worker 
26*4f2df630SAndroid Build Coastguard Worker // Note that the trunks error layer is shared with the unified error code in
27*4f2df630SAndroid Build Coastguard Worker // TPMError and related classes, see libhwsec/error/tpm_error.h for more info.
28*4f2df630SAndroid Build Coastguard Worker // From the perspective of trunks, trunks can only use kTrunksErrorBase + 0 up
29*4f2df630SAndroid Build Coastguard Worker // to kTrunksErrorBase + 1023. The other 3072 error code is reserved for use by
30*4f2df630SAndroid Build Coastguard Worker // the TPMError and related classes.
31*4f2df630SAndroid Build Coastguard Worker const TPM_RC TRUNKS_RC_AUTHORIZATION_FAILED = kTrunksErrorBase + 1;
32*4f2df630SAndroid Build Coastguard Worker const TPM_RC TRUNKS_RC_ENCRYPTION_FAILED = kTrunksErrorBase + 2;
33*4f2df630SAndroid Build Coastguard Worker const TPM_RC TRUNKS_RC_READ_ERROR = kTrunksErrorBase + 3;
34*4f2df630SAndroid Build Coastguard Worker const TPM_RC TRUNKS_RC_WRITE_ERROR = kTrunksErrorBase + 4;
35*4f2df630SAndroid Build Coastguard Worker const TPM_RC TRUNKS_RC_IPC_ERROR = kTrunksErrorBase + 5;
36*4f2df630SAndroid Build Coastguard Worker const TPM_RC TRUNKS_RC_SESSION_SETUP_ERROR = kTrunksErrorBase + 6;
37*4f2df630SAndroid Build Coastguard Worker const TPM_RC TRUNKS_RC_INVALID_TPM_CONFIGURATION = kTrunksErrorBase + 7;
38*4f2df630SAndroid Build Coastguard Worker const TPM_RC TRUNKS_RC_PARSE_ERROR = kTrunksErrorBase + 8;
39*4f2df630SAndroid Build Coastguard Worker 
40*4f2df630SAndroid Build Coastguard Worker const TPM_RC TCTI_RC_TRY_AGAIN = kTctiErrorBase + 1;
41*4f2df630SAndroid Build Coastguard Worker const TPM_RC TCTI_RC_GENERAL_FAILURE = kTctiErrorBase + 2;
42*4f2df630SAndroid Build Coastguard Worker const TPM_RC TCTI_RC_BAD_CONTEXT = kTctiErrorBase + 3;
43*4f2df630SAndroid Build Coastguard Worker const TPM_RC TCTI_RC_WRONG_ABI_VERSION = kTctiErrorBase + 4;
44*4f2df630SAndroid Build Coastguard Worker const TPM_RC TCTI_RC_NOT_IMPLEMENTED = kTctiErrorBase + 5;
45*4f2df630SAndroid Build Coastguard Worker const TPM_RC TCTI_RC_BAD_PARAMETER = kTctiErrorBase + 6;
46*4f2df630SAndroid Build Coastguard Worker const TPM_RC TCTI_RC_INSUFFICIENT_BUFFER = kTctiErrorBase + 7;
47*4f2df630SAndroid Build Coastguard Worker const TPM_RC TCTI_RC_NO_CONNECTION = kTctiErrorBase + 8;
48*4f2df630SAndroid Build Coastguard Worker const TPM_RC TCTI_RC_DRIVER_NOT_FOUND = kTctiErrorBase + 9;
49*4f2df630SAndroid Build Coastguard Worker const TPM_RC TCTI_RC_DRIVERINFO_NOT_FOUND = kTctiErrorBase + 10;
50*4f2df630SAndroid Build Coastguard Worker const TPM_RC TCTI_RC_NO_RESPONSE = kTctiErrorBase + 11;
51*4f2df630SAndroid Build Coastguard Worker const TPM_RC TCTI_RC_BAD_VALUE = kTctiErrorBase + 12;
52*4f2df630SAndroid Build Coastguard Worker 
53*4f2df630SAndroid Build Coastguard Worker const TPM_RC SAPI_RC_INVALID_SESSIONS = kSapiErrorBase + 1;
54*4f2df630SAndroid Build Coastguard Worker const TPM_RC SAPI_RC_ABI_MISMATCH = kSapiErrorBase + 2;
55*4f2df630SAndroid Build Coastguard Worker const TPM_RC SAPI_RC_INSUFFICIENT_BUFFER = kSapiErrorBase + 3;
56*4f2df630SAndroid Build Coastguard Worker const TPM_RC SAPI_RC_BAD_PARAMETER = kSapiErrorBase + 4;
57*4f2df630SAndroid Build Coastguard Worker const TPM_RC SAPI_RC_BAD_SEQUENCE = kSapiErrorBase + 5;
58*4f2df630SAndroid Build Coastguard Worker const TPM_RC SAPI_RC_NO_DECRYPT_PARAM = kSapiErrorBase + 6;
59*4f2df630SAndroid Build Coastguard Worker const TPM_RC SAPI_RC_NO_ENCRYPT_PARAM = kSapiErrorBase + 7;
60*4f2df630SAndroid Build Coastguard Worker const TPM_RC SAPI_RC_NO_RESPONSE_RECEIVED = kSapiErrorBase + 8;
61*4f2df630SAndroid Build Coastguard Worker const TPM_RC SAPI_RC_BAD_SIZE = kSapiErrorBase + 9;
62*4f2df630SAndroid Build Coastguard Worker const TPM_RC SAPI_RC_CORRUPTED_DATA = kSapiErrorBase + 10;
63*4f2df630SAndroid Build Coastguard Worker const TPM_RC SAPI_RC_INSUFFICIENT_CONTEXT = kSapiErrorBase + 11;
64*4f2df630SAndroid Build Coastguard Worker const TPM_RC SAPI_RC_INSUFFICIENT_RESPONSE = kSapiErrorBase + 12;
65*4f2df630SAndroid Build Coastguard Worker const TPM_RC SAPI_RC_INCOMPATIBLE_TCTI = kSapiErrorBase + 13;
66*4f2df630SAndroid Build Coastguard Worker const TPM_RC SAPI_RC_MALFORMED_RESPONSE = kSapiErrorBase + 14;
67*4f2df630SAndroid Build Coastguard Worker const TPM_RC SAPI_RC_BAD_TCTI_STRUCTURE = kSapiErrorBase + 15;
68*4f2df630SAndroid Build Coastguard Worker const TPM_RC SAPI_RC_NO_CONNECTION = kSapiErrorBase + 16;
69*4f2df630SAndroid Build Coastguard Worker 
70*4f2df630SAndroid Build Coastguard Worker // Returns a description of |error|.
71*4f2df630SAndroid Build Coastguard Worker TRUNKS_EXPORT std::string GetErrorString(TPM_RC error);
72*4f2df630SAndroid Build Coastguard Worker 
73*4f2df630SAndroid Build Coastguard Worker // Strips the P and N bits from a 'format one' error. If the given error code
74*4f2df630SAndroid Build Coastguard Worker // is not a format one error, it is returned as is. The error that is returned
75*4f2df630SAndroid Build Coastguard Worker // can be compared to TPM_RC_* constant values. See TPM 2.0 Part 2 Section 6.6
76*4f2df630SAndroid Build Coastguard Worker // for details on format one errors.
77*4f2df630SAndroid Build Coastguard Worker TRUNKS_EXPORT TPM_RC GetFormatOneError(TPM_RC error);
78*4f2df630SAndroid Build Coastguard Worker 
79*4f2df630SAndroid Build Coastguard Worker // Creates a well-formed response with the given |error_code|.
80*4f2df630SAndroid Build Coastguard Worker TRUNKS_EXPORT std::string CreateErrorResponse(TPM_RC error_code);
81*4f2df630SAndroid Build Coastguard Worker 
82*4f2df630SAndroid Build Coastguard Worker // Retrieves response code, |rc|, from the response string, |response|.
83*4f2df630SAndroid Build Coastguard Worker // Return TPM_RC_SUCCESS iff success.
84*4f2df630SAndroid Build Coastguard Worker TRUNKS_EXPORT TPM_RC GetResponseCode(const std::string& response, TPM_RC& rc);
85*4f2df630SAndroid Build Coastguard Worker 
86*4f2df630SAndroid Build Coastguard Worker }  // namespace trunks
87*4f2df630SAndroid Build Coastguard Worker 
88*4f2df630SAndroid Build Coastguard Worker #endif  // TRUNKS_ERROR_CODES_H_
89