@ -818,6 +818,24 @@ wallet_keys_unlocker::~wallet_keys_unlocker()
w . encrypt_keys ( key ) ;
}
void wallet_device_callback : : on_button_request ( )
{
if ( wallet )
wallet - > on_button_request ( ) ;
}
void wallet_device_callback : : on_pin_request ( epee : : wipeable_string & pin )
{
if ( wallet )
wallet - > on_pin_request ( pin ) ;
}
void wallet_device_callback : : on_passphrase_request ( bool on_device , epee : : wipeable_string & passphrase )
{
if ( wallet )
wallet - > on_passphrase_request ( on_device , passphrase ) ;
}
wallet2 : : wallet2 ( network_type nettype , uint64_t kdf_rounds , bool unattended ) :
m_multisig_rescan_info ( NULL ) ,
m_multisig_rescan_k ( NULL ) ,
@ -929,7 +947,7 @@ std::pair<std::unique_ptr<wallet2>, password_container> wallet2::make_from_file(
return { nullptr , password_container { } } ;
}
auto wallet = make_basic ( vm , unattended , opts , password_prompter ) ;
if ( wallet )
if ( wallet & & ! wallet_file . empty ( ) )
{
wallet - > load ( wallet_file , pwd - > password ( ) ) ;
}
@ -1071,15 +1089,16 @@ bool wallet2::reconnect_device()
hw : : device & hwdev = lookup_device ( m_device_name ) ;
hwdev . set_name ( m_device_name ) ;
hwdev . set_network_type ( m_nettype ) ;
hwdev . set_callback ( get_device_callback ( ) ) ;
r = hwdev . init ( ) ;
if ( ! r ) {
LOG_PRINT_L2 ( " Could not init device " ) ;
MERROR ( " Could not init device " ) ;
return false ;
}
r = hwdev . connect ( ) ;
if ( ! r ) {
LOG_PRINT_L2 ( " Could not connect to the device " ) ;
MERROR ( " Could not connect to the device " ) ;
return false ;
}
@ -3441,6 +3460,7 @@ bool wallet2::load_keys(const std::string& keys_file_name, const epee::wipeable_
hw : : device & hwdev = lookup_device ( m_device_name ) ;
THROW_WALLET_EXCEPTION_IF ( ! hwdev . set_name ( m_device_name ) , error : : wallet_internal_error , " Could not set device name " + m_device_name ) ;
hwdev . set_network_type ( m_nettype ) ;
hwdev . set_callback ( get_device_callback ( ) ) ;
THROW_WALLET_EXCEPTION_IF ( ! hwdev . init ( ) , error : : wallet_internal_error , " Could not initialize the device " + m_device_name ) ;
THROW_WALLET_EXCEPTION_IF ( ! hwdev . connect ( ) , error : : wallet_internal_error , " Could not connect to the device " + m_device_name ) ;
m_account . set_device ( hwdev ) ;
@ -3947,6 +3967,7 @@ void wallet2::restore(const std::string& wallet_, const epee::wipeable_string& p
auto & hwdev = lookup_device ( device_name ) ;
hwdev . set_name ( device_name ) ;
hwdev . set_network_type ( m_nettype ) ;
hwdev . set_callback ( get_device_callback ( ) ) ;
m_account . create_from_device ( hwdev ) ;
m_key_device_type = m_account . get_device ( ) . get_type ( ) ;
@ -11940,4 +11961,29 @@ uint64_t wallet2::get_segregation_fork_height() const
void wallet2 : : generate_genesis ( cryptonote : : block & b ) const {
cryptonote : : generate_genesis_block ( b , get_config ( m_nettype ) . GENESIS_TX , get_config ( m_nettype ) . GENESIS_NONCE ) ;
}
//----------------------------------------------------------------------------------------------------
wallet_device_callback * wallet2 : : get_device_callback ( )
{
if ( ! m_device_callback ) {
m_device_callback . reset ( new wallet_device_callback ( this ) ) ;
}
return m_device_callback . get ( ) ;
} //----------------------------------------------------------------------------------------------------
void wallet2 : : on_button_request ( )
{
if ( 0 ! = m_callback )
m_callback - > on_button_request ( ) ;
}
//----------------------------------------------------------------------------------------------------
void wallet2 : : on_pin_request ( epee : : wipeable_string & pin )
{
if ( 0 ! = m_callback )
m_callback - > on_pin_request ( pin ) ;
}
//----------------------------------------------------------------------------------------------------
void wallet2 : : on_passphrase_request ( bool on_device , epee : : wipeable_string & passphrase )
{
if ( 0 ! = m_callback )
m_callback - > on_passphrase_request ( on_device , passphrase ) ;
}
}