1 /*############################################################################
2   # Copyright 2016-2017 Intel Corporation
3   #
4   # Licensed under the Apache License, Version 2.0 (the "License");
5   # you may not use this file except in compliance with the License.
6   # You may obtain a copy of the License at
7   #
8   #     http://www.apache.org/licenses/LICENSE-2.0
9   #
10   # Unless required by applicable law or agreed to in writing, software
11   # distributed under the License is distributed on an "AS IS" BASIS,
12   # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   # See the License for the specific language governing permissions and
14   # limitations under the License.
15   ############################################################################*/
16 #ifndef EPID_COMMON_ERRORS_H_
17 #define EPID_COMMON_ERRORS_H_
18 /*!
19  * \file
20  * \brief Error reporting.
21 */
22 
23 /// Error reporting interface.
24 /*!
25  \defgroup ErrorCodes errors
26  This module defines the return status type. It also provides tools for
27  interactions with status values, such as converting them to a string.
28 
29  \ingroup EpidCommon
30   @{
31 */
32 
33 /// Return status for SDK functions.
34 /*!
35   Convention for status values is as follows:
36   - Zero indicates "success"
37   - Any positive number indicates "success with status"
38   - Any negative number indicates "failure"
39 */
40 typedef enum {
41   kEpidNoErr = 0,                   //!< no error
42   kEpidSigValid = 0,                //!< Signature is valid
43   kEpidSigInvalid = 1,              //!< Signature is invalid
44   kEpidSigRevokedInGroupRl = 2,     //!< Signature revoked in GroupRl
45   kEpidSigRevokedInPrivRl = 3,      //!< Signature revoked in PrivRl
46   kEpidSigRevokedInSigRl = 4,       //!< Signature revoked in SigRl
47   kEpidSigRevokedInVerifierRl = 5,  //!< Signature revoked in VerifierRl
48   kEpidErr = -999,                  //!< unspecified error
49   kEpidNotImpl,                     //!< not implemented error
50   kEpidBadArgErr,                   //!< incorrect arg to function
51   kEpidNoMemErr,                    //!< not enough memory for the operation
52   kEpidMemAllocErr,   //!< insufficient memory allocated for operation
53   kEpidMathErr,       //!< internal math error
54   kEpidDivByZeroErr,  //!< an attempt to divide by zero
55   kEpidUnderflowErr,  //!< a value became less than minimum supported level
56   kEpidHashAlgorithmNotSupported,  //!< unsupported hash algorithm type
57   kEpidRandMaxIterErr,  //!< reached max iteration for random number generation
58   kEpidDuplicateErr,    //!< argument would add duplicate entry
59   kEpidInconsistentBasenameSetErr,    //!< set basename conflicts with arguments
60   kEpidMathQuadraticNonResidueError,  //!< quadratic Non-Residue Error
61   kEpidOutOfSequenceError,  //!< operation was performed out of sequence
62 } EpidStatus;
63 
64 /// Returns string representation of error code.
65 /*!
66  \param e
67  The status value.
68 
69  \returns The string describing the status.
70 */
71 char const* EpidStatusToString(EpidStatus e);
72 
73 /*! @} */
74 #endif  // EPID_COMMON_ERRORS_H_
75