Fix passphrase save/recover problem
This commit is contained in:
parent
f05c86894d
commit
fd85edd4f3
@ -3,7 +3,7 @@
|
|||||||
{registered,[]},
|
{registered,[]},
|
||||||
{included_applications,[]},
|
{included_applications,[]},
|
||||||
{applications,[stdlib,kernel]},
|
{applications,[stdlib,kernel]},
|
||||||
{vsn,"0.1.3"},
|
{vsn,"0.1.4"},
|
||||||
{modules,[clutch,gmc_con,gmc_grids,gmc_gui,gmc_jt,
|
{modules,[clutch,gmc_con,gmc_grids,gmc_gui,gmc_jt,
|
||||||
gmc_key_master,gmc_sup,gmc_v,gmc_v_netman,
|
gmc_key_master,gmc_sup,gmc_v,gmc_v_netman,
|
||||||
gmc_v_wallman]},
|
gmc_v_wallman]},
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
%%% @end
|
%%% @end
|
||||||
|
|
||||||
-module(clutch).
|
-module(clutch).
|
||||||
-vsn("0.1.3").
|
-vsn("0.1.4").
|
||||||
-behavior(application).
|
-behavior(application).
|
||||||
-author("Craig Everett <craigeverett@qpq.swiss>").
|
-author("Craig Everett <craigeverett@qpq.swiss>").
|
||||||
-copyright("QPQ AG <info@qpq.swiss>").
|
-copyright("QPQ AG <info@qpq.swiss>").
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
%%% @end
|
%%% @end
|
||||||
|
|
||||||
-module(gmc_con).
|
-module(gmc_con).
|
||||||
-vsn("0.1.3").
|
-vsn("0.1.4").
|
||||||
-author("Craig Everett <craigeverett@qpq.swiss>").
|
-author("Craig Everett <craigeverett@qpq.swiss>").
|
||||||
-copyright("QPQ AG <info@qpq.swiss>").
|
-copyright("QPQ AG <info@qpq.swiss>").
|
||||||
-license("GPL-3.0-or-later").
|
-license("GPL-3.0-or-later").
|
||||||
@ -63,12 +63,12 @@ show_ui(Name) ->
|
|||||||
gen_server:cast(?MODULE, {show_ui, Name}).
|
gen_server:cast(?MODULE, {show_ui, Name}).
|
||||||
|
|
||||||
|
|
||||||
-spec open_wallet(Path, Password) -> ok
|
-spec open_wallet(Path, Phrase) -> ok
|
||||||
when Path :: file:filename(),
|
when Path :: file:filename(),
|
||||||
Password :: string().
|
Phrase :: string().
|
||||||
|
|
||||||
open_wallet(Path, Password) ->
|
open_wallet(Path, Phrase) ->
|
||||||
gen_server:cast(?MODULE, {open_wallet, Path, Password}).
|
gen_server:cast(?MODULE, {open_wallet, Path, Phrase}).
|
||||||
|
|
||||||
|
|
||||||
-spec close_wallet() -> ok.
|
-spec close_wallet() -> ok.
|
||||||
@ -787,17 +787,20 @@ do_make_key(Name, Seed, base58, Transform, State) ->
|
|||||||
end.
|
end.
|
||||||
|
|
||||||
|
|
||||||
do_make_key2(Name, Bin, Transform, State = #s{wallet = W}) ->
|
do_make_key2(Name, Bin, Transform,
|
||||||
#wallet{poas = POAs, keys = Keys} = W,
|
State = #s{wallet = Current, wallets = Wallets, pass = Pass}) ->
|
||||||
|
#wallet{name = WalletName, poas = POAs, keys = Keys} = Current,
|
||||||
T = transform(Transform),
|
T = transform(Transform),
|
||||||
Seed = T(Bin),
|
Seed = T(Bin),
|
||||||
Key = #key{name = KeyName, id = ID} = gmc_key_master:make_key(Name, Seed),
|
Key = #key{name = KeyName, id = ID} = gmc_key_master:make_key(Name, Seed),
|
||||||
POA = #poa{name = KeyName, id = ID},
|
POA = #poa{name = KeyName, id = ID},
|
||||||
NewKeys = [Key | Keys],
|
NewKeys = [Key | Keys],
|
||||||
NewPOAs = [POA | POAs],
|
NewPOAs = [POA | POAs],
|
||||||
NewWallet = W#wallet{poas = NewPOAs, keys = NewKeys},
|
Updated = Current#wallet{poas = NewPOAs, keys = NewKeys},
|
||||||
|
RW = lists:keyfind(WalletName, #wr.name, Wallets),
|
||||||
|
ok = save_wallet(RW, Pass, Updated),
|
||||||
ok = gmc_gui:show(NewPOAs),
|
ok = gmc_gui:show(NewPOAs),
|
||||||
State#s{wallet = NewWallet}.
|
State#s{wallet = Updated}.
|
||||||
|
|
||||||
|
|
||||||
base64_decode(String) ->
|
base64_decode(String) ->
|
||||||
@ -836,17 +839,19 @@ do_recover_key(Mnemonic, State) ->
|
|||||||
State
|
State
|
||||||
end.
|
end.
|
||||||
|
|
||||||
do_recover_key2(Seed, State = #s{wallet = W}) ->
|
do_recover_key2(Seed, State = #s{wallet = Current, wallets = Wallets, pass = Pass}) ->
|
||||||
#wallet{keys = Keys, poas = POAs} = W,
|
#wallet{name = WalletName, keys = Keys, poas = POAs} = Current,
|
||||||
Recovered = #key{id = ID, name = Name} = gmc_key_master:make_key("", Seed),
|
Recovered = #key{id = ID, name = AccName} = gmc_key_master:make_key("", Seed),
|
||||||
case lists:keymember(ID, #key.id, Keys) of
|
case lists:keymember(ID, #key.id, Keys) of
|
||||||
false ->
|
false ->
|
||||||
NewKeys = [Recovered | Keys],
|
NewKeys = [Recovered | Keys],
|
||||||
POA = #poa{name = Name, id = ID},
|
POA = #poa{name = AccName, id = ID},
|
||||||
NewPOAs = [POA | POAs],
|
NewPOAs = [POA | POAs],
|
||||||
ok = gmc_gui:show(NewPOAs),
|
ok = gmc_gui:show(NewPOAs),
|
||||||
NewWallet = W#wallet{poas = NewPOAs, keys = NewKeys},
|
Updated = Current#wallet{poas = NewPOAs, keys = NewKeys},
|
||||||
State#s{wallet = NewWallet};
|
RW = lists:keyfind(WalletName, #wr.name, Wallets),
|
||||||
|
ok = save_wallet(RW, Pass, Updated),
|
||||||
|
State#s{wallet = Updated};
|
||||||
true ->
|
true ->
|
||||||
State
|
State
|
||||||
end.
|
end.
|
||||||
@ -893,7 +898,7 @@ do_open_wallet(Path, Phrase, State) ->
|
|||||||
{ok, ChainID} -> gmc_gui:chain(ChainID, Node);
|
{ok, ChainID} -> gmc_gui:chain(ChainID, Node);
|
||||||
Error -> gmc_gui:trouble(Error)
|
Error -> gmc_gui:trouble(Error)
|
||||||
end,
|
end,
|
||||||
State#s{wallet = Recovered};
|
State#s{pass = Pass, wallet = Recovered};
|
||||||
Error ->
|
Error ->
|
||||||
ok = gmc_gui:trouble(Error),
|
ok = gmc_gui:trouble(Error),
|
||||||
New = default_wallet(),
|
New = default_wallet(),
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
%%% @end
|
%%% @end
|
||||||
|
|
||||||
-module(gmc_grids).
|
-module(gmc_grids).
|
||||||
-vsn("0.1.3").
|
-vsn("0.1.4").
|
||||||
-author("Craig Everett <craigeverett@qpq.swiss>").
|
-author("Craig Everett <craigeverett@qpq.swiss>").
|
||||||
-copyright("QPQ AG <info@qpq.swiss>").
|
-copyright("QPQ AG <info@qpq.swiss>").
|
||||||
-license("GPL-3.0-or-later").
|
-license("GPL-3.0-or-later").
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
%%% @end
|
%%% @end
|
||||||
|
|
||||||
-module(gmc_gui).
|
-module(gmc_gui).
|
||||||
-vsn("0.1.3").
|
-vsn("0.1.4").
|
||||||
-author("Craig Everett <craigeverett@qpq.swiss>").
|
-author("Craig Everett <craigeverett@qpq.swiss>").
|
||||||
-copyright("QPQ AG <info@qpq.swiss>").
|
-copyright("QPQ AG <info@qpq.swiss>").
|
||||||
-license("GPL-3.0-or-later").
|
-license("GPL-3.0-or-later").
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
%%% translation library is retained).
|
%%% translation library is retained).
|
||||||
|
|
||||||
-module(gmc_jt).
|
-module(gmc_jt).
|
||||||
-vsn("0.1.3").
|
-vsn("0.1.4").
|
||||||
-export([read_translations/1, j/2, oneshot_j/2]).
|
-export([read_translations/1, j/2, oneshot_j/2]).
|
||||||
|
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
%%% @end
|
%%% @end
|
||||||
|
|
||||||
-module(gmc_key_master).
|
-module(gmc_key_master).
|
||||||
-vsn("0.1.3").
|
-vsn("0.1.4").
|
||||||
|
|
||||||
|
|
||||||
-export([make_key/2, encode/1, decode/1]).
|
-export([make_key/2, encode/1, decode/1]).
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
%%% @end
|
%%% @end
|
||||||
|
|
||||||
-module(gmc_sup).
|
-module(gmc_sup).
|
||||||
-vsn("0.1.3").
|
-vsn("0.1.4").
|
||||||
-behaviour(supervisor).
|
-behaviour(supervisor).
|
||||||
-author("Craig Everett <craigeverett@qpq.swiss>").
|
-author("Craig Everett <craigeverett@qpq.swiss>").
|
||||||
-copyright("QPQ AG <info@qpq.swiss>").
|
-copyright("QPQ AG <info@qpq.swiss>").
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
-module(gmc_v).
|
-module(gmc_v).
|
||||||
-vsn("0.1.3").
|
-vsn("0.1.4").
|
||||||
-author("Craig Everett <craigeverett@qpq.swiss>").
|
-author("Craig Everett <craigeverett@qpq.swiss>").
|
||||||
-copyright("QPQ AG <info@qpq.swiss>").
|
-copyright("QPQ AG <info@qpq.swiss>").
|
||||||
-license("GPL-3.0-or-later").
|
-license("GPL-3.0-or-later").
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
-module(gmc_v_netman).
|
-module(gmc_v_netman).
|
||||||
-vsn("0.1.3").
|
-vsn("0.1.4").
|
||||||
-author("Craig Everett <zxq9@zxq9.com>").
|
-author("Craig Everett <zxq9@zxq9.com>").
|
||||||
-copyright("QPQ AG <info@qpq.swiss>").
|
-copyright("QPQ AG <info@qpq.swiss>").
|
||||||
-license("GPL-3.0-or-later").
|
-license("GPL-3.0-or-later").
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
-module(gmc_v_wallman).
|
-module(gmc_v_wallman).
|
||||||
-vsn("0.1.3").
|
-vsn("0.1.4").
|
||||||
-author("Craig Everett <zxq9@zxq9.com>").
|
-author("Craig Everett <zxq9@zxq9.com>").
|
||||||
-copyright("QPQ AG <info@qpq.swiss>").
|
-copyright("QPQ AG <info@qpq.swiss>").
|
||||||
-license("GPL-3.0-or-later").
|
-license("GPL-3.0-or-later").
|
||||||
@ -221,9 +221,10 @@ do_open3(Path, State = #s{frame = Frame, j = J}) ->
|
|||||||
Affirm = wxButton:new(Dialog, ?wxID_OK),
|
Affirm = wxButton:new(Dialog, ?wxID_OK),
|
||||||
_ = wxBoxSizer:add(ButtSz, Affirm, zxw:flags(wide)),
|
_ = wxBoxSizer:add(ButtSz, Affirm, zxw:flags(wide)),
|
||||||
_ = wxBoxSizer:add(Sizer, PassSz, zxw:flags(base)),
|
_ = wxBoxSizer:add(Sizer, PassSz, zxw:flags(base)),
|
||||||
_ = wxBoxSizer:add(Sizer, ButtSz, zxw:flags(base)),
|
_ = wxBoxSizer:add(Sizer, ButtSz, zxw:flags(wide)),
|
||||||
ok = wxDialog:setSizer(Dialog, Sizer),
|
ok = wxDialog:setSizer(Dialog, Sizer),
|
||||||
ok = wxBoxSizer:layout(Sizer),
|
ok = wxBoxSizer:layout(Sizer),
|
||||||
|
ok = wxDialog:setSize(Dialog, {500, 130}),
|
||||||
ok = wxFrame:center(Dialog),
|
ok = wxFrame:center(Dialog),
|
||||||
ok = wxStyledTextCtrl:setFocus(PassTx),
|
ok = wxStyledTextCtrl:setFocus(PassTx),
|
||||||
case wxDialog:showModal(Dialog) of
|
case wxDialog:showModal(Dialog) of
|
||||||
@ -232,9 +233,9 @@ do_open3(Path, State = #s{frame = Frame, j = J}) ->
|
|||||||
"" ->
|
"" ->
|
||||||
ok = wxDialog:destroy(Dialog),
|
ok = wxDialog:destroy(Dialog),
|
||||||
State;
|
State;
|
||||||
Password ->
|
Phrase ->
|
||||||
ok = wxDialog:destroy(Dialog),
|
ok = wxDialog:destroy(Dialog),
|
||||||
ok = gmc_con:open_wallet(Path, Password),
|
ok = gmc_con:open_wallet(Path, Phrase),
|
||||||
ok = do_close(State),
|
ok = do_close(State),
|
||||||
State
|
State
|
||||||
end;
|
end;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
{prefix,"gmc"}.
|
{prefix,"gmc"}.
|
||||||
{desc,"A desktop client for the Gajumaru network of blockchain networks"}.
|
{desc,"A desktop client for the Gajumaru network of blockchain networks"}.
|
||||||
{author,"Craig Everett"}.
|
{author,"Craig Everett"}.
|
||||||
{package_id,{"otpr","clutch",{0,1,3}}}.
|
{package_id,{"otpr","clutch",{0,1,4}}}.
|
||||||
{deps,[{"otpr","hakuzaru",{0,2,0}},
|
{deps,[{"otpr","hakuzaru",{0,2,0}},
|
||||||
{"otpr","aesophia",{8,0,1}},
|
{"otpr","aesophia",{8,0,1}},
|
||||||
{"otpr","aeserialization",{0,1,2}},
|
{"otpr","aeserialization",{0,1,2}},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user