{ "info": { "author": "Alexey Gorshkov", "author_email": "animus@wayround.org", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)" ], "description": "Very simple SASL mechanisms implementation\n\nBefore this I've already done two gsasl bindings for python:\n * one was implemented using Cython;\n * second was implemented using vala.\n\nThe main problem with gsasl, is what it's callback mechanism was made\n without possibility to pass user data, so it is spiky to trying to\n make binding for OOP language like Python.\n\nAs I very mutch do not like non-OOP programming, finally I has dicided\n to write very simple SASL mechanism at least for PLAIN method, for\n not return to gsasl problems ever again.\n\nI've written this package looking on gsasl, so it has some\n similarities, but I've also tryied to make it as simplier as\n possible, as I'm in horry and need to get My new mail server sofware\n working as soon as possible.\n\n---\n\n=====\nUsage\n=====\n\nThis SASL mechanism architecture shold be simple\n\n1. import wayround_org.sasl.sasl\n\n2. use init_mech(mech_name, mode, callback=None) function\n to create SASLSession instance.\n\n NOTE: at time of this writting only supported method(mechanism) is\n \t PLAIN and it's 'server' and 'client' side.\n\n example: init_mech('PLAIN', 'server')\n\n NOTE: callback is MAY only be needed in client mode, possibly for\n organizing dialog boxes. so this is like in gsasl.\n\n callback, if supplied, must be callable with one parameter - the\n name of field which server wishes client to return. The return\n value of callback will be then assigned to same name property in\n client's object '.properties' dict property\n\n3. Use step() or step64() method of SASLSession instance to pass data\n to it's working mechanism.\n\n Those methods allways return two values:\n 1. code - indicating error, success or asking for more data;\n\n \t At time of this writting, valid values considered to be:\n\t\t'ok', 'error', 'need_more'.\n\n\t\tgsasl supports more error codes indicating various\n\t\t errors, depending on mechanism being used. and this\n\t\t step() methods should also somehow specify errors.\n\t\t possibly, the good way for farther development of\n\t\t this methods (and particularly this package\n\t\t mechanisms) is, in case of errors, return strings\n\t\t starting with 'error' text and continuing with\n\t\t '_some_spec' to indicate specific error.\n\n 2. text - data wich should be sent to server or client\n counterpart. (In case of error, usually no any data\n\t\tshould be sent farther, but read documentation\n\t\ton specifics of mechanism being used)\n\n NOTE: step64() is simply a wrap for step() method. step64() decodes\n it's input, passes decoding result to step(), after what\n encodes step() result and returning it's to caller.\n\n=====================\nDeveloping Mechanisms\n=====================\n\nTo develop new mechanism - create new file with it's name in 'mechs'\ndirectory. Write some code: take plain.py for example.\n\nWhen Your new mechanism module is complete, register it in sasl.py, by\nediting 'MECHANISMS' dict in sasl.py top.\n\nThe structure of mode class REQUIRED to have folloving things:\n 1. def __init__(self, callback=None)\n 2. def step(self, data)\n 3. step() method MUST return 2 values:\n 1: str\n 2: bytes\n 4. '.properties' dict property\n\nAnythin other is on conscience of programmer.\n", "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/AnimusPEXUS/wayround_org_sasl", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "wayround_org_sasl", "package_url": "https://pypi.org/project/wayround_org_sasl/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/wayround_org_sasl/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/AnimusPEXUS/wayround_org_sasl" }, "release_url": "https://pypi.org/project/wayround_org_sasl/0.1/", "requires_dist": null, "requires_python": null, "summary": "pure python sasl mechanisms realisation", "version": "0.1" }, "last_serial": 1979523, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "3c491db239b6a26984c491a28cdde6bd", "sha256": "7361a0ae2d935398cc68f22bede2d352fa19b7d0538865615da0a29a9875f68a" }, "downloads": -1, "filename": "wayround_org_sasl-0.1.tar.gz", "has_sig": false, "md5_digest": "3c491db239b6a26984c491a28cdde6bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2829, "upload_time": "2016-02-27T12:02:00", "url": "https://files.pythonhosted.org/packages/f6/3b/abf15257f62309d45a62e26e32c8d9342c709d1d89a0d5b4e2224651e547/wayround_org_sasl-0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3c491db239b6a26984c491a28cdde6bd", "sha256": "7361a0ae2d935398cc68f22bede2d352fa19b7d0538865615da0a29a9875f68a" }, "downloads": -1, "filename": "wayround_org_sasl-0.1.tar.gz", "has_sig": false, "md5_digest": "3c491db239b6a26984c491a28cdde6bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2829, "upload_time": "2016-02-27T12:02:00", "url": "https://files.pythonhosted.org/packages/f6/3b/abf15257f62309d45a62e26e32c8d9342c709d1d89a0d5b4e2224651e547/wayround_org_sasl-0.1.tar.gz" } ] }