Skip to main content

Application to generate x509 certificates and sign models with PKCS#7 standard

http://bitbucket.org/bearstech/django-signature/

Beta : not really for production use

Features :

  • PKI :

    • Generate (or load) RSA keys and store them in Django models

    • Generate x509 certificates and store them in Django models

    • Load x509 certificat and find relations with other Certificates and Keys

    • Generate (or load) x509 Requests and store them in Django models

    • Generate self-signed x509 for root CA

    • Verify certificate chain (with CRLs)

    • Sign Certificate Requests

  • Digital signature

    • Sign/verify text with PKCS#7 standard

    • Sign/verify simple modelswith PKCS#7 standard

    • Support FileField (with sha512 digest)

  • Good test coverage

Todo :

  • Sign complex models

  • Generate indexes with OpenSSL.generate_index()

  • Improve configuration

  • Cert load with renew

  • … and much more

Examples :

There is an simple PKI example:

from signature.models import Key, Certificate, CertificateRequest
from datetime import datetime

ca_pwd = "R00tz"
c_pwd = "1234"

# CA and Client keys
ca_key = Key.generate(ca_pwd)
c_key = Key.generate(c_pwd)

# CA Cert
ca_cert = Certificate()
ca_cert.CN = "Admin"
ca_cert.C = "FR"
ca_cert.key = ca_key
ca_cert.days = 150
ca_cert.is_ca = True
ca_cert.generate_x509_root(ca_pwd)
ca_cert.save()

# Client's request
rqst = CertificateRequest()
rqst.CN = "World Company"
rqst.C = "FR"
rqst.key = c_key
rqst.sign_request(c_pwd)
rqst.save()

# Sign client's request and return certificate
# (you can give to Client's certificate CA capabilities with ca=True)
c_cert = ca_cert.sign_request(rqst, 150, ca_pwd, ca=False)

# Verify created certificate :
c_cert.check()

# Revoke certificate :
c_cert.revoke(c_cert, ca_pwd)

# Import a Key / Certificate:
imported = Key.new_from_pem(pem_str, passphrase="gigowatt", user=None)
imported = Certificate.new_from_pem(pem_str)

For more examples, see SignaturePKITestCase into tests/test_project/apps/testapp/tests.py

There is an simple signature example:

# Sign Text
text = "This is a data"
data_signed = c_cert.sign_text(text, c_pwd)
result = c_cert.verify_smime(data_signed)

# Sign Model (get text)
auth1 = Author(name="Raymond E. Feist", title="MR")
data_signed = c_cert.sign_model(auth1, c_pwd)
result = c_cert.verify_smime(data_signed)

# Sign Model (get Signature)
auth1 = Author(name="Raymond E. Feist", title="MR")
signed = c_cert.make_signature(auth1, self.c_pwd)
signed.check_pkcs7(signed)

For more examples, see SignatureTestCase into tests/test_project/apps/testapp/tests.py

Tests :

  • cd tests

  • python bootstrap.py

  • ./bin/buildout.py -v

  • ./bin/test-1.2 or ./bin/test-1.1

Requirements :

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-signature-0.3.1.tar.gz (46.4 kB view details)

Uploaded Source

Built Distribution

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

django-signature-0.3.1.linux-x86_64.tar.gz (37.7 kB view details)

Uploaded Source

File details

Details for the file django-signature-0.3.1.tar.gz.

File metadata

File hashes

Hashes for django-signature-0.3.1.tar.gz
Algorithm Hash digest
SHA256 61229c924fc824ecd50dd4877bdc342e6c7cc74c45d1e2815bfcc89ef8fb6ca4
MD5 371ddbeb9e9a21b4e80a1403216408fd
BLAKE2b-256 2e09b06457f8a659afcfcdf6b2c75aa378d6d8f5a62daa0312a4cf5818bb023a

See more details on using hashes here.

File details

Details for the file django-signature-0.3.1.linux-x86_64.tar.gz.

File metadata

File hashes

Hashes for django-signature-0.3.1.linux-x86_64.tar.gz
Algorithm Hash digest
SHA256 ea0ef57af784b7157d9775c4f77b7dfc01e55aa2ce9bb40b58dcf47772f63b59
MD5 c57ffabfec2c3b5d3789e3fad5a3346a
BLAKE2b-256 ab29436caa6ba6d7e674371fa115c20e29e835e9859027a0cb6380221e0ef4b9

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.3.1 This release

2 files

0.3

1 file

0.2.1

1 file

0.2

1 file

0.1

1 file

Supported by

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