Skip to main content

Validates X.509 certificates and paths; forked from wbond/certvalidator

Project description

certvalidator

This library started as a fork of wbond/certvalidator with patches for pyHanko, but has since diverged considerably from its parent repository.

Bugs and questions regarding this library should be asked in the pyHanko repository rather than here.

pyhanko-certvalidator is a Python library for validating X.509 certificates paths. It supports various options, including: validation at a specific moment in time, whitelisting and revocation checks.

Features

  • X.509 path building
  • X.509 basic path validation
    • Signatures
      • RSA (including PSS padding), DSA, ECDSA and EdDSA algorithms.
    • Name chaining
    • Validity dates
    • Basic constraints extension
      • CA flag
      • Path length constraint
    • Key usage extension
    • Extended key usage extension
    • Certificate policies
      • Policy constraints
      • Policy mapping
      • Inhibit anyPolicy
    • Failure on unknown/unsupported critical extensions
  • TLS/SSL server validation
  • Whitelisting certificates
  • Blacklisting hash algorithms
  • Revocation checks
    • CRLs
      • Indirect CRLs
      • Delta CRLs
    • OCSP checks
      • Delegated OCSP responders
    • Disable, require or allow soft failures
    • Caching of CRLs/OCSP responses
  • CRL and OCSP HTTP clients
  • Point-in-time validation
  • Name constraints
  • Attribute certificate support

Current Release

pypi - changelog

Dependencies

  • asn1crypto
  • cryptography
  • uritools
  • oscrypto
  • requests or aiohttp (use the latter for more efficient asyncio, requires resource management)
  • Python 3.7, 3.8, 3.9 or 3.10

Note on compatibility

Starting with pyhanko-certvalidator version 0.17.0, the library has been refactored to use asynchronous I/O as much as possible. Most high-level API entrypoints can still be used synchronously, but have been deprecated in favour of their asyncio equivalents. As part of this move, the OCSP and CRL clients now have two separate implementations: a requests-based one, and an aiohttp-based one. The latter is probably more performant, but requires more resource management efforts on the caller's part, which was impossible to implement without making major breaking changes to the public API that would make the migration path more complicated. Therefore, the requests-based fetcher will remain the default for the time being.

Installation

pip install pyhanko-certvalidator

License

certvalidator is licensed under the terms of the MIT license. See the LICENSE file for the exact license text.

Documentation

certvalidator documentation

Continuous Integration

Various combinations of platforms and versions of Python are tested via:

Testing

Test framework

Tests are written using pytest and require an asynchronous test case backend such as pytest-asyncio.

Test cases

The test cases for the library are comprised of:

Existing releases can be found at https://pypi.org/project/pyhanko-certvalidator.

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

pyhanko-certvalidator-0.20.0.tar.gz (89.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyhanko_certvalidator-0.20.0-py3-none-any.whl (106.4 kB view details)

Uploaded Python 3

File details

Details for the file pyhanko-certvalidator-0.20.0.tar.gz.

File metadata

  • Download URL: pyhanko-certvalidator-0.20.0.tar.gz
  • Upload date:
  • Size: 89.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.4

File hashes

Hashes for pyhanko-certvalidator-0.20.0.tar.gz
Algorithm Hash digest
SHA256 096faf8eeca1eb77dc74a6cb95a17c6e8594a4e9f341fa9fe97a4538a17150e3
MD5 9b03fe4f8a914462af4cdd35598ce89d
BLAKE2b-256 4f93d47e698678314f97536c7d8f644acfeb95affe87f9f12f00e9ed29c57f7b

See more details on using hashes here.

File details

Details for the file pyhanko_certvalidator-0.20.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pyhanko_certvalidator-0.20.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aba4d5d5828e6f04a473f56b11ca14b96c1e7a8b34d43b52122f4c1581e8bf51
MD5 1373d490f94323f122c3cbf83a304c36
BLAKE2b-256 e7400e714e46b0f96afed38880bb208e909ecae9fb3523b7784c422cbde9c503

See more details on using hashes here.

Supported by

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