Skip to main content

Add PKCS#12 support to the requests library in a clean way, without monkey patching or temporary files

Project description

This library adds PKCS#12 support to the Python requests library.

It is a clean implementation: it uses neither monkey patching nor temporary files. Instead, it is integrated into requests as recommended by its authors: creating a custom TransportAdapter, which provides a custom SSLContext.

This library is meant to be a transitional solution until this functionality is provided by requests directly. However, that will take some time. See the corresponding issue for more details.

Usage

For simple one-off requests you can use this library as a drop-in replacement for the requests library:

from requests_pkcs12 import get

r = get('https://example.com/test', pkcs12_filename='clientcert.p12', pkcs12_password='correcthorsebatterystaple')

If you are using requests sessions, use the Pkcs12Adapter:

from requests import Session
from requests_pkcs12 import Pkcs12Adapter

with Session() as s:
    s.mount('https://example.com', Pkcs12Adapter(pkcs12_filename='clientcert.p12', pkcs12_password='correcthorsebatterystaple'))
    r = s.get('https://example.com/test')

Installation

This library is available as PyPI package:

pip install requests-pkcs12

Alternatively, you can retrieve the latest development version via Git:

git clone https://github.com/m-click/requests_pkcs12

Arguments

The following keyword arguments are supported:

  • pkcs12_filename is a byte string or unicode string that contains the file name of the encrypted PKCS#12 certificate.

    • Either this argument or pkcs12_data must be provided.

  • pkcs12_data is a byte string that contains the encrypted PKCS#12 certificate data.

    • Either this argument or pkcs12_filename must be provided.

  • pkcs12_password is a byte string or unicode string that contains the password.

    • This argument must be provided whenever pkcs12_filename or pkcs12_data is provided.

  • ssl_protocol is a protocol version from the ssl library.

    • This argument is optional and defaults to ssl.PROTOCOL_TLS.

If you use these parameters, don’t use the built-in cert parameter of requests at the same time. However, do use the other parameters. In particular, do use the “verify” parameter to verify the server-side certificate.

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

requests_pkcs12-1.11.tar.gz (4.3 kB view details)

Uploaded Source

Built Distribution

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

requests_pkcs12-1.11-py3-none-any.whl (5.1 kB view details)

Uploaded Python 3

File details

Details for the file requests_pkcs12-1.11.tar.gz.

File metadata

  • Download URL: requests_pkcs12-1.11.tar.gz
  • Upload date:
  • Size: 4.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.7.3

File hashes

Hashes for requests_pkcs12-1.11.tar.gz
Algorithm Hash digest
SHA256 72698ee75a63f467b8d36caa7353ff3ba2a41290fa27aa7eafbec4776b3ccaa3
MD5 1028b65fd7b27e40c09432e411676eaa
BLAKE2b-256 ecf9506ca86ee70a47cdfa85d279574ca3452976714a0293321c3eccc1c92e6a

See more details on using hashes here.

File details

Details for the file requests_pkcs12-1.11-py3-none-any.whl.

File metadata

  • Download URL: requests_pkcs12-1.11-py3-none-any.whl
  • Upload date:
  • Size: 5.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.7.3

File hashes

Hashes for requests_pkcs12-1.11-py3-none-any.whl
Algorithm Hash digest
SHA256 27d6896cefb4f6f72b39c9fb152a1766a9643ef868e44d29b85e0256907041fb
MD5 fc826a099f396f4000624e3e83537bab
BLAKE2b-256 f717ca9c10f12b8aaff82908609f9a54ebca11ceda9e3813ea481f898d9e859b

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