{ "info": { "author": "Dustin Oprea", "author_email": "myselfasunder@gmail.com", "bugtrack_url": null, "classifiers": [], "description": ".. image:: https://pypip.in/d/ssl_api/badge.png\n :target: https://pypi.python.org/pypi/ssl_api/\n :alt: Downloads\n\n.. image:: https://pypip.in/v/ssl_api/badge.png\n :target: https://pypi.python.org/pypi/ssl_api/\n :alt: Latest version\n\n.. image:: https://pypip.in/wheel/ssl_api/badge.png\n :target: https://pypi.python.org/pypi/ssl_api/\n :alt: Wheel Status\n\n.. image:: https://pypip.in/license/ssl_api/badge.png\n :target: https://pypi.python.org/pypi/ssl_api/\n :alt: License\n\n--------\nOverview\n--------\n\nThis is a certificate authority API that can sign CSRs, and make callbacks \nduring each phase of the process. \n\nThese callbacks allow you to:\n\n1. Authenticate the signing request (`API_CSR_AUTHORIZE_HOOK`).\n2. Make last-minute adjustments to the M2Crypto certificate object before \n signing (like adding extensions or setting the certificate version) \n (`API_CSR_PRESIGN_HOOK`).\n3. See the signed certificate before being returned (if you'd like to record \n the certificate fingerprint, record the public-key, etc..) \n (`API_CSR_POSTSIGN_HOOK`).\n\n\n-----------------\nDesign Philosophy\n-----------------\n\n- Useful and intuitive callback-driven design.\n\n Callbacks are triggered at various phases of the signing processes.\n\n- Accomodate customization/callbacks without modifying SSL API project.\n\n Adjust CA behavior from a shell-project and not the *ssl_api* code.\n\n- Simple adoption.\n\n This means that we need to be able to adopt users' existing keys. This also \n meant that we couldn't impose the use of a database. Not only does a DB\n require an import and export tool, but this begins to obscure where the CA \n certificate/keys reside in the system, and how to allow the API to handle \n them without accidentally damaging or overwriting them.\n\n------------\nServer Setup\n------------\n\n1. Install *ssl_api*::\n \n $ sudo pip install ssl_api\n\n2. Create the directory for the CA's own certificate/keys (referred to as the \n \"identity\")::\n\n $ sudo mkdir /var/lib/ca\n\n3. Establish the CA identity:\n \n If you need to create a new identity (the \"v\" parameter describes the \n validity time-period to be valid for, and defaults to ten-years)::\n\n $ sudo ca_create_identity \\\n -f C US \\\n -f CN ca.net \\\n -f L \"Palm Beach\" \\\n -f O \"Random Authority, Inc.\" \\\n -f ST Florida \\\n -f emailAddress ca@openpeak.com \\\n -v 10\n\n This creates the following files at the identity path: \n\n - *ca.cert.pem*\n - *ca.csr.pem*\n - *ca.private_key.pem*\n - *ca.public_key.pem*\n\n If you already have certificates/keys, copy them to the identity path with \n the same names as the above.\n\n4. Create the user and update identity permissions::\n\n $ sudo adduser --disabled-password --disabled-login --gecos \"\" --no-create-home ca \n $ sudo adduser root ca\n $ sudo chown root.ca -R /var/lib/ca\n $ sudo chmod 750 /var/lib/ca\n $ sudo chmod 640 -R /var/lib/ca/*\n\n5. Start the server immediately by running one of the following:\n\n Start in the foreground with debugging::\n\n $ ca_start_gunicorn_dev\n\n Start in the background without debugging, with the right user, etc..::\n\n CA_PASSPHRASE=test ca_start_gunicorn_prod\n\n A passphrase is required. If it is not found as `CA_PASSPHRASE` in the\n environment, the user will be prompted. See the section [Notes on Automatic \n Startup](#notes-on-automatic-startup) for details.\n \n6. Configure your webserver. \n\n This is a simple matter of adding a website that proxies incoming requests \n to the CA server at */tmp/ssl_api.gunicorn.sock*. The developers recommend \n the `Nginx `_ web-server. \n\n It is, obviously, highly recommended that your CA server is configured for \n SSL.\n\n No directory need be defined in the webserver config since there is no \n presentational logic. \n\n This is an example Nginx config::\n\n upstream ca_app_server {\n server unix:/tmp/ssl_api.gunicorn.sock fail_timeout=0;\n }\n\n server {\n listen 443;\n server_name ca.company.com;\n keepalive_timeout 5;\n\n # These ciphers include support for PFS.\n ssl_protocols TLSv1 TLSv1.1 TLSv1.2;\n ssl_prefer_server_ciphers on;\n ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA256:EECDH+aRSA+RC4:EDH+aRSA:EECDH:RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;\n\n ssl on;\n ssl_certificate /etc/ssl/certs/company.key.pem;\n ssl_certificate_key /etc/ssl/private/company.crt.pem;\n\n location / {\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header Host $http_host;\n proxy_redirect off;\n\n proxy_pass http://ca_app_server;\n }\n }\n\n\n--------------------------\nNotes on Automatic Startup\n--------------------------\n\nIt is assumed that you're going to want to start the CA at every system \nstartup. However, the CA private-key requires a passphrase to be entered.\n\nFor your convenience, the passphrase may be set as an environment variable \nnamed `CA_PASSPHRASE`. A passphrase will only be requested from the terminal if \none is not found in the environment. An EnvironmentError will be raised in the \nevent that a passphrase is not in the environment and the server is not being \nlaunched in a terminal.\n\n*ssl_api* ships with two Gunicorn configurations (in sapi/resources/data):\n\n- gunicorn.conf.dev\n- gunicorn.conf.prod\n\nThe main difference is whether the terminal remains attached to the server or \nnot. \n\nIf you use the default production Gunicorn configuration, you'll be required to\nset your passphrase via the environment variable, since the server will \ndaemonize. If you wish to be prompted, you'll either have to use the development \nconfiguration, or modify the production config to set \"daemon\" to \"'false'\" (it \nmust be expressed in quotes, in the file).\n\nIt is left to the administrator to start the server using whichever method he \nlikes (such as using /etc/rc.local or Upstart).\n\nAn example of how the server can be started::\n\n $ source /root/.ca_passphrase\n $ PYTHONPATH=/usr/local/lib/python2.7/dist-packages/deploy_ca\n $ /usr/local/bin/ca_start_gunicorn_prod\n\nwhere `/root/.ca_passphrase` has something like::\n\n export CA_PASSPHRASE=\"test\"\n\nIn this case, you'll have to make sure the passphrase file is very restricted, \npermission-wise. Absolute paths are used in the example script, above, because \nit might be called prior to the definition of an executable search path.\n\n\n---------\nAPI Usage\n---------\n\nThere is exactly one endpoint, which expects a PUT request of the CSR PEM file::\n\n /api/csr/[a-zA-Z0-9]+\n\nThe URL path expects a client ID/hash having alphanumeric characters but not \nsymbols. This represents an identifier that will allow you to map a \nrequest to a particular client/customer. This will most often be used to verify \nmembership or billing. If you do not require this support, then just choose \nsome arbitrary value, and give that URL to everyone who might use the API (any \npotential use of this value is done only from your callbacks).\n\nThe response will be a JSON dictionary with key `signed_x509_pem` containing \nthe new certificate.\n\n\n-----------------------------------------------------\nImplementing Callbacks and Other Custom Configuration\n-----------------------------------------------------\n\nThe default configuration of *ssl_api* defines several API callbacks that \ngenerally don't do anything. These configuration modules may also define \nvalues that you'd like to customize (such as where the CA's identity path is \nlocated).\n\nAt the bottom of these modules, an attempt is made to perform an import. If\ncustom functionality is found, the module-level variables in that module will\noverwrite the module-level variables in that config file.\n\nThe following table expresses what configuration modules are used by *ssl_api*, \nthe import that is attempted, and what callbacks are defined (though all \nvariables in the configuration modules can be overriden).\n\n+------------------------+----------------------------------+--------------------------------------------+\n| Config Module | Attempted Import | Callbacks |\n+========================+==================================+============================================+\n| sapi.config.ca | from sapi_custom_ca.ca import * | CUSTOM_BOOT_CB, SERIAL_NUMBER_GENERATOR_CB |\n+------------------------+----------------------------------+--------------------------------------------+\n| sapi.config.api.server | from sapi_custom_ca.api import * | API_CSR_HOOKS_FACTORY |\n+------------------------+----------------------------------+--------------------------------------------+\n\nCallback Descriptions\n=====================\n\n+----------------------------+------------------------------------------------+\n| Callback | Descriptions |\n+============================+================================================+\n| CUSTOM_BOOT_CB | Triggered on load. Raise a *sapi.exceptions. |\n| | CsrNotAuthedError* if a certificate should not |\n| | be generated. |\n+----------------------------+------------------------------------------------+\n| SERIAL_NUMBER_GENERATOR_CB | SN generator for new certificates. Defaults to |\n| | a SHA1 of the current epoch and the next value |\n| | from Python's PRNG |\n+----------------------------+------------------------------------------------+\n| API_CSR_HOOKS_FACTORY | Generates objects that encapsulate signing a |\n| | particular CSR. Must inherit from *sapi.config.|\n| | api.signing_hooks_base.SigningHooksBase*. |\n+----------------------------+------------------------------------------------+\n\nThe \"SigningHooksBase\" base-class that a hooks class must inherit from defines \nthe following methods to be overridden:\n\n+----------------------------------+------------------------------------------+\n| Method | Description |\n+==================================+==========================================+\n| authorize(subject_alt_name_exts) | A request has been received. |\n+----------------------------------+------------------------------------------+\n| presign(certificate) | A certificate has been built and is |\n| | about to be signed. Is an M2Crypto.X509 |\n| | object. |\n+----------------------------------+------------------------------------------+\n| postsign(certificate) | A certificate has been signed and is |\n| | about to be returned. Is an M2Crypto. |\n| | X509 object. |\n+----------------------------------+------------------------------------------+\n\nThe base-class also exposes the following properties:\n\n+-----------------+---------------------------------------------------------------------------------+\n| Property | Description |\n+=================+=================================================================================+\n| client_hash | The client-hash from the current HTTP request. |\n+-----------------+---------------------------------------------------------------------------------+\n| public_key_hash | A SHA1 (lower-case) hash of the public-key received with the CSR. | \n+-----------------+---------------------------------------------------------------------------------+\n| csr_tuple | (, , ) |\n+-----------------+---------------------------------------------------------------------------------+\n\n\n-------------\nOther Details\n-------------\n\n- The default length of the CA key created by the *ca_create_identity* tool is \n 2048-bits. If you'd like a different length, just provide your own identity \n files.\n\n\n-------------\nCompatibility\n-------------\n\nAs this project uses web.py, it is only compatible with Python 2.x .\n\n\n---------------------------\nUnsupported functionalities\n---------------------------\n\n- We do not directly support CRLs/OCSP/etc.. for certificate revocation. If \n desired, it'll be up to the developer to add a CDP (CRL distribution point) \n or OCSP access URL from the pre-signing callback, and then host it \n themselves.\n\n\n----------\nDisclaimer\n----------\n\nThis project (and its documentation) is currently approaching final release. As \nsuch it is still subject to change (probably not by much, though).", "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/dsoprea/SslApi", "keywords": "ssl openssl ca certificate authority api", "license": "GPL 2", "maintainer": null, "maintainer_email": null, "name": "ssl_api", "package_url": "https://pypi.org/project/ssl_api/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/ssl_api/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/dsoprea/SslApi" }, "release_url": "https://pypi.org/project/ssl_api/0.2.34/", "requires_dist": null, "requires_python": null, "summary": "A certificate-authority API.", "version": "0.2.34" }, "last_serial": 1585735, "releases": { "0.2.1": [ { "comment_text": "", "digests": { "md5": "a5969e5ae507e6df4dec865362073b01", "sha256": "66a07600cd5c99acbc808dd7cfdfdba4dfd08278fac0e2c8976f04d852298e8f" }, "downloads": -1, "filename": "ssl_api-0.2.1.tar.gz", "has_sig": false, "md5_digest": "a5969e5ae507e6df4dec865362073b01", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8385, "upload_time": "2014-05-21T06:44:58", "url": "https://files.pythonhosted.org/packages/fa/62/3b83fb197e4aad1823b824719af728a3f56692f4090225a8a54c5f55e86e/ssl_api-0.2.1.tar.gz" } ], "0.2.10": [ { "comment_text": "", "digests": { "md5": "d029c58de3e0c579cf2f9626a6cb7c9a", "sha256": "8fccc9c81effbee1b9c9487ad75cdee52b9abae617d6b4cf890d9f81de18f506" }, "downloads": -1, "filename": "ssl_api-0.2.10-py2-none-any.whl", "has_sig": false, "md5_digest": "d029c58de3e0c579cf2f9626a6cb7c9a", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 20421, "upload_time": "2014-05-25T04:39:44", "url": "https://files.pythonhosted.org/packages/f3/e5/90b0cbe0553100f1f47e7839b44b3a7709bf5e46d7c827031f9d15de5cfe/ssl_api-0.2.10-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0e72727a6c3265d35511b8a0f286b72e", "sha256": "a6ace71e56953d42bf92a2aa599bd9a5c03481b35da1579cc4a5205a58321bab" }, "downloads": -1, "filename": "ssl_api-0.2.10.tar.gz", "has_sig": false, "md5_digest": "0e72727a6c3265d35511b8a0f286b72e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9358, "upload_time": "2014-05-25T04:39:41", "url": "https://files.pythonhosted.org/packages/3c/a8/11beaefa87b9060a1582e6ebb7c03354487b834aa1b81816429dd330f890/ssl_api-0.2.10.tar.gz" } ], "0.2.11": [ { "comment_text": "", "digests": { "md5": "ed238f6b637dc73483979976f46dabc1", "sha256": "f9c1eb4bb46f7415e2a633b8bd8895a2c0b9030cc856f32590f5cbafb51eacf2" }, "downloads": -1, "filename": "ssl_api-0.2.11-py2-none-any.whl", "has_sig": false, "md5_digest": "ed238f6b637dc73483979976f46dabc1", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 20492, "upload_time": "2014-05-25T20:15:49", "url": "https://files.pythonhosted.org/packages/f9/fb/8d5b5c102cc600216dbe253716a0bb9ddd8ffc48a5c62a06c0019fca9d0d/ssl_api-0.2.11-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cef62b9d6e452e755373da9baa6779ac", "sha256": "2feb0067b06bfccecbbbd978b0aa83ec7a3e913f18df3022ba4d46f729d72b13" }, "downloads": -1, "filename": "ssl_api-0.2.11.tar.gz", "has_sig": false, "md5_digest": "cef62b9d6e452e755373da9baa6779ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9421, "upload_time": "2014-05-25T20:15:47", "url": "https://files.pythonhosted.org/packages/20/45/09c2de9497f341765008d1658cb86d81b41f068539658b15edc4845ada53/ssl_api-0.2.11.tar.gz" } ], "0.2.12": [ { "comment_text": "", "digests": { "md5": "dd304f16f75421945a31f1e69c3bd41a", "sha256": "90a47d0a6f9b3ed7f3fc2109f187d8cde704326c9885ef2201b8564928d6fafe" }, "downloads": -1, "filename": "ssl_api-0.2.12-py2-none-any.whl", "has_sig": false, "md5_digest": "dd304f16f75421945a31f1e69c3bd41a", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 20933, "upload_time": "2014-05-25T21:32:27", "url": "https://files.pythonhosted.org/packages/76/15/ed8ed8a8c59b50818accf24cdf0cd37e9d132560ef161cacc624237bd9af/ssl_api-0.2.12-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1a55093504779b89f2a80ffd217a25fd", "sha256": "9d265453cb8eac4aab54be7fee385aff5646bd38948c1adde52aefb4cabf036e" }, "downloads": -1, "filename": "ssl_api-0.2.12.tar.gz", "has_sig": false, "md5_digest": "1a55093504779b89f2a80ffd217a25fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9690, "upload_time": "2014-05-25T21:32:24", "url": "https://files.pythonhosted.org/packages/29/85/710f9ba5598fef2da1dbe1fde6eeb9f65f310552148b7cdadba81f11999b/ssl_api-0.2.12.tar.gz" } ], "0.2.13": [ { "comment_text": "", "digests": { "md5": "7e726f271e7cb99532135d7fc5e40696", "sha256": "4ede56ff8aeeb272822ebf7cd2b2e110a06f205cec7ed978aeec4748571997a4" }, "downloads": -1, "filename": "ssl_api-0.2.13-py2-none-any.whl", "has_sig": false, "md5_digest": "7e726f271e7cb99532135d7fc5e40696", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 20932, "upload_time": "2014-05-25T21:33:53", "url": "https://files.pythonhosted.org/packages/f5/9f/95299d1200899560d97a807ac9240a4037fd25c397f9e1b502c937ea17c4/ssl_api-0.2.13-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a4c8f255df0fddb97a582a78edcb3bf1", "sha256": "ef26ad345098c11c1c4813c2df1faad8f48af6a85b983ac1b4bfde9abfbd0c05" }, "downloads": -1, "filename": "ssl_api-0.2.13.tar.gz", "has_sig": false, "md5_digest": "a4c8f255df0fddb97a582a78edcb3bf1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9686, "upload_time": "2014-05-25T21:33:51", "url": "https://files.pythonhosted.org/packages/b4/77/35dbf8acf767189ab7f01aeab3217448fb3f19ab4155ee194a00461fcbd4/ssl_api-0.2.13.tar.gz" } ], "0.2.14": [ { "comment_text": "", "digests": { "md5": "38e86056750f0f46498cb52a0e9a45f3", "sha256": "b4a35d99857c01a578499bf91f9a9a9de26990d84283609d75a5125ab70dd784" }, "downloads": -1, "filename": "ssl_api-0.2.14-py2-none-any.whl", "has_sig": false, "md5_digest": "38e86056750f0f46498cb52a0e9a45f3", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 20935, "upload_time": "2014-05-25T21:36:07", "url": "https://files.pythonhosted.org/packages/4c/7c/c9a5fb01ff54af41f32b3dba6764f61705c144597364799b2b7968cc10b5/ssl_api-0.2.14-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5bb76d3b2a5678d9e44e5bf7a189560e", "sha256": "0560ebec88840292f1fba0c985e7a2ea5ec9834128f0b8ff91add0c405ef2652" }, "downloads": -1, "filename": "ssl_api-0.2.14.tar.gz", "has_sig": false, "md5_digest": "5bb76d3b2a5678d9e44e5bf7a189560e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9687, "upload_time": "2014-05-25T21:36:05", "url": "https://files.pythonhosted.org/packages/ba/5f/adeb2c405c33395fc4d34e13736e9464d552de80f8133fef0b08491e01fc/ssl_api-0.2.14.tar.gz" } ], "0.2.15": [ { "comment_text": "", "digests": { "md5": "2978222f4d3a7e7caed1c2f1d61ffe4e", "sha256": "31124fdd3cc2471c2693c892e4b22e3bf96d11eb241268d9fb37cf828f7ac2a9" }, "downloads": -1, "filename": "ssl_api-0.2.15-py2-none-any.whl", "has_sig": false, "md5_digest": "2978222f4d3a7e7caed1c2f1d61ffe4e", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 20936, "upload_time": "2014-05-25T21:39:23", "url": "https://files.pythonhosted.org/packages/f0/eb/9543ba2a321afcb3cd7898d19bf60be850aeb0eae06542386c51d2cec923/ssl_api-0.2.15-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dc77ebef0fdfe0ba941cbf8f651fdf38", "sha256": "b098e43215862de173da5f86c2f6219af35adf34985a12a83260363ba463d648" }, "downloads": -1, "filename": "ssl_api-0.2.15.tar.gz", "has_sig": false, "md5_digest": "dc77ebef0fdfe0ba941cbf8f651fdf38", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9689, "upload_time": "2014-05-25T21:39:21", "url": "https://files.pythonhosted.org/packages/f3/d4/3ebd67ce3ef307b8ec92dad1d01e37a56df8c08a405b47af9631275512e3/ssl_api-0.2.15.tar.gz" } ], "0.2.16": [ { "comment_text": "", "digests": { "md5": "3167d9e9fa363a2fc47442d8d3274b1a", "sha256": "ec28950e281a6f095ee4930eea22648a306bb16bb52b521b1ccd3d65434f0686" }, "downloads": -1, "filename": "ssl_api-0.2.16-py2-none-any.whl", "has_sig": false, "md5_digest": "3167d9e9fa363a2fc47442d8d3274b1a", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 20952, "upload_time": "2014-05-25T21:48:20", "url": "https://files.pythonhosted.org/packages/c1/83/7b48311df410b327053601530821e52f8a693514baa6b6b99f0ef38e2d00/ssl_api-0.2.16-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "81bf788b28dd73f877d083b1ccebcd83", "sha256": "d60792da2fe7666bf2192650291d3e5c0498d9ebac5f28d18ea8cc20dfc336ca" }, "downloads": -1, "filename": "ssl_api-0.2.16.tar.gz", "has_sig": false, "md5_digest": "81bf788b28dd73f877d083b1ccebcd83", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9692, "upload_time": "2014-05-25T21:48:18", "url": "https://files.pythonhosted.org/packages/5b/c4/92e021805584421aad7f9ffa482f0c2c9431bfd602e1a623a2a6672a0beb/ssl_api-0.2.16.tar.gz" } ], "0.2.17": [ { "comment_text": "", "digests": { "md5": "c0492288e8990f90fbf4edc9c96017c9", "sha256": "63cf204a2df2ce9d743e6e72b83c9c943dbcab8e28e4b08fbce0af944abae3c7" }, "downloads": -1, "filename": "ssl_api-0.2.17-py2-none-any.whl", "has_sig": false, "md5_digest": "c0492288e8990f90fbf4edc9c96017c9", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 21001, "upload_time": "2014-05-25T22:12:01", "url": "https://files.pythonhosted.org/packages/bd/d3/71c6ed8e3d5cab355d74dd924f2738f868b0ff5b6d688c13cad6169eaf32/ssl_api-0.2.17-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "01074517f7d6d032f0a35ee0372530d6", "sha256": "e6b519caa5c325f9d002504b49d6da0b3c3eaca294bdcd7a177029c4f8936669" }, "downloads": -1, "filename": "ssl_api-0.2.17.tar.gz", "has_sig": false, "md5_digest": "01074517f7d6d032f0a35ee0372530d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9748, "upload_time": "2014-05-25T22:11:58", "url": "https://files.pythonhosted.org/packages/2f/2d/6d31a3d452a5fe070a86df0d316c2b86ad0ab458d09771de033678ae8f4b/ssl_api-0.2.17.tar.gz" } ], "0.2.18": [ { "comment_text": "", "digests": { "md5": "c7aeb629216b39e79b3e3d4a3163b4f9", "sha256": "381e28e7d2d6a98d14fd67b9a9613de3d576a23936309060dbf785ce748f2fa8" }, "downloads": -1, "filename": "ssl_api-0.2.18-py2-none-any.whl", "has_sig": false, "md5_digest": "c7aeb629216b39e79b3e3d4a3163b4f9", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 21475, "upload_time": "2014-05-25T23:20:33", "url": "https://files.pythonhosted.org/packages/73/0b/a99d03e3a55bf8702f58d26b7b64ecddd3bda36f285ab96312732fcd2241/ssl_api-0.2.18-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0b1cc6d06c901684142923fce30775b6", "sha256": "b01466269a46ec0601d1bb1d260c665c3f3cc77533059ff3594f5c97e137e531" }, "downloads": -1, "filename": "ssl_api-0.2.18.tar.gz", "has_sig": false, "md5_digest": "0b1cc6d06c901684142923fce30775b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9903, "upload_time": "2014-05-25T23:20:30", "url": "https://files.pythonhosted.org/packages/a1/e5/e76d1b32ec0c4eab58cc23d30feace79b59ed2c676cc9d716bbeb09c50fc/ssl_api-0.2.18.tar.gz" } ], "0.2.19": [ { "comment_text": "", "digests": { "md5": "1911cb12d23e38fcd40661cd0ab753ae", "sha256": "2e7b7d38eeba032204e8d8ed4ca8faf70c9fd3f86ef96cb0885827d54f7427cc" }, "downloads": -1, "filename": "ssl_api-0.2.19-py2-none-any.whl", "has_sig": false, "md5_digest": "1911cb12d23e38fcd40661cd0ab753ae", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 24014, "upload_time": "2014-05-26T03:45:48", "url": "https://files.pythonhosted.org/packages/7d/fe/977ba4591d82bc4de1c9b1b3a331977fe4f4b8fa37af92ff685a9098d9cd/ssl_api-0.2.19-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d86e59368ed7bf4fbb66e3aa078808b9", "sha256": "df6397dc24424a4d5e13df281333635593da9da18d3b89248d63a24f55271a40" }, "downloads": -1, "filename": "ssl_api-0.2.19.tar.gz", "has_sig": false, "md5_digest": "d86e59368ed7bf4fbb66e3aa078808b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9931, "upload_time": "2014-05-26T03:45:46", "url": "https://files.pythonhosted.org/packages/37/7a/2cf44ca1f8f097ac2c6d73836be7955df8cc9bfe58a9c62f1de68f9b27ac/ssl_api-0.2.19.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "ce7232f56777900919e31bf534e7d775", "sha256": "12f93689ea48b04466a60d6fb38f7d6edc1963d64fa13462b0a0ada36f8669f5" }, "downloads": -1, "filename": "ssl_api-0.2.2.tar.gz", "has_sig": false, "md5_digest": "ce7232f56777900919e31bf534e7d775", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8388, "upload_time": "2014-05-21T06:49:18", "url": "https://files.pythonhosted.org/packages/65/0f/1c7d86569261f1e7ea31f6367313db442b8b250cde0ef3c032bafa47c126/ssl_api-0.2.2.tar.gz" } ], "0.2.20": [ { "comment_text": "", "digests": { "md5": "73d8c7caff288fced305c181b8129f8b", "sha256": "35f76325d40c76ffa9eb7cccaaa106456b8986acaf1fd04bbfe8564e976874b5" }, "downloads": -1, "filename": "ssl_api-0.2.20-py2-none-any.whl", "has_sig": false, "md5_digest": "73d8c7caff288fced305c181b8129f8b", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 24016, "upload_time": "2014-05-26T03:50:14", "url": "https://files.pythonhosted.org/packages/d9/5d/fa8429219de08450f71b885d4ae9d3bdbee6c0295dbb1c25f2df320c4143/ssl_api-0.2.20-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "81204bc03b40ec691829f872bdf471d4", "sha256": "565e70bd9288403d840c6d1628a3c86831ff85392f6b80d3b9a603e4146a3c6f" }, "downloads": -1, "filename": "ssl_api-0.2.20.tar.gz", "has_sig": false, "md5_digest": "81204bc03b40ec691829f872bdf471d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9930, "upload_time": "2014-05-26T03:50:12", "url": "https://files.pythonhosted.org/packages/6b/67/25c5cc16ef72fced9f2d1170b74615c59aff1333b9e34b0bb17750f4e5b3/ssl_api-0.2.20.tar.gz" } ], "0.2.21": [ { "comment_text": "", "digests": { "md5": "283a6c47b9b2be3cbc5120585f4831d0", "sha256": "f46261e4092f63263900d56c88cf2cd9db9f878d101a4d99e8e383d970b4bcfc" }, "downloads": -1, "filename": "ssl_api-0.2.21-py2-none-any.whl", "has_sig": false, "md5_digest": "283a6c47b9b2be3cbc5120585f4831d0", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 24010, "upload_time": "2014-05-26T03:53:34", "url": "https://files.pythonhosted.org/packages/c5/59/c1015be9148f84311938e290dc43be8aae040e89cf5f9cf60d29ad6cc5dc/ssl_api-0.2.21-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1b2ea69db144ffd1b452315dd8b9231d", "sha256": "83950013e46aeb3b9ed94501b7227e2ba3bf6dceb06ab5d85a1581bb876192bc" }, "downloads": -1, "filename": "ssl_api-0.2.21.tar.gz", "has_sig": false, "md5_digest": "1b2ea69db144ffd1b452315dd8b9231d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9932, "upload_time": "2014-05-26T03:53:32", "url": "https://files.pythonhosted.org/packages/db/1a/7325617a394d75663141a43cf2d120b75335e2ca4468bd7ea2dbf2928f32/ssl_api-0.2.21.tar.gz" } ], "0.2.22": [ { "comment_text": "", "digests": { "md5": "900912e6294b95076e27d1577b0cdd77", "sha256": "02ce4f29f7c1413e8f36e3f910060f484bf0a4b23c8db9b17b568e19bf7424e9" }, "downloads": -1, "filename": "ssl_api-0.2.22-py2-none-any.whl", "has_sig": false, "md5_digest": "900912e6294b95076e27d1577b0cdd77", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 24058, "upload_time": "2014-05-26T04:23:17", "url": "https://files.pythonhosted.org/packages/18/80/230c271e445f874747e674eedddd3e6463798bd3af5eb01cbee86fbdd09b/ssl_api-0.2.22-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "30945a9be4e7f7b047ef8f18d73c2e0c", "sha256": "95acefeb068c01fff9c788babd3ba8c4133cf67bd323641d7e60f1e7dbd23d7a" }, "downloads": -1, "filename": "ssl_api-0.2.22.tar.gz", "has_sig": false, "md5_digest": "30945a9be4e7f7b047ef8f18d73c2e0c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9951, "upload_time": "2014-05-26T04:23:16", "url": "https://files.pythonhosted.org/packages/ff/34/71e2af06e463c3d5e9e19d1419f3a32fda2ed74cd65fb3db0f37fc6e76ad/ssl_api-0.2.22.tar.gz" } ], "0.2.23": [ { "comment_text": "", "digests": { "md5": "d972f65d372a298b59ae7d7186538e2a", "sha256": "13c1d94038659899f19ac77ca4c5e2568a26fd0f707815b5cd46dbaf5546170b" }, "downloads": -1, "filename": "ssl_api-0.2.23-py2-none-any.whl", "has_sig": false, "md5_digest": "d972f65d372a298b59ae7d7186538e2a", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 24105, "upload_time": "2014-05-26T04:52:20", "url": "https://files.pythonhosted.org/packages/b8/38/b98e4f34e3ac8a9b258891dbd3e8a1e911b019d6d3cc632872791c12c8b6/ssl_api-0.2.23-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "428ab7c7c9d628f449466be1ecf3eacc", "sha256": "693774f4f915c39796a206973973adf3bb23e09af79a6dfeb7032d175f131a73" }, "downloads": -1, "filename": "ssl_api-0.2.23.tar.gz", "has_sig": false, "md5_digest": "428ab7c7c9d628f449466be1ecf3eacc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9886, "upload_time": "2014-05-26T04:52:17", "url": "https://files.pythonhosted.org/packages/81/14/99bc4441eff35b82f9a1a943eb2731183f971af44a38230d81a95a6c1f95/ssl_api-0.2.23.tar.gz" } ], "0.2.24": [ { "comment_text": "", "digests": { "md5": "3f929ef08a58f2e5912f2cbf974f31e6", "sha256": "f9900d8ac045922c1412cab355b7da892f60051009313f5efb4a76e44d3ba538" }, "downloads": -1, "filename": "ssl_api-0.2.24-py2-none-any.whl", "has_sig": false, "md5_digest": "3f929ef08a58f2e5912f2cbf974f31e6", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 24131, "upload_time": "2014-05-26T21:50:11", "url": "https://files.pythonhosted.org/packages/2c/43/48f8e7df5f801fb4e38500b04bdb11a394f7f06709a5c306572a5461e530/ssl_api-0.2.24-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ac0bd935d2faa197c2f18f70c96783ae", "sha256": "f33cb13e3542cbc03df6964df783983a448a641aabf10c0a96ca64fbe5db37ed" }, "downloads": -1, "filename": "ssl_api-0.2.24.tar.gz", "has_sig": false, "md5_digest": "ac0bd935d2faa197c2f18f70c96783ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9938, "upload_time": "2014-05-26T21:50:08", "url": "https://files.pythonhosted.org/packages/49/24/6770b33ba284c0205e5ae06a2631c57b37932be1dcb901e5a1d3f31fb117/ssl_api-0.2.24.tar.gz" } ], "0.2.25": [ { "comment_text": "", "digests": { "md5": "80172213b0c421bbbe339f1abcd19678", "sha256": "aa3093bd77728068fc8e4ed7b9ef91a32868208db82b8d731d058ad89d115402" }, "downloads": -1, "filename": "ssl_api-0.2.25-py2-none-any.whl", "has_sig": false, "md5_digest": "80172213b0c421bbbe339f1abcd19678", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 24108, "upload_time": "2014-05-26T23:12:46", "url": "https://files.pythonhosted.org/packages/87/44/a56e69189340598ca7539447ed9a8b87c387a79dca41c503b5389cf617d6/ssl_api-0.2.25-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "04a40f4136e1f975efb2e6ff06f247e5", "sha256": "aa20d7c53cac7b762128054094801287bc4af592ab8871c93bf830b22108e079" }, "downloads": -1, "filename": "ssl_api-0.2.25.tar.gz", "has_sig": false, "md5_digest": "04a40f4136e1f975efb2e6ff06f247e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9941, "upload_time": "2014-05-26T23:12:44", "url": "https://files.pythonhosted.org/packages/b9/99/f0a7c28f5384fa9d309f5104473fbfff7f8fcc0e4ffa2e708e9ad3a10e39/ssl_api-0.2.25.tar.gz" } ], "0.2.26": [ { "comment_text": "", "digests": { "md5": "dc69a04251300d2ccb2a241deb9ea3e2", "sha256": "0b209aa4ebff519a53f94a9686673e6e887cb8d7eabfc172e8efe11a67fe7ec6" }, "downloads": -1, "filename": "ssl_api-0.2.26-py2-none-any.whl", "has_sig": false, "md5_digest": "dc69a04251300d2ccb2a241deb9ea3e2", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 24141, "upload_time": "2014-05-26T23:23:03", "url": "https://files.pythonhosted.org/packages/31/65/dc8326b939b0723b2d780dce153968ac733c0e9da0aa5f3846e22f1b074a/ssl_api-0.2.26-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f8800805f6b05183fae3014c48a844ed", "sha256": "c06f763de5107b0b8d4068e52f7564cc440d7a294c1eba9b090093739073eccb" }, "downloads": -1, "filename": "ssl_api-0.2.26.tar.gz", "has_sig": false, "md5_digest": "f8800805f6b05183fae3014c48a844ed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9939, "upload_time": "2014-05-26T23:23:00", "url": "https://files.pythonhosted.org/packages/f8/3f/6306064d48b7b19f40649fa9ae5767c800f99652795fde2343c94f429219/ssl_api-0.2.26.tar.gz" } ], "0.2.27": [ { "comment_text": "", "digests": { "md5": "245499df4d75792a7480d5e677b29543", "sha256": "ee5e8bbaeffe4db85f9c3bbce3214db145fb4d3068c8e5ba8117d81fb1438f0d" }, "downloads": -1, "filename": "ssl_api-0.2.27-py2-none-any.whl", "has_sig": false, "md5_digest": "245499df4d75792a7480d5e677b29543", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 24145, "upload_time": "2014-05-27T01:44:31", "url": "https://files.pythonhosted.org/packages/ec/ce/6cc7411bfe7f2b729be89ff3e1a6bd2a1bc9f46499db2bd66571cb7d47d2/ssl_api-0.2.27-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c82d99e3edccb879661a6f9244991cf4", "sha256": "7e4b815ea122ce624d9fc8fb17d7b33db91260da5a9bbe867a9ccc1a6aa2e380" }, "downloads": -1, "filename": "ssl_api-0.2.27.tar.gz", "has_sig": false, "md5_digest": "c82d99e3edccb879661a6f9244991cf4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9942, "upload_time": "2014-05-27T01:44:29", "url": "https://files.pythonhosted.org/packages/0a/84/feff36b6f73e485f2532fb813bd80d437fd2ca60aee48fd0ad3a3fc89ad6/ssl_api-0.2.27.tar.gz" } ], "0.2.28": [ { "comment_text": "", "digests": { "md5": "bfe4f3ef26cb7db68f221b48e0b03b1b", "sha256": "85f87f1eb49dc1ff20d3013ecf7ae8f07d22413172588db0a3b64387b3309761" }, "downloads": -1, "filename": "ssl_api-0.2.28-py2-none-any.whl", "has_sig": false, "md5_digest": "bfe4f3ef26cb7db68f221b48e0b03b1b", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 24236, "upload_time": "2014-05-27T07:20:58", "url": "https://files.pythonhosted.org/packages/da/49/c1c7fcabe7367d12c561a2b2af1706256eaa0d7b6e95f8cdeb003004c762/ssl_api-0.2.28-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e19613b67d300f01eca3079b948ae7bd", "sha256": "26d262f186c69709bdcb157f68c2cddf42a81db78e8472fdf8cc8478477b9cbb" }, "downloads": -1, "filename": "ssl_api-0.2.28.tar.gz", "has_sig": false, "md5_digest": "e19613b67d300f01eca3079b948ae7bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10034, "upload_time": "2014-05-27T07:20:55", "url": "https://files.pythonhosted.org/packages/d9/e5/bfe9c09707c62630168df6cc625b9e1f7da57cdbeaa1faf74561fb26f61e/ssl_api-0.2.28.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "1af3297bae4fdd1d520fc6cb36070191", "sha256": "2a6daa8f9fdc23a757cd706dc44a9f52e44cc7059d9315fb19b855ec10f01571" }, "downloads": -1, "filename": "ssl_api-0.2.3-py2-none-any.whl", "has_sig": false, "md5_digest": "1af3297bae4fdd1d520fc6cb36070191", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 20579, "upload_time": "2014-05-21T20:07:17", "url": "https://files.pythonhosted.org/packages/15/73/6750a19d0af5b7eaff70897f1495b10bdee17254bc65f547701f3e8eea13/ssl_api-0.2.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9565b113572de3c51b35c6695fc4c2c2", "sha256": "4990615062cbccc7c711b9b68d02fac37e6075b1bc4ab858342af6651c7eb2e3" }, "downloads": -1, "filename": "ssl_api-0.2.3.tar.gz", "has_sig": false, "md5_digest": "9565b113572de3c51b35c6695fc4c2c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8798, "upload_time": "2014-05-21T20:07:10", "url": "https://files.pythonhosted.org/packages/47/f0/1072c3bfdc98e4e2ee0d400b7e4e74a146f407649108b0d2ade482f67d22/ssl_api-0.2.3.tar.gz" } ], "0.2.30": [ { "comment_text": "", "digests": { "md5": "9295b223cb5586ac5050a6f9f43db575", "sha256": "4096f0e5f3b1c010fb52dc51eab75143f24ce871493b28a60b7c8064a25be97f" }, "downloads": -1, "filename": "ssl_api-0.2.30-py2-none-any.whl", "has_sig": false, "md5_digest": "9295b223cb5586ac5050a6f9f43db575", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 24286, "upload_time": "2014-05-27T18:23:40", "url": "https://files.pythonhosted.org/packages/a2/d6/b33b9a0794c582fc28e05e5e6e11a4c9968dcdf7623a638fa53ffe5ea625/ssl_api-0.2.30-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c67a8676d40297cc2dd16c17a6afcabc", "sha256": "27576911a9e1d782625b663b9aa844fc06f4c7fb363027b56c1f2f3ef53207c2" }, "downloads": -1, "filename": "ssl_api-0.2.30.tar.gz", "has_sig": false, "md5_digest": "c67a8676d40297cc2dd16c17a6afcabc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10069, "upload_time": "2014-05-27T18:23:37", "url": "https://files.pythonhosted.org/packages/54/0a/ca1955e39975f444bdd59930c7cb1486f463ee06c5f3244004901e98f15a/ssl_api-0.2.30.tar.gz" } ], "0.2.31": [ { "comment_text": "", "digests": { "md5": "bc668346e2b4367399d24cdab8067378", "sha256": "b15bbb88c88d8467dc75ab9ed2d6f9a46672a303ad7e1690f3f221fe8fffdbcb" }, "downloads": -1, "filename": "ssl_api-0.2.31-py2-none-any.whl", "has_sig": false, "md5_digest": "bc668346e2b4367399d24cdab8067378", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 24569, "upload_time": "2014-06-07T19:26:59", "url": "https://files.pythonhosted.org/packages/65/84/3752fc25dcf0f38934ff7959eca7285641522dbd8b26f3a8cf82bf9c43e4/ssl_api-0.2.31-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c5370790f029876e96929b256a121f35", "sha256": "01537fd03fddc45d8605082cc4c7f6ad2ba51c01363a2baaa4c688ff8e531e14" }, "downloads": -1, "filename": "ssl_api-0.2.31.tar.gz", "has_sig": false, "md5_digest": "c5370790f029876e96929b256a121f35", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10141, "upload_time": "2014-06-07T19:26:56", "url": "https://files.pythonhosted.org/packages/75/bc/4207fe9a34fce9e384d128db8235d39c17a2f9588e8de33f5aa3898a9925/ssl_api-0.2.31.tar.gz" } ], "0.2.32": [ { "comment_text": "", "digests": { "md5": "4f21562221936c6f54bd82c4097419ab", "sha256": "ab0d979a594552c721e647d0f519f048a4cf5c260f4219c6927fa1dd1cc8a55b" }, "downloads": -1, "filename": "ssl_api-0.2.32-py2-none-any.whl", "has_sig": false, "md5_digest": "4f21562221936c6f54bd82c4097419ab", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 40219, "upload_time": "2014-08-09T04:51:12", "url": "https://files.pythonhosted.org/packages/7d/4a/f8d0e53e229a703bba4e1fee5e9f2c5a5bdb3aae44d2af5182cc546a5129/ssl_api-0.2.32-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6cd0ac11e9f51a277a4c5f76f9556d0b", "sha256": "d92a06067332572e64350a79b716506bafde2fbf65635b5c4c4b03893a48185e" }, "downloads": -1, "filename": "ssl_api-0.2.32.tar.gz", "has_sig": false, "md5_digest": "6cd0ac11e9f51a277a4c5f76f9556d0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20099, "upload_time": "2014-08-09T04:51:09", "url": "https://files.pythonhosted.org/packages/7a/bd/0a49caeaf86e9214bdf0bad2d08f9853373bf130fd5118ea92753fb1209b/ssl_api-0.2.32.tar.gz" } ], "0.2.33": [ { "comment_text": "", "digests": { "md5": "fc0eb6fd6f322fb97547005ca16130db", "sha256": "9cd1c32afce5bb4d004fb01c119ced8abf0ec5e6345c758623e0149024f97780" }, "downloads": -1, "filename": "ssl_api-0.2.33-py2-none-any.whl", "has_sig": false, "md5_digest": "fc0eb6fd6f322fb97547005ca16130db", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 40663, "upload_time": "2014-11-08T01:24:24", "url": "https://files.pythonhosted.org/packages/de/ef/d333b4be93ddd24715ed619e2d295ef0a3b2679e76bb484f4c7a60c9d477/ssl_api-0.2.33-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ee14500648b9b1b329476f0cfc9f97d0", "sha256": "030532b31280f5cbcbe1bbecffce194ce0411c34ff15fce1be41cee73ae32791" }, "downloads": -1, "filename": "ssl_api-0.2.33.tar.gz", "has_sig": false, "md5_digest": "ee14500648b9b1b329476f0cfc9f97d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20297, "upload_time": "2014-11-08T01:24:20", "url": "https://files.pythonhosted.org/packages/b2/2a/e95a307b8b9a5e954b88404325f9a6645797bd708260a10ab3b5bb3a3573/ssl_api-0.2.33.tar.gz" } ], "0.2.34": [ { "comment_text": "", "digests": { "md5": "8aff288ce08cedd196372c61a0e80f2e", "sha256": "5d755ce085b5d049cbd0b94a93034016fd3c9d71fb6eb16358d0a7b148750422" }, "downloads": -1, "filename": "ssl_api-0.2.34.tar.gz", "has_sig": false, "md5_digest": "8aff288ce08cedd196372c61a0e80f2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20607, "upload_time": "2015-06-10T01:34:20", "url": "https://files.pythonhosted.org/packages/61/95/b5b14babfe99d529b80975076c1072f0d7f2fe07045f64d45a951ed1034f/ssl_api-0.2.34.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "ed76b6d03b1542b0bd58a4e6f51b4862", "sha256": "4c4647e330d3c83e56ad139becb63955a6cbcd4a1486438cc791472261c59c95" }, "downloads": -1, "filename": "ssl_api-0.2.4-py2-none-any.whl", "has_sig": false, "md5_digest": "ed76b6d03b1542b0bd58a4e6f51b4862", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 20580, "upload_time": "2014-05-21T20:51:48", "url": "https://files.pythonhosted.org/packages/d8/50/ed85dd5ece480fda7d38eff9b1069ee55c34350c06b5cf4d84229951b8d6/ssl_api-0.2.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "79f4db2b2691fd4a8a34efb5ace205b8", "sha256": "bcad6f637171b3dfc8da3a9a3a679a93a2912e97b3ec6ae1da66176d7c4ca021" }, "downloads": -1, "filename": "ssl_api-0.2.4.tar.gz", "has_sig": false, "md5_digest": "79f4db2b2691fd4a8a34efb5ace205b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10197, "upload_time": "2014-05-21T20:51:42", "url": "https://files.pythonhosted.org/packages/d5/0d/19d308d0c8ca52e176742f12f81d9abd75aa6043a480f211ca3234b81915/ssl_api-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "38bd45476e65de9b29e3bf5389eff2e8", "sha256": "becfc4c5a6edf97a7f82ea2abf26d19af30299318d9b1516acb37e2d7a001ce4" }, "downloads": -1, "filename": "ssl_api-0.2.5-py2-none-any.whl", "has_sig": false, "md5_digest": "38bd45476e65de9b29e3bf5389eff2e8", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 21019, "upload_time": "2014-05-21T22:30:24", "url": "https://files.pythonhosted.org/packages/d5/87/b6035f48423477d073e8718526b1cd2e13699ed7162a728ee14981e60eb2/ssl_api-0.2.5-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d276cc2e3fb66f689bd2e90b68cdf756", "sha256": "0007c1c45cfc7814d026687a4996928449f220877f3bd9fb2cf5f8b1695e4bb4" }, "downloads": -1, "filename": "ssl_api-0.2.5.tar.gz", "has_sig": false, "md5_digest": "d276cc2e3fb66f689bd2e90b68cdf756", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8992, "upload_time": "2014-05-21T22:30:21", "url": "https://files.pythonhosted.org/packages/56/1f/102dcdb46bace6590ba3608a3575a53517969c29684d3785039c0cfd8b6c/ssl_api-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "22d36e454c8b3b71eb3383e67c5ee020", "sha256": "ef64efeded36f0c2caa036142326b14747d776ff79d6f1e3be84b9b701d90eb4" }, "downloads": -1, "filename": "ssl_api-0.2.6-py2-none-any.whl", "has_sig": false, "md5_digest": "22d36e454c8b3b71eb3383e67c5ee020", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 21019, "upload_time": "2014-05-21T22:37:47", "url": "https://files.pythonhosted.org/packages/6b/26/2704540f58584318183307214a4405f5dd5efa1622abd154b0e7f3f5ee00/ssl_api-0.2.6-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eb93d9ee62b99435b8bd3c69baae26ee", "sha256": "5f3c08111469fb6a9c9bb36d940a78265f98e1b4836d7df52f075cc4a93d2175" }, "downloads": -1, "filename": "ssl_api-0.2.6.tar.gz", "has_sig": false, "md5_digest": "eb93d9ee62b99435b8bd3c69baae26ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8985, "upload_time": "2014-05-21T22:37:44", "url": "https://files.pythonhosted.org/packages/14/98/5783871d7fd1d286c4da72d2e89d43583796fd139b7dd23b4a527d674b99/ssl_api-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "e6a7dfe8f17bfa4a39f7c42b3cfb6af2", "sha256": "80d5a078fbda7c60922e4768184b16f8e81f9f360ba5aa639f8eb80804a6146c" }, "downloads": -1, "filename": "ssl_api-0.2.7-py2-none-any.whl", "has_sig": false, "md5_digest": "e6a7dfe8f17bfa4a39f7c42b3cfb6af2", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 17907, "upload_time": "2014-05-21T22:40:12", "url": "https://files.pythonhosted.org/packages/95/8b/b9ba20addb1c7a97f9b4c72c5abfaaf645b43802400b5ac60781c71f7dc4/ssl_api-0.2.7-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ff9f8ec8726fd81e28595defb51d3b02", "sha256": "26198fbe166fd2ba5e3727e128120bffdd91edd7f7537344df6e40ef8704d7dc" }, "downloads": -1, "filename": "ssl_api-0.2.7.tar.gz", "has_sig": false, "md5_digest": "ff9f8ec8726fd81e28595defb51d3b02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8988, "upload_time": "2014-05-21T22:40:09", "url": "https://files.pythonhosted.org/packages/0a/01/ff23f41073eb9a9efa3f88b1b6af8a14a13d735a13890b2ca0a2c40e4dce/ssl_api-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "70578ece7e1e1c788c2f3bb1b66c7972", "sha256": "4a36beaf3d20a92214df75026b2379e1ff4e76be506898afaae816dcdd050c89" }, "downloads": -1, "filename": "ssl_api-0.2.8-py2-none-any.whl", "has_sig": false, "md5_digest": "70578ece7e1e1c788c2f3bb1b66c7972", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 20335, "upload_time": "2014-05-21T23:17:02", "url": "https://files.pythonhosted.org/packages/8b/a6/57252df02f1d3a657aace4a342696cc4cf927ae6538a8331ed8bbe785ce0/ssl_api-0.2.8-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "135bb89d3d4ee52dca008c8962c153b5", "sha256": "ff19b79fafdf278abe69f1c2cfd8f5120921adb98fe47f98fc0c20112b017480" }, "downloads": -1, "filename": "ssl_api-0.2.8.tar.gz", "has_sig": false, "md5_digest": "135bb89d3d4ee52dca008c8962c153b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9274, "upload_time": "2014-05-21T23:16:59", "url": "https://files.pythonhosted.org/packages/3d/18/7dc27ecebc99322c8dfba1f0b9e848f7bdf811add90a8661cbda9e229479/ssl_api-0.2.8.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "69bbb8c55416eb3ff68f95d90eede357", "sha256": "cf6c27dab28bc4e38a59a3c5a213ea36fd307e52441b9a903111ec6442b60a43" }, "downloads": -1, "filename": "ssl_api-0.2.9-py2-none-any.whl", "has_sig": false, "md5_digest": "69bbb8c55416eb3ff68f95d90eede357", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 20386, "upload_time": "2014-05-21T23:47:19", "url": "https://files.pythonhosted.org/packages/ac/e0/2a192ed9a53683d5409333351e5d767064d75a0a25761a37c37009cd3707/ssl_api-0.2.9-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3890edc983979e104d4a5543ca920bd3", "sha256": "945e37e8e30774cce66cd93322522d06f88c730422299176a69fb61d68253af6" }, "downloads": -1, "filename": "ssl_api-0.2.9.tar.gz", "has_sig": false, "md5_digest": "3890edc983979e104d4a5543ca920bd3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9330, "upload_time": "2014-05-21T23:47:17", "url": "https://files.pythonhosted.org/packages/cb/3d/b1ac371e0897e7df7a42829af0bf3b807790ac280cd020bb43e817796019/ssl_api-0.2.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8aff288ce08cedd196372c61a0e80f2e", "sha256": "5d755ce085b5d049cbd0b94a93034016fd3c9d71fb6eb16358d0a7b148750422" }, "downloads": -1, "filename": "ssl_api-0.2.34.tar.gz", "has_sig": false, "md5_digest": "8aff288ce08cedd196372c61a0e80f2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20607, "upload_time": "2015-06-10T01:34:20", "url": "https://files.pythonhosted.org/packages/61/95/b5b14babfe99d529b80975076c1072f0d7f2fe07045f64d45a951ed1034f/ssl_api-0.2.34.tar.gz" } ] }