simplify: public_key_from_private_key
authorThomasV <thomasv@gitorious>
Sat, 17 Aug 2013 09:09:19 +0000 (11:09 +0200)
committerThomasV <thomasv@gitorious>
Sat, 17 Aug 2013 09:09:19 +0000 (11:09 +0200)
lib/bitcoin.py
lib/wallet.py

index 529143a..d1f427e 100644 (file)
@@ -244,18 +244,18 @@ def is_compressed(sec):
     return len(b) == 33
 
 
-def address_from_private_key(sec):
+def public_key_from_private_key(sec):
     # rebuild public key from private key, compressed or uncompressed
     pkey = regenerate_key(sec)
     assert pkey
-
-    # figure out if private key is compressed
     compressed = is_compressed(sec)
-        
-    # rebuild private and public key from regenerated secret
-    private_key = GetPrivKey(pkey, compressed)
     public_key = GetPubKey(pkey.pubkey, compressed)
-    address = public_key_to_bc_address(public_key)
+    return public_key.encode('hex')
+
+
+def address_from_private_key(sec):
+    public_key = public_key_from_private_key(sec)
+    address = public_key_to_bc_address(public_key.decode('hex'))
     return address
 
 
index 3163db6..b2ecbd5 100644 (file)
@@ -363,10 +363,8 @@ class Wallet:
         # build a list of public/private keys
         keypairs = {}
         for sec in private_keys:
-            compressed = is_compressed(sec)
-            pkey = regenerate_key(sec)
-            pubkey = GetPubKey(pkey.pubkey, compressed)
-            keypairs[ pubkey.encode('hex') ] = sec
+            pubkey = public_key_from_private_key(sec)
+            keypairs[ pubkey ] = sec
 
 
         for txin in tx.inputs:
@@ -404,10 +402,10 @@ class Wallet:
                 addr = hash_160_to_bc_address(hash_160(redeem_script.decode('hex')), 5)
                 txin['address'] = addr
 
-
             elif txin.get("raw_output_script"):
                 addr = deserialize.get_address_from_output_script(txin.get("raw_output_script").decode('hex'))
                 sec = self.get_private_key(addr, password)
+                pubkey = public_key_from_private_key(sec)
                 if sec: 
                     keypairs[pubkey] = [sec]
                     txin['address'] = addr