You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
1.1 KiB
31 lines
1.1 KiB
#! /usr/bin/env python |
|
'''Tests ECIES implementation as defined in BIP-SNICKER |
|
(and will be updated if that is).''' |
|
|
|
from jmbase import hextobin |
|
import jmbitcoin as btc |
|
import base64 |
|
import os |
|
import json |
|
testdir = os.path.dirname(os.path.realpath(__file__)) |
|
|
|
def test_ecies(): |
|
"""Tests encryption and decryption of random messages using |
|
the ECIES module. |
|
TODO these tests are very minimal. |
|
""" |
|
with open(os.path.join(testdir,"base58_keys_valid.json"), "r") as f: |
|
json_data = f.read() |
|
valid_keys_list = json.loads(json_data) |
|
print("got valid keys list") |
|
extracted_privkeys = [] |
|
for a in valid_keys_list: |
|
key, hex_key, prop_dict = a |
|
if prop_dict["isPrivkey"]: |
|
c, k = btc.read_privkey(hextobin(hex_key)) |
|
|
|
extracted_privkeys.append(k) |
|
extracted_pubkeys = [btc.privkey_to_pubkey(x) for x in extracted_privkeys] |
|
for (priv, pub) in zip(extracted_privkeys, extracted_pubkeys): |
|
test_message = base64.b64encode(os.urandom(15)*20) |
|
assert btc.ecies_decrypt(priv, btc.ecies_encrypt(test_message, pub)) == test_message
|
|
|