if not b:
return False
b = b[0:32]
- secret = int('0x' + b.encode('hex'), 16)
- return EC_KEY(secret)
+ return EC_KEY(b)
def GetPubKey(pubkey, compressed=False):
return i2o_ECPublicKey(pubkey, compressed)
class EC_KEY(object):
- def __init__( self, secret ):
+ def __init__( self, k ):
+ secret = string_to_number(k)
self.pubkey = ecdsa.ecdsa.Public_key( generator_secp256k1, generator_secp256k1 * secret )
self.privkey = ecdsa.ecdsa.Private_key( self.pubkey, secret )
self.secret = secret
import hmac
from ecdsa.util import string_to_number, number_to_string
order = generator_secp256k1.order()
- keypair = EC_KEY(string_to_number(k))
+ keypair = EC_KEY(k)
K = GetPubKey(keypair.pubkey,True)
if n & BIP32_PRIME: # We want to make a "secret" address that can't be determined from K
message = "Chancellor on brink of second bailout for banks"
enc = EC_KEY.encrypt_message(message,pubkey_c)
- eck = EC_KEY(pvk)
+ eck = EC_KEY(number_to_string(pvk,_r))
dec = eck.decrypt_message(enc)
print "decrypted", dec
register_command('unfreeze', 1, 1, False, True, False, 'Unfreeze the funds at one of your wallet\'s address', 'unfreeze <address>')
register_command('validateaddress', 1, 1, False, False, False, 'Check that the address is valid', 'validateaddress <address>')
register_command('verifymessage', 3,-1, False, False, False, 'Verifies a signature', verifymessage_syntax)
+register_command('encrypt', 2,-1, False, False, False, 'encrypt a message with pubkey')
+register_command('decrypt', 2,-1, False, False, False, 'decrypt a message with privkey')
register_command('daemon', 1, 1, True, False, False, 'start/stop daemon')
register_command('getproof', 1, 1, True, False, False, 'start/stop daemon')
else:
return "unknown transaction"
+ def encrypt(self, pubkey, message):
+ return EC_KEY.encrypt_message(message, pubkey.decode('hex'))
+
+ def decrypt(self, private_key, message):
+ eck = EC_KEY(private_key.decode('hex'))
+ decrypted = eck.decrypt_message(message)
+ return decrypted[0]
+