MCPcopy Create free account
hub / github.com/Mister-leo/fssh / resolvePassphrase

Function resolvePassphrase

cmd/fssh/main.go:273–311  ·  view source on GitHub ↗
(cli string, ask bool, file string, stdin bool, prompt string)

Source from the content-addressed store, hash-verified

271}
272
273func resolvePassphrase(cli string, ask bool, file string, stdin bool, prompt string) (string, error) {
274 cnt := 0
275 if cli != "" { cnt++ }
276 if ask { cnt++ }
277 if file != "" { cnt++ }
278 if stdin { cnt++ }
279 if cnt > 1 { return "", errors.New("specify only one of passphrase sources") }
280 if cli != "" { return cli, nil }
281 if ask {
282 fd := int(os.Stdin.Fd())
283 if term.IsTerminal(fd) {
284 // Disable bracketed paste and focus events before reading password
285 fmt.Fprint(os.Stderr, "\033[?2004l") // Disable bracketed paste mode
286 fmt.Fprint(os.Stderr, prompt)
287 b, err := term.ReadPassword(fd)
288 fmt.Fprintln(os.Stderr)
289 // Re-enable bracketed paste after reading
290 fmt.Fprint(os.Stderr, "\033[?2004h")
291 if err != nil { return "", err }
292 return string(b), nil
293 }
294 r := bufio.NewReader(os.Stdin)
295 s, err := r.ReadString('\n')
296 if err != nil && err != io.EOF { return "", err }
297 return strings.TrimRight(s, "\r\n"), nil
298 }
299 if file != "" {
300 b, err := os.ReadFile(file)
301 if err != nil { return "", err }
302 return strings.TrimRight(string(b), "\r\n"), nil
303 }
304 if stdin {
305 r := bufio.NewReader(os.Stdin)
306 s, err := r.ReadString('\n')
307 if err != nil && err != io.EOF { return "", err }
308 return strings.TrimRight(s, "\r\n"), nil
309 }
310 return "", nil
311}

Callers 2

cmdImportFunction · 0.85
cmdExportFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected