1/* Licensed to the Apache Software Foundation (ASF) under one or more 2 * contributor license agreements. See the NOTICE file distributed with 3 * this work for additional information regarding copyright ownership. 4 * The ASF licenses this file to You under the Apache License, Version 2.0 5 * (the "License"); you may not use this file except in compliance with 6 * the License. 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 17#ifndef APU_ERRNO_H 18#define APU_ERRNO_H 19 20/** 21 * @file apu_errno.h 22 * @brief APR-Util Error Codes 23 */ 24 25#include "apr.h" 26#include "apr_errno.h" 27 28#ifdef __cplusplus 29extern "C" { 30#endif /* __cplusplus */ 31 32/** 33 * @defgroup apu_errno Error Codes 34 * @ingroup APR_Util 35 * @{ 36 */ 37 38/** 39 * @defgroup APR_Util_Error APR_Util Error Values 40 * <PRE> 41 * <b>APU ERROR VALUES</b> 42 * APR_ENOKEY The key provided was empty or NULL 43 * APR_ENOIV The initialisation vector provided was NULL 44 * APR_EKEYTYPE The key type was not recognised 45 * APR_ENOSPACE The buffer supplied was not big enough 46 * APR_ECRYPT An error occurred while encrypting or decrypting 47 * APR_EPADDING Padding was not supported 48 * APR_EKEYLENGTH The key length was incorrect 49 * APR_ENOCIPHER The cipher provided was not recognised 50 * APR_ENODIGEST The digest provided was not recognised 51 * APR_ENOENGINE The engine provided was not recognised 52 * APR_EINITENGINE The engine could not be initialised 53 * APR_EREINIT Underlying crypto has already been initialised 54 * </PRE> 55 * 56 * <PRE> 57 * <b>APR STATUS VALUES</b> 58 * APR_INCHILD Program is currently executing in the child 59 * </PRE> 60 * @{ 61 */ 62/** @see APR_STATUS_IS_ENOKEY */ 63#define APR_ENOKEY (APR_UTIL_START_STATUS + 1) 64/** @see APR_STATUS_IS_ENOIV */ 65#define APR_ENOIV (APR_UTIL_START_STATUS + 2) 66/** @see APR_STATUS_IS_EKEYTYPE */ 67#define APR_EKEYTYPE (APR_UTIL_START_STATUS + 3) 68/** @see APR_STATUS_IS_ENOSPACE */ 69#define APR_ENOSPACE (APR_UTIL_START_STATUS + 4) 70/** @see APR_STATUS_IS_ECRYPT */ 71#define APR_ECRYPT (APR_UTIL_START_STATUS + 5) 72/** @see APR_STATUS_IS_EPADDING */ 73#define APR_EPADDING (APR_UTIL_START_STATUS + 6) 74/** @see APR_STATUS_IS_EKEYLENGTH */ 75#define APR_EKEYLENGTH (APR_UTIL_START_STATUS + 7) 76/** @see APR_STATUS_IS_ENOCIPHER */ 77#define APR_ENOCIPHER (APR_UTIL_START_STATUS + 8) 78/** @see APR_STATUS_IS_ENODIGEST */ 79#define APR_ENODIGEST (APR_UTIL_START_STATUS + 9) 80/** @see APR_STATUS_IS_ENOENGINE */ 81#define APR_ENOENGINE (APR_UTIL_START_STATUS + 10) 82/** @see APR_STATUS_IS_EINITENGINE */ 83#define APR_EINITENGINE (APR_UTIL_START_STATUS + 11) 84/** @see APR_STATUS_IS_EREINIT */ 85#define APR_EREINIT (APR_UTIL_START_STATUS + 12) 86/** @} */ 87 88/** 89 * @defgroup APU_STATUS_IS Status Value Tests 90 * @warning For any particular error condition, more than one of these tests 91 * may match. This is because platform-specific error codes may not 92 * always match the semantics of the POSIX codes these tests (and the 93 * corresponding APR error codes) are named after. A notable example 94 * are the APR_STATUS_IS_ENOENT and APR_STATUS_IS_ENOTDIR tests on 95 * Win32 platforms. The programmer should always be aware of this and 96 * adjust the order of the tests accordingly. 97 * @{ 98 */ 99 100/** @} */ 101 102/** 103 * @addtogroup APR_Util_Error 104 * @{ 105 */ 106/** 107 * The key was empty or not provided 108 */ 109#define APR_STATUS_IS_ENOKEY(s) ((s) == APR_ENOKEY) 110/** 111 * The initialisation vector was not provided 112 */ 113#define APR_STATUS_IS_ENOIV(s) ((s) == APR_ENOIV) 114/** 115 * The key type was not recognised 116 */ 117#define APR_STATUS_IS_EKEYTYPE(s) ((s) == APR_EKEYTYPE) 118/** 119 * The buffer provided was not big enough 120 */ 121#define APR_STATUS_IS_ENOSPACE(s) ((s) == APR_ENOSPACE) 122/** 123 * An error occurred while encrypting or decrypting 124 */ 125#define APR_STATUS_IS_ECRYPT(s) ((s) == APR_ECRYPT) 126/** 127 * An error occurred while padding 128 */ 129#define APR_STATUS_IS_EPADDING(s) ((s) == APR_EPADDING) 130/** 131 * An error occurred with the key length 132 */ 133#define APR_STATUS_IS_EKEYLENGTH(s) ((s) == APR_EKEYLENGTH) 134/** 135 * The cipher provided was not recognised 136 */ 137#define APR_STATUS_IS_ENOCIPHER(s) ((s) == APR_ENOCIPHER) 138/** 139 * The digest provided was not recognised 140 */ 141#define APR_STATUS_IS_ENODIGEST(s) ((s) == APR_ENODIGEST) 142/** 143 * The engine provided was not recognised 144 */ 145#define APR_STATUS_IS_ENOENGINE(s) ((s) == APR_ENOENGINE) 146/** 147 * The engine could not be initialised 148 */ 149#define APR_STATUS_IS_EINITENGINE(s) ((s) == APR_EINITENGINE) 150/** 151 * Crypto has already been initialised 152 */ 153#define APR_STATUS_IS_EREINIT(s) ((s) == APR_EREINIT) 154/** @} */ 155 156/** 157 * This structure allows the underlying API error codes to be returned 158 * along with plain text error messages that explain to us mere mortals 159 * what really happened. 160 */ 161typedef struct apu_err_t { 162 const char *reason; 163 const char *msg; 164 int rc; 165} apu_err_t; 166 167/** @} */ 168 169#ifdef __cplusplus 170} 171#endif 172 173#endif /* ! APU_ERRNO_H */ 174