Index: third_party/tlslite/tlslite/TLSConnection.py |
diff --git a/third_party/tlslite/tlslite/TLSConnection.py b/third_party/tlslite/tlslite/TLSConnection.py |
index 7e38a2326877d69411eb449c87f7062fa751f958..4948683f7d8785609e4ed93cac0a65fb21c673ef 100644 |
--- a/third_party/tlslite/tlslite/TLSConnection.py |
+++ b/third_party/tlslite/tlslite/TLSConnection.py |
@@ -514,7 +514,7 @@ class TLSConnection(TLSRecordLayer): |
for result in self._sendMsg(clientHello): |
yield result |
- #Get ServerHello (or missing_srp_username) |
+ #Get ServerHello (or unknown_psk_identity) |
for result in self._getMsg((ContentType.handshake, |
ContentType.alert), |
HandshakeType.server_hello): |
@@ -529,20 +529,17 @@ class TLSConnection(TLSRecordLayer): |
elif isinstance(msg, Alert): |
alert = msg |
- #If it's not a missing_srp_username, re-raise |
- if alert.description != AlertDescription.missing_srp_username: |
+ #If it's not a unknown_psk_identity, re-raise |
+ if alert.description != AlertDescription.unknown_psk_identity: |
self._shutdown(False) |
raise TLSRemoteAlert(alert) |
- #If we're not in SRP callback mode, we won't have offered SRP |
- #without a username, so we shouldn't get this alert |
- if not srpCallback: |
- for result in self._sendError(\ |
- AlertDescription.unexpected_message): |
- yield result |
- srpParams = srpCallback() |
- #If the callback returns None, cancel the handshake |
- if srpParams == None: |
+ #Our SRP credentials were wrong, so try getting new ones. |
+ if srpCallback: |
+ srpParams = srpCallback() |
+ |
+ #If we can't get different credentials, cancel the handshake |
+ if srpParams == None or not srpCallback: |
for result in self._sendError(AlertDescription.user_canceled): |
yield result |
@@ -1259,8 +1256,8 @@ class TLSConnection(TLSRecordLayer): |
#Ask the client to re-send ClientHello with one |
for result in self._sendMsg(Alert().create(\ |
- AlertDescription.missing_srp_username, |
- AlertLevel.warning)): |
+ AlertDescription.unknown_psk_identity, |
+ AlertLevel.fatal)): |
yield result |
#Get ClientHello |
@@ -1323,7 +1320,7 @@ class TLSConnection(TLSRecordLayer): |
entry = verifierDB[self.allegedSrpUsername] |
except KeyError: |
for result in self._sendError(\ |
- AlertDescription.unknown_srp_username): |
+ AlertDescription.unknown_psk_identity): |
yield result |
(N, g, s, v) = entry |