Skip to main content

Support for netscape / html5 SPKAC client certificate request

Project description

Author:

Ralf Schlatterbeck <rsc@runtux.com>

This library supports the format of browser-generated SPKAC certificate requests.

The HTML keygen tag which previously was supported by most Mozilla-based browsers is now in the HTML-5 standard. The keygen tag is used in a HTML form element and displays a key generation widget to the user. When submitted, the browser locally generates a public key pair, locally stores the private key, and submits the public key to the web server in the SPKAC format.

When generating a form with a keygen element, the web server can include a challenge string in the form. This challenge string is returned in the SPKAC generated by the browser. It is signed together with the public key by the private key retained by the browser.

This package is intended for server-side support of SPKAC. It uses a submitted SPKAC and checks for correct challenge string and that the public key and challenge are properly signed by the browser. It supports a method for generating a certificate from the data in the SPKAC and additional data supplied by the web application.

The generated certificate can then typically be used for client authentication to a web application and is therefore called a client certificate. The web browser (or other client-side application) supplies the certificate in the SSL handshake and proves it is in the posession of the necessary private key.

Installation

Install using the standard python setup.py mechanism, e.g.:

python setup.py install --prefix=/usr/local

You need pyasn1 and M2Crypto installed for this package to work.

Examples

For a usage example see the doctests in spkac.py

Changes

Version 0.3: Bug fix

Import of version.py failed if dependecies were missing. This prevented a pip install from succeeding in case of missing dependencies.

  • Guard import in __init__.py to not fail for missing dependencies

Version 0.2: Minor feature additions

Move example from end of spkac.py into a doctest. Change of API: set_email no longer supported. Now extensions can be given as unnamed arguments in the constructor. Named arguments are interpreted as subject parameters for the resulting certificate. All this is shown in the doctest.

  • Remove set_email

  • Change constructor: Allow extensions as args and subject parameters as keyword args

  • Add doctest

  • Fix setup.py to include install_requires to auto-install required packages

  • Easier import: from pyspkac import SPKAC works now.

Version 0.1: Initial Release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyspkac-V-0.3.tar.gz (9.2 kB view details)

Uploaded Source

File details

Details for the file pyspkac-V-0.3.tar.gz.

File metadata

  • Download URL: pyspkac-V-0.3.tar.gz
  • Upload date:
  • Size: 9.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pyspkac-V-0.3.tar.gz
Algorithm Hash digest
SHA256 2ffbea7bea3af808b742fb0a4c67e1d56105f4d44b0cfb3c6bd8693490ff775d
MD5 4557154af9d013077d4c357817a49059
BLAKE2b-256 b5a27296f3ba0f383678a6e67ae274760e50a3562f074d5d7310b98013126b78

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page