1*62c56f98SSadaf Ebrahimi /* 2*62c56f98SSadaf Ebrahimi * Copyright The Mbed TLS Contributors 3*62c56f98SSadaf Ebrahimi * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 4*62c56f98SSadaf Ebrahimi */ 5*62c56f98SSadaf Ebrahimi 6*62c56f98SSadaf Ebrahimi /** 7*62c56f98SSadaf Ebrahimi * \file mps_error.h 8*62c56f98SSadaf Ebrahimi * 9*62c56f98SSadaf Ebrahimi * \brief Error codes used by MPS 10*62c56f98SSadaf Ebrahimi */ 11*62c56f98SSadaf Ebrahimi 12*62c56f98SSadaf Ebrahimi #ifndef MBEDTLS_MPS_ERROR_H 13*62c56f98SSadaf Ebrahimi #define MBEDTLS_MPS_ERROR_H 14*62c56f98SSadaf Ebrahimi 15*62c56f98SSadaf Ebrahimi 16*62c56f98SSadaf Ebrahimi /* TODO: The error code allocation needs to be revisited: 17*62c56f98SSadaf Ebrahimi * 18*62c56f98SSadaf Ebrahimi * - Should we make (some of) the MPS Reader error codes public? 19*62c56f98SSadaf Ebrahimi * If so, we need to adjust MBEDTLS_MPS_READER_MAKE_ERROR() to hit 20*62c56f98SSadaf Ebrahimi * a gap in the Mbed TLS public error space. 21*62c56f98SSadaf Ebrahimi * If not, we have to make sure we don't forward those errors 22*62c56f98SSadaf Ebrahimi * at the level of the public API -- no risk at the moment as 23*62c56f98SSadaf Ebrahimi * long as MPS is an experimental component not accessible from 24*62c56f98SSadaf Ebrahimi * public API. 25*62c56f98SSadaf Ebrahimi */ 26*62c56f98SSadaf Ebrahimi 27*62c56f98SSadaf Ebrahimi /** 28*62c56f98SSadaf Ebrahimi * \name SECTION: MPS general error codes 29*62c56f98SSadaf Ebrahimi * 30*62c56f98SSadaf Ebrahimi * \{ 31*62c56f98SSadaf Ebrahimi */ 32*62c56f98SSadaf Ebrahimi 33*62c56f98SSadaf Ebrahimi #ifndef MBEDTLS_MPS_ERR_BASE 34*62c56f98SSadaf Ebrahimi #define MBEDTLS_MPS_ERR_BASE (0) 35*62c56f98SSadaf Ebrahimi #endif 36*62c56f98SSadaf Ebrahimi 37*62c56f98SSadaf Ebrahimi #define MBEDTLS_MPS_MAKE_ERROR(code) \ 38*62c56f98SSadaf Ebrahimi (-(MBEDTLS_MPS_ERR_BASE | (code))) 39*62c56f98SSadaf Ebrahimi 40*62c56f98SSadaf Ebrahimi #define MBEDTLS_ERR_MPS_OPERATION_UNEXPECTED MBEDTLS_MPS_MAKE_ERROR(0x1) 41*62c56f98SSadaf Ebrahimi #define MBEDTLS_ERR_MPS_INTERNAL_ERROR MBEDTLS_MPS_MAKE_ERROR(0x2) 42*62c56f98SSadaf Ebrahimi 43*62c56f98SSadaf Ebrahimi /* \} name SECTION: MPS general error codes */ 44*62c56f98SSadaf Ebrahimi 45*62c56f98SSadaf Ebrahimi /** 46*62c56f98SSadaf Ebrahimi * \name SECTION: MPS Reader error codes 47*62c56f98SSadaf Ebrahimi * 48*62c56f98SSadaf Ebrahimi * \{ 49*62c56f98SSadaf Ebrahimi */ 50*62c56f98SSadaf Ebrahimi 51*62c56f98SSadaf Ebrahimi #ifndef MBEDTLS_MPS_READER_ERR_BASE 52*62c56f98SSadaf Ebrahimi #define MBEDTLS_MPS_READER_ERR_BASE (1 << 8) 53*62c56f98SSadaf Ebrahimi #endif 54*62c56f98SSadaf Ebrahimi 55*62c56f98SSadaf Ebrahimi #define MBEDTLS_MPS_READER_MAKE_ERROR(code) \ 56*62c56f98SSadaf Ebrahimi (-(MBEDTLS_MPS_READER_ERR_BASE | (code))) 57*62c56f98SSadaf Ebrahimi 58*62c56f98SSadaf Ebrahimi /*! An attempt to reclaim the data buffer from a reader failed because 59*62c56f98SSadaf Ebrahimi * the user hasn't yet read and committed all of it. */ 60*62c56f98SSadaf Ebrahimi #define MBEDTLS_ERR_MPS_READER_DATA_LEFT MBEDTLS_MPS_READER_MAKE_ERROR(0x1) 61*62c56f98SSadaf Ebrahimi 62*62c56f98SSadaf Ebrahimi /*! An invalid argument was passed to the reader. */ 63*62c56f98SSadaf Ebrahimi #define MBEDTLS_ERR_MPS_READER_INVALID_ARG MBEDTLS_MPS_READER_MAKE_ERROR(0x2) 64*62c56f98SSadaf Ebrahimi 65*62c56f98SSadaf Ebrahimi /*! An attempt to move a reader to consuming mode through mbedtls_mps_reader_feed() 66*62c56f98SSadaf Ebrahimi * after pausing failed because the provided data is not sufficient to serve the 67*62c56f98SSadaf Ebrahimi * read requests that led to the pausing. */ 68*62c56f98SSadaf Ebrahimi #define MBEDTLS_ERR_MPS_READER_NEED_MORE MBEDTLS_MPS_READER_MAKE_ERROR(0x3) 69*62c56f98SSadaf Ebrahimi 70*62c56f98SSadaf Ebrahimi /*! A get request failed because not enough data is available in the reader. */ 71*62c56f98SSadaf Ebrahimi #define MBEDTLS_ERR_MPS_READER_OUT_OF_DATA MBEDTLS_MPS_READER_MAKE_ERROR(0x4) 72*62c56f98SSadaf Ebrahimi 73*62c56f98SSadaf Ebrahimi /*!< A get request after pausing and reactivating the reader failed because 74*62c56f98SSadaf Ebrahimi * the request is not in line with the request made prior to pausing. The user 75*62c56f98SSadaf Ebrahimi * must not change it's 'strategy' after pausing and reactivating a reader. */ 76*62c56f98SSadaf Ebrahimi #define MBEDTLS_ERR_MPS_READER_INCONSISTENT_REQUESTS MBEDTLS_MPS_READER_MAKE_ERROR(0x5) 77*62c56f98SSadaf Ebrahimi 78*62c56f98SSadaf Ebrahimi /*! An attempt to reclaim the data buffer from a reader failed because the reader 79*62c56f98SSadaf Ebrahimi * has no accumulator it can use to backup the data that hasn't been processed. */ 80*62c56f98SSadaf Ebrahimi #define MBEDTLS_ERR_MPS_READER_NEED_ACCUMULATOR MBEDTLS_MPS_READER_MAKE_ERROR(0x6) 81*62c56f98SSadaf Ebrahimi 82*62c56f98SSadaf Ebrahimi /*! An attempt to reclaim the data buffer from a reader failed because the 83*62c56f98SSadaf Ebrahimi * accumulator passed to the reader is not large enough to hold both the 84*62c56f98SSadaf Ebrahimi * data that hasn't been processed and the excess of the last read-request. */ 85*62c56f98SSadaf Ebrahimi #define MBEDTLS_ERR_MPS_READER_ACCUMULATOR_TOO_SMALL MBEDTLS_MPS_READER_MAKE_ERROR(0x7) 86*62c56f98SSadaf Ebrahimi 87*62c56f98SSadaf Ebrahimi /* \} name SECTION: MPS Reader error codes */ 88*62c56f98SSadaf Ebrahimi 89*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_MPS_ERROR_H */ 90