/work/mbedtls-2.28.8/include/mbedtls/error.h
Line | Count | Source (jump to first uncovered line) |
1 | | /** |
2 | | * \file error.h |
3 | | * |
4 | | * \brief Error to string translation |
5 | | */ |
6 | | /* |
7 | | * Copyright The Mbed TLS Contributors |
8 | | * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later |
9 | | */ |
10 | | #ifndef MBEDTLS_ERROR_H |
11 | | #define MBEDTLS_ERROR_H |
12 | | |
13 | | #if !defined(MBEDTLS_CONFIG_FILE) |
14 | | #include "mbedtls/config.h" |
15 | | #else |
16 | | #include MBEDTLS_CONFIG_FILE |
17 | | #endif |
18 | | |
19 | | #include <stddef.h> |
20 | | |
21 | | #if (defined(__ARMCC_VERSION) || defined(_MSC_VER)) && \ |
22 | | !defined(inline) && !defined(__cplusplus) |
23 | | #define inline __inline |
24 | | #endif |
25 | | |
26 | | /** |
27 | | * Error code layout. |
28 | | * |
29 | | * Currently we try to keep all error codes within the negative space of 16 |
30 | | * bits signed integers to support all platforms (-0x0001 - -0x7FFF). In |
31 | | * addition we'd like to give two layers of information on the error if |
32 | | * possible. |
33 | | * |
34 | | * For that purpose the error codes are segmented in the following manner: |
35 | | * |
36 | | * 16 bit error code bit-segmentation |
37 | | * |
38 | | * 1 bit - Unused (sign bit) |
39 | | * 3 bits - High level module ID |
40 | | * 5 bits - Module-dependent error code |
41 | | * 7 bits - Low level module errors |
42 | | * |
43 | | * For historical reasons, low-level error codes are divided in even and odd, |
44 | | * even codes were assigned first, and -1 is reserved for other errors. |
45 | | * |
46 | | * Low-level module errors (0x0002-0x007E, 0x0001-0x007F) |
47 | | * |
48 | | * Module Nr Codes assigned |
49 | | * ERROR 2 0x006E 0x0001 |
50 | | * MPI 7 0x0002-0x0010 |
51 | | * GCM 3 0x0012-0x0014 0x0013-0x0013 |
52 | | * BLOWFISH 3 0x0016-0x0018 0x0017-0x0017 |
53 | | * THREADING 3 0x001A-0x001E |
54 | | * AES 5 0x0020-0x0022 0x0021-0x0025 |
55 | | * CAMELLIA 3 0x0024-0x0026 0x0027-0x0027 |
56 | | * XTEA 2 0x0028-0x0028 0x0029-0x0029 |
57 | | * BASE64 2 0x002A-0x002C |
58 | | * OID 1 0x002E-0x002E 0x000B-0x000B |
59 | | * PADLOCK 1 0x0030-0x0030 |
60 | | * DES 2 0x0032-0x0032 0x0033-0x0033 |
61 | | * CTR_DBRG 4 0x0034-0x003A |
62 | | * ENTROPY 3 0x003C-0x0040 0x003D-0x003F |
63 | | * NET 13 0x0042-0x0052 0x0043-0x0049 |
64 | | * ARIA 4 0x0058-0x005E |
65 | | * ASN1 7 0x0060-0x006C |
66 | | * CMAC 1 0x007A-0x007A |
67 | | * PBKDF2 1 0x007C-0x007C |
68 | | * HMAC_DRBG 4 0x0003-0x0009 |
69 | | * CCM 3 0x000D-0x0011 |
70 | | * ARC4 1 0x0019-0x0019 |
71 | | * MD2 1 0x002B-0x002B |
72 | | * MD4 1 0x002D-0x002D |
73 | | * MD5 1 0x002F-0x002F |
74 | | * RIPEMD160 1 0x0031-0x0031 |
75 | | * SHA1 1 0x0035-0x0035 0x0073-0x0073 |
76 | | * SHA256 1 0x0037-0x0037 0x0074-0x0074 |
77 | | * SHA512 1 0x0039-0x0039 0x0075-0x0075 |
78 | | * CHACHA20 3 0x0051-0x0055 |
79 | | * POLY1305 3 0x0057-0x005B |
80 | | * CHACHAPOLY 2 0x0054-0x0056 |
81 | | * PLATFORM 2 0x0070-0x0072 |
82 | | * |
83 | | * High-level module nr (3 bits - 0x0...-0x7...) |
84 | | * Name ID Nr of Errors |
85 | | * PEM 1 9 |
86 | | * PKCS#12 1 4 (Started from top) |
87 | | * X509 2 20 |
88 | | * PKCS5 2 4 (Started from top) |
89 | | * DHM 3 11 |
90 | | * PK 3 15 (Started from top) |
91 | | * RSA 4 11 |
92 | | * ECP 4 10 (Started from top) |
93 | | * MD 5 5 |
94 | | * HKDF 5 1 (Started from top) |
95 | | * SSL 5 2 (Started from 0x5F00) |
96 | | * CIPHER 6 8 (Started from 0x6080) |
97 | | * SSL 6 24 (Started from top, plus 0x6000) |
98 | | * SSL 7 32 |
99 | | * |
100 | | * Module dependent error code (5 bits 0x.00.-0x.F8.) |
101 | | */ |
102 | | |
103 | | #ifdef __cplusplus |
104 | | extern "C" { |
105 | | #endif |
106 | | |
107 | | /** Generic error */ |
108 | | #define MBEDTLS_ERR_ERROR_GENERIC_ERROR -0x0001 |
109 | | /** This is a bug in the library */ |
110 | 0 | #define MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED -0x006E |
111 | | |
112 | | /** |
113 | | * \brief Combines a high-level and low-level error code together. |
114 | | * |
115 | | * Wrapper macro for mbedtls_error_add(). See that function for |
116 | | * more details. |
117 | | */ |
118 | | #define MBEDTLS_ERROR_ADD(high, low) \ |
119 | 0 | mbedtls_error_add(high, low, __FILE__, __LINE__) |
120 | | |
121 | | #if defined(MBEDTLS_TEST_HOOKS) |
122 | | /** |
123 | | * \brief Testing hook called before adding/combining two error codes together. |
124 | | * Only used when invasive testing is enabled via MBEDTLS_TEST_HOOKS. |
125 | | */ |
126 | | extern void (*mbedtls_test_hook_error_add)(int, int, const char *, int); |
127 | | #endif |
128 | | |
129 | | /** |
130 | | * \brief Combines a high-level and low-level error code together. |
131 | | * |
132 | | * This function can be called directly however it is usually |
133 | | * called via the #MBEDTLS_ERROR_ADD macro. |
134 | | * |
135 | | * While a value of zero is not a negative error code, it is still an |
136 | | * error code (that denotes success) and can be combined with both a |
137 | | * negative error code or another value of zero. |
138 | | * |
139 | | * \note When invasive testing is enabled via #MBEDTLS_TEST_HOOKS, also try to |
140 | | * call \link mbedtls_test_hook_error_add \endlink. |
141 | | * |
142 | | * \param high high-level error code. See error.h for more details. |
143 | | * \param low low-level error code. See error.h for more details. |
144 | | * \param file file where this error code addition occurred. |
145 | | * \param line line where this error code addition occurred. |
146 | | */ |
147 | | static inline int mbedtls_error_add(int high, int low, |
148 | | const char *file, int line) |
149 | 0 | { |
150 | | #if defined(MBEDTLS_TEST_HOOKS) |
151 | | if (*mbedtls_test_hook_error_add != NULL) { |
152 | | (*mbedtls_test_hook_error_add)(high, low, file, line); |
153 | | } |
154 | | #endif |
155 | 0 | (void) file; |
156 | 0 | (void) line; |
157 | |
|
158 | 0 | return high + low; |
159 | 0 | } Unexecuted instantiation: x509.c:mbedtls_error_add Unexecuted instantiation: x509_crl.c:mbedtls_error_add Unexecuted instantiation: x509_crt.c:mbedtls_error_add Unexecuted instantiation: x509write_csr.c:mbedtls_error_add Unexecuted instantiation: x509_create.c:mbedtls_error_add Unexecuted instantiation: aes.c:mbedtls_error_add Unexecuted instantiation: asn1parse.c:mbedtls_error_add Unexecuted instantiation: asn1write.c:mbedtls_error_add Unexecuted instantiation: bignum.c:mbedtls_error_add Unexecuted instantiation: constant_time.c:mbedtls_error_add Unexecuted instantiation: ctr_drbg.c:mbedtls_error_add Unexecuted instantiation: entropy.c:mbedtls_error_add Unexecuted instantiation: entropy_poll.c:mbedtls_error_add Unexecuted instantiation: md.c:mbedtls_error_add Unexecuted instantiation: md5.c:mbedtls_error_add Unexecuted instantiation: oid.c:mbedtls_error_add Unexecuted instantiation: pem.c:mbedtls_error_add Unexecuted instantiation: pk.c:mbedtls_error_add Unexecuted instantiation: pk_wrap.c:mbedtls_error_add Unexecuted instantiation: pkparse.c:mbedtls_error_add Unexecuted instantiation: pkwrite.c:mbedtls_error_add Unexecuted instantiation: ripemd160.c:mbedtls_error_add Unexecuted instantiation: rsa.c:mbedtls_error_add Unexecuted instantiation: sha1.c:mbedtls_error_add Unexecuted instantiation: sha256.c:mbedtls_error_add Unexecuted instantiation: sha512.c:mbedtls_error_add Unexecuted instantiation: des.c:mbedtls_error_add Unexecuted instantiation: ecdsa.c:mbedtls_error_add Unexecuted instantiation: ecp.c:mbedtls_error_add Unexecuted instantiation: ecp_curves.c:mbedtls_error_add Unexecuted instantiation: hmac_drbg.c:mbedtls_error_add Unexecuted instantiation: pkcs12.c:mbedtls_error_add Unexecuted instantiation: pkcs5.c:mbedtls_error_add Unexecuted instantiation: cipher.c:mbedtls_error_add Unexecuted instantiation: cipher_wrap.c:mbedtls_error_add Unexecuted instantiation: gcm.c:mbedtls_error_add Unexecuted instantiation: ccm.c:mbedtls_error_add Unexecuted instantiation: chacha20.c:mbedtls_error_add Unexecuted instantiation: chachapoly.c:mbedtls_error_add Unexecuted instantiation: poly1305.c:mbedtls_error_add |
160 | | |
161 | | /** |
162 | | * \brief Translate an Mbed TLS error code into a string representation. |
163 | | * The result is truncated if necessary and always includes a |
164 | | * terminating null byte. |
165 | | * |
166 | | * \param errnum error code |
167 | | * \param buffer buffer to place representation in |
168 | | * \param buflen length of the buffer |
169 | | */ |
170 | | void mbedtls_strerror(int errnum, char *buffer, size_t buflen); |
171 | | |
172 | | /** |
173 | | * \brief Translate the high-level part of an Mbed TLS error code into a string |
174 | | * representation. |
175 | | * |
176 | | * This function returns a const pointer to an un-modifiable string. The caller |
177 | | * must not try to modify the string. It is intended to be used mostly for |
178 | | * logging purposes. |
179 | | * |
180 | | * \param error_code error code |
181 | | * |
182 | | * \return The string representation of the error code, or \c NULL if the error |
183 | | * code is unknown. |
184 | | */ |
185 | | const char *mbedtls_high_level_strerr(int error_code); |
186 | | |
187 | | /** |
188 | | * \brief Translate the low-level part of an Mbed TLS error code into a string |
189 | | * representation. |
190 | | * |
191 | | * This function returns a const pointer to an un-modifiable string. The caller |
192 | | * must not try to modify the string. It is intended to be used mostly for |
193 | | * logging purposes. |
194 | | * |
195 | | * \param error_code error code |
196 | | * |
197 | | * \return The string representation of the error code, or \c NULL if the error |
198 | | * code is unknown. |
199 | | */ |
200 | | const char *mbedtls_low_level_strerr(int error_code); |
201 | | |
202 | | #ifdef __cplusplus |
203 | | } |
204 | | #endif |
205 | | |
206 | | #endif /* error.h */ |