This repository has been archived on 2024-12-23. You can view files and clone it, but cannot push or open issues or pull requests.
PyBitmessage-2024-12-23/src/pyelliptic
surbhi 73ce4b4c83
rebase conflict fix and Ui Enhancement with dynamic addressbook updation and sent screen updation
Ui Enhancement with dynamic addressbook updation and sent screen updation

Changes made for Sent Items refresh feature with auto add new message in kivy
2019-09-17 15:38:12 +05:30
..
__init__.py Blind signature support in pyelliptic 2019-08-27 23:13:45 +02:00
arithmetic.py Fixed: Code style and lint fixes 2018-05-24 10:53:11 +01:00
cipher.py Blind signature support in pyelliptic 2019-08-27 23:13:45 +02:00
ecc.py Blind signature support in pyelliptic 2019-08-27 23:13:45 +02:00
eccblind.py Minor refactoring to separate objects 2019-08-27 23:13:58 +02:00
hash.py Blind signature support in pyelliptic 2019-08-27 23:13:45 +02:00
LICENSE Debian packaging 2013-04-01 20:23:32 +01:00
openssl.py rebase conflict fix and Ui Enhancement with dynamic addressbook updation and sent screen updation 2019-09-17 15:38:12 +05:30
README.md Debian packaging 2013-04-01 20:23:32 +01:00

PyElliptic

PyElliptic is a high level wrapper for the cryptographic library : OpenSSL. Under the GNU General Public License

Python3 compatible. For GNU/Linux and Windows. Require OpenSSL

Features

Asymmetric cryptography using Elliptic Curve Cryptography (ECC)

  • Key agreement : ECDH
  • Digital signatures : ECDSA
  • Hybrid encryption : ECIES (like RSA)

Symmetric cryptography

  • AES-128 (CBC, OFB, CFB)
  • AES-256 (CBC, OFB, CFB)
  • Blowfish (CFB and CBC)
  • RC4

Other

  • CSPRNG
  • HMAC (using SHA512)
  • PBKDF2 (SHA256 and SHA512)

Example

#!/usr/bin/python

import pyelliptic

# Symmetric encryption
iv = pyelliptic.Cipher.gen_IV('aes-256-cfb')
ctx = pyelliptic.Cipher("secretkey", iv, 1, ciphername='aes-256-cfb')

ciphertext = ctx.update('test1')
ciphertext += ctx.update('test2')
ciphertext += ctx.final()

ctx2 = pyelliptic.Cipher("secretkey", iv, 0, ciphername='aes-256-cfb')
print ctx2.ciphering(ciphertext)

# Asymmetric encryption
alice = pyelliptic.ECC() # default curve: sect283r1
bob = pyelliptic.ECC(curve='sect571r1')

ciphertext = alice.encrypt("Hello Bob", bob.get_pubkey())
print bob.decrypt(ciphertext)

signature = bob.sign("Hello Alice")
# alice's job :
print pyelliptic.ECC(pubkey=bob.get_pubkey()).verify(signature, "Hello Alice")

# ERROR !!!
try:
    key = alice.get_ecdh_key(bob.get_pubkey())
except: print("For ECDH key agreement, the keys must be defined on the same curve !")

alice = pyelliptic.ECC(curve='sect571r1')
print alice.get_ecdh_key(bob.get_pubkey()).encode('hex')
print bob.get_ecdh_key(alice.get_pubkey()).encode('hex')