|
Botan
1.11.15
|
#include <tls_alert.h>
SSL/TLS Alert Message
Definition at line 21 of file tls_alert.h.
Type codes for TLS alerts
Definition at line 27 of file tls_alert.h.
{
CLOSE_NOTIFY = 0,
UNEXPECTED_MESSAGE = 10,
BAD_RECORD_MAC = 20,
DECRYPTION_FAILED = 21,
RECORD_OVERFLOW = 22,
DECOMPRESSION_FAILURE = 30,
HANDSHAKE_FAILURE = 40,
NO_CERTIFICATE = 41, // SSLv3 only
BAD_CERTIFICATE = 42,
UNSUPPORTED_CERTIFICATE = 43,
CERTIFICATE_REVOKED = 44,
CERTIFICATE_EXPIRED = 45,
CERTIFICATE_UNKNOWN = 46,
ILLEGAL_PARAMETER = 47,
UNKNOWN_CA = 48,
ACCESS_DENIED = 49,
DECODE_ERROR = 50,
DECRYPT_ERROR = 51,
EXPORT_RESTRICTION = 60,
PROTOCOL_VERSION = 70,
INSUFFICIENT_SECURITY = 71,
INTERNAL_ERROR = 80,
INAPPROPRIATE_FALLBACK = 86,
USER_CANCELED = 90,
NO_RENEGOTIATION = 100,
UNSUPPORTED_EXTENSION = 110,
CERTIFICATE_UNOBTAINABLE = 111,
UNRECOGNIZED_NAME = 112,
BAD_CERTIFICATE_STATUS_RESPONSE = 113,
BAD_CERTIFICATE_HASH_VALUE = 114,
UNKNOWN_PSK_IDENTITY = 115,
// pseudo alert values
NULL_ALERT = 256,
HEARTBEAT_PAYLOAD = 257
};
| Botan::TLS::Alert::Alert | ( | const secure_vector< byte > & | buf | ) |
Deserialize an Alert message
| buf | the serialized alert |
Definition at line 15 of file tls_alert.cpp.
References Botan::ASN1::to_string().
{
if(buf.size() != 2)
throw Decoding_Error("Alert: Bad size " + std::to_string(buf.size()) +
" for alert message");
if(buf[0] == 1) m_fatal = false;
else if(buf[0] == 2) m_fatal = true;
else
throw Decoding_Error("Alert: Bad code for alert level");
const byte dc = buf[1];
m_type_code = static_cast<Type>(dc);
}
| Botan::TLS::Alert::Alert | ( | Type | type_code, |
| bool | fatal = false |
||
| ) | [inline] |
Create a new Alert
| type_code | the type of alert |
| fatal | specifies if this is a fatal alert |
Definition at line 101 of file tls_alert.h.
:
m_fatal(fatal), m_type_code(type_code) {}
| Botan::TLS::Alert::Alert | ( | ) | [inline] |
Definition at line 104 of file tls_alert.h.
: m_fatal(false), m_type_code(NULL_ALERT) {}
| bool Botan::TLS::Alert::is_fatal | ( | ) | const [inline] |
Definition at line 73 of file tls_alert.h.
Referenced by Botan::TLS::Channel::received_data(), Botan::TLS::Channel::send_alert(), and serialize().
{ return m_fatal; }
| bool Botan::TLS::Alert::is_valid | ( | ) | const [inline] |
Definition at line 68 of file tls_alert.h.
Referenced by Botan::TLS::Channel::send_alert().
{ return (m_type_code != NULL_ALERT); }
| std::vector< byte > Botan::TLS::Alert::serialize | ( | ) | const |
Serialize an alert
Definition at line 31 of file tls_alert.cpp.
References is_fatal(), and type().
Referenced by Botan::TLS::Channel::send_alert().
| Type Botan::TLS::Alert::type | ( | ) | const [inline] |
Definition at line 78 of file tls_alert.h.
Referenced by Botan::TLS::Channel::received_data(), Botan::TLS::Channel::send_alert(), serialize(), and type_string().
{ return m_type_code; }
| std::string Botan::TLS::Alert::type_string | ( | ) | const |
Definition at line 39 of file tls_alert.cpp.
References ACCESS_DENIED, BAD_CERTIFICATE, BAD_CERTIFICATE_HASH_VALUE, BAD_CERTIFICATE_STATUS_RESPONSE, BAD_RECORD_MAC, CERTIFICATE_EXPIRED, CERTIFICATE_REVOKED, CERTIFICATE_UNKNOWN, CERTIFICATE_UNOBTAINABLE, CLOSE_NOTIFY, DECODE_ERROR, DECOMPRESSION_FAILURE, DECRYPT_ERROR, DECRYPTION_FAILED, EXPORT_RESTRICTION, HANDSHAKE_FAILURE, HEARTBEAT_PAYLOAD, ILLEGAL_PARAMETER, INAPPROPRIATE_FALLBACK, INSUFFICIENT_SECURITY, INTERNAL_ERROR, NO_CERTIFICATE, NO_RENEGOTIATION, NULL_ALERT, PROTOCOL_VERSION, RECORD_OVERFLOW, Botan::ASN1::to_string(), type(), UNEXPECTED_MESSAGE, UNKNOWN_CA, UNKNOWN_PSK_IDENTITY, UNRECOGNIZED_NAME, UNSUPPORTED_CERTIFICATE, UNSUPPORTED_EXTENSION, and USER_CANCELED.
{
switch(type())
{
case CLOSE_NOTIFY:
return "close_notify";
case UNEXPECTED_MESSAGE:
return "unexpected_message";
case BAD_RECORD_MAC:
return "bad_record_mac";
case DECRYPTION_FAILED:
return "decryption_failed";
case RECORD_OVERFLOW:
return "record_overflow";
case DECOMPRESSION_FAILURE:
return "decompression_failure";
case HANDSHAKE_FAILURE:
return "handshake_failure";
case NO_CERTIFICATE:
return "no_certificate";
case BAD_CERTIFICATE:
return "bad_certificate";
case UNSUPPORTED_CERTIFICATE:
return "unsupported_certificate";
case CERTIFICATE_REVOKED:
return "certificate_revoked";
case CERTIFICATE_EXPIRED:
return "certificate_expired";
case CERTIFICATE_UNKNOWN:
return "certificate_unknown";
case ILLEGAL_PARAMETER:
return "illegal_parameter";
case UNKNOWN_CA:
return "unknown_ca";
case ACCESS_DENIED:
return "access_denied";
case DECODE_ERROR:
return "decode_error";
case DECRYPT_ERROR:
return "decrypt_error";
case EXPORT_RESTRICTION:
return "export_restriction";
case PROTOCOL_VERSION:
return "protocol_version";
case INSUFFICIENT_SECURITY:
return "insufficient_security";
case INTERNAL_ERROR:
return "internal_error";
case INAPPROPRIATE_FALLBACK:
return "inappropriate_fallback";
case USER_CANCELED:
return "user_canceled";
case NO_RENEGOTIATION:
return "no_renegotiation";
case UNSUPPORTED_EXTENSION:
return "unsupported_extension";
case CERTIFICATE_UNOBTAINABLE:
return "certificate_unobtainable";
case UNRECOGNIZED_NAME:
return "unrecognized_name";
case BAD_CERTIFICATE_STATUS_RESPONSE:
return "bad_certificate_status_response";
case BAD_CERTIFICATE_HASH_VALUE:
return "bad_certificate_hash_value";
case UNKNOWN_PSK_IDENTITY:
return "unknown_psk_identity";
case NULL_ALERT:
return "none";
case HEARTBEAT_PAYLOAD:
return "heartbeat_payload";
}
/*
* This is effectively the default case for the switch above, but we
* leave it out so that when an alert type is added to the enum the
* compiler can warn us that it is not included in the switch
* statement.
*/
return "unrecognized_alert_" + std::to_string(type());
}
1.7.6.1