Add decentralized cryptographic identity
This commit is contained in:
parent
0b5b78a553
commit
fa996a6735
27 changed files with 1733 additions and 58 deletions
|
|
@ -45,6 +45,7 @@ const DIRECT_WORKFLOW_HELP: String = (
|
|||
|
||||
var _network_session: NetworkSession
|
||||
var _saved_servers: SavedServerStore
|
||||
var _server_trust: ServerTrustStore
|
||||
var _gameplay_context: bool = false
|
||||
var _mode: Mode = Mode.DIRECT
|
||||
var _visible_entries: Array[SavedServerEntry] = []
|
||||
|
|
@ -89,10 +90,12 @@ func setup(
|
|||
network_session: NetworkSession,
|
||||
saved_servers: SavedServerStore,
|
||||
gameplay_context: bool,
|
||||
server_trust: ServerTrustStore = null,
|
||||
) -> void:
|
||||
_network_session = network_session
|
||||
_saved_servers = saved_servers
|
||||
_gameplay_context = gameplay_context
|
||||
_server_trust = server_trust
|
||||
if not _network_session.state_changed.is_connected(_on_state_changed):
|
||||
_network_session.state_changed.connect(_on_state_changed)
|
||||
if not _network_session.status_message_changed.is_connected(
|
||||
|
|
@ -447,6 +450,17 @@ func _format_entry_details(entry: SavedServerEntry) -> String:
|
|||
if _mode == Mode.SAVED:
|
||||
parts.append("Name: %s" % entry.display_name)
|
||||
parts.append("Address: %s" % entry.normalized_endpoint)
|
||||
if _server_trust != null:
|
||||
var trust := _server_trust.get_record(entry.get_endpoint())
|
||||
if trust.is_empty():
|
||||
parts.append("Host identity: Not verified yet")
|
||||
else:
|
||||
parts.append(
|
||||
"Host identity: %s"
|
||||
% NetworkIdentityCrypto.format_fingerprint(
|
||||
str(trust.get("fingerprint", ""))
|
||||
)
|
||||
)
|
||||
if (
|
||||
not entry.last_observed_server_name.is_empty()
|
||||
and (
|
||||
|
|
|
|||
|
|
@ -121,6 +121,7 @@ func setup(
|
|||
fishing_spot: FishingSpotType,
|
||||
network_session: NetworkSessionType,
|
||||
saved_servers: SavedServerStoreType,
|
||||
server_trust: ServerTrustStore,
|
||||
) -> void:
|
||||
_player = player
|
||||
_save_manager = save_manager
|
||||
|
|
@ -128,7 +129,7 @@ func setup(
|
|||
_fishing_spot = fishing_spot
|
||||
_network_session = network_session
|
||||
_saved_servers = saved_servers
|
||||
_join_game_page.setup(network_session, saved_servers, true)
|
||||
_join_game_page.setup(network_session, saved_servers, true, server_trust)
|
||||
if not _fishing_spot.bite_activated.is_connected(_on_bite_activated):
|
||||
_fishing_spot.bite_activated.connect(_on_bite_activated)
|
||||
|
||||
|
|
|
|||
|
|
@ -43,6 +43,13 @@ func setup(service: NetworkProfileService) -> void:
|
|||
_service.conflict_result.connect(_on_conflict_result)
|
||||
_service.apply_finished.connect(_on_apply_finished)
|
||||
_load_persisted()
|
||||
var identity_value := find_child("IdentityFingerprint", true, false) as Label
|
||||
if identity_value != null:
|
||||
identity_value.text = "%s • Stored on this device" % (
|
||||
NetworkIdentityCrypto.format_fingerprint(
|
||||
_service.get_identity_fingerprint()
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
func activate() -> void:
|
||||
|
|
@ -162,6 +169,19 @@ func _build_ui() -> void:
|
|||
_suggestions.add_theme_constant_override("separation", 8)
|
||||
layout.add_child(_suggestions)
|
||||
|
||||
var identity_label := Label.new()
|
||||
identity_label.text = "identity"
|
||||
identity_label.add_theme_color_override("font_color", Color("302b27"))
|
||||
layout.add_child(identity_label)
|
||||
var identity_value := Label.new()
|
||||
identity_value.name = "IdentityFingerprint"
|
||||
identity_value.text = "Stored on this device"
|
||||
identity_value.tooltip_text = (
|
||||
"This identity helps other players recognize you between sessions."
|
||||
)
|
||||
identity_value.add_theme_color_override("font_color", Color("665e52"))
|
||||
layout.add_child(identity_value)
|
||||
|
||||
var body := HBoxContainer.new()
|
||||
body.size_flags_vertical = Control.SIZE_EXPAND_FILL
|
||||
body.add_theme_constant_override("separation", 18)
|
||||
|
|
|
|||
|
|
@ -231,10 +231,11 @@ func setup(
|
|||
settings_manager: SettingsManagerType,
|
||||
network_session: NetworkSessionType,
|
||||
saved_servers: SavedServerStoreType,
|
||||
server_trust: ServerTrustStore,
|
||||
) -> void:
|
||||
_save_manager = save_manager
|
||||
_settings_manager = settings_manager
|
||||
_join_game_page.setup(network_session, saved_servers, false)
|
||||
_join_game_page.setup(network_session, saved_servers, false, server_trust)
|
||||
_join_game_page.join_requested.connect(join_game_requested.emit)
|
||||
_join_game_page.back_requested.connect(_close_join_game)
|
||||
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue