Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /**
  2.  * \file error.h
  3.  *
  4.  * \brief Error to string translation
  5.  */
  6. /*
  7.  *  Copyright (C) 2006-2018, ARM Limited, All Rights Reserved
  8.  *  SPDX-License-Identifier: GPL-2.0
  9.  *
  10.  *  This program is free software; you can redistribute it and/or modify
  11.  *  it under the terms of the GNU General Public License as published by
  12.  *  the Free Software Foundation; either version 2 of the License, or
  13.  *  (at your option) any later version.
  14.  *
  15.  *  This program is distributed in the hope that it will be useful,
  16.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  *  GNU General Public License for more details.
  19.  *
  20.  *  You should have received a copy of the GNU General Public License along
  21.  *  with this program; if not, write to the Free Software Foundation, Inc.,
  22.  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  23.  *
  24.  *  This file is part of mbed TLS (https://tls.mbed.org)
  25.  */
  26. #ifndef MBEDTLS_ERROR_H
  27. #define MBEDTLS_ERROR_H
  28.  
  29. #if !defined(MBEDTLS_CONFIG_FILE)
  30. #include "config.h"
  31. #else
  32. #include MBEDTLS_CONFIG_FILE
  33. #endif
  34.  
  35. #include <stddef.h>
  36.  
  37. /**
  38.  * Error code layout.
  39.  *
  40.  * Currently we try to keep all error codes within the negative space of 16
  41.  * bits signed integers to support all platforms (-0x0001 - -0x7FFF). In
  42.  * addition we'd like to give two layers of information on the error if
  43.  * possible.
  44.  *
  45.  * For that purpose the error codes are segmented in the following manner:
  46.  *
  47.  * 16 bit error code bit-segmentation
  48.  *
  49.  * 1 bit  - Unused (sign bit)
  50.  * 3 bits - High level module ID
  51.  * 5 bits - Module-dependent error code
  52.  * 7 bits - Low level module errors
  53.  *
  54.  * For historical reasons, low-level error codes are divided in even and odd,
  55.  * even codes were assigned first, and -1 is reserved for other errors.
  56.  *
  57.  * Low-level module errors (0x0002-0x007E, 0x0003-0x007F)
  58.  *
  59.  * Module   Nr  Codes assigned
  60.  * MPI       7  0x0002-0x0010
  61.  * GCM       3  0x0012-0x0014   0x0013-0x0013
  62.  * BLOWFISH  3  0x0016-0x0018   0x0017-0x0017
  63.  * THREADING 3  0x001A-0x001E
  64.  * AES       5  0x0020-0x0022   0x0021-0x0025
  65.  * CAMELLIA  3  0x0024-0x0026   0x0027-0x0027
  66.  * XTEA      2  0x0028-0x0028   0x0029-0x0029
  67.  * BASE64    2  0x002A-0x002C
  68.  * OID       1  0x002E-0x002E   0x000B-0x000B
  69.  * PADLOCK   1  0x0030-0x0030
  70.  * DES       2  0x0032-0x0032   0x0033-0x0033
  71.  * CTR_DBRG  4  0x0034-0x003A
  72.  * ENTROPY   3  0x003C-0x0040   0x003D-0x003F
  73.  * NET      13  0x0042-0x0052   0x0043-0x0049
  74.  * ARIA      4  0x0058-0x005E
  75.  * ASN1      7  0x0060-0x006C
  76.  * CMAC      1  0x007A-0x007A
  77.  * PBKDF2    1  0x007C-0x007C
  78.  * HMAC_DRBG 4                  0x0003-0x0009
  79.  * CCM       3                  0x000D-0x0011
  80.  * ARC4      1                  0x0019-0x0019
  81.  * MD2       1                  0x002B-0x002B
  82.  * MD4       1                  0x002D-0x002D
  83.  * MD5       1                  0x002F-0x002F
  84.  * RIPEMD160 1                  0x0031-0x0031
  85.  * SHA1      1                  0x0035-0x0035 0x0073-0x0073
  86.  * SHA256    1                  0x0037-0x0037 0x0074-0x0074
  87.  * SHA512    1                  0x0039-0x0039 0x0075-0x0075
  88.  * CHACHA20  3                  0x0051-0x0055
  89.  * POLY1305  3                  0x0057-0x005B
  90.  * CHACHAPOLY 2 0x0054-0x0056
  91.  * PLATFORM  1  0x0070-0x0072
  92.  *
  93.  * High-level module nr (3 bits - 0x0...-0x7...)
  94.  * Name      ID  Nr of Errors
  95.  * PEM       1   9
  96.  * PKCS#12   1   4 (Started from top)
  97.  * X509      2   20
  98.  * PKCS5     2   4 (Started from top)
  99.  * DHM       3   11
  100.  * PK        3   15 (Started from top)
  101.  * RSA       4   11
  102.  * ECP       4   10 (Started from top)
  103.  * MD        5   5
  104.  * HKDF      5   1 (Started from top)
  105.  * CIPHER    6   8
  106.  * SSL       6   23 (Started from top)
  107.  * SSL       7   32
  108.  *
  109.  * Module dependent error code (5 bits 0x.00.-0x.F8.)
  110.  */
  111.  
  112. #ifdef __cplusplus
  113. extern "C" {
  114. #endif
  115.  
  116. /**
  117.  * \brief Translate a mbed TLS error code into a string representation,
  118.  *        Result is truncated if necessary and always includes a terminating
  119.  *        null byte.
  120.  *
  121.  * \param errnum    error code
  122.  * \param buffer    buffer to place representation in
  123.  * \param buflen    length of the buffer
  124.  */
  125. void mbedtls_strerror( int errnum, char *buffer, size_t buflen );
  126.  
  127. #ifdef __cplusplus
  128. }
  129. #endif
  130.  
  131. #endif /* error.h */
  132.