Completed
Push — master ( e0dbd4...85d261 )
by
unknown
32s
created

test.TestKeyUtils   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 19
Duplicated Lines 0 %
Metric Value
dl 0
loc 19
rs 10
wmc 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A TestKeyUtils.test_sin_from_pem() 0 3 2
A TestKeyUtils.test_sign() 0 8 1
A TestKeyUtils.test_generate_pem() 0 4 1
1
import sys
2
import os
3
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'bitpay')))
4
import bitpay_key_utils as utils
5
import re
6
import unittest
7
from ecdsa import SigningKey, SECP256k1, VerifyingKey
8
from ecdsa import util as ecdsaUtil
9
import binascii
10
import hashlib
11
12
class TestKeyUtils(unittest.TestCase):
13
14
  def test_generate_pem(self):
15
    pem = utils.generate_pem()
16
    match = re.match(r"-----BEGIN EC PRIVATE KEY-----", pem)
17
    self.assertIsNotNone(match)
18
19
  def test_sin_from_pem(self):
20
    pem = '-----BEGIN EC PRIVATE KEY-----\nMHQCAQEEICg7E4NN53YkaWuAwpoqjfAofjzKI7Jq1f532dX+0O6QoAcGBSuBBAAK\noUQDQgAEjZcNa6Kdz6GQwXcUD9iJ+t1tJZCx7hpqBuJV2/IrQBfue8jh8H7Q/4vX\nfAArmNMaGotTpjdnymWlMfszzXJhlw==\n-----END EC PRIVATE KEY-----\n'
21
    assert utils.get_sin_from_pem(pem) == 'TeyN4LPrXiG5t2yuSamKqP3ynVk3F52iHrX'
22
23
  def test_sign(self):
24
    pem = '-----BEGIN EC PRIVATE KEY-----\nMHQCAQEEICg7E4NN53YkaWuAwpoqjfAofjzKI7Jq1f532dX+0O6QoAcGBSuBBAAK\noUQDQgAEjZcNa6Kdz6GQwXcUD9iJ+t1tJZCx7hpqBuJV2/IrQBfue8jh8H7Q/4vX\nfAArmNMaGotTpjdnymWlMfszzXJhlw==\n-----END EC PRIVATE KEY-----\n'
25
    signed = utils.sign("message", pem)
26
    sk = SigningKey.from_pem(pem)
27
    vk = sk.get_verifying_key()
28
    print(signed)
29
    signed = binascii.unhexlify(signed)
30
    vk.verify(signed, "message".encode(), hashfunc=hashlib.sha256, sigdecode=ecdsaUtil.sigdecode_der)
31
32