This library adds PKCS#12 support to the Python requests library.
It is a clean implementation: it uses neither monkey patching nor unencrypted 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.
Metadata
Release files for requests-pkcs12 1.27
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| requests_pkcs12-1.27.tar.gz | 5.5 kB | Without provenance | Details for requests_pkcs12-1.27.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| requests_pkcs12-1.27-py3-none-any.whl | Python 3 | none | any | Details for requests_pkcs12-1.27-py3-none-any.whl |
Total release size: 11.5 kB
Release files / requests_pkcs12-1.27.tar.gz
| Download URL | requests_pkcs12-1.27.tar.gz |
|---|---|
| Size | 5.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
258b320bac8773b5c310a92382e3cb3b1fece1d5cc4fd4a6f93a70b009154ea5
|
|
BLAKE2b-256 checksum How to use checksums |
fa7765d569357b62f338bd5dced636eddfc0fdbdde8ddca68fa142db97d33ea6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / requests_pkcs12-1.27-py3-none-any.whl
| Download URL | requests_pkcs12-1.27-py3-none-any.whl |
|---|---|
| Size | 6.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d8c350ec050dbc806b097497a3f1ce8f9f93b439f30151ed0c6a1f4b27392fc3
|
|
BLAKE2b-256 checksum How to use checksums |
246c952e92ab1750ac4e85364403243b315269c7d68bc6551d13bfb8fc701b9b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Security for requests-pkcs12 1.27
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.