// Copyright 2020 The go-ethereum Authors // This file is part of go-ethereum. // // go-ethereum is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // go-ethereum is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with go-ethereum. If not, see . // Package utils contains internal helper functions for go-ethereum commands. package utils import ( "fmt" "github.com/ethereum/go-ethereum/console/prompt" ) // GetPassPhrase displays the given text(prompt) to the user and requests some textual // data to be entered, but one which must not be echoed out into the terminal. // The method returns the input provided by the user. func GetPassPhrase(text string, confirmation bool) string { if text != "" { fmt.Println(text) } password, err := prompt.Stdin.PromptPassword("Password: ") if err != nil { Fatalf("Failed to read password: %v", err) } if confirmation { confirm, err := prompt.Stdin.PromptPassword("Repeat password: ") if err != nil { Fatalf("Failed to read password confirmation: %v", err) } if password != confirm { Fatalf("Passwords do not match") } } return password } // GetPassPhraseWithList retrieves the password associated with an account, either fetched // from a list of preloaded passphrases, or requested interactively from the user. func GetPassPhraseWithList(text string, confirmation bool, index int, passwords []string) string { // If a list of passwords was supplied, retrieve from them if len(passwords) > 0 { if index < len(passwords) { return passwords[index] } return passwords[len(passwords)-1] } // Otherwise prompt the user for the password password := GetPassPhrase(text, confirmation) return password }