MCPcopy Create free account
hub / github.com/brainboxdotcc/DPP / create_branch

Method create_branch

mlspp/src/state.cpp:978–1014  ·  view source on GitHub ↗

Parameters: ctor inputs leaf_secret commit_opts

Source from the content-addressed store, hash-verified

976// * leaf_secret
977// * commit_opts
978std::tuple<State, Welcome>
979State::create_branch(bytes group_id,
980 HPKEPrivateKey enc_priv,
981 SignaturePrivateKey sig_priv,
982 const LeafNode& leaf_node,
983 ExtensionList extensions,
984 const std::vector<KeyPackage>& key_packages,
985 const bytes& leaf_secret,
986 const CommitOpts& commit_opts) const
987{
988 // Create new empty group with the appropriate PSK
989 auto new_group =
990 State{ std::move(group_id), _suite, std::move(enc_priv),
991 std::move(sig_priv), leaf_node, std::move(extensions) };
992
993 new_group.add_resumption_psk(_group_id, _epoch, _key_schedule.resumption_psk);
994
995 // Create Add proposals
996 auto proposals = stdx::transform<Proposal>(
997 key_packages, [&](const auto& kp) { return new_group.add_proposal(kp); });
998
999 // Create PSK proposal
1000 proposals.push_back({ PreSharedKey{
1001 { ResumptionPSK{ ResumptionPSKUsage::branch, _group_id, _epoch },
1002 random_bytes(_suite.secret_size()) } } });
1003
1004 // Commit the Add and PSK proposals
1005 auto opts = CommitOpts{
1006 proposals,
1007 commit_opts.inline_tree,
1008 commit_opts.force_path,
1009 commit_opts.leaf_node_opts,
1010 };
1011 auto [_commit, welcome, state] = new_group.commit(
1012 leaf_secret, opts, {}, RestartCommitParams{ ResumptionPSKUsage::branch });
1013 return { state, welcome };
1014}
1015
1016State
1017State::handle_branch(const HPKEPrivateKey& init_priv,

Callers

nothing calls this directly

Calls 6

random_bytesFunction · 0.85
add_resumption_pskMethod · 0.80
add_proposalMethod · 0.80
push_backMethod · 0.80
secret_sizeMethod · 0.80
commitMethod · 0.45

Tested by

no test coverage detected