jesseduffield.lazygit/pkg/gui
Bartłomiej Dach 1a1f042f49 Add credential prompts for U2F-backed SSH keys
The 8.2 release of OpenSSH added support for FIDO/U2F hardware
authenticators, which manifests in being able to create new types of SSH
key, named `ecdsa-sk` nad `ed25519-sk`. This is relevant to lazygit,
as those SSH keys can be used to authorise git operations over SSH, as
well as signing git commits. Actual code changes are required for
correct support, as the authentication process for these types of keys
is different than the process for types supported previously.

When an operation requiring credentials is initialised with a U2F
authenticator-backed key, the first prompt is:

	Enter PIN for ${key_type} key ${path_to_key}:

at which point the user is supposed to enter a numeric (and secret) PIN,
specific to the particular FIDO/U2F authenticator using which the SSH
keypair was generated. Upon entering the correct key, the user is
supposed to physically interact with the authenticator to confirm
presence. Sometimes this is accompanied by the following text prompt:

	Confirm user presence for key ${key_type} ${key_fingerprint}

This second prompt does not always occur and it is presumed that the
user will know to perform this step even if not prompted specifically.
At this stage some authenticator devices may also begin to blink a LED
to indicate that they're waiting for input.

To facilitate lazygit's interoperability with these types of keys, add
support for the first PIN prompt, which allows "fetch", "pull", and
"push" git operations to complete.
2022-11-30 13:34:32 +11:00
..
context fix hidden suggestions 2022-08-07 19:20:02 +10:00
controllers Add credential prompts for U2F-backed SSH keys 2022-11-30 13:34:32 +11:00
filetree fix could-not-access error 2022-11-12 18:09:15 -03:30
keybindings feat: allow null in keybindings 2022-10-18 22:20:03 +09:00
mergeconflicts move merge conflicts code into controller 2022-08-07 11:16:03 +10:00
modes introduce Ref interface 2022-04-02 17:04:42 +11:00
patch_exploring refactor to only have one context per view 2022-08-06 13:49:11 +10:00
popup add deadlock mutex package 2022-08-07 11:16:14 +10:00
presentation fix: fix ambiguous branch name 2022-11-14 19:05:07 +11:00
services/custom_commands Resolve the prompt just before using it 2022-11-25 22:46:36 +01:00
style better hiding of underscores 2022-11-13 14:46:13 +11:00
types move code from main into app package to allow test to be injected 2022-08-13 13:55:08 +10:00
app_status_manager.go [#2258] show bottom line when having status 2022-11-14 00:53:55 +03:00
arrangement.go [#2258] hide options panel when showBottom line is disabled 2022-11-14 01:04:56 +03:00
branches_panel.go allow rendering to main panels from anywhere 2022-08-07 12:05:51 +10:00
command_log_panel.go move merge conflicts code into controller 2022-08-07 11:16:03 +10:00
commit_files_panel.go allow rendering to main panels from anywhere 2022-08-07 12:05:51 +10:00
commit_message_panel.go move merge conflicts code into controller 2022-08-07 11:16:03 +10:00
commits_panel.go allow rendering to main panels from anywhere 2022-08-07 12:05:51 +10:00
confirmation_panel.go fix(confirmation_panel.go): fix initial origin of editor box 2022-09-01 19:44:17 +09:00
context.go refactor to only have one context per view 2022-08-06 13:49:11 +10:00
context_config.go move merge conflicts code into controller 2022-08-07 11:16:03 +10:00
controllers.go move merge conflicts code into controller 2022-08-07 11:16:03 +10:00
custom_patch_options_panel.go refactor to only have one context per view 2022-08-06 13:49:11 +10:00
diff_context_size_test.go move context keys into context package 2022-03-17 19:13:40 +11:00
diffing.go allow rendering to main panels from anywhere 2022-08-07 12:05:51 +10:00
dummies.go resetting controllers on new repo 2022-03-17 19:13:40 +11:00
editors.go feat(editors.go): move by words 2022-10-05 22:29:55 +09:00
errors.go remove sentinel errors 2021-04-06 19:34:32 +10:00
extras_panel.go rename displayString to label for menu items 2022-05-08 14:26:18 +10:00
file_watching.go start moving commit panel handlers into controller 2022-03-17 19:13:40 +11:00
files_panel.go fix: fix initial origin of commit message panel 2022-10-15 20:09:23 +09:00
filtering.go pkg/gui: Rename IPopupHandler::Ask() to Confirm() 2022-03-30 20:13:43 +11:00
filtering_menu_panel.go rename displayString to label for menu items 2022-05-08 14:26:18 +10:00
global_handlers.go move merge conflicts code into controller 2022-08-07 11:16:03 +10:00
gui.go use thread safe map 2022-10-02 20:57:44 -07:00
gui_common.go allow rendering to main panels from anywhere 2022-08-07 12:05:51 +10:00
gui_driver.go add bisect integration test 2022-09-09 20:55:47 -07:00
information_panel.go fix: fix collision of Donate and Ask Question 2022-05-07 18:02:09 +09:00
keybindings.go move merge conflicts code into controller 2022-08-07 11:16:03 +10:00
layout.go refactor to only have one context per view 2022-08-06 13:49:11 +10:00
list_context_config.go fix hidden suggestions 2022-08-07 19:20:02 +10:00
main_panels.go fix glitchy render of stale data when flicking through files and directories 2022-10-02 20:41:24 -07:00
menu_panel.go move merge conflicts code into controller 2022-08-07 11:16:03 +10:00
modes.go add integration tests for cherry picking 2022-09-16 22:15:16 -07:00
options_menu_panel.go feat: allow null in keybindings 2022-10-18 22:20:03 +09:00
pty.go use ptmx map so that we can have multiple ptmx's stored for resizing 2022-08-06 13:49:11 +10:00
pty_windows.go Format code to pass lint 2021-09-16 21:38:43 +08:00
quitting.go pkg/gui: Rename IPopupHandler::Ask() to Confirm() 2022-03-30 20:13:43 +11:00
recent_repos_panel.go remove deprecated calls 2022-09-17 15:10:41 -07:00
reflog_panel.go allow rendering to main panels from anywhere 2022-08-07 12:05:51 +10:00
refresh.go Merge loaders package into git_commands package 2022-11-14 18:11:45 +11:00
remote_branches_panel.go allow rendering to main panels from anywhere 2022-08-07 12:05:51 +10:00
remotes_panel.go allow rendering to main panels from anywhere 2022-08-07 12:05:51 +10:00
searching.go move merge conflicts code into controller 2022-08-07 11:16:03 +10:00
side_window.go refactor to only have one context per view 2022-08-06 13:49:11 +10:00
stash_panel.go allow rendering to main panels from anywhere 2022-08-07 12:05:51 +10:00
status_panel.go allow rendering to main panels from anywhere 2022-08-07 12:05:51 +10:00
sub_commits_panel.go allow rendering to main panels from anywhere 2022-08-07 12:05:51 +10:00
submodules_panel.go allow rendering to main panels from anywhere 2022-08-07 12:05:51 +10:00
suggestions_panel.go refactor contexts 2022-03-17 19:13:40 +11:00
tags_panel.go allow rendering to main panels from anywhere 2022-08-07 12:05:51 +10:00
tasks_adapter.go move merge conflicts code into controller 2022-08-07 11:16:03 +10:00
test_mode.go remove deprecated calls 2022-09-17 15:10:41 -07:00
updates.go move merge conflicts code into controller 2022-08-07 11:16:03 +10:00
view_helpers.go fix(confirmation_panel.go): fix initial origin of editor box 2022-09-01 19:44:17 +09:00
views.go rename merging context to mergeConflicts 2022-08-06 18:05:00 +10:00
whitespace-toggle.go start moving commit panel handlers into controller 2022-03-17 19:13:40 +11:00
window.go use thread safe map 2022-10-02 20:57:44 -07:00