An OTR-XMPP communications channel
Project description
This is a Python library for communicating with XMPP destinations using OTR (Off-the-Record Messaging) encryption.
Features
Your internet application can talk securely to you on your PC or smartphone using readily-available chat software with OTR support
OTRv2
Send to and receive from multiple destinations, with or without fingerprint verification
Pure python (no libotr dependency)
Installation
$ sudo pip install --pre xmpppy # xmpppy is tagged as an "rc" version $ sudo pip install otrxmppchannel
Example
import time from otrxmppchannel import OTRXMPPChannel from otrxmppchannel.connection import OTR_TRUSTED, OTR_UNTRUSTED, OTR_UNENCRYPTED, OTR_UNKNOWN # Load the base64-encoded OTR DSA key. Constructing the object without # a key will generate one and provide it via ValueError exception. privkey = open('.otrprivkey', 'r').read() class MyOTRChannel(OTRXMPPChannel): def on_receive(self, message, from_jid, otr_state): if otr_state == OTR_TRUSTED: state = 'trusted' elif otr_state == OTR_UNTRUSTED: state = 'UNTRUSTED!' elif otr_state == OTR_UNENCRYPTED: state = 'UNENCRYPTED!' else: state = 'UNKNOWN OTR STATUS!' print('received %s from %s (%s)' % (message, from_jid, state)) mychan = MyOTRXMPPChannel( 'bradass87@jabber.ccc.de/datadiode', 'supersecret', [ ( 'mendax@jabber.wikileaks.org', '33eb6b01c97ceba92bd6b5e3777189c43f8d6f03' ), 'esnowden@chat.nsa.gov' ], privkey ) mychan.send('') # Force OTR setup time.sleep(3) # Wait a bit for OTR setup to complete mychan.send('This message should be encrypted')
Notes
XMPP invitations are not handled
It seems to take roughly 3 seconds to set up an OTR session. Messages sent before the session is ready may be lost.
The private key serialization format is specific to pure-python-otr. Conversions from other formats are not handled.
Dependencies
xmpppy (>= 0.4.1)
pure-python-otr (>= 1.0.0)
Donations
If you found this software useful and would like to encourage its maintenance and further development, please consider making a donation to the Bitcoin address 1MWFhwdFVEhB3X4eVsm9WxwvAhaxQqNbJh.
License
This is free and unencumbered public domain software. For more information, see http://unlicense.org/ or the accompanying UNLICENSE file.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.