1/* Copyright (c) (2017-2022) Apple Inc. All rights reserved.
2 *
3 * corecrypto is licensed under Apple Inc.’s Internal Use License Agreement (which
4 * is contained in the License.txt file distributed with corecrypto) and only to
5 * people who accept that license. IMPORTANT: Any license rights granted to you by
6 * Apple Inc. (if any) are limited to internal use within your organization only on
7 * devices and computers you own or control, for the sole purpose of verifying the
8 * security characteristics and correct functioning of the Apple Software. You may
9 * not, directly or indirectly, redistribute the Apple Software or any portions thereof.
10 */
11
12#ifndef _CORECRYPTO_CC_ERROR_H_
13#define _CORECRYPTO_CC_ERROR_H_
14
15enum {
16 CCERR_OK = 0,
17
18 /* the default error code */
19 CCERR_INTERNAL = -1,
20
21 CCERR_INTEGRITY = -2,
22
23 CCERR_DEVICE = -3,
24 CCERR_INTERRUPTS = -4,
25 CCERR_CRYPTO_CONFIG = -5,
26 CCERR_PERMS = -6,
27 CCERR_PARAMETER = -7,
28 CCERR_MEMORY = -8,
29 CCERR_FILEDESC = -9,
30 CCERR_OUT_OF_ENTROPY = -10,
31 CCERR_ATFORK = -11,
32 CCERR_OVERFLOW = -12,
33
34 CCERR_MEMORY_ALLOC_FAIL = -13,
35
36 CCEC_GENERATE_KEY_DEFAULT_ERR = -14,
37 CCEC_GENERATE_KEY_TOO_MANY_TRIES = -15,
38 CCEC_GENERATE_KEY_MULT_FAIL = -16,
39 CCEC_GENERATE_KEY_AFF_FAIL = -17,
40 CCEC_GENERATE_KEY_CONSISTENCY = -18,
41 CCEC_GENERATE_NOT_ON_CURVE = -19,
42 CCEC_GENERATE_NOT_ENOUGH_ENTROPY = -20,
43 CCEC_GENERATE_NOT_SUPPORTED = -21,
44 CCEC_GENERATE_INVALID_INPUT = -22,
45
46 // Program error: buffer too small or encrypted message is too small
47 CCRSA_INVALID_INPUT = -23,
48 // Invalid crypto configuration: Hash length versus RSA key size
49 CCRSA_INVALID_CONFIG = -24,
50 CCRSA_ENCODING_ERROR = -25,
51 CCRSA_DECODING_ERROR = -26,
52
53 // The data is invalid (we won't say more for security)
54 CCRSA_PRIVATE_OP_ERROR = -27,
55 CCRSA_KEY_ERROR = -28,
56
57 // Key generation specific
58 CCRSA_KEYGEN_PRIME_NOT_FOUND = -29,
59 CCRSA_KEYGEN_PRIME_NEED_NEW_SEED = -30,
60 CCRSA_KEYGEN_PRIME_TOO_MANY_ITERATIONS = -31,
61 CCRSA_KEYGEN_PRIME_SEED_GENERATION_ERROR = -32,
62 CCRSA_KEYGEN_MODULUS_CRT_INV_ERROR = -33,
63 CCRSA_KEYGEN_NEXT_PRIME_ERROR = -34,
64 CCRSA_KEYGEN_SEED_X_ERROR = -35,
65 CCRSA_KEYGEN_SEED_r_ERROR = -36,
66 CCRSA_KEYGEN_KEYGEN_CONSISTENCY_FAIL = -37,
67 CCRSA_KEYGEN_R1R2_SIZE_ERROR = -38,
68 CCRSA_KEYGEN_PQ_DELTA_ERROR = -39,
69
70 CCRSA_FIPS_KEYGEN_DISABLED = -40,
71
72 CCZP_INV_ERROR = -41,
73 CCZP_INV_NO_INVERSE = -42,
74 CCZP_INV_INVALID_INPUT = -43,
75
76 CCZ_INVALID_INPUT_ERROR = -44,
77 CCZ_INVALID_RADIX_ERROR = -45,
78
79 CCDH_ERROR_DEFAULT = -46,
80 CCDH_GENERATE_KEY_TOO_MANY_TRIES = -47,
81 CCDH_NOT_SUPPORTED_CONFIGURATION = -48,
82 CCDH_SAFETY_CHECK = -49,
83 CCDH_PUBLIC_KEY_MISSING = -50,
84 CCDH_INVALID_DOMAIN_PARAMETER = -51,
85 CCDH_INVALID_INPUT = -52,
86 CCDH_DOMAIN_PARAMETER_MISMATCH = -53,
87 CCDH_GENERATE_KEY_CONSISTENCY = -54,
88
89 CCSRP_ERROR_DEFAULT = -55,
90 CCSRP_GENERATE_KEY_TOO_MANY_TRIES = -56,
91 CCSRP_NOT_SUPPORTED_CONFIGURATION = -57,
92 CCSRP_SAFETY_CHECK = -58,
93 CCSRP_PUBLIC_KEY_MISSING = -59,
94 CCSRP_INVALID_DOMAIN_PARAMETER = -60,
95
96 CCDRBG_STATUS_ERROR = -61,
97 CCDRBG_STATUS_NEED_RESEED = -62,
98 CCDRBG_STATUS_PARAM_ERROR = -63,
99 // If this value is returned, the caller must abort or panic the process for
100 // security reasons. For example in the case of catastrophic error in
101 // http://csrc.nist.gov/publications/drafts/800-90/sp800_90a_r1_draft.pdf
102 // ccdrbg calls abort() or panic(), if they are available in the system.
103 CCDRBG_STATUS_ABORT = -64,
104
105 CCKPRNG_NEED_ENTROPY = -65,
106 CCKPRNG_ABORT = -66,
107
108 CCMODE_INVALID_INPUT = -67,
109 CCMODE_INVALID_CALL_SEQUENCE = -68,
110 CCMODE_INTEGRITY_FAILURE = -69,
111 CCMODE_NOT_SUPPORTED = -70,
112 CCMODE_INTERNAL_ERROR = -71,
113
114 // Configuration or unexpected issue
115 CCPOST_GENERIC_FAILURE = -72,
116 CCPOST_LIBRARY_ERROR = -73,
117 CCPOST_INTEGRITY_ERROR = -74,
118 // Output of the algo is not as expected
119 CCPOST_KAT_FAILURE = -75,
120
121 CCKPRNG_SEEDFILE_OPEN = -76,
122 CCKPRNG_SEEDFILE_READ = -78,
123 CCKPRNG_SEEDFILE_WRITE = -79,
124 CCKPRNG_SEEDFILE_CHMOD = -80,
125 CCKPRNG_SEEDFILE_CHOWN = -81,
126 CCKPRNG_RANDOMDEV_OPEN = -82,
127 CCKPRNG_RANDOMDEV_WRITE = -83,
128 CCKPRNG_GETENTROPY = -84,
129
130 CCSAE_HUNTPECK_EXCEEDED_MAX_TRIALS = -85,
131
132 CCERR_CALL_SEQUENCE = -86,
133
134 CCVRF_POINT_DECODE_FAILURE = -87,
135 CCVRF_POINT_INVALID_PUBLIC_KEY = -88,
136 CCVRF_VERIFY_FAILURE = -89,
137
138 // Error codes for Authenticated Encryption Modes
139 CCMODE_TAG_LENGTH_REQUEST_TOO_LONG = -100,
140 CCMODE_TAG_LENGTH_TOO_SHORT = -101,
141 CCMODE_NONCE_EMPTY = -102,
142 CCMODE_AD_EMPTY = -103,
143 CCMODE_DECRYPTION_OR_VERIFICATION_ERR=-104,
144 CCMODE_BUFFER_OUT_IN_OVERLAP = -105,
145
146 // Error codes for Secret Sharing
147 CCSS_ELEMENT_TOO_LARGE_FOR_FIELD = -120,
148 CCSS_NOT_ENOUGH_SHARES = -121,
149 CCSS_TOO_MANY_SHARES = -122,
150 CCSS_IMPROPER_DEGREE = -123,
151 CCSS_TWO_SHARES_FOR_SAME_X = -124,
152 CCSS_THRESHOLD_NOT_LARGE_ENOUGH = -125,
153 CCSS_SHARE_BAG_FULL = -126,
154 CCSS_SHARE_ALREADY_PRESENT_IN_SHARE_BAG = -127,
155 CCSS_THRESHOLD_LARGER_OR_EQUAL_TO_FIELD = -128,
156 CCSS_TOO_MANY_SHARES_REQUESTED = -129,
157 CCSS_FIELD_MISMATCH = -130,
158 CCSS_INDEX_OUT_OF_RANGE = -131,
159
160 CCSAE_NOT_ENOUGH_COMMIT_PARTIAL_CALLS = -132,
161 CCSAE_GENERATE_COMMIT_CALL_AGAIN = -133,
162
163 CCERR_VALID_SIGNATURE = CCERR_OK,
164 CCERR_INVALID_SIGNATURE = -146,
165
166 CCERR_IOSERVICE_GETMATCHING = -147,
167 CCERR_IOSERVICE_OPEN = -148,
168 CCERR_IOCONNECT_CALL = -149,
169
170 CCEC_KEY_CANNOT_BE_UNIT = -160,
171 CCEC_COMPRESSED_POINT_ENCODING_ERROR = -161,
172
173 CCERR_RNG_NOT_SEEDED = -162,
174
175 CCERR_BUFFER_TOO_SMALL = -163,
176
177 CCERR_XTS_KEYS_EQUAL = -164,
178
179 CCERR_RETRY = -165,
180
181 CCDH_GP_P_NOTPRIME = -166,
182 CCDH_GP_Q_NOTPRIME = -167,
183 CCDH_GP_NONSAFE_PRIME = -168,
184
185 // -169, // deprecated
186
187 CCEC_POINT_CANNOT_BE_UNIT = CCEC_KEY_CANNOT_BE_UNIT,
188 CCEC_UNCOMPRESSED_POINT_ENCODING_ERROR = -170,
189 CCEC_HYBRID_POINT_ENCODING_ERROR = -171,
190 CCEC_COMPACT_POINT_ENCODING_ERROR = -172,
191
192 CCERR_NOT_SUPPORTED = -173,
193
194 // Always add error codes above this line, and always keep
195 // their value greater than the value of CCERR_MIN.
196 CCERR_MIN = -255,
197};
198
199#define CCDRBG_STATUS_OK CCERR_OK
200#define CCKPRNG_OK CCERR_OK
201
202#endif /* _CORECRYPTO_CC_ERROR_H_ */
203