Botan 2.1.0 Crypto and TLS for C++11

- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

tls_alert.cpp
Go to the documentation of this file.
1 /*
2 * Alert Message
3 * (C) 2004-2006,2011 Jack Lloyd
4 *
5 * Botan is released under the Simplified BSD License (see license.txt)
6 */
7
8 #include <botan/tls_alert.h>
9 #include <botan/exceptn.h>
10
11 namespace Botan {
12
13 namespace TLS {
14
15 Alert::Alert(const secure_vector<uint8_t>& buf)
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 uint8_t dc = buf[1];
27
28 m_type_code = static_cast<Type>(dc);
29 }
30
31 std::vector<uint8_t> Alert::serialize() const
32 {
33 return std::vector<uint8_t>({
34 static_cast<uint8_t>(is_fatal() ? 2 : 1),
35 static_cast<uint8_t>(type())
36 });
37 }
38
39 std::string Alert::type_string() const
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";
53 case DECOMPRESSION_FAILURE:
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";
61 case UNSUPPORTED_CERTIFICATE:
62 return "unsupported_certificate";
63 case CERTIFICATE_REVOKED:
64 return "certificate_revoked";
65 case CERTIFICATE_EXPIRED:
66 return "certificate_expired";
67 case CERTIFICATE_UNKNOWN:
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";
83 case INSUFFICIENT_SECURITY:
84 return "insufficient_security";
85 case INTERNAL_ERROR:
86 return "internal_error";
87 case INAPPROPRIATE_FALLBACK:
88 return "inappropriate_fallback";
89 case USER_CANCELED:
90 return "user_canceled";
91 case NO_RENEGOTIATION:
92 return "no_renegotiation";
93
94 case UNSUPPORTED_EXTENSION:
95 return "unsupported_extension";
96 case CERTIFICATE_UNOBTAINABLE:
97 return "certificate_unobtainable";
98 case UNRECOGNIZED_NAME:
99 return "unrecognized_name";
100 case BAD_CERTIFICATE_STATUS_RESPONSE:
101 return "bad_certificate_status_response";
102 case BAD_CERTIFICATE_HASH_VALUE:
103 return "bad_certificate_hash_value";
104 case UNKNOWN_PSK_IDENTITY:
105 return "unknown_psk_identity";
106 case NO_APPLICATION_PROTOCOL:
107 return "no_application_protocol";
108
109 case NULL_ALERT:
110 return "none";
111 }
112
113 /*
114 * This is effectively the default case for the switch above, but we
115 * leave it out so that when an alert type is added to the enum the
116 * compiler can warn us that it is not included in the switch
117 * statement.
118 */
119 return "unrecognized_alert_" + std::to_string(type());
120 }
121
122 }
123
124 }
Botan::TLS::Alert::NULL_ALERT
Definition: tls_alert.h:63
Botan::TLS::Alert::Alert
Alert()
Definition: tls_alert.h:105
Botan::TLS::Alert::BAD_CERTIFICATE_HASH_VALUE
Definition: tls_alert.h:57
Botan::TLS::Alert::UNRECOGNIZED_NAME
Definition: tls_alert.h:55
Botan::TLS::Alert::INAPPROPRIATE_FALLBACK
Definition: tls_alert.h:50
Botan::TLS::Alert::INTERNAL_ERROR
Definition: tls_alert.h:49
Botan::TLS::Alert::UNSUPPORTED_EXTENSION
Definition: tls_alert.h:53
Botan::ASN1::to_string
std::string to_string(const BER_Object &obj)
Definition: asn1_obj.cpp:47
Botan::TLS::Alert::NO_CERTIFICATE
Definition: tls_alert.h:35
Botan::TLS::Alert::DECRYPT_ERROR
Definition: tls_alert.h:45
Botan::TLS::Alert::CERTIFICATE_EXPIRED
Definition: tls_alert.h:39
Botan::TLS::Alert::UNKNOWN_PSK_IDENTITY
Definition: tls_alert.h:58
Botan::TLS::Alert::BAD_CERTIFICATE_STATUS_RESPONSE
Definition: tls_alert.h:56
Botan::TLS::Alert::USER_CANCELED
Definition: tls_alert.h:51
Botan::TLS::Alert::BAD_CERTIFICATE
Definition: tls_alert.h:36
Botan::TLS::Alert::HANDSHAKE_FAILURE
Definition: tls_alert.h:34
Botan::secure_vector
std::vector< T, secure_allocator< T >> secure_vector
Definition: secmem.h:121
Botan::TLS::Alert::UNKNOWN_CA
Definition: tls_alert.h:42
Botan::TLS::Alert::DECOMPRESSION_FAILURE
Definition: tls_alert.h:33
Botan::TLS::Alert::CERTIFICATE_UNKNOWN
Definition: tls_alert.h:40
Botan::TLS::Alert::DECODE_ERROR
Definition: tls_alert.h:44
Botan::TLS::Alert::INSUFFICIENT_SECURITY
Definition: tls_alert.h:48
Botan::TLS::Alert::ACCESS_DENIED
Definition: tls_alert.h:43
Botan::Decoding_Error
Definition: exceptn.h:189
Botan::TLS::Alert::UNSUPPORTED_CERTIFICATE
Definition: tls_alert.h:37
Botan
Definition: alg_id.cpp:13
Botan::TLS::Alert::CERTIFICATE_REVOKED
Definition: tls_alert.h:38
Botan::TLS::Alert::NO_APPLICATION_PROTOCOL
Definition: tls_alert.h:60
Botan::TLS::Alert::Type
Type
Definition: tls_alert.h:27
Botan::TLS::Alert::CERTIFICATE_UNOBTAINABLE
Definition: tls_alert.h:54
Botan::TLS::Alert::RECORD_OVERFLOW
Definition: tls_alert.h:32
Botan::TLS::Alert::EXPORT_RESTRICTION
Definition: tls_alert.h:46
Botan::TLS::Alert::type
Type type() const
Definition: tls_alert.h:79
Botan::TLS::Alert::CLOSE_NOTIFY
Definition: tls_alert.h:28
Botan::TLS::Alert::ILLEGAL_PARAMETER
Definition: tls_alert.h:41
Botan::TLS::Alert::NO_RENEGOTIATION
Definition: tls_alert.h:52
Botan::TLS::Alert::PROTOCOL_VERSION
Definition: tls_alert.h:47
Botan::TLS::Alert::is_fatal
bool is_fatal() const
Definition: tls_alert.h:74
Botan::TLS::Alert::DECRYPTION_FAILED
Definition: tls_alert.h:31
Botan::TLS::Alert::UNEXPECTED_MESSAGE
Definition: tls_alert.h:29
Botan::TLS::Alert::serialize
std::vector< uint8_t > serialize() const
Definition: tls_alert.cpp:31
Botan::TLS::Alert::type_string
std::string type_string() const
Definition: tls_alert.cpp:39
Botan::TLS::Alert::BAD_RECORD_MAC
Definition: tls_alert.h:30