Module to assist in the programmatic management of PFX
digital certificates on
Windows
operating system.
Working with A1 digital certificates (e-CPF and e-CNPJ), it is extremely common to need to install and remove them from operating system, or even obtain some information like expiration date or issuer of these objects. So this module was made for provide these operations programmatically and easily.
pip install pycertmanager
The module currently supports only Windows
operating system and has been tested over Python >= 3.10
.
The main entity of the module is the Certificate
class which provides the
methods for manipulating certificates within the operating system and
obtaining relevant information from them.
from pycertmanager import Certificate
# creating certificate object
certificate = Certificate("mycertificate.pfx", "123456")
# installing certificate on system
certificate.install()
# getting a list with certificate subject data
subject_data = certificate.get_subject_data()
# getting certificate expiration date
expiration_date = certificate.get_expiration_date()
# getting certificate expiration date
issue_date = certificate.get_issue_date()
# removing a certificate
# note that it is a class method and 'pycertmanager.test' is the
# Common Name (CN) of the certificate you want to remove
Certificate.remove("pycertmanager.test")
In short, some methods (install and remove) calls PowerShell cmdlets through subprocess built-in module while the remaining methods uses cryptography package primitives.
Found a problema? Please open an Issue
describing it or a Pull Request
if
you know how to fix it. Make sure to write the tests
from your code.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. Reinforcing, make sure to write tests from your code.
# clone this repository
git clone https://github.com/eldersantoss/pycertmanager.git
# create and activate virtual environment
cd pycertmanager
python -m venv venv
& venv/Scripts/Activate
# install dependencies
pip install -r requirements.txt
# run tests
python -m unittest
- Implement Linux support: the intention is to make this module cross-platform.
This project is licensed under the terms of the MIT License.