Skip to content

Commit 0ae327d

Browse files
change secure pass module interface
1 parent 79eb19c commit 0ae327d

File tree

7 files changed

+30
-26
lines changed

7 files changed

+30
-26
lines changed

keychain_cmd_app/secure_module_dummy.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ sec_mod_dummy::sec_mod_dummy()
1212
sec_mod_dummy::~sec_mod_dummy()
1313
{}
1414

15-
std::string sec_mod_dummy::get_passwd_trx(const graphene::chain::transaction& trx) const
15+
std::wstring sec_mod_dummy::get_passwd_trx(const graphene::chain::transaction& trx) const
1616
{
17-
return std::string("blank_password");
17+
return std::wstring(L"blank_password");
1818
}
1919

2020
std::string sec_mod_dummy::get_uid() const
@@ -27,12 +27,12 @@ void sec_mod_dummy::print_mnemonic(const string_list& mnemonic) const
2727

2828
}
2929

30-
std::string sec_mod_dummy::get_passwd_trx_raw(const std::string& raw_trx) const
30+
std::wstring sec_mod_dummy::get_passwd_trx_raw(const std::string& raw_trx) const
3131
{
32-
return std::string("blank_password");
32+
return std::wstring(L"blank_password");
3333
}
3434

35-
std::string sec_mod_dummy::get_passwd(const std::string& str) const
35+
std::wstring sec_mod_dummy::get_passwd(const std::string& str) const
3636
{
37-
return std::string("blank_password");
37+
return std::wstring(L"blank_password");
3838
}

keychain_cmd_app/secure_module_dummy.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ class sec_mod_dummy: public secure_dlg_mod_base
1515
public:
1616
sec_mod_dummy();
1717
virtual ~sec_mod_dummy();
18-
virtual std::string get_passwd_trx_raw(const std::string& raw_trx) const override;
19-
virtual std::string get_passwd_trx(const graphene::chain::transaction& trx) const override;
20-
virtual std::string get_passwd(const std::string& str) const override;
18+
virtual std::wstring get_passwd_trx_raw(const std::string& raw_trx) const override;
19+
virtual std::wstring get_passwd_trx(const graphene::chain::transaction& trx) const override;
20+
virtual std::wstring get_passwd(const std::string& str) const override;
2121
virtual void print_mnemonic(const string_list& mnemonic) const override;
2222
virtual std::string get_uid() const override;
2323

keychain_lib/include/keychain_lib/key_encryptor.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ class encryptor_singletone
2222

2323
keyfile_format::encrypted_data encrypt_keydata(
2424
keyfile_format::cipher_etype etype,
25-
const std::string& key,
25+
const std::wstring& key,
2626
const std::string& keydata);
2727

28-
std::string decrypt_keydata(const std::string& key, keyfile_format::encrypted_data& enc_data);
28+
std::string decrypt_keydata(const std::wstring& key, keyfile_format::encrypted_data& enc_data);
2929

3030
private:
3131
EVP_CIPHER_CTX* m_ctx;

keychain_lib/include/keychain_lib/keychain_commands.hpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,13 @@ struct keychain_error: std::runtime_error
4343
class keychain_base
4444
{
4545
public:
46-
using string_list = std::list<std::string>;
46+
using string_list = std::list<std::wstring>;
4747
keychain_base(std::string&& uid_hash_);
4848
virtual ~keychain_base();
4949
virtual void operator()(const fc::variant& command) = 0;
50-
boost::signals2::signal<std::string(const std::string&)> get_passwd_trx_raw;
51-
boost::signals2::signal<std::string(const graphene::chain::transaction&)> get_passwd_trx;
52-
boost::signals2::signal<std::string(const std::string&)> get_passwd;
50+
boost::signals2::signal<std::wstring(const std::string&)> get_passwd_trx_raw;
51+
boost::signals2::signal<std::wstring(const graphene::chain::transaction&)> get_passwd_trx;
52+
boost::signals2::signal<std::wstring(const std::string&)> get_passwd;
5353
boost::signals2::signal<void(const string_list&)> print_mnemonic;
5454
std::string uid_hash;
5555
};
@@ -214,6 +214,8 @@ struct keychain_command<CMD_SIGN> : keychain_command_base
214214
}
215215
else if (!params.keyname.empty())
216216
{
217+
auto curdir = bfs::current_path();
218+
217219
auto first = bfs::directory_iterator(bfs::path("./"));
218220
auto it = std::find_if(first, bfs::directory_iterator(),find_keyfile_by_username(params.keyname.c_str(), &keyfile));
219221
if (it == bfs::directory_iterator())
@@ -231,7 +233,7 @@ struct keychain_command<CMD_SIGN> : keychain_command_base
231233
// If we can parse transaction we need to use get_passwd_trx function
232234
// else use get_passwd_trx_raw()
233235
// At this moment parsing of transaction is not implemented
234-
std::string passwd = std::move(*(keychain->get_passwd_trx_raw(params.transaction)));
236+
std::wstring passwd = std::move(*(keychain->get_passwd_trx_raw(params.transaction)));
235237
key_data = std::move(encryptor.decrypt_keydata(passwd.c_str(), encrypted_data));
236238
}
237239
else

keychain_lib/include/keychain_lib/keychain_wrapper.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ namespace keychain_app {
1313
class secure_dlg_mod_base
1414
{
1515
public:
16-
using string_list = std::list<std::string>;
16+
using string_list = std::list<std::wstring>;
1717

1818
virtual ~secure_dlg_mod_base(){}
19-
virtual std::string get_passwd_trx_raw(const std::string& raw_trx) const = 0;
20-
virtual std::string get_passwd_trx(const graphene::chain::transaction& trx) const = 0;
21-
virtual std::string get_passwd(const std::string& str) const = 0;
19+
virtual std::wstring get_passwd_trx_raw(const std::string& raw_trx) const = 0;
20+
virtual std::wstring get_passwd_trx(const graphene::chain::transaction& trx) const = 0;
21+
virtual std::wstring get_passwd(const std::string& str) const = 0;
2222
virtual void print_mnemonic(const string_list& mnemonic) const = 0;
2323
virtual std::string get_uid() const = 0;
2424
};

keychain_lib/src/key_encryptor.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ encryptor_singletone& encryptor_singletone::instance()
3636

3737
keyfile_format::encrypted_data encryptor_singletone::encrypt_keydata(
3838
keyfile_format::cipher_etype etype,
39-
const std::string& key,
39+
const std::wstring& key,
4040
const std::string& keydata)
4141
{
4242
keyfile_format::encrypted_data enc_data;
@@ -52,7 +52,8 @@ keyfile_format::encrypted_data encryptor_singletone::encrypt_keydata(
5252
//I cannot figure out the exact reason what exactly is wrong with the key (it is need to debug asm function
5353
// to find out reason)
5454
//The solution (from lib/fc) is to create hash from password string and encrypt data on hash key
55-
auto key_hash = fc::sha512::hash(key);
55+
const char* key_data = reinterpret_cast<const char*>(key.data());
56+
auto key_hash = fc::sha512::hash(key_data, key.size()* sizeof(std::wstring::value_type));
5657

5758
if(1 != EVP_EncryptInit_ex(m_ctx, get_cipher(etype), NULL, reinterpret_cast<const uint8_t*>(&key_hash),
5859
reinterpret_cast<const uint8_t*>(enc_data.iv.c_str())))
@@ -81,7 +82,7 @@ keyfile_format::encrypted_data encryptor_singletone::encrypt_keydata(
8182
return enc_data;
8283
}
8384

84-
std::string encryptor_singletone::decrypt_keydata(const std::string& key, keyfile_format::encrypted_data& data)
85+
std::string encryptor_singletone::decrypt_keydata(const std::wstring& key, keyfile_format::encrypted_data& data)
8586
{
8687
int decr_length = 0;
8788
int length = 0;
@@ -98,7 +99,8 @@ std::string encryptor_singletone::decrypt_keydata(const std::string& key, keyfil
9899
//I cannot figure out the exact reason what exactly is wrong with the key (it is need to debug asm function
99100
// to find out reason)
100101
//The solution (from lib/fc) is to create hash from password string and encrypt data on hash key
101-
auto key_hash = fc::sha512::hash(key);
102+
const char* key_data = reinterpret_cast<const char*>(key.data());
103+
auto key_hash = fc::sha512::hash(key_data, key.size()* sizeof(std::wstring::value_type));
102104

103105
if(1 != EVP_DecryptInit_ex(m_ctx, get_cipher(data.cipher_type), NULL, reinterpret_cast<const uint8_t*>(&key_hash),
104106
reinterpret_cast<const uint8_t*>(data.iv.c_str())))

keychain_lib/src/keychain.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ keychain_commands_singletone::keychain_commands_singletone()
3333
});
3434
}
3535

36-
keychain::keychain(std::string&& uid_hash, const char* default_key_dir)
37-
: keychain_base(std::move(uid_hash))
36+
keychain::keychain(std::string&& uid_hash_, const char* default_key_dir)
37+
: keychain_base(std::move(uid_hash_))
3838
, m_init_path(bfs::current_path())
3939
{
4040
std::string user_dir(default_key_dir);

0 commit comments

Comments
 (0)