aboutsummaryrefslogtreecommitdiffstats
path: root/src/tls/tls_alert.cpp
diff options
context:
space:
mode:
authorlloyd <[email protected]>2012-01-26 21:11:52 +0000
committerlloyd <[email protected]>2012-01-26 21:11:52 +0000
commitcb8c64be095a0ef75beb621e8d669096efd7b8ae (patch)
tree5b1c20935afb94f6b02c238295c19373ac8f0e52 /src/tls/tls_alert.cpp
parent4b8786ad157e38b4143b0968c1ea1c83c2ee7388 (diff)
Change callback interface to pass the Alert object itself instead
of just the type code. Implement Alert::type_string
Diffstat (limited to 'src/tls/tls_alert.cpp')
-rw-r--r--src/tls/tls_alert.cpp71
1 files changed, 70 insertions, 1 deletions
diff --git a/src/tls/tls_alert.cpp b/src/tls/tls_alert.cpp
index 63cac9d79..9d2b74aca 100644
--- a/src/tls/tls_alert.cpp
+++ b/src/tls/tls_alert.cpp
@@ -37,7 +37,76 @@ Alert::Alert(const MemoryRegion<byte>& buf)
std::string Alert::type_string() const
{
- return "";
+ 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 USER_CANCELED:
+ return "user_canceled";
+ case NO_RENEGOTIATION:
+ return "no_renegotiation";
+
+ case UNSUPPORTED_EXTENSION:
+ return "unsupported_extension";
+ case UNRECOGNIZED_NAME:
+ return "unrecognized_name";
+
+ case UNKNOWN_PSK_IDENTITY:
+ return "unknown_psk_identity";
+
+ case NULL_ALERT:
+ return "";
+ }
+
+ /*
+ * 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_" + to_string(type());
}