diff options
author | Fedor Brunner <fedor.brunner@azet.sk> | 2014-03-31 18:54:20 +0400 |
---|---|---|
committer | Fedor Brunner <fedor.brunner@azet.sk> | 2014-03-31 18:54:20 +0400 |
commit | 765fdf616403010a06dca59c84ddd2732c7cd1b8 (patch) | |
tree | a3757d8d025cb819f8b51140713b6b80f09f7d96 | |
parent | 135984414a9393e6331e74310a285e13c6f4c464 (diff) |
BOSH doesn't support channel binding.python3
BOSH (XEP-0124) uses short lived HTTPS connections for encryption.
Channel binding requires long lived TLS connection, therefor
doesn't work with XMPP over BOSH.
Fixes #22
-rw-r--r-- | nbxmpp/client_nb.py | 7 | ||||
-rw-r--r-- | nbxmpp/tls_nb.py | 7 | ||||
-rw-r--r-- | nbxmpp/transports_nb.py | 2 |
3 files changed, 10 insertions, 6 deletions
diff --git a/nbxmpp/client_nb.py b/nbxmpp/client_nb.py index c4b1ed2..556321c 100644 --- a/nbxmpp/client_nb.py +++ b/nbxmpp/client_nb.py @@ -495,9 +495,10 @@ class NonBlockingClient: self._channel_binding = None if self.connected in ('ssl', 'tls'): try: - self._channel_binding = self.Connection.NonBlockingTLS.get_channel_binding() - # TLS handshake is finished so channel binding data muss exist - assert (self._channel_binding != None) + if self.protocol_type != 'BOSH': + self._channel_binding = self.Connection.NonBlockingTLS.get_channel_binding() + # TLS handshake is finished so channel binding data muss exist + assert (self._channel_binding != None) except NotImplementedError: pass if auth_mechs == None: diff --git a/nbxmpp/tls_nb.py b/nbxmpp/tls_nb.py index 25be057..f7cb63e 100644 --- a/nbxmpp/tls_nb.py +++ b/nbxmpp/tls_nb.py @@ -508,7 +508,10 @@ class NonBlockingTLS(PlugIn): Get channel binding data. RFC 5929 """ sslObj = self._owner._sslObj - try: - return sslObj.get_channel_binding() + try: + if USE_PYOPENSSL: + return sslObj.get_finished() + else: + return sslObj.get_channel_binding() except AttributeError: raise NotImplementedError diff --git a/nbxmpp/transports_nb.py b/nbxmpp/transports_nb.py index e9e8889..662b7eb 100644 --- a/nbxmpp/transports_nb.py +++ b/nbxmpp/transports_nb.py @@ -555,7 +555,7 @@ class NonBlockingTCP(NonBlockingTransport, IdleObject): return None self.sendbuff = self.sendqueue.pop(0) try: - send_count = self._send(self.sendbuff) + send_count = self._send(self.sendbuff.encode("utf-8")) if send_count: sent_data = self.sendbuff[:send_count] self.sendbuff = self.sendbuff[send_count:] |