Ejemplo n.º 1
0
 def test_is_bip32_derivation(self):
     self.assertTrue(is_bip32_derivation("m/0'/1"))
     self.assertTrue(is_bip32_derivation("m/0'/0'"))
     self.assertTrue(is_bip32_derivation("m/44'/0'/0'/0/0"))
     self.assertTrue(is_bip32_derivation("m/49'/0'/0'/0/0"))
     self.assertFalse(is_bip32_derivation("mmmmmm"))
     self.assertFalse(is_bip32_derivation("n/"))
     self.assertFalse(is_bip32_derivation(""))
     self.assertFalse(is_bip32_derivation("m/q8462"))
Ejemplo n.º 2
0
 def test_is_bip32_derivation(self):
     self.assertTrue(is_bip32_derivation("m/0'/1"))
     self.assertTrue(is_bip32_derivation("m/0'/0'"))
     self.assertTrue(is_bip32_derivation("m/44'/0'/0'/0/0"))
     self.assertTrue(is_bip32_derivation("m/49'/0'/0'/0/0"))
     self.assertFalse(is_bip32_derivation("mmmmmm"))
     self.assertFalse(is_bip32_derivation("n/"))
     self.assertFalse(is_bip32_derivation(""))
     self.assertFalse(is_bip32_derivation("m/q8462"))
Ejemplo n.º 3
0
elif args.master_key:
    try:
        master_key = bip32.BIP32Node.from_xkey(sys.stdin.readline().strip(
        ) if args.master_key == '-' else args.master_key)
    except BaseException:
        sys.exit("Invalid master key\n")

if args.convert:
    if args.gen_master:
        sys.exit("Convert option cannot be used with generate master option")
    else:
        convert_type = args.convert if args.convert != "p2pkh" else "standard"
        master_key = master_key._replace(xtype=convert_type)

derivation_path = args.derivation_path if args.derivation_path != "m" else "m/"
if bip32.is_bip32_derivation(derivation_path):
    if not master_key.is_private():
        if args.output_xprv:
            sys.exit(
                "Cannot derive extended private key from extended public key\n"
            )
        if derivation_path == "m/":
            print(master_key.to_xpub())
        else:
            try:
                xpub = master_key.subkey_at_public_derivation(derivation_path)
                sys.stderr.write(
                    "Derivation Path: {}\n".format(derivation_path))
            except BaseException:
                sys.exit(
                    "Invalid derivation path. Private derivation is not possible with extended public keys.\n"
Ejemplo n.º 4
0
if args.convert:
    if args.gen_master:
        sys.exit( "Convert option cannot be used with generate master option" )
    else:
        convert_type = args.convert if args.convert !="p2pkh" else "standard"
        if bip32.is_xpub(master_key):
            xtype, depth, fingerprint, child_number, c, K_or_k = bip32.deserialize_xpub( master_key )
            master_key = bip32.serialize_xpub( convert_type, c,  K_or_k, depth, fingerprint, child_number )
        elif bip32.is_xprv(master_key):
            xtype, depth, fingerprint, child_number, c, K_or_k = bip32.deserialize_xprv( master_key )
            master_key = bip32.serialize_xprv( convert_type, c,  K_or_k, depth, fingerprint, child_number )
        else:
            sys.exit( "Master key is not a valid extended key" )

derivation_path = args.derivation_path if args.derivation_path != "m" else "m/"
if bip32.is_bip32_derivation( derivation_path ):
	if bip32.is_xpub(master_key):
		if args.output_xprv:
				sys.exit( "Cannot derive extended private key from extended public key\n" )
		if derivation_path == "m/":
			print( master_key )
		else:
			try:
				xpub = bip32.bip32_public_derivation( master_key, "m/", derivation_path )
				sys.stderr.write( "Derivation Path: {}\n".format( derivation_path ) )
			except BaseException:
				sys.exit( "Invalid derivation path. Private derivation is not possible with extended public keys.\n" )
			else:
				print( xpub )
	elif bip32.is_xprv( master_key ):
		try:
Ejemplo n.º 5
0
 def verify_derivation_path(self, path):
     return is_bip32_derivation(path)