A library for setting up Secure Socket Layer (SSL) connections and verifying remote hosts using certificates. Contains only the source files for mbed platform implementation of the library.

Dependents:   HTTPClient-SSL HTTPClient-SSL HTTPClient-SSL HTTPClient-SSL

Committer:
Mike Fiore
Date:
Mon Mar 23 16:51:07 2015 -0500
Revision:
6:cf58d49e1a86
Parent:
5:d6c3db3c2459
fix whitespace in sha512.c

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Vanger 0:b86d15c6ba29 1 /* error.c
Vanger 0:b86d15c6ba29 2 *
Vanger 0:b86d15c6ba29 3 * Copyright (C) 2006-2014 wolfSSL Inc.
Vanger 0:b86d15c6ba29 4 *
Vanger 0:b86d15c6ba29 5 * This file is part of CyaSSL.
Vanger 0:b86d15c6ba29 6 *
Vanger 0:b86d15c6ba29 7 * CyaSSL is free software; you can redistribute it and/or modify
Vanger 0:b86d15c6ba29 8 * it under the terms of the GNU General Public License as published by
Vanger 0:b86d15c6ba29 9 * the Free Software Foundation; either version 2 of the License, or
Vanger 0:b86d15c6ba29 10 * (at your option) any later version.
Vanger 0:b86d15c6ba29 11 *
Vanger 0:b86d15c6ba29 12 * CyaSSL is distributed in the hope that it will be useful,
Vanger 0:b86d15c6ba29 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Vanger 0:b86d15c6ba29 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Vanger 0:b86d15c6ba29 15 * GNU General Public License for more details.
Vanger 0:b86d15c6ba29 16 *
Vanger 0:b86d15c6ba29 17 * You should have received a copy of the GNU General Public License
Vanger 0:b86d15c6ba29 18 * along with this program; if not, write to the Free Software
Vanger 0:b86d15c6ba29 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
Vanger 0:b86d15c6ba29 20 */
Vanger 0:b86d15c6ba29 21
Vanger 0:b86d15c6ba29 22 #ifdef HAVE_CONFIG_H
Vanger 0:b86d15c6ba29 23 #include <config.h>
Vanger 0:b86d15c6ba29 24 #endif
Vanger 0:b86d15c6ba29 25
Vanger 0:b86d15c6ba29 26 #include <cyassl/ctaocrypt/settings.h>
Vanger 0:b86d15c6ba29 27
Vanger 0:b86d15c6ba29 28 #include <cyassl/ctaocrypt/error-crypt.h>
Vanger 0:b86d15c6ba29 29
Vanger 0:b86d15c6ba29 30 #ifdef _MSC_VER
Vanger 0:b86d15c6ba29 31 /* 4996 warning to use MS extensions e.g., strcpy_s instead of XSTRNCPY */
Vanger 0:b86d15c6ba29 32 #pragma warning(disable: 4996)
Vanger 0:b86d15c6ba29 33 #endif
Vanger 0:b86d15c6ba29 34
Vanger 0:b86d15c6ba29 35 const char* CTaoCryptGetErrorString(int error)
Vanger 0:b86d15c6ba29 36 {
Vanger 0:b86d15c6ba29 37 #ifdef NO_ERROR_STRINGS
Vanger 0:b86d15c6ba29 38
Vanger 0:b86d15c6ba29 39 (void)error;
Vanger 0:b86d15c6ba29 40 return "no support for error strings built in";
Vanger 0:b86d15c6ba29 41
Vanger 0:b86d15c6ba29 42 #else
Vanger 0:b86d15c6ba29 43
Vanger 0:b86d15c6ba29 44 switch (error) {
Vanger 0:b86d15c6ba29 45
Vanger 0:b86d15c6ba29 46 case OPEN_RAN_E :
Vanger 0:b86d15c6ba29 47 return "opening random device error";
Vanger 0:b86d15c6ba29 48
Vanger 0:b86d15c6ba29 49 case READ_RAN_E :
Vanger 0:b86d15c6ba29 50 return "reading random device error";
Vanger 0:b86d15c6ba29 51
Vanger 0:b86d15c6ba29 52 case WINCRYPT_E :
Vanger 0:b86d15c6ba29 53 return "windows crypt init error";
Vanger 0:b86d15c6ba29 54
Vanger 0:b86d15c6ba29 55 case CRYPTGEN_E :
Vanger 0:b86d15c6ba29 56 return "windows crypt generation error";
Vanger 0:b86d15c6ba29 57
Vanger 0:b86d15c6ba29 58 case RAN_BLOCK_E :
Vanger 0:b86d15c6ba29 59 return "random device read would block error";
Vanger 0:b86d15c6ba29 60
Vanger 0:b86d15c6ba29 61 case BAD_MUTEX_E :
Vanger 0:b86d15c6ba29 62 return "Bad mutex, operation failed";
Vanger 0:b86d15c6ba29 63
Vanger 0:b86d15c6ba29 64 case MP_INIT_E :
Vanger 0:b86d15c6ba29 65 return "mp_init error state";
Vanger 0:b86d15c6ba29 66
Vanger 0:b86d15c6ba29 67 case MP_READ_E :
Vanger 0:b86d15c6ba29 68 return "mp_read error state";
Vanger 0:b86d15c6ba29 69
Vanger 0:b86d15c6ba29 70 case MP_EXPTMOD_E :
Vanger 0:b86d15c6ba29 71 return "mp_exptmod error state";
Vanger 0:b86d15c6ba29 72
Vanger 0:b86d15c6ba29 73 case MP_TO_E :
Vanger 0:b86d15c6ba29 74 return "mp_to_xxx error state, can't convert";
Vanger 0:b86d15c6ba29 75
Vanger 0:b86d15c6ba29 76 case MP_SUB_E :
Vanger 0:b86d15c6ba29 77 return "mp_sub error state, can't subtract";
Vanger 0:b86d15c6ba29 78
Vanger 0:b86d15c6ba29 79 case MP_ADD_E :
Vanger 0:b86d15c6ba29 80 return "mp_add error state, can't add";
Vanger 0:b86d15c6ba29 81
Vanger 0:b86d15c6ba29 82 case MP_MUL_E :
Vanger 0:b86d15c6ba29 83 return "mp_mul error state, can't multiply";
Vanger 0:b86d15c6ba29 84
Vanger 0:b86d15c6ba29 85 case MP_MULMOD_E :
Vanger 0:b86d15c6ba29 86 return "mp_mulmod error state, can't multiply mod";
Vanger 0:b86d15c6ba29 87
Vanger 0:b86d15c6ba29 88 case MP_MOD_E :
Vanger 0:b86d15c6ba29 89 return "mp_mod error state, can't mod";
Vanger 0:b86d15c6ba29 90
Vanger 0:b86d15c6ba29 91 case MP_INVMOD_E :
Vanger 0:b86d15c6ba29 92 return "mp_invmod error state, can't inv mod";
Vanger 0:b86d15c6ba29 93
Vanger 0:b86d15c6ba29 94 case MP_CMP_E :
Vanger 0:b86d15c6ba29 95 return "mp_cmp error state";
Vanger 0:b86d15c6ba29 96
Vanger 0:b86d15c6ba29 97 case MP_ZERO_E :
Vanger 0:b86d15c6ba29 98 return "mp zero result, not expected";
Vanger 0:b86d15c6ba29 99
Vanger 0:b86d15c6ba29 100 case MEMORY_E :
Vanger 0:b86d15c6ba29 101 return "out of memory error";
Vanger 0:b86d15c6ba29 102
Vanger 0:b86d15c6ba29 103 case RSA_WRONG_TYPE_E :
Vanger 0:b86d15c6ba29 104 return "RSA wrong block type for RSA function";
Vanger 0:b86d15c6ba29 105
Vanger 0:b86d15c6ba29 106 case RSA_BUFFER_E :
Vanger 0:b86d15c6ba29 107 return "RSA buffer error, output too small or input too big";
Vanger 0:b86d15c6ba29 108
Vanger 0:b86d15c6ba29 109 case BUFFER_E :
Vanger 0:b86d15c6ba29 110 return "Buffer error, output too small or input too big";
Vanger 0:b86d15c6ba29 111
Vanger 0:b86d15c6ba29 112 case ALGO_ID_E :
Vanger 0:b86d15c6ba29 113 return "Setting Cert AlogID error";
Vanger 0:b86d15c6ba29 114
Vanger 0:b86d15c6ba29 115 case PUBLIC_KEY_E :
Vanger 0:b86d15c6ba29 116 return "Setting Cert Public Key error";
Vanger 0:b86d15c6ba29 117
Vanger 0:b86d15c6ba29 118 case DATE_E :
Vanger 0:b86d15c6ba29 119 return "Setting Cert Date validity error";
Vanger 0:b86d15c6ba29 120
Vanger 0:b86d15c6ba29 121 case SUBJECT_E :
Vanger 0:b86d15c6ba29 122 return "Setting Cert Subject name error";
Vanger 0:b86d15c6ba29 123
Vanger 0:b86d15c6ba29 124 case ISSUER_E :
Vanger 0:b86d15c6ba29 125 return "Setting Cert Issuer name error";
Vanger 0:b86d15c6ba29 126
Vanger 0:b86d15c6ba29 127 case CA_TRUE_E :
Vanger 0:b86d15c6ba29 128 return "Setting basic constraint CA true error";
Vanger 0:b86d15c6ba29 129
Vanger 0:b86d15c6ba29 130 case EXTENSIONS_E :
Vanger 0:b86d15c6ba29 131 return "Setting extensions error";
Vanger 0:b86d15c6ba29 132
Vanger 0:b86d15c6ba29 133 case ASN_PARSE_E :
Vanger 0:b86d15c6ba29 134 return "ASN parsing error, invalid input";
Vanger 0:b86d15c6ba29 135
Vanger 0:b86d15c6ba29 136 case ASN_VERSION_E :
Vanger 0:b86d15c6ba29 137 return "ASN version error, invalid number";
Vanger 0:b86d15c6ba29 138
Vanger 0:b86d15c6ba29 139 case ASN_GETINT_E :
Vanger 0:b86d15c6ba29 140 return "ASN get big int error, invalid data";
Vanger 0:b86d15c6ba29 141
Vanger 0:b86d15c6ba29 142 case ASN_RSA_KEY_E :
Vanger 0:b86d15c6ba29 143 return "ASN key init error, invalid input";
Vanger 0:b86d15c6ba29 144
Vanger 0:b86d15c6ba29 145 case ASN_OBJECT_ID_E :
Vanger 0:b86d15c6ba29 146 return "ASN object id error, invalid id";
Vanger 0:b86d15c6ba29 147
Vanger 0:b86d15c6ba29 148 case ASN_TAG_NULL_E :
Vanger 0:b86d15c6ba29 149 return "ASN tag error, not null";
Vanger 0:b86d15c6ba29 150
Vanger 0:b86d15c6ba29 151 case ASN_EXPECT_0_E :
Vanger 0:b86d15c6ba29 152 return "ASN expect error, not zero";
Vanger 0:b86d15c6ba29 153
Vanger 0:b86d15c6ba29 154 case ASN_BITSTR_E :
Vanger 0:b86d15c6ba29 155 return "ASN bit string error, wrong id";
Vanger 0:b86d15c6ba29 156
Vanger 0:b86d15c6ba29 157 case ASN_UNKNOWN_OID_E :
Vanger 0:b86d15c6ba29 158 return "ASN oid error, unknown sum id";
Vanger 0:b86d15c6ba29 159
Vanger 0:b86d15c6ba29 160 case ASN_DATE_SZ_E :
Vanger 0:b86d15c6ba29 161 return "ASN date error, bad size";
Vanger 0:b86d15c6ba29 162
Vanger 0:b86d15c6ba29 163 case ASN_BEFORE_DATE_E :
Vanger 0:b86d15c6ba29 164 return "ASN date error, current date before";
Vanger 0:b86d15c6ba29 165
Vanger 0:b86d15c6ba29 166 case ASN_AFTER_DATE_E :
Vanger 0:b86d15c6ba29 167 return "ASN date error, current date after";
Vanger 0:b86d15c6ba29 168
Vanger 0:b86d15c6ba29 169 case ASN_SIG_OID_E :
Vanger 0:b86d15c6ba29 170 return "ASN signature error, mismatched oid";
Vanger 0:b86d15c6ba29 171
Vanger 0:b86d15c6ba29 172 case ASN_TIME_E :
Vanger 0:b86d15c6ba29 173 return "ASN time error, unkown time type";
Vanger 0:b86d15c6ba29 174
Vanger 0:b86d15c6ba29 175 case ASN_INPUT_E :
Vanger 0:b86d15c6ba29 176 return "ASN input error, not enough data";
Vanger 0:b86d15c6ba29 177
Vanger 0:b86d15c6ba29 178 case ASN_SIG_CONFIRM_E :
Vanger 0:b86d15c6ba29 179 return "ASN sig error, confirm failure";
Vanger 0:b86d15c6ba29 180
Vanger 0:b86d15c6ba29 181 case ASN_SIG_HASH_E :
Vanger 0:b86d15c6ba29 182 return "ASN sig error, unsupported hash type";
Vanger 0:b86d15c6ba29 183
Vanger 0:b86d15c6ba29 184 case ASN_SIG_KEY_E :
Vanger 0:b86d15c6ba29 185 return "ASN sig error, unsupported key type";
Vanger 0:b86d15c6ba29 186
Vanger 0:b86d15c6ba29 187 case ASN_DH_KEY_E :
Vanger 0:b86d15c6ba29 188 return "ASN key init error, invalid input";
Vanger 0:b86d15c6ba29 189
Vanger 0:b86d15c6ba29 190 case ASN_NTRU_KEY_E :
Vanger 0:b86d15c6ba29 191 return "ASN NTRU key decode error, invalid input";
Vanger 0:b86d15c6ba29 192
Vanger 0:b86d15c6ba29 193 case ASN_CRIT_EXT_E:
Vanger 0:b86d15c6ba29 194 return "X.509 Critical extension ignored";
Vanger 0:b86d15c6ba29 195
Vanger 0:b86d15c6ba29 196 case ECC_BAD_ARG_E :
Vanger 0:b86d15c6ba29 197 return "ECC input argument wrong type, invalid input";
Vanger 0:b86d15c6ba29 198
Vanger 0:b86d15c6ba29 199 case ASN_ECC_KEY_E :
Vanger 0:b86d15c6ba29 200 return "ECC ASN1 bad key data, invalid input";
Vanger 0:b86d15c6ba29 201
Vanger 0:b86d15c6ba29 202 case ECC_CURVE_OID_E :
Vanger 0:b86d15c6ba29 203 return "ECC curve sum OID unsupported, invalid input";
Vanger 0:b86d15c6ba29 204
Vanger 0:b86d15c6ba29 205 case BAD_FUNC_ARG :
Vanger 0:b86d15c6ba29 206 return "Bad function argument";
Vanger 0:b86d15c6ba29 207
Vanger 0:b86d15c6ba29 208 case NOT_COMPILED_IN :
Vanger 0:b86d15c6ba29 209 return "Feature not compiled in";
Vanger 0:b86d15c6ba29 210
Vanger 0:b86d15c6ba29 211 case UNICODE_SIZE_E :
Vanger 0:b86d15c6ba29 212 return "Unicode password too big";
Vanger 0:b86d15c6ba29 213
Vanger 0:b86d15c6ba29 214 case NO_PASSWORD :
Vanger 0:b86d15c6ba29 215 return "No password provided by user";
Vanger 0:b86d15c6ba29 216
Vanger 0:b86d15c6ba29 217 case ALT_NAME_E :
Vanger 0:b86d15c6ba29 218 return "Alt Name problem, too big";
Vanger 0:b86d15c6ba29 219
Vanger 0:b86d15c6ba29 220 case AES_GCM_AUTH_E:
Vanger 0:b86d15c6ba29 221 return "AES-GCM Authentication check fail";
Vanger 0:b86d15c6ba29 222
Vanger 0:b86d15c6ba29 223 case AES_CCM_AUTH_E:
Vanger 0:b86d15c6ba29 224 return "AES-CCM Authentication check fail";
Vanger 0:b86d15c6ba29 225
Vanger 0:b86d15c6ba29 226 case CAVIUM_INIT_E:
Vanger 0:b86d15c6ba29 227 return "Cavium Init type error";
Vanger 0:b86d15c6ba29 228
Vanger 0:b86d15c6ba29 229 case COMPRESS_INIT_E:
Vanger 0:b86d15c6ba29 230 return "Compress Init error";
Vanger 0:b86d15c6ba29 231
Vanger 0:b86d15c6ba29 232 case COMPRESS_E:
Vanger 0:b86d15c6ba29 233 return "Compress error";
Vanger 0:b86d15c6ba29 234
Vanger 0:b86d15c6ba29 235 case DECOMPRESS_INIT_E:
Vanger 0:b86d15c6ba29 236 return "DeCompress Init error";
Vanger 0:b86d15c6ba29 237
Vanger 0:b86d15c6ba29 238 case DECOMPRESS_E:
Vanger 0:b86d15c6ba29 239 return "DeCompress error";
Vanger 0:b86d15c6ba29 240
Vanger 0:b86d15c6ba29 241 case BAD_ALIGN_E:
Vanger 0:b86d15c6ba29 242 return "Bad alignment error, no alloc help";
Vanger 0:b86d15c6ba29 243
Vanger 0:b86d15c6ba29 244 case ASN_NO_SIGNER_E :
Vanger 0:b86d15c6ba29 245 return "ASN no signer error to confirm failure";
Vanger 0:b86d15c6ba29 246
Vanger 0:b86d15c6ba29 247 case ASN_CRL_CONFIRM_E :
Vanger 0:b86d15c6ba29 248 return "ASN CRL sig error, confirm failure";
Vanger 0:b86d15c6ba29 249
Vanger 0:b86d15c6ba29 250 case ASN_CRL_NO_SIGNER_E :
Vanger 0:b86d15c6ba29 251 return "ASN CRL no signer error to confirm failure";
Vanger 0:b86d15c6ba29 252
Vanger 0:b86d15c6ba29 253 case ASN_OCSP_CONFIRM_E :
Vanger 0:b86d15c6ba29 254 return "ASN OCSP sig error, confirm failure";
Vanger 0:b86d15c6ba29 255
Vanger 0:b86d15c6ba29 256 case BAD_ENC_STATE_E:
Vanger 0:b86d15c6ba29 257 return "Bad ecc encrypt state operation";
Vanger 0:b86d15c6ba29 258
Vanger 0:b86d15c6ba29 259 case BAD_PADDING_E:
Vanger 0:b86d15c6ba29 260 return "Bad padding, message wrong length";
Vanger 0:b86d15c6ba29 261
Vanger 0:b86d15c6ba29 262 case REQ_ATTRIBUTE_E:
Vanger 0:b86d15c6ba29 263 return "Setting cert request attributes error";
Vanger 0:b86d15c6ba29 264
Vanger 0:b86d15c6ba29 265 case PKCS7_OID_E:
Vanger 0:b86d15c6ba29 266 return "PKCS#7 error: mismatched OID value";
Vanger 0:b86d15c6ba29 267
Vanger 0:b86d15c6ba29 268 case PKCS7_RECIP_E:
Vanger 0:b86d15c6ba29 269 return "PKCS#7 error: no matching recipient found";
Vanger 0:b86d15c6ba29 270
Vanger 0:b86d15c6ba29 271 case FIPS_NOT_ALLOWED_E:
Vanger 0:b86d15c6ba29 272 return "FIPS mode not allowed error";
Vanger 0:b86d15c6ba29 273
Vanger 0:b86d15c6ba29 274 case ASN_NAME_INVALID_E:
Vanger 0:b86d15c6ba29 275 return "Name Constraint error";
Vanger 0:b86d15c6ba29 276
Vanger 0:b86d15c6ba29 277 case RNG_FAILURE_E:
Vanger 0:b86d15c6ba29 278 return "Random Number Generator failed";
Vanger 0:b86d15c6ba29 279
Vanger 0:b86d15c6ba29 280 case HMAC_MIN_KEYLEN_E:
Vanger 0:b86d15c6ba29 281 return "FIPS Mode HMAC Minimum Key Length error";
Vanger 0:b86d15c6ba29 282
Vanger 0:b86d15c6ba29 283 case RSA_PAD_E:
Vanger 0:b86d15c6ba29 284 return "Rsa Padding error";
Vanger 0:b86d15c6ba29 285
Vanger 0:b86d15c6ba29 286 case LENGTH_ONLY_E:
Vanger 0:b86d15c6ba29 287 return "Output length only set, not for other use error";
Vanger 0:b86d15c6ba29 288
Vanger 0:b86d15c6ba29 289 case IN_CORE_FIPS_E:
Vanger 0:b86d15c6ba29 290 return "In Core Integrity check FIPS error";
Vanger 0:b86d15c6ba29 291
Vanger 0:b86d15c6ba29 292 case AES_KAT_FIPS_E:
Vanger 0:b86d15c6ba29 293 return "AES Known Answer Test check FIPS error";
Vanger 0:b86d15c6ba29 294
Vanger 0:b86d15c6ba29 295 case DES3_KAT_FIPS_E:
Vanger 0:b86d15c6ba29 296 return "DES3 Known Answer Test check FIPS error";
Vanger 0:b86d15c6ba29 297
Vanger 0:b86d15c6ba29 298 case HMAC_KAT_FIPS_E:
Vanger 0:b86d15c6ba29 299 return "HMAC Known Answer Test check FIPS error";
Vanger 0:b86d15c6ba29 300
Vanger 0:b86d15c6ba29 301 case RSA_KAT_FIPS_E:
Vanger 0:b86d15c6ba29 302 return "RSA Known Answer Test check FIPS error";
Vanger 0:b86d15c6ba29 303
Vanger 0:b86d15c6ba29 304 case DRBG_KAT_FIPS_E:
Vanger 0:b86d15c6ba29 305 return "DRBG Known Answer Test check FIPS error";
Vanger 0:b86d15c6ba29 306
Vanger 0:b86d15c6ba29 307 case DRBG_CONT_FIPS_E:
Vanger 0:b86d15c6ba29 308 return "DRBG Continuous Test FIPS error";
Vanger 0:b86d15c6ba29 309
Vanger 0:b86d15c6ba29 310 case AESGCM_KAT_FIPS_E:
Vanger 0:b86d15c6ba29 311 return "AESGCM Known Answer Test check FIPS error";
Vanger 0:b86d15c6ba29 312
Vanger 0:b86d15c6ba29 313 default:
Vanger 0:b86d15c6ba29 314 return "unknown error number";
Vanger 0:b86d15c6ba29 315
Vanger 0:b86d15c6ba29 316 }
Vanger 0:b86d15c6ba29 317
Vanger 0:b86d15c6ba29 318 #endif /* NO_ERROR_STRINGS */
Vanger 0:b86d15c6ba29 319
Vanger 0:b86d15c6ba29 320 }
Vanger 0:b86d15c6ba29 321
Vanger 0:b86d15c6ba29 322 void CTaoCryptErrorString(int error, char* buffer)
Vanger 0:b86d15c6ba29 323 {
Vanger 0:b86d15c6ba29 324 XSTRNCPY(buffer, CTaoCryptGetErrorString(error), CYASSL_MAX_ERROR_SZ);
Vanger 0:b86d15c6ba29 325 }