func promptPassphraseWithArg(g *libkb.GlobalContext, arg keybase1.GUIEntryArg, promptConfirm string) (keybase1.GetPassphraseRes, error) { prompter := newClientPrompter(g) firstPrompt := arg.Prompt for i := 0; i < 10; i++ { // get the first passphrase res, err := libkb.GetPassphraseUntilCheck(arg, prompter, &libkb.CheckPassphraseNew) if err != nil { return keybase1.GetPassphraseRes{}, err } // get confirmation passphrase arg.RetryLabel = "" arg.Prompt = promptConfirm confirm, err := libkb.GetPassphraseUntilCheck(arg, prompter, &libkb.CheckPassphraseNew) if err != nil { return keybase1.GetPassphraseRes{}, err } if res.Passphrase == confirm.Passphrase { // success return res, nil } // setup the prompt, label for new first attempt arg.Prompt = firstPrompt arg.RetryLabel = "Passphrase mismatch" } return keybase1.GetPassphraseRes{}, libkb.RetryExhaustedError{} }
func promptPassphraseWithArg(g *libkb.GlobalContext, arg keybase1.GUIEntryArg, promptConfirm string) (keybase1.GetPassphraseRes, error) { prompter := newClientPrompter(g) res, err := libkb.GetPassphraseUntilCheck(arg, prompter, &libkb.CheckPassphraseNew) if err != nil { return keybase1.GetPassphraseRes{}, err } // get confirmation match := &libkb.Checker{ F: func(s string) bool { return s == res.Passphrase }, Hint: "Passphrase mismatch", } arg.RetryLabel = "" arg.Prompt = promptConfirm _, err = libkb.GetPassphraseUntilCheck(arg, prompter, match) if err != nil { return keybase1.GetPassphraseRes{}, err } return res, nil }
// PromptPaperPhrase asks the user to enter a paper key phrase. // Used in `rekey paper` command. func PromptPaperPhrase(g *libkb.GlobalContext) (string, error) { arg := libkb.DefaultPassphraseArg(g, false) arg.WindowTitle = "Enter a paper key" arg.Prompt = "Enter a paper key" arg.Type = keybase1.PassphraseType_PAPER_KEY arg.Features.StoreSecret.Allow = false arg.Features.ShowTyping.Allow = true arg.Features.ShowTyping.DefaultValue = true prompter := newClientPrompter(g) res, err := libkb.GetPassphraseUntilCheck(g, arg, prompter, &libkb.PaperChecker{}) if err != nil { return "", err } return res.Passphrase, nil }