{ "info": { "author": "Mike Gogulski", "author_email": "mike@gogulski.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: Public Domain", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Communications :: Chat", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "XMPP-OTR channel for Python\n===========================\n\nThis is a Python library for communicating with XMPP destinations using\nOTR (`Off-the-Record Messaging`_) encryption.\n\nFeatures\n--------\n\n- Your internet application can talk securely to you on your PC or\n smartphone using readily-available chat software with OTR support\n- OTRv2\n- Send to and receive from multiple destinations, with or without\n fingerprint verification\n- Pure python (no libotr dependency)\n\nInstallation\n------------\n\n::\n\n $ sudo pip install --pre xmpppy # xmpppy is tagged as an \"rc\" version\n $ sudo pip install otrxmppchannel\n\nExample\n-------\n\n::\n\n import time\n from otrxmppchannel import OTRXMPPChannel\n from otrxmppchannel.connection import OTR_TRUSTED, OTR_UNTRUSTED,\n OTR_UNENCRYPTED, OTR_UNKNOWN\n\n # Load the base64-encoded OTR DSA key. Constructing the object without\n # a key will generate one and provide it via ValueError exception.\n privkey = open('.otrprivkey', 'r').read()\n\n class MyOTRChannel(OTRXMPPChannel):\n def on_receive(self, message, from_jid, otr_state):\n if otr_state == OTR_TRUSTED:\n state = 'trusted'\n elif otr_state == OTR_UNTRUSTED:\n state = 'UNTRUSTED!'\n elif otr_state == OTR_UNENCRYPTED:\n state = 'UNENCRYPTED!'\n else:\n state = 'UNKNOWN OTR STATUS!'\n print('received %s from %s (%s)' % (message, from_jid, state))\n\n mychan = MyOTRXMPPChannel(\n 'bradass87@jabber.ccc.de/datadiode',\n 'supersecret',\n [\n (\n 'mendax@jabber.wikileaks.org',\n '33eb6b01c97ceba92bd6b5e3777189c43f8d6f03'\n ),\n 'esnowden@chat.nsa.gov'\n ],\n privkey\n )\n\n mychan.send('') # Force OTR setup\n time.sleep(3) # Wait a bit for OTR setup to complete\n mychan.send('This message should be encrypted')\n\nNotes\n-----\n\n- XMPP invitations are not handled\n- It seems to take roughly 3 seconds to set up an OTR session. Messages\n sent before the session is ready may be lost.\n- The private key serialization format is specific to pure-python-otr.\n Conversions from other formats are not handled.\n\nDependencies\n------------\n\n- `xmpppy`_ (>= 0.4.1)\n- `pure-python-otr`_ (>= 1.0.0)\n\nAuthor\n------\n\n- `Mike Gogulski`_ - https://github.com/mikegogulski\n\nDonations\n---------\n\nIf you found this software useful and would like to encourage its\nmaintenance and further development, please consider making a donation\nto the Bitcoin address ``1MWFhwdFVEhB3X4eVsm9WxwvAhaxQqNbJh``.\n\nLicense\n-------\n\nThis is free and unencumbered public domain software. For more\ninformation, see http://unlicense.org/ or the accompanying UNLICENSE\nfile.\n\n.. _Off-the-Record Messaging: https://otr.cypherpunks.ca/\n.. _xmpppy: http://xmpppy.sourceforge.net/\n.. _pure-python-otr: https://github.com/afflux/pure-python-otr\n.. _Mike Gogulski: mailto:mike@gogulski.com", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mikegogulski/python-otrxmppchannel", "keywords": null, "license": "Unlicense", "maintainer": null, "maintainer_email": null, "name": "OTRXMPPChannel", "package_url": "https://pypi.org/project/OTRXMPPChannel/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/OTRXMPPChannel/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/mikegogulski/python-otrxmppchannel" }, "release_url": "https://pypi.org/project/OTRXMPPChannel/1.0.4/", "requires_dist": null, "requires_python": null, "summary": "An OTR-XMPP communications channel", "version": "1.0.4" }, "last_serial": 1040345, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "89da81e36b4d747ab51e2ed04a987b15", "sha256": "3fe6a01c0b3b09d3886de8059761a6b1167dd54b2f8260e8f5687823d631b0b1" }, "downloads": -1, "filename": "OTRXMPPChannel-1.0.0.tar.gz", "has_sig": true, "md5_digest": "89da81e36b4d747ab51e2ed04a987b15", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5980, "upload_time": "2014-03-23T15:25:50", "url": "https://files.pythonhosted.org/packages/ab/a6/fc3db85f33d7f4974c84b4d6bf79745c4926ec3b00edf88ba7248be88c34/OTRXMPPChannel-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "0949a9cabe21f5ba7e970ecba9de247a", "sha256": "7c0e725de2515dba44401314f20b6443d4ab9c05079eee12bf42c60c3199e148" }, "downloads": -1, "filename": "OTRXMPPChannel-1.0.1.tar.gz", "has_sig": true, "md5_digest": "0949a9cabe21f5ba7e970ecba9de247a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5790, "upload_time": "2014-03-23T15:35:26", "url": "https://files.pythonhosted.org/packages/f3/25/1b34af341c9c2a6fe1dedcc93c9e9f5d35e7d3ffe60b339df9c0a3edea0d/OTRXMPPChannel-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "c7ebfca1c3ab24203b95dc022d32ccdd", "sha256": "f0e91fcb5dda20d59da5c160aff62b827a86eee7b56b067c71853b2c314aa3ef" }, "downloads": -1, "filename": "OTRXMPPChannel-1.0.2.tar.gz", "has_sig": true, "md5_digest": "c7ebfca1c3ab24203b95dc022d32ccdd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5821, "upload_time": "2014-03-23T15:59:51", "url": "https://files.pythonhosted.org/packages/72/e6/122ad8db11cae73bbd1950e2dfdd07c6b39ee89bc1406176007d0f53fb58/OTRXMPPChannel-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "8b27a2ce84671975e4b5e608de2696e5", "sha256": "27d6b30287412e46ab131a9c313466dd09ed2c18fd2c4a3fdc9963bd621a2d93" }, "downloads": -1, "filename": "OTRXMPPChannel-1.0.3.tar.gz", "has_sig": true, "md5_digest": "8b27a2ce84671975e4b5e608de2696e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6095, "upload_time": "2014-03-23T16:15:46", "url": "https://files.pythonhosted.org/packages/7a/d7/c5937dee3a8e4a43692ab283d2af0084c335cb4a8f72572cbc48e3b0debe/OTRXMPPChannel-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "e734d58aea84495a53a6f59f2bf2072a", "sha256": "9665036ddce08cfe976003b11f864c4e3d279f48e8919ed692ec22f378afdc98" }, "downloads": -1, "filename": "OTRXMPPChannel-1.0.4.tar.gz", "has_sig": true, "md5_digest": "e734d58aea84495a53a6f59f2bf2072a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6164, "upload_time": "2014-03-25T11:13:05", "url": "https://files.pythonhosted.org/packages/75/49/0472a4602f304d162dd3c2a7d78127b9f825baab7bcb7089b73adc21ca68/OTRXMPPChannel-1.0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e734d58aea84495a53a6f59f2bf2072a", "sha256": "9665036ddce08cfe976003b11f864c4e3d279f48e8919ed692ec22f378afdc98" }, "downloads": -1, "filename": "OTRXMPPChannel-1.0.4.tar.gz", "has_sig": true, "md5_digest": "e734d58aea84495a53a6f59f2bf2072a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6164, "upload_time": "2014-03-25T11:13:05", "url": "https://files.pythonhosted.org/packages/75/49/0472a4602f304d162dd3c2a7d78127b9f825baab7bcb7089b73adc21ca68/OTRXMPPChannel-1.0.4.tar.gz" } ] }