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

Method init_leaf_node

src/dpp/dave/session.cpp:505–538  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

503}
504
505void session::init_leaf_node(dpp::snowflake self_user_id, std::shared_ptr<::mlspp::SignaturePrivateKey>& transient_key) noexcept
506try {
507 auto ciphersuite = ciphersuite_for_protocol_version(session_protocol_version);
508
509 if (!transient_key) {
510 if (!signing_key_id.empty()) {
511 transient_key = get_persisted_key_pair(creator, key_pair_context, signing_key_id.str(), session_protocol_version);
512 if (!transient_key) {
513 creator.log(dpp::ll_warning, "Did not receive MLS signature private key from get_persisted_key_pair; aborting");
514 return;
515 }
516 }
517 else {
518 transient_key = std::make_shared<::mlspp::SignaturePrivateKey>(
519 ::mlspp::SignaturePrivateKey::generate(ciphersuite));
520 }
521 }
522
523 signature_private_key = transient_key;
524
525 auto self_credential = create_user_credential(self_user_id.str(), session_protocol_version);
526 hpke_private_key = std::make_unique<::mlspp::HPKEPrivateKey>(::mlspp::HPKEPrivateKey::generate(ciphersuite));
527 self_leaf_node = std::make_unique<::mlspp::LeafNode>(
528 ciphersuite, hpke_private_key->public_key, signature_private_key->public_key, std::move(self_credential),
529 leaf_node_capabilities_for_protocol_version(session_protocol_version), ::mlspp::Lifetime::create_default(),
530 leaf_node_extensions_for_protocol_version(session_protocol_version), *signature_private_key
531 );
532
533 creator.log(dpp::ll_debug, "Created MLS leaf node");
534}
535catch (const std::exception& e) {
536 creator.log(dpp::ll_warning, "Failed to initialize MLS leaf node: " + std::string(e.what()));
537 TRACK_MLS_ERROR(e.what());
538}
539
540void session::reset_join_key_package() noexcept
541try {

Callers

nothing calls this directly

Calls 9

get_persisted_key_pairFunction · 0.85
create_user_credentialFunction · 0.85
stringFunction · 0.85
emptyMethod · 0.45
logMethod · 0.45
whatMethod · 0.45

Tested by

no test coverage detected