ssherr.c revision 294332
1212795Sdim/* $OpenBSD: ssherr.c,v 1.4 2015/02/16 22:13:32 djm Exp $ */ 2212795Sdim/* 3212795Sdim * Copyright (c) 2011 Damien Miller 4212795Sdim * 5212795Sdim * Permission to use, copy, modify, and distribute this software for any 6212795Sdim * purpose with or without fee is hereby granted, provided that the above 7212795Sdim * copyright notice and this permission notice appear in all copies. 8212795Sdim * 9212795Sdim * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10212795Sdim * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11212795Sdim * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12212795Sdim * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13212795Sdim * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14212795Sdim * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15239462Sdim * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16276479Sdim */ 17276479Sdim 18221345Sdim#include <errno.h> 19212795Sdim#include <string.h> 20296417Sdim#include "ssherr.h" 21276479Sdim 22249423Sdimconst char * 23212795Sdimssh_err(int n) 24212795Sdim{ 25212795Sdim switch (n) { 26261991Sdim case SSH_ERR_SUCCESS: 27261991Sdim return "success"; 28261991Sdim case SSH_ERR_INTERNAL_ERROR: 29261991Sdim return "unexpected internal error"; 30261991Sdim case SSH_ERR_ALLOC_FAIL: 31261991Sdim return "memory allocation failed"; 32261991Sdim case SSH_ERR_MESSAGE_INCOMPLETE: 33261991Sdim return "incomplete message"; 34221345Sdim case SSH_ERR_INVALID_FORMAT: 35221345Sdim return "invalid format"; 36239462Sdim case SSH_ERR_BIGNUM_IS_NEGATIVE: 37239462Sdim return "bignum is negative"; 38251662Sdim case SSH_ERR_STRING_TOO_LARGE: 39251662Sdim return "string is too large"; 40261991Sdim case SSH_ERR_BIGNUM_TOO_LARGE: 41221345Sdim return "bignum is too large"; 42212795Sdim case SSH_ERR_ECPOINT_TOO_LARGE: 43221345Sdim return "elliptic curve point is too large"; 44221345Sdim case SSH_ERR_NO_BUFFER_SPACE: 45221345Sdim return "insufficient buffer space"; 46221345Sdim case SSH_ERR_INVALID_ARGUMENT: 47221345Sdim return "invalid argument"; 48221345Sdim case SSH_ERR_KEY_BITS_MISMATCH: 49221345Sdim return "key bits do not match"; 50221345Sdim case SSH_ERR_EC_CURVE_INVALID: 51221345Sdim return "invalid elliptic curve"; 52221345Sdim case SSH_ERR_KEY_TYPE_MISMATCH: 53221345Sdim return "key type does not match"; 54221345Sdim case SSH_ERR_KEY_TYPE_UNKNOWN: 55221345Sdim return "unknown or unsupported key type"; 56221345Sdim case SSH_ERR_EC_CURVE_MISMATCH: 57221345Sdim return "elliptic curve does not match"; 58221345Sdim case SSH_ERR_EXPECTED_CERT: 59221345Sdim return "plain key provided where certificate required"; 60221345Sdim case SSH_ERR_KEY_LACKS_CERTBLOB: 61221345Sdim return "key lacks certificate data"; 62221345Sdim case SSH_ERR_KEY_CERT_UNKNOWN_TYPE: 63212795Sdim return "unknown/unsupported certificate type"; 64221345Sdim case SSH_ERR_KEY_CERT_INVALID_SIGN_KEY: 65221345Sdim return "invalid certificate signing key"; 66221345Sdim case SSH_ERR_KEY_INVALID_EC_VALUE: 67212795Sdim return "invalid elliptic curve value"; 68212795Sdim case SSH_ERR_SIGNATURE_INVALID: 69221345Sdim return "incorrect signature"; 70221345Sdim case SSH_ERR_LIBCRYPTO_ERROR: 71221345Sdim return "error in libcrypto"; /* XXX fetch and return */ 72221345Sdim case SSH_ERR_UNEXPECTED_TRAILING_DATA: 73221345Sdim return "unexpected bytes remain after decoding"; 74221345Sdim case SSH_ERR_SYSTEM_ERROR: 75221345Sdim return strerror(errno); 76221345Sdim case SSH_ERR_KEY_CERT_INVALID: 77221345Sdim return "invalid certificate"; 78221345Sdim case SSH_ERR_AGENT_COMMUNICATION: 79221345Sdim return "communication with agent failed"; 80221345Sdim case SSH_ERR_AGENT_FAILURE: 81221345Sdim return "agent refused operation"; 82221345Sdim case SSH_ERR_DH_GEX_OUT_OF_RANGE: 83221345Sdim return "DH GEX group out of range"; 84221345Sdim case SSH_ERR_DISCONNECTED: 85221345Sdim return "disconnected"; 86221345Sdim case SSH_ERR_MAC_INVALID: 87221345Sdim return "message authentication code incorrect"; 88221345Sdim case SSH_ERR_NO_CIPHER_ALG_MATCH: 89221345Sdim return "no matching cipher found"; 90221345Sdim case SSH_ERR_NO_MAC_ALG_MATCH: 91221345Sdim return "no matching MAC found"; 92221345Sdim case SSH_ERR_NO_COMPRESS_ALG_MATCH: 93221345Sdim return "no matching compression method found"; 94221345Sdim case SSH_ERR_NO_KEX_ALG_MATCH: 95221345Sdim return "no matching key exchange method found"; 96221345Sdim case SSH_ERR_NO_HOSTKEY_ALG_MATCH: 97221345Sdim return "no matching host key type found"; 98221345Sdim case SSH_ERR_PROTOCOL_MISMATCH: 99221345Sdim return "protocol version mismatch"; 100221345Sdim case SSH_ERR_NO_PROTOCOL_VERSION: 101221345Sdim return "could not read protocol version"; 102221345Sdim case SSH_ERR_NO_HOSTKEY_LOADED: 103221345Sdim return "could not load host key"; 104221345Sdim case SSH_ERR_NEED_REKEY: 105221345Sdim return "rekeying not supported by peer"; 106221345Sdim case SSH_ERR_PASSPHRASE_TOO_SHORT: 107221345Sdim return "passphrase is too short (minimum four characters)"; 108221345Sdim case SSH_ERR_FILE_CHANGED: 109221345Sdim return "file changed while reading"; 110239462Sdim case SSH_ERR_KEY_UNKNOWN_CIPHER: 111239462Sdim return "key encrypted using unsupported cipher"; 112296417Sdim case SSH_ERR_KEY_WRONG_PASSPHRASE: 113296417Sdim return "incorrect passphrase supplied to decrypt private key"; 114296417Sdim case SSH_ERR_KEY_BAD_PERMISSIONS: 115296417Sdim return "bad permissions"; 116296417Sdim case SSH_ERR_KEY_CERT_MISMATCH: 117296417Sdim return "certificate does not match key"; 118296417Sdim case SSH_ERR_KEY_NOT_FOUND: 119296417Sdim return "key not found"; 120296417Sdim case SSH_ERR_AGENT_NOT_PRESENT: 121296417Sdim return "agent not present"; 122296417Sdim case SSH_ERR_AGENT_NO_IDENTITIES: 123296417Sdim return "agent contains no identities"; 124296417Sdim case SSH_ERR_BUFFER_READ_ONLY: 125239462Sdim return "internal error: buffer is read-only"; 126239462Sdim case SSH_ERR_KRL_BAD_MAGIC: 127239462Sdim return "KRL file has invalid magic number"; 128226633Sdim case SSH_ERR_KEY_REVOKED: 129212795Sdim return "Key is revoked"; 130276479Sdim case SSH_ERR_CONN_CLOSED: 131276479Sdim return "Connection closed"; 132276479Sdim case SSH_ERR_CONN_TIMEOUT: 133212795Sdim return "Connection timed out"; 134296417Sdim case SSH_ERR_CONN_CORRUPT: 135276479Sdim return "Connection corrupted"; 136239462Sdim case SSH_ERR_PROTOCOL_ERROR: 137239462Sdim return "Protocol error"; 138239462Sdim default: 139276479Sdim return "unknown error"; 140276479Sdim } 141239462Sdim} 142276479Sdim