Botan  1.11.11
Public Types | Public Member Functions | List of all members
Botan::TLS::Alert Class Reference

#include <tls_alert.h>

Public Types

enum  Type {
  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,
  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, NULL_ALERT = 256,
  HEARTBEAT_PAYLOAD = 257
}
 

Public Member Functions

 Alert (const secure_vector< byte > &buf)
 
 Alert (Type type_code, bool fatal=false)
 
 Alert ()
 
bool is_fatal () const
 
bool is_valid () const
 
std::vector< byteserialize () const
 
Type type () const
 
std::string type_string () const
 

Detailed Description

SSL/TLS Alert Message

Definition at line 21 of file tls_alert.h.

Member Enumeration Documentation

Type codes for TLS alerts

Enumerator
CLOSE_NOTIFY 
UNEXPECTED_MESSAGE 
BAD_RECORD_MAC 
DECRYPTION_FAILED 
RECORD_OVERFLOW 
DECOMPRESSION_FAILURE 
HANDSHAKE_FAILURE 
NO_CERTIFICATE 
BAD_CERTIFICATE 
UNSUPPORTED_CERTIFICATE 
CERTIFICATE_REVOKED 
CERTIFICATE_EXPIRED 
CERTIFICATE_UNKNOWN 
ILLEGAL_PARAMETER 
UNKNOWN_CA 
ACCESS_DENIED 
DECODE_ERROR 
DECRYPT_ERROR 
EXPORT_RESTRICTION 
PROTOCOL_VERSION 
INSUFFICIENT_SECURITY 
INTERNAL_ERROR 
INAPPROPRIATE_FALLBACK 
USER_CANCELED 
NO_RENEGOTIATION 
UNSUPPORTED_EXTENSION 
CERTIFICATE_UNOBTAINABLE 
UNRECOGNIZED_NAME 
BAD_CERTIFICATE_STATUS_RESPONSE 
BAD_CERTIFICATE_HASH_VALUE 
UNKNOWN_PSK_IDENTITY 
NULL_ALERT 
HEARTBEAT_PAYLOAD 

Definition at line 27 of file tls_alert.h.

27  {
28  CLOSE_NOTIFY = 0,
29  UNEXPECTED_MESSAGE = 10,
30  BAD_RECORD_MAC = 20,
31  DECRYPTION_FAILED = 21,
32  RECORD_OVERFLOW = 22,
34  HANDSHAKE_FAILURE = 40,
35  NO_CERTIFICATE = 41, // SSLv3 only
36  BAD_CERTIFICATE = 42,
41  ILLEGAL_PARAMETER = 47,
42  UNKNOWN_CA = 48,
43  ACCESS_DENIED = 49,
44  DECODE_ERROR = 50,
45  DECRYPT_ERROR = 51,
46  EXPORT_RESTRICTION = 60,
47  PROTOCOL_VERSION = 70,
49  INTERNAL_ERROR = 80,
51  USER_CANCELED = 90,
52  NO_RENEGOTIATION = 100,
55  UNRECOGNIZED_NAME = 112,
59 
60  // pseudo alert values
61  NULL_ALERT = 256,
62  HEARTBEAT_PAYLOAD = 257
63  };

Constructor & Destructor Documentation

Botan::TLS::Alert::Alert ( const secure_vector< byte > &  buf)

Deserialize an Alert message

Parameters
bufthe serialized alert

Definition at line 15 of file tls_alert.cpp.

References Botan::ASN1::to_string().

16  {
17  if(buf.size() != 2)
18  throw Decoding_Error("Alert: Bad size " + std::to_string(buf.size()) +
19  " for alert message");
20 
21  if(buf[0] == 1) m_fatal = false;
22  else if(buf[0] == 2) m_fatal = true;
23  else
24  throw Decoding_Error("Alert: Bad code for alert level");
25 
26  const byte dc = buf[1];
27 
28  m_type_code = static_cast<Type>(dc);
29  }
std::string to_string(const BER_Object &obj)
Definition: asn1_obj.cpp:46
uint8_t byte
Definition: types.h:30
Botan::TLS::Alert::Alert ( Type  type_code,
bool  fatal = false 
)
inline

Create a new Alert

Parameters
type_codethe type of alert
fatalspecifies if this is a fatal alert

Definition at line 101 of file tls_alert.h.

101  :
102  m_fatal(fatal), m_type_code(type_code) {}
Botan::TLS::Alert::Alert ( )
inline

Definition at line 104 of file tls_alert.h.

104 : m_fatal(false), m_type_code(NULL_ALERT) {}

Member Function Documentation

bool Botan::TLS::Alert::is_fatal ( ) const
inline
Returns
if this alert is a fatal one or not

Definition at line 73 of file tls_alert.h.

Referenced by Botan::TLS::Channel::received_data(), Botan::TLS::Channel::send_alert(), and serialize().

73 { return m_fatal; }
bool Botan::TLS::Alert::is_valid ( ) const
inline
Returns
true iff this alert is non-empty

Definition at line 68 of file tls_alert.h.

Referenced by Botan::TLS::Channel::send_alert().

68 { 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().

32  {
33  return std::vector<byte>({
34  static_cast<byte>(is_fatal() ? 2 : 1),
35  static_cast<byte>(type())
36  });
37  }
uint8_t byte
Definition: types.h:30
Type type() const
Definition: tls_alert.h:78
bool is_fatal() const
Definition: tls_alert.h:73
Type Botan::TLS::Alert::type ( ) const
inline
Returns
type of alert

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().

78 { return m_type_code; }
std::string Botan::TLS::Alert::type_string ( ) const
Returns
type of alert

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.

40  {
41  switch(type())
42  {
43  case CLOSE_NOTIFY:
44  return "close_notify";
45  case UNEXPECTED_MESSAGE:
46  return "unexpected_message";
47  case BAD_RECORD_MAC:
48  return "bad_record_mac";
49  case DECRYPTION_FAILED:
50  return "decryption_failed";
51  case RECORD_OVERFLOW:
52  return "record_overflow";
54  return "decompression_failure";
55  case HANDSHAKE_FAILURE:
56  return "handshake_failure";
57  case NO_CERTIFICATE:
58  return "no_certificate";
59  case BAD_CERTIFICATE:
60  return "bad_certificate";
62  return "unsupported_certificate";
64  return "certificate_revoked";
66  return "certificate_expired";
68  return "certificate_unknown";
69  case ILLEGAL_PARAMETER:
70  return "illegal_parameter";
71  case UNKNOWN_CA:
72  return "unknown_ca";
73  case ACCESS_DENIED:
74  return "access_denied";
75  case DECODE_ERROR:
76  return "decode_error";
77  case DECRYPT_ERROR:
78  return "decrypt_error";
79  case EXPORT_RESTRICTION:
80  return "export_restriction";
81  case PROTOCOL_VERSION:
82  return "protocol_version";
84  return "insufficient_security";
85  case INTERNAL_ERROR:
86  return "internal_error";
88  return "inappropriate_fallback";
89  case USER_CANCELED:
90  return "user_canceled";
91  case NO_RENEGOTIATION:
92  return "no_renegotiation";
93 
95  return "unsupported_extension";
97  return "certificate_unobtainable";
98  case UNRECOGNIZED_NAME:
99  return "unrecognized_name";
101  return "bad_certificate_status_response";
103  return "bad_certificate_hash_value";
105  return "unknown_psk_identity";
106 
107  case NULL_ALERT:
108  return "none";
109 
110  case HEARTBEAT_PAYLOAD:
111  return "heartbeat_payload";
112  }
113 
114  /*
115  * This is effectively the default case for the switch above, but we
116  * leave it out so that when an alert type is added to the enum the
117  * compiler can warn us that it is not included in the switch
118  * statement.
119  */
120  return "unrecognized_alert_" + std::to_string(type());
121  }
std::string to_string(const BER_Object &obj)
Definition: asn1_obj.cpp:46
Type type() const
Definition: tls_alert.h:78

The documentation for this class was generated from the following files: