Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /**
  2.  * \file error.h
  3.  *
  4.  * \brief Error to string translation
  5.  *
  6.  *  Copyright (C) 2006-2010, 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. /**
  31.  * Error code layout.
  32.  *
  33.  * Currently we try to keep all error codes within the negative space of 16
  34.  * bytes signed integers to support all platforms (-0x0000 - -0x8000). In
  35.  * addition we'd like to give two layers of information on the error if
  36.  * possible.
  37.  *
  38.  * For that purpose the error codes are segmented in the following manner:
  39.  *
  40.  * 16 bit error code bit-segmentation
  41.  *
  42.  * 1 bit  - Intentionally not used
  43.  * 3 bits - High level module ID
  44.  * 5 bits - Module-dependent error code
  45.  * 6 bits - Low level module errors
  46.  * 1 bit  - Intentionally not used
  47.  *
  48.  * Low-level module errors (0x007E-0x0002)
  49.  *
  50.  * Module   Nr  Codes assigned
  51.  * MPI       7  0x0002-0x0010
  52.  * GCM       2  0x0012-0x0014
  53.  * BLOWFISH  2  0x0016-0x0018
  54.  * AES       2  0x0020-0x0022
  55.  * CAMELLIA  2  0x0024-0x0026
  56.  * XTEA      1  0x0028-0x0028
  57.  * BASE64    2  0x002A-0x002C
  58.  * PADLOCK   1  0x0030-0x0030
  59.  * DES       1  0x0032-0x0032
  60.  * CTR_DBRG  3  0x0034-0x003A
  61.  * ENTROPY   3  0x003C-0x0040
  62.  * NET      11  0x0042-0x0056
  63.  * ASN1      7  0x0060-0x006C
  64.  * MD2       1  0x0070-0x0070
  65.  * MD4       1  0x0072-0x0072
  66.  * MD5       1  0x0074-0x0074
  67.  * SHA1      1  0x0076-0x0076
  68.  * SHA2      1  0x0078-0x0078
  69.  * SHA4      1  0x007A-0x007A
  70.  * PBKDF2    1  0x007C-0x007C
  71.  *
  72.  * High-level module nr (3 bits - 0x1...-0x8...)
  73.  * Name     ID  Nr of Errors
  74.  * PEM      1   8
  75.  * X509     2   21
  76.  * DHM      3   6
  77.  * RSA      4   9
  78.  * MD       5   4
  79.  * CIPHER   6   5
  80.  * SSL      6   2 (Started from top)
  81.  * SSL      7   31
  82.  *
  83.  * Module dependent error code (5 bits 0x.08.-0x.F8.)
  84.  */
  85.  
  86. #ifdef __cplusplus
  87. extern "C" {
  88. #endif
  89.  
  90. /**
  91.  * \brief Translate a PolarSSL error code into a string representation,
  92.  *        Result is truncated if necessary and always includes a terminating
  93.  *        null byte.
  94.  *
  95.  * \param errnum    error code
  96.  * \param buffer    buffer to place representation in
  97.  * \param buflen    length of the buffer
  98.  */
  99. void error_strerror( int errnum, char *buffer, size_t buflen );
  100.  
  101. #ifdef __cplusplus
  102. }
  103. #endif
  104.  
  105. #endif /* error.h */
  106.