| 503 | } |
| 504 | |
| 505 | void session::init_leaf_node(dpp::snowflake self_user_id, std::shared_ptr<::mlspp::SignaturePrivateKey>& transient_key) noexcept |
| 506 | try { |
| 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 | } |
| 535 | catch (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 | |
| 540 | void session::reset_join_key_package() noexcept |
| 541 | try { |
nothing calls this directly
no test coverage detected