This commit is contained in:
Johns Beharry 2018-10-12 09:47:59 +00:00 committed by GitHub
commit 720f9f8b04
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -161,15 +161,14 @@ Clef that the file is 'safe' to execute.`,
Action: utils.MigrateFlags(addCredential), Action: utils.MigrateFlags(addCredential),
Name: "addpw", Name: "addpw",
Usage: "Store a credential for a keystore file", Usage: "Store a credential for a keystore file",
ArgsUsage: "<address> <password>", ArgsUsage: "<address>",
Flags: []cli.Flag{ Flags: []cli.Flag{
logLevelFlag, logLevelFlag,
configdirFlag, configdirFlag,
signerSecretFlag, signerSecretFlag,
}, },
Description: ` Description: `
The addpw command stores a password for a given address (keyfile). If you invoke it with only one parameter, it will The addpw command stores a password for a given address (keyfile).
remove any stored credential for that address (keyfile)
`, `,
} }
) )
@ -203,6 +202,7 @@ func init() {
app.Commands = []cli.Command{initCommand, attestCommand, addCredentialCommand} app.Commands = []cli.Command{initCommand, attestCommand, addCredentialCommand}
} }
func main() { func main() {
if err := app.Run(os.Args); err != nil { if err := app.Run(os.Args); err != nil {
fmt.Fprintln(os.Stderr, err) fmt.Fprintln(os.Stderr, err)
@ -210,6 +210,29 @@ func main() {
} }
} }
// promptPassword retrieves the password entered interactively
// from the user.
func promptPassword(prompt string, confirmation bool) string {
// Prompt the user for the password
if prompt != "" {
fmt.Println(prompt)
}
password, err := console.Stdin.PromptPassword("Password: ")
if err != nil {
utils.Fatalf("Failed to read password: %v", err)
}
if confirmation {
confirm, err := console.Stdin.PromptPassword("Repeat password: ")
if err != nil {
utils.Fatalf("Failed to read password confirmation: %v", err)
}
if password != confirm {
utils.Fatalf("Passwords do not match")
}
}
return password
}
func initializeSecrets(c *cli.Context) error { func initializeSecrets(c *cli.Context) error {
if err := initialize(c); err != nil { if err := initialize(c); err != nil {
return err return err
@ -269,6 +292,7 @@ NOTE: This file does not contain your accounts. Those need to be backed up separ
`) `)
return nil return nil
} }
func attestFile(ctx *cli.Context) error { func attestFile(ctx *cli.Context) error {
if len(ctx.Args()) < 1 { if len(ctx.Args()) < 1 {
utils.Fatalf("This command requires an argument.") utils.Fatalf("This command requires an argument.")
@ -295,8 +319,12 @@ func attestFile(ctx *cli.Context) error {
func addCredential(ctx *cli.Context) error { func addCredential(ctx *cli.Context) error {
if len(ctx.Args()) < 1 { if len(ctx.Args()) < 1 {
utils.Fatalf("This command requires at leaste one argument.") utils.Fatalf("This command requires at least one argument.")
} }
// Prompt user to enter a password
password := promptPassword("Enter a password to store with this address.", true)
if err := initialize(ctx); err != nil { if err := initialize(ctx); err != nil {
return err return err
} }
@ -312,11 +340,7 @@ func addCredential(ctx *cli.Context) error {
// Initialize the encrypted storages // Initialize the encrypted storages
pwStorage := storage.NewAESEncryptedStorage(filepath.Join(vaultLocation, "credentials.json"), pwkey) pwStorage := storage.NewAESEncryptedStorage(filepath.Join(vaultLocation, "credentials.json"), pwkey)
key := ctx.Args().First() key := ctx.Args().First()
value := "" pwStorage.Put(key, password)
if len(ctx.Args()) > 1 {
value = ctx.Args().Get(1)
}
pwStorage.Put(key, value)
log.Info("Credential store updated", "key", key) log.Info("Credential store updated", "key", key)
return nil return nil
} }
@ -734,4 +758,4 @@ curl -i -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","me
curl -i -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"account_sign","params":["0x694267f14675d7e1b9494fd8d72fefe1755710fa","bazonk gaz baz"],"id":67}' http://localhost:8550/ curl -i -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"account_sign","params":["0x694267f14675d7e1b9494fd8d72fefe1755710fa","bazonk gaz baz"],"id":67}' http://localhost:8550/
**/ **/