Giter Club home page Giter Club logo

pyx509's Introduction

pyx509: X.509 Certificate and PKCS7 Parser / Verifier for Python
################################################################

This is a fork of the original project:

    pyx509 - Python library for parsing X.509
    Copyright (C) 2009-2012  CZ.NIC, z.s.p.o. (http://www.nic.cz)

Work in progress!

Description
===========

This is probably the most complete parser of X.509 certificates in python.

Code is in alpha stage! Don't use for anything sensitive. I wrote it (based on
previous work of colleagues) since there is no comprehensive python parser for
X.509 certificates. Often python programmers had to parse openssl output.

Advantages
----------

* I find it less painful to use than parsing output of 'openssl x509'
  somewhat stricter in extension parsing compared to openssl

Disadvantages
-------------

* It's slow compared to openssl (about 2.3x compared to RHEL's openssl-1.0-fips)

* Currently not very strict in what string types in RDNs it accepts

* API is still rather ugly and has no documentation yet; code is nasty at some
  places (and there's some old dangling code like pkcs7/verifier.py)


Dependencies
============

* pyasn1 >= 0.1.7

License
=======

LGPL v2 or later.

See LICENSE.txt.


Known bugs and quirks
=====================

* Subject alternative name doesn't show all subtypes,
  but 'DNS', 'dirName' and 'email' are supported.

* Name constraints don't distinguish among various GeneralName subtypes

* Some extensions are not shown very nicely when put in string format

* Not all extensions are supported

* String types accepted for various RDN subelements are rather too permissive

* RDN string conversion does not conform to RFC 4514

* Badly formed extensions are ignored if not marked critical

  * easy to switch to more strict behavior

  * other clients do this as well; RFC 5280 specifies behavior for unknown
    elements in extensions in appendix B.1, but does not cover all cases (e.g.
    element exists, but with string type different from spec)

TODO
====

* Publish in Pypi

* Cleanup: This module has it's own pyasn1 models. Look if we can
  reuse the pyasn1_modules.rfc2459 X509 cert model.

* Cleanup: Currently, the signature verifier does not work.

pyx509's People

Contributors

pdrtrifork avatar erny avatar hiviah avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.