Skip to content

Commit

Permalink
Serialize commitments properly
Browse files Browse the repository at this point in the history
  • Loading branch information
Vagabond committed Sep 25, 2018
1 parent 5907e70 commit 3268b3f
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 13 deletions.
16 changes: 8 additions & 8 deletions src/dkg_commitment.erl
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,16 @@
matrix :: dkg_commitmentmatrix:matrix(),
generator :: erlang_pbc:element(),
nodes = [] :: [pos_integer()],
echoes = #{} :: map(),
readies =#{} :: map()
echoes = #{} :: #{pos_integer() => erlang_pbc:element()},
readies =#{} :: #{pos_integer() => erlang_pbc:element()}
}).

-record(serialized_commitment, {
matrix :: dkg_commitmentmatrix:serialized_matrix(),
generator :: binary(),
nodes = [] :: [pos_integer()],
echoes = #{} :: map(),
readies = #{} :: map()
echoes = #{} :: #{pos_integer() => binary()},
readies = #{} :: #{pos_integer() => binary()}
}).

-type commitment() :: #commitment{}.
Expand Down Expand Up @@ -132,8 +132,8 @@ serialize(#commitment{matrix=Matrix,
#serialized_commitment{matrix=dkg_commitmentmatrix:serialize(Matrix),
generator=erlang_pbc:element_to_binary(Generator),
nodes=Nodes,
echoes=Echoes,
readies=Readies}.
echoes=maps:map(fun(_K, V) -> erlang_pbc:element_to_binary(V) end, Echoes),
readies=maps:map(fun(_K, V) -> erlang_pbc:element_to_binary(V) end, Readies)}.

-spec deserialize(serialized_commitment(), erlang_pbc:element()) -> commitment().
deserialize(#serialized_commitment{matrix=SerializedMatrix,
Expand All @@ -144,5 +144,5 @@ deserialize(#serialized_commitment{matrix=SerializedMatrix,
#commitment{matrix=dkg_commitmentmatrix:deserialize(SerializedMatrix, U),
generator=erlang_pbc:binary_to_element(U, SerializedGenerator),
nodes=Nodes,
echoes=Echoes,
readies=Readies}.
echoes=maps:map(fun(_K, V) -> erlang_pbc:binary_to_element(U, V) end, Echoes),
readies=maps:map(fun(_K, V) -> erlang_pbc:binary_to_element(U, V) end, Readies)}.
2 changes: 1 addition & 1 deletion src/dkg_hybriddkg.erl
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
u :: binary(),
u2 :: binary(),
vss_map :: #{pos_integer() => dkg_hybridvss:serialized_vss()},
vss_results = #{} :: #{pos_integer() => {C :: dkg_commitment:serialized_commitment(), Si :: binary()}},
vss_results = #{} :: serialized_vss_results(),
qbar = [] :: qset(),
qhat = [] :: qset(),
rhat = [] :: rhat(),
Expand Down
11 changes: 7 additions & 4 deletions test/dkg_worker.erl
Original file line number Diff line number Diff line change
Expand Up @@ -78,12 +78,12 @@ dispatch({NewDKG, {result, {Shard, VerificationKey, VerificationKeys}}}, State)
%ct:pal("~p finished", [State#state.id]),
PubKey = tpke_pubkey:init(State#state.n, State#state.t, State#state.g1, State#state.g2, VerificationKey, VerificationKeys, State#state.curve),
PrivKey = tpke_privkey:init(PubKey, Shard, State#state.id - 1),
State#state{privkey=PrivKey, dkg=NewDKG};
update_dkg(NewDKG, State#state{privkey=PrivKey});
dispatch({NewDKG, {send, ToSend}}, State) ->
do_send(ToSend, State),
State#state{dkg=NewDKG};
update_dkg(NewDKG, State);
dispatch({NewDKG, ok}, State) ->
State#state{dkg=NewDKG};
update_dkg(NewDKG, State);
dispatch({NewDKG, Other}, State) ->
io:format("UNHANDLED ~p~n", [Other]),
State#state{dkg=NewDKG};
Expand All @@ -101,8 +101,11 @@ do_send([{multicast, Msg}|T], State) ->
[ gen_server:cast({global, name(Dest)}, {dkg, State#state.id, Msg}) || Dest <- lists:seq(1, State#state.n)],
do_send(T, State).


%% helper functions
update_dkg(DKG, State)->
NewDKG = dkg_hybriddkg:deserialize(dkg_hybriddkg:serialize(DKG), State#state.g1),
State#state{dkg=NewDKG}.

name(N) ->
list_to_atom(lists:flatten(["dkg_worker_", integer_to_list(N)])).

0 comments on commit 3268b3f

Please sign in to comment.