I generated BIP0032 test vector #1 using the command in your readme and got the desired result.
I then created my own master key with bip32gen and used your Base58 module to decompose the output and compare it with the serialisation format as specified by
BIP0032. I managed to recover the private key just fine.
Good. Thanks for testing.
I did have a quick look at the code but I didn't get so far with it. I got a little confused as your style changed. For example, compare the extended key version handling in fromExtendedKey
# Verify address version/type
version = raw[:4]
if version.encode('hex') == '0488ade4':
keytype = 'xprv'
elif version.encode('hex') == '0488b21e':
keytype = 'xpub'
else:
raise ValueError("unknown extended key version")
to that in ExtendedKey
version = '\x04\x88\xB2\x1E' if private is False else '\x04\x88\xAD\xE4'
On this topic: Would 0x0488ade4 and 0x0488b21e be better as module constants? How easy would it be to add support for testnet keys?
Yes, it would be cleaner to make those module constants; I was in a bit of a rush to get this part implemented. That's good feedback for cleanup.
That's all I have time for today. Hopefully I'll find time to move some funds around tomorrow.
Please take into account the experimental nature of the software.