def generate(cls, testnet=False): password = getpass.getpass(prompt='New Password: '******'ascii') salt = token_bytes(32) cipher = cls.cipher(salt, password) mnemonic, private_key = HDPrivateKey.generate(testnet=testnet) plaintext = private_key.zprv().encode('ascii') plaintext += b'\x00' * ((16 - len(plaintext)) % 16) encrypted_private = cls(salt, cipher.encrypt(plaintext)) encrypted_private.private_key = private_key encrypted_private.expires = int(time()) + 300 return mnemonic, encrypted_private
def generate(cls, testnet=False): password = getpass.getpass(prompt='New Password: '******'utf-8') salt = token_bytes(32) iv = token_bytes(AES.block_size) cipher = cls.cipher(salt, iv, password) mnemonic, private_key = HDPrivateKey.generate(testnet=testnet) # pad the xprv by 2 bytes as the length needs to be a multiple of 16 if testnet: version = TESTNET_XPRV else: version = MAINNET_XPRV unencrypted = private_key.raw_serialize(version) + b'\x00\x00' encrypted_private = cls(salt, iv, cipher.encrypt(unencrypted)) encrypted_private.private_key = private_key encrypted_private.expires = int(time()) + 300 return mnemonic, encrypted_private