MCPcopy Create free account
hub / github.com/TelegramMessenger/cocoon / get_private_keys_from_key_manager

Method get_private_keys_from_key_manager

runners/BaseRunner.cpp:816–872  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

814}
815
816void BaseRunner::get_private_keys_from_key_manager() {
817 if (!is_initialized()) {
818 return;
819 }
820
821 if (role_ != RunnerRole::Worker && role_ != RunnerRole::Proxy) {
822 return;
823 }
824
825 auto conf = runner_config_;
826 if (!conf || !conf->root_contract_config) {
827 return;
828 }
829
830 auto fail = [&]() {
831 if (key_manager_socket_id_ > 0) {
832 td::actor::send_closure(client_, &TcpClient::del_outbound_address, key_manager_socket_id_);
833 key_manager_socket_id_ = 0;
834 key_manager_addr_ = td::IPAddress();
835 if (key_manager_connection_id_ > 0) {
836 fail_connection(key_manager_connection_id_, td::Status::Error("closing key manager"));
837 key_manager_connection_id_ = 0;
838 }
839 }
840 };
841
842 auto key_manager_addr = conf->root_contract_config->key_manager_address();
843 if (!key_manager_addr.is_valid()) {
844 return fail();
845 }
846 if (key_manager_addr != key_manager_addr_) {
847 fail();
848 key_manager_addr_ = key_manager_addr;
849 key_manager_socket_id_ = generate_unique_uint64();
850
851 td::actor::send_closure(client_, &TcpClient::add_outbound_address, key_manager_socket_id_, key_manager_addr,
852 remote_app_type_key_manager());
853 }
854
855 if (key_manager_connection_id_ > 0) {
856 td::BufferSlice req;
857 if (role_ == RunnerRole::Proxy) {
858 req = cocoon::create_serialize_tl_object<cocoon_api::keyManager_getProxyPrivateKeys>(0);
859 } else if (role_ == RunnerRole::Worker) {
860 req = cocoon::create_serialize_tl_object<cocoon_api::keyManager_getWorkerPrivateKeys>(0);
861 } else {
862 return;
863 }
864
865 send_query_to_connection(key_manager_connection_id_, "get_private_keys", std::move(req), td::Timestamp::in(60.0),
866 [runner = this](td::Result<td::BufferSlice> R) mutable {
867 if (R.is_ok()) {
868 runner->got_private_keys_from_key_manager(R.move_as_ok());
869 }
870 });
871 }
872}
873

Callers

nothing calls this directly

Tested by

no test coverage detected