@ -3014,20 +3014,19 @@ bool simple_wallet::init(const boost::program_options::variables_map& vm)
}
// parse view secret key
std: : string viewkey_string = input_line ( " V iew key: " ) ;
epee: : wipeable_string viewkey_string = input_secure_line ( " Secret v iew key: " ) ;
if ( std : : cin . eof ( ) )
return false ;
if ( viewkey_string . empty ( ) ) {
fail_msg_writer ( ) < < tr ( " No data supplied, cancelled " ) ;
return false ;
}
crypto note: : blobdata viewkey_data ;
if ( ! epee : : string_tools : : parse_hexstr_to_binbuff ( viewkey_string , viewkey_data ) | | viewkey_data . size ( ) ! = sizeof ( crypto : : secret_key ) )
crypto : : secret_key viewkey ;
if ( viewkey_string . hex_to_pod ( unwrap ( unwrap ( viewkey ) ) ) )
{
fail_msg_writer ( ) < < tr ( " failed to parse view key secret key " ) ;
return false ;
}
crypto : : secret_key viewkey = * reinterpret_cast < const crypto : : secret_key * > ( viewkey_data . data ( ) ) ;
m_wallet_file = m_generate_from_view_key ;
@ -3050,14 +3049,14 @@ bool simple_wallet::init(const boost::program_options::variables_map& vm)
{
m_wallet_file = m_generate_from_spend_key ;
// parse spend secret key
std: : string spendkey_string = input _line( " Secret spend key: " ) ;
epee: : wipeable_ string spendkey_string = input _secure _line( " Secret spend key: " ) ;
if ( std : : cin . eof ( ) )
return false ;
if ( spendkey_string . empty ( ) ) {
fail_msg_writer ( ) < < tr ( " No data supplied, cancelled " ) ;
return false ;
}
if ( ! epee: : string_tools : : hex_to_pod ( spendkey_string , m_recovery_key ) )
if ( ! spendkey_string. hex_to_pod ( unwrap ( unwrap ( m_recovery_key ) ) ) )
{
fail_msg_writer ( ) < < tr ( " failed to parse spend key secret key " ) ;
return false ;
@ -3090,36 +3089,34 @@ bool simple_wallet::init(const boost::program_options::variables_map& vm)
}
// parse spend secret key
std: : string spendkey_string = input _line( " Secret spend key: " ) ;
epee: : wipeable_ string spendkey_string = input _secure _line( " Secret spend key: " ) ;
if ( std : : cin . eof ( ) )
return false ;
if ( spendkey_string . empty ( ) ) {
fail_msg_writer ( ) < < tr ( " No data supplied, cancelled " ) ;
return false ;
}
crypto note: : blobdata spendkey_data ;
if ( ! epee : : string_tools : : parse_hexstr_to_binbuff ( spendkey_string , spendkey_data ) | | spendkey_data . size ( ) ! = sizeof ( crypto : : secret_key ) )
crypto : : secret_key spendkey ;
if ( ! spendkey_string . hex_to_pod ( unwrap ( unwrap ( spendkey ) ) ) )
{
fail_msg_writer ( ) < < tr ( " failed to parse spend key secret key " ) ;
return false ;
}
crypto : : secret_key spendkey = * reinterpret_cast < const crypto : : secret_key * > ( spendkey_data . data ( ) ) ;
// parse view secret key
std: : string viewkey_string = input _line( " Secret view key: " ) ;
epee: : wipeable_ string viewkey_string = input _secure _line( " Secret view key: " ) ;
if ( std : : cin . eof ( ) )
return false ;
if ( viewkey_string . empty ( ) ) {
fail_msg_writer ( ) < < tr ( " No data supplied, cancelled " ) ;
return false ;
}
crypto note: : blobdata viewkey_data ;
if ( ! epee: : string_tools : : parse_hexstr_to_binbuff ( viewkey_string , viewkey_data ) | | viewkey_data . size ( ) ! = sizeof ( crypto : : secret_key ) )
crypto : : secret_key viewkey ;
if ( ! viewkey_string. hex_to_pod ( unwrap ( unwrap ( viewkey ) ) ) )
{
fail_msg_writer ( ) < < tr ( " failed to parse view key secret key " ) ;
return false ;
}
crypto : : secret_key viewkey = * reinterpret_cast < const crypto : : secret_key * > ( viewkey_data . data ( ) ) ;
m_wallet_file = m_generate_from_keys ;
@ -3195,7 +3192,7 @@ bool simple_wallet::init(const boost::program_options::variables_map& vm)
}
// parse secret view key
std: : string viewkey_string = input _line( " Secret view key: " ) ;
epee: : wipeable_ string viewkey_string = input _secure _line( " Secret view key: " ) ;
if ( std : : cin . eof ( ) )
return false ;
if ( viewkey_string . empty ( ) )
@ -3203,13 +3200,12 @@ bool simple_wallet::init(const boost::program_options::variables_map& vm)
fail_msg_writer ( ) < < tr ( " No data supplied, cancelled " ) ;
return false ;
}
crypto note: : blobdata viewkey_data ;
if ( ! epee: : string_tools : : parse_hexstr_to_binbuff ( viewkey_string , viewkey_data ) | | viewkey_data . size ( ) ! = sizeof ( crypto : : secret_key ) )
crypto : : secret_key viewkey ;
if ( ! viewkey_string. hex_to_pod ( unwrap ( unwrap ( viewkey ) ) ) )
{
fail_msg_writer ( ) < < tr ( " failed to parse secret view key " ) ;
return false ;
}
crypto : : secret_key viewkey = * reinterpret_cast < const crypto : : secret_key * > ( viewkey_data . data ( ) ) ;
// check that the view key matches the given address
crypto : : public_key pkey ;
@ -3230,12 +3226,12 @@ bool simple_wallet::init(const boost::program_options::variables_map& vm)
if ( multisig_m = = multisig_n )
{
std : : vector < crypto : : secret_key > multisig_secret_spendkeys ( multisig_n ) ;
std: : string spendkey_string ;
epee: : wipeable_ string spendkey_string ;
cryptonote : : blobdata spendkey_data ;
// get N secret spend keys from user
for ( unsigned int i = 0 ; i < multisig_n ; + + i )
{
spendkey_string = input_ line( tr ( ( boost : : format ( tr ( " Secret spend key (%u of %u): " ) ) % ( i + 1 ) % multisig_m ) . str ( ) . c_str ( ) ) ) ;
spendkey_string = input_ secure_ line( tr ( ( boost : : format ( tr ( " Secret spend key (%u of %u): " ) ) % ( i + 1 ) % multisig_m ) . str ( ) . c_str ( ) ) ) ;
if ( std : : cin . eof ( ) )
return false ;
if ( spendkey_string . empty ( ) )
@ -3243,12 +3239,11 @@ bool simple_wallet::init(const boost::program_options::variables_map& vm)
fail_msg_writer ( ) < < tr ( " No data supplied, cancelled " ) ;
return false ;
}
if ( ! epee: : string_tools : : parse_hexstr_to_binbuff ( spendkey_string , spendkey_data ) | | spendkey_data . size ( ) ! = sizeof ( crypto : : secret_key ) )
if ( ! spendkey_string. hex_to_pod ( unwrap ( unwrap ( multisig_secret_spendkeys [ i ] ) ) ) )
{
fail_msg_writer ( ) < < tr ( " failed to parse spend key secret key " ) ;
return false ;
}
multisig_secret_spendkeys [ i ] = * reinterpret_cast < const crypto : : secret_key * > ( spendkey_data . data ( ) ) ;
}
// sum the spend keys together to get the master spend key