Skip to main content

Python module to extract CA and CRL certs from Windows' cert store (ctypes based).

Project description

wincertstore provides an interface to access Windows’ CA and CRL certificates. It uses ctypes and Windows’s sytem cert store API through crypt32.dll.

Example

import wincertstore
for storename in ("CA", "ROOT"):
    with wincertstore.CertSystemStore(storename) as store:
        for cert in store.itercerts(usage=wincertstore.SERVER_AUTH):
            print(cert.get_pem().decode("ascii"))
            print(cert.get_name())
            print(cert.enhanced_keyusage_names())

SERVER_AUTH is the default enhanced key usage. In order to get all certificates for any usage, use None. The module offers more OIDs like CLIENT_AUTH, too.

For Python versions without the with statement:

for storename in ("CA", "ROOT"):
    store = wincertstore.CertSystemStore(storename)
    try:
        for cert in store.itercerts():
            print(cert.get_pem().decode("ascii")
    finally:
        store.close()

See CertOpenSystemStore

CertFile helper:

import wincertstore
import atexit
import ssl

certfile = wincertstore.CertFile()
certfile.addstore("CA")
certfile.addstore("ROOT")
atexit.register(certfile.close) # cleanup and remove files on shutdown)

ssl_sock = ssl.wrap_socket(sock,
                           ca_certs=certfile.name,
                           cert_reqs=ssl.CERT_REQUIRED)

Requirements

License

Copyright (c) 2013, 2014 by Christian Heimes <christian@python.org>

Licensed to PSF under a Contributor Agreement.

See http://www.python.org/psf/license for licensing details.

Acknowledgements

http://fixunix.com/openssl/254866-re-can-openssl-use-windows-certificate-store.html

http://bugs.python.org/issue17134

References

ChangeLog

wincertstore 0.2

Release date: 26-Feb-2013

  • By default CertSystemStore.itercerts() is now limited to return only certs that are suitable for SERVER_AUTH – that is to validate a TLS/SSL’s server cert from the perspective of a client.

  • Add CERT_CONTEXT.get_name() to get a human readable name of a certificate.

  • Add CERT_CONTEXT.enhanced_keyusage() to get enhanced key usage and trust settings from registry. The method returns either True or a frozenset of OIDs. True means that the certificate is valid for any purpose.

  • CERT_CONTEXT.enhanced_keyusage_names() maps OIDs to human readable names.

  • Add commin OIDs for enhanced key usages like SERVER_AUTH and CLIENT_AUTH.

  • Add support for universal wheels.

  • Add tox for testing Python 2.6 to 3.3. Python 2.4 and 2.5 are tested manually.

  • Use pypi.python.org:443 for TLS tests.

wincertstore 0.1

Release date: 22-Mar-2013

  • 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

wincertstore-0.2.1.zip (16.6 kB view details)

Uploaded Source

Built Distribution

wincertstore-0.2.1-py2.py3-none-any.whl (7.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file wincertstore-0.2.1.zip.

File metadata

  • Download URL: wincertstore-0.2.1.zip
  • Upload date:
  • Size: 16.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.5.0.1 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for wincertstore-0.2.1.zip
Algorithm Hash digest
SHA256 ebd681f45f4e156493b4fa54f134b9a171d9c0a8de40ae1a0bc96c3092cb8b12
MD5 d8353ce258a15f2b234736e53b1757dc
BLAKE2b-256 90717b01b7e37a73200bf52a81a2a9ea71b2d0492a5137258dd6034975c808e1

See more details on using hashes here.

File details

Details for the file wincertstore-0.2.1-py2.py3-none-any.whl.

File metadata

  • Download URL: wincertstore-0.2.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 7.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.5.0.1 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for wincertstore-0.2.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 cfedf0047855c3fd2668a4750e951329f68ecf6118b5814026c18f23f127dd93
MD5 2b02e576da55ec6f961386e6c0fac038
BLAKE2b-256 3d82d50da806a22161c74059e59319240c02422d92cede1cbf6c36d5035f9337

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