Metadata-Version: 2.1
Name: asymcrypt
Version: 0.0.6
Summary: Super easy asymmetric encryption for python
Home-page: https://github.com/elapouya/python-asymcrypt
Author: Eric Lapouyade
Author-email: elapouya@gmail.com
License: LGPL 2.1
Keywords: encrypt
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Requires-Dist: pycryptodome

=========
asymcrypt
=========

Super easy asymmetric encryption for python

Introduction
------------

python-asymcrypt is a wrapper around pycryptodome to make it even more easier
for asymmetric encryption.

Installation
------------

With pip ::

    pip install asymcrypt


Usage
-----

Generate keys files ::

    import asymcrypt

    asymcrypt.generate_keys('my_private_key_file.pem','my_public_key_file.pem')

Encrypt data ::

    data = 'A string, not an unicode'
    encrypted_data = asymcrypt.encrypt_data(data,'my_public_key_file.pem')

Decrypt data ::

    data = asymcrypt.decrypt_data(encrypted_data,'my_private_key_file.pem')


Unicode, Str, Bytes
----------------------

asymcrypt is using pycryptodome which is awaiting, for data, bytes for python3 or str for python2.
So it is preferable to use these types. Nevertheless, asymcrypt provides a type detection, it will keep
the type you used at encryption time for the decryption time :

For python 2, if you use unicode data for encryption, it will be automatically encoded as utf-8 str before encryption and
decoded back to unicode after decryption. If you use str data, no encoding/decoding will be done.

For python 3, if you use str data for encryption, it will be automatically encoded as utf-8 bytes before encryption and
decoded back to str after decryption. If you use bytes data, no encoding/decoding will be done.


Passphrase
----------

As an option, you can use ``passphrase`` option in each functions to generate encrypted keys
and read them when using encrypt/decrypt_data() functions


Base64
------

By default, output/input are binary. Nevertheless, you can encode into base64 in ``encrypt_data()`` by using option ``out_format='base64'``
or decode from base64 in ``decrypt_data()`` by using option ``in_format='base64'``


Command line
------------

Asymcrypt provides 3 commands :

To generate keys pair ::

    asymgenkeys -priv private_key.pem -pub public_key.pem

To encrypt ::

    asymencrypt -k public_key.pem -in file_to_encrypt.txt -out dest_file.enc

To decrypt ::

    asymdecrypt -k private_key.pem -in encrypted_file.enc -out dest_file.txt

Note :  you may use option ``-b`` or ``--base64`` to encode/decode in base64
and ``-p`` or  ``--passphrase`` to specify a passphrase to encrypt/decrypt keys

Note 2 : If you do not specify ``-in`` or ``-out`` in above commands, the standard input/output will be used.


Compatibility with openssl
--------------------------

asymcrypt uses RSA keys, RSA encryption protocol according to PKCS#1 OAEP, AES with EAX AEAD mode.
The keys will be encrypted with scrypt And AES128-CBC if a passphrase is provided.
The encrypted data keep track of the original python data type.
All these make impossible to use openssl directly to decode files generated by asymcrypt.



News
====
0.0.6 (2018-10-02)
------------------
- Keep track of orginal data type (unicode, str, bytes)

0.0.4 (2018-10-01)
------------------
- Add console commands
- Keys files are now cached

0.0.2 (2018-09-28)
------------------
- First running version



