Metadata-Version: 1.1
Name: OTRXMPPChannel
Version: 1.0.4
Summary: An OTR-XMPP communications channel
Home-page: https://github.com/mikegogulski/python-otrxmppchannel
Author: Mike Gogulski
Author-email: mike@gogulski.com
License: Unlicense
Description: XMPP-OTR channel for Python
        ===========================
        
        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)
        
        Author
        ------
        
        -  `Mike Gogulski`_ - https://github.com/mikegogulski
        
        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.
        
        .. _Off-the-Record Messaging: https://otr.cypherpunks.ca/
        .. _xmpppy: http://xmpppy.sourceforge.net/
        .. _pure-python-otr: https://github.com/afflux/pure-python-otr
        .. _Mike Gogulski: mailto:mike@gogulski.com
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: Public Domain
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Topic :: Communications :: Chat
Classifier: Topic :: Software Development :: Libraries :: Python Modules
