Skip to main content

A straightforward API to perform basic RSA-based operations..

Project description

Simple RSA

A straightforward API to perform basic RSA-based operations.

Latest Version on PyPI Supported Implementations Coverage Status Built with PyPi Template

Rationale

Any cryptographic library exposes all possibilities, and it should. But sometimes you just want a simple sign and validate API. That is what this wrapper module around the Cryptography module is. Nothing more, nothing less.

Minimal Survival Commands

% pip install simple-rsa

When running from the repo (probably in some virtualenv) install cryptography and optionally tox is you want to run the tests:

% pip install cryptography tox

Getting Started

The module basically exposes the following functions:

  • generate_key_pair() returning a tuple of private and public keys
  • encode(key) returning an encoded key
  • decode(pem) returning a key
  • sign(payload, key) returning a signature
  • validate(payload, signature, key) returning True or an Exception
$ python
Python 2.7.15 (default, Dec 27 2018, 11:55:59) 
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.11.45.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import simple_rsa as rsa
>>> private, public = rsa.generate_key_pair()
>>> rsa.encode(public)
'-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5C15SFjpTCrdqB+0zFyu\nC9KJkNT1byzQPyATtLze/PNWjfqYL0RjvL4cmvmBWLeTQvnDx9SQfnQT02+4Q8Ov\nOaRTPqghEJctAh7KHwZfQzH29miC1WxXtGFcMFoAj17WPyMaOO3EcHqb4ttnAAPD\nt6B415HtGZo4oH6xY7QMj4eRceTv4++zACNHvqArO3bFFiNTBC8vCOpIg3xsYV4w\n7lQZs2lwGlzXPFJUeZglvsWTPJ54E1KabtkC/wSRFZBYtml8ZvzFfNDTOhcDyBR9\nVTV4K7iIGXG0A9C7mmj3hgALS3qSP5EK6fi51ufg98WokCLFcTSD/EphUlixazPo\nOQIDAQAB\n-----END PUBLIC KEY-----\n'
>>> payload = b"something important"
>>> signature = rsa.sign(payload, private)
>>> assert rsa.validate(payload, signature, public)
>>> another_payload = b"something else"
>>> another_signature = rsa.sign(another_payload, private)
>>> assert rsa.validate(payload, another_signature, public)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "simple_rsa/__init__.py", line 74, in validate
    hashes.SHA256()
  File "/usr/local/lib/python2.7/site-packages/cryptography/hazmat/backends/openssl/rsa.py", line 477, in verify
    self._backend, padding, algorithm, self, signature, data
  File "/usr/local/lib/python2.7/site-packages/cryptography/hazmat/backends/openssl/rsa.py", line 272, in _rsa_sig_verify
    raise InvalidSignature
cryptography.exceptions.InvalidSignature

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

simple-rsa-1.1.0.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

simple_rsa-1.1.0-py3-none-any.whl (4.5 kB view details)

Uploaded Python 3

File details

Details for the file simple-rsa-1.1.0.tar.gz.

File metadata

  • Download URL: simple-rsa-1.1.0.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.12

File hashes

Hashes for simple-rsa-1.1.0.tar.gz
Algorithm Hash digest
SHA256 7a9d68532cca651f8f58ee8cff8222a6dc48773c2b9e695c3d3996604cc8f978
MD5 a052ad9d0d04245017a3423b6dd95518
BLAKE2b-256 3ee45f2a1e85ab5a465b16e6d921a294349c3aff4159236dfd0422311d65a4f6

See more details on using hashes here.

File details

Details for the file simple_rsa-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: simple_rsa-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 4.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.12

File hashes

Hashes for simple_rsa-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 265bc76e395ead6460edff9adc0fa512c27030655a562da4ee78039bd30dbff4
MD5 d9861a40884e88f3998f7bb775b32fe4
BLAKE2b-256 69a62d4d734768495db74575720f5cf73c2ea5082abf4ea66dec9a0f1660a3a6

See more details on using hashes here.

Supported by

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