1 /*
2 * Exceptions
3 * (C) 2004-2006 Jack Lloyd
4 *
5 * Botan is released under the Simplified BSD License (see license.txt)
6 */
7 
8 #ifndef BOTAN_TLS_EXCEPTION_H_
9 #define BOTAN_TLS_EXCEPTION_H_
10 
11 #include <botan/exceptn.h>
12 #include <botan/tls_alert.h>
13 
14 namespace Botan {
15 
16 namespace TLS {
17 
18 /**
19 * TLS Exception Base Class
20 */
21 class BOTAN_PUBLIC_API(2,0) TLS_Exception : public Exception
22    {
23    public:
type()24       Alert::Type type() const { return m_alert_type; }
25 
26       TLS_Exception(Alert::Type type,
27                     const std::string& err_msg = "Unknown error") :
Exception(err_msg)28          Exception(err_msg), m_alert_type(type) {}
29 
error_code()30       int error_code() const noexcept override { return static_cast<int>(m_alert_type); }
31 
error_type()32       ErrorType error_type() const noexcept override { return ErrorType::TLSError; }
33 
34    private:
35       Alert::Type m_alert_type;
36    };
37 
38 /**
39 * Unexpected_Message Exception
40 */
41 class BOTAN_PUBLIC_API(2,0) Unexpected_Message final : public TLS_Exception
42    {
43    public:
Unexpected_Message(const std::string & err)44       explicit Unexpected_Message(const std::string& err) :
45          TLS_Exception(Alert::UNEXPECTED_MESSAGE, err) {}
46    };
47 
48 }
49 
50 }
51 
52 #endif
53