full bip38 implementation