PageRenderTime 63ms CodeModel.GetById 58ms app.highlight 2ms RepoModel.GetById 1ms app.codeStats 0ms

/include/polarssl/error.h

https://github.com/arisec91/polarssl
C++ Header | 122 lines | 14 code | 7 blank | 101 comment | 0 complexity | 4dd2b0b468d697b89e26b0b4fcd0d418 MD5 | raw file
  1/**
  2 * \file error.h
  3 *
  4 * \brief Error to string translation
  5 *
  6 *  Copyright (C) 2006-2013, Brainspark B.V.
  7 *
  8 *  This file is part of PolarSSL (http://www.polarssl.org)
  9 *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
 10 *
 11 *  All rights reserved.
 12 *
 13 *  This program is free software; you can redistribute it and/or modify
 14 *  it under the terms of the GNU General Public License as published by
 15 *  the Free Software Foundation; either version 2 of the License, or
 16 *  (at your option) any later version.
 17 *
 18 *  This program is distributed in the hope that it will be useful,
 19 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 20 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 21 *  GNU General Public License for more details.
 22 *
 23 *  You should have received a copy of the GNU General Public License along
 24 *  with this program; if not, write to the Free Software Foundation, Inc.,
 25 *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 26 */
 27#ifndef POLARSSL_ERROR_H
 28#define POLARSSL_ERROR_H
 29
 30#include <string.h>
 31
 32/**
 33 * Error code layout.
 34 *
 35 * Currently we try to keep all error codes within the negative space of 16
 36 * bytes signed integers to support all platforms (-0x0000 - -0x8000). In
 37 * addition we'd like to give two layers of information on the error if
 38 * possible.
 39 *
 40 * For that purpose the error codes are segmented in the following manner:
 41 *
 42 * 16 bit error code bit-segmentation
 43 *
 44 * 1 bit  - Sign bit
 45 * 3 bits - High level module ID
 46 * 5 bits - Module-dependent error code
 47 * 7 bits - Low level module errors
 48 *
 49 * For historical reasons, low-level error codes are divided in even and odd,
 50 * even codes were assigned first, and -1 is reserved for other errors.
 51 *
 52 * Low-level module errors (0x0002-0x007E, 0x0003-0x007F)
 53 *
 54 * Module   Nr  Codes assigned
 55 * MPI       7  0x0002-0x0010
 56 * GCM       2  0x0012-0x0014
 57 * BLOWFISH  2  0x0016-0x0018
 58 * THREADING 3  0x001A-0x001E
 59 * AES       2  0x0020-0x0022
 60 * CAMELLIA  2  0x0024-0x0026
 61 * XTEA      1  0x0028-0x0028
 62 * BASE64    2  0x002A-0x002C
 63 * OID       1  0x002E-0x002E   0x000B-0x000B
 64 * PADLOCK   1  0x0030-0x0030
 65 * DES       1  0x0032-0x0032
 66 * CTR_DBRG  4  0x0034-0x003A
 67 * ENTROPY   3  0x003C-0x0040
 68 * NET      11  0x0042-0x0056
 69 * ENTROPY   1  0x0058-0x0058
 70 * ASN1      7  0x0060-0x006C
 71 * MD2       1  0x0070-0x0070
 72 * MD4       1  0x0072-0x0072
 73 * MD5       1  0x0074-0x0074
 74 * SHA1      1  0x0076-0x0076
 75 * SHA256    1  0x0078-0x0078
 76 * SHA512    1  0x007A-0x007A
 77 * PBKDF2    1  0x007C-0x007C
 78 * RIPEMD160 1  0x007E-0x007E
 79 * HMAC_DRBG 4  0x0003-0x0009
 80 *
 81 * High-level module nr (3 bits - 0x0...-0x7...)
 82 * Name      ID  Nr of Errors
 83 * PEM       1   9
 84 * PKCS#12   1   4 (Started from top)
 85 * X509      2   18
 86 * PK        2   14 (Started from top, plus 0x2000)
 87 * DHM       3   9
 88 * PKCS5     3   4 (Started from top)
 89 * RSA       4   9
 90 * ECP       4   8 (Started from top)
 91 * MD        5   4
 92 * CIPHER    6   6
 93 * SSL       6   9 (Started from top)
 94 * SSL       7   31
 95 *
 96 * Module dependent error code (5 bits 0x.00.-0x.F8.)
 97 */
 98
 99#ifdef __cplusplus
100extern "C" {
101#endif
102
103/**
104 * \brief Translate a PolarSSL error code into a string representation,
105 *        Result is truncated if necessary and always includes a terminating
106 *        null byte.
107 *
108 * \param errnum    error code
109 * \param buffer    buffer to place representation in
110 * \param buflen    length of the buffer
111 */
112void polarssl_strerror( int errnum, char *buffer, size_t buflen );
113
114#if defined(POLARSSL_ERROR_STRERROR_BC)
115void error_strerror( int errnum, char *buffer, size_t buflen );
116#endif
117
118#ifdef __cplusplus
119}
120#endif
121
122#endif /* error.h */