1
2
3
4
5
6
7 """Exception classes.
8 @sort: TLSError, TLSAbruptCloseError, TLSAlert, TLSLocalAlert, TLSRemoteAlert,
9 TLSAuthenticationError, TLSNoAuthenticationError, TLSAuthenticationTypeError,
10 TLSFingerprintError, TLSAuthorizationError, TLSValidationError, TLSFaultError,
11 TLSUnsupportedError
12 """
13 import socket
14
15 from .constants import AlertDescription, AlertLevel
16
18 """Base class for all TLS Lite exceptions."""
19
21 """"At least print out the Exception time for str(...)."""
22 return repr(self)
23
25 """An attempt was made to use the connection after it was closed."""
26 pass
27
29 """The socket was closed without a proper TLS shutdown.
30
31 The TLS specification mandates that an alert of some sort
32 must be sent before the underlying socket is closed. If the socket
33 is closed without this, it could signify that an attacker is trying
34 to truncate the connection. It could also signify a misbehaving
35 TLS implementation, or a random network failure.
36 """
37 pass
38
40 """A TLS alert has been signalled."""
41 pass
42
43 _descriptionStr = {\
44 AlertDescription.close_notify: "close_notify",\
45 AlertDescription.unexpected_message: "unexpected_message",\
46 AlertDescription.bad_record_mac: "bad_record_mac",\
47 AlertDescription.decryption_failed: "decryption_failed",\
48 AlertDescription.record_overflow: "record_overflow",\
49 AlertDescription.decompression_failure: "decompression_failure",\
50 AlertDescription.handshake_failure: "handshake_failure",\
51 AlertDescription.no_certificate: "no certificate",\
52 AlertDescription.bad_certificate: "bad_certificate",\
53 AlertDescription.unsupported_certificate: "unsupported_certificate",\
54 AlertDescription.certificate_revoked: "certificate_revoked",\
55 AlertDescription.certificate_expired: "certificate_expired",\
56 AlertDescription.certificate_unknown: "certificate_unknown",\
57 AlertDescription.illegal_parameter: "illegal_parameter",\
58 AlertDescription.unknown_ca: "unknown_ca",\
59 AlertDescription.access_denied: "access_denied",\
60 AlertDescription.decode_error: "decode_error",\
61 AlertDescription.decrypt_error: "decrypt_error",\
62 AlertDescription.export_restriction: "export_restriction",\
63 AlertDescription.protocol_version: "protocol_version",\
64 AlertDescription.insufficient_security: "insufficient_security",\
65 AlertDescription.internal_error: "internal_error",\
66 AlertDescription.user_canceled: "user_canceled",\
67 AlertDescription.no_renegotiation: "no_renegotiation",\
68 AlertDescription.unknown_psk_identity: "unknown_psk_identity"}
69
71 """A TLS alert has been signalled by the local implementation.
72
73 @type description: int
74 @ivar description: Set to one of the constants in
75 L{tlslite.constants.AlertDescription}
76
77 @type level: int
78 @ivar level: Set to one of the constants in
79 L{tlslite.constants.AlertLevel}
80
81 @type message: str
82 @ivar message: Description of what went wrong.
83 """
84 - def __init__(self, alert, message=None):
85 self.description = alert.description
86 self.level = alert.level
87 self.message = message
88
90 alertStr = TLSAlert._descriptionStr.get(self.description)
91 if alertStr == None:
92 alertStr = str(self.description)
93 if self.message:
94 return alertStr + ": " + self.message
95 else:
96 return alertStr
97
99 """A TLS alert has been signalled by the remote implementation.
100
101 @type description: int
102 @ivar description: Set to one of the constants in
103 L{tlslite.constants.AlertDescription}
104
105 @type level: int
106 @ivar level: Set to one of the constants in
107 L{tlslite.constants.AlertLevel}
108 """
110 self.description = alert.description
111 self.level = alert.level
112
114 alertStr = TLSAlert._descriptionStr.get(self.description)
115 if alertStr == None:
116 alertStr = str(self.description)
117 return alertStr
118
120 """The handshake succeeded, but the other party's authentication
121 was inadequate.
122
123 This exception will only be raised when a
124 L{tlslite.Checker.Checker} has been passed to a handshake function.
125 The Checker will be invoked once the handshake completes, and if
126 the Checker objects to how the other party authenticated, a
127 subclass of this exception will be raised.
128 """
129 pass
130
132 """The Checker was expecting the other party to authenticate with a
133 certificate chain, but this did not occur."""
134 pass
135
137 """The Checker was expecting the other party to authenticate with a
138 different type of certificate chain."""
139 pass
140
142 """The Checker was expecting the other party to authenticate with a
143 certificate chain that matches a different fingerprint."""
144 pass
145
147 """The Checker was expecting the other party to authenticate with a
148 certificate chain that has a different authorization."""
149 pass
150
152 """The Checker has determined that the other party's certificate
153 chain is invalid."""
158
160 """The other party responded incorrectly to an induced fault.
161
162 This exception will only occur during fault testing, when a
163 TLSConnection's fault variable is set to induce some sort of
164 faulty behavior, and the other party doesn't respond appropriately.
165 """
166 pass
167
168
170 """The implementation doesn't support the requested (or required)
171 capabilities."""
172 pass
173