pybitmessage.highlevelcrypto module

High level cryptographic functions based on pyelliptic OpenSSL bindings.


Upstream pyelliptic was upgraded from SHA1 to SHA256 for signing. We must upgrade PyBitmessage gracefully. More discussion.


Convert private key from base58 that’s used in the config file to 8-bit binary string.


Convert private key from binary 8-bit string into base58check WIF string.

makeCryptor(privkey, curve='secp256k1')[source]

Return a private pyelliptic.ECC instance


Converts hex private key into hex public key

encrypt(msg, hexPubkey)[source]

Encrypts message with hex public key

sign(msg, hexPrivkey, digestAlg='sha256')[source]

Signs with hex private key using SHA1 or SHA256 depending on digestAlg keyword.

verify(msg, sig, hexPubkey, digestAlg=None)[source]

Verifies with hex public key using SHA1 or SHA256


Does an EC point multiplication; turns a private key into a public key.

Evidently, this type of error can occur very rarely:

>>> File "", line 54, in pointMult
>>>  group = OpenSSL.EC_KEY_get0_group(k)
>>> WindowsError: exception: access violation reading 0x0000000000000008