package blsgen import ( "fmt" "os" "path/filepath" "strings" bls_core "github.com/harmony-one/bls/ffi/go/bls" ) func loadBasicKeyWithProvider(blsKeyFile string, pp passProvider) (*bls_core.SecretKey, error) { pass, err := pp.getPassphrase(blsKeyFile) if err != nil { return nil, err } secretKey, err := LoadBLSKeyWithPassPhrase(blsKeyFile, pass) if err != nil { return nil, err } return secretKey, nil } func checkIsFile(path string) error { info, err := os.Stat(path) if err != nil { return err } if info.IsDir() { return fmt.Errorf("%v is directory", path) } return nil } func checkIsDir(path string) error { info, err := os.Stat(path) if err != nil { return err } if !info.IsDir() { return fmt.Errorf("%v is a file", path) } return nil } func checkIsPassFile(path string) error { if err := checkIsFile(path); err != nil { return err } if filepath.Ext(path) != passExt { return fmt.Errorf("pass file %v should have extension .pass", path) } return nil } func keyFileToPassFileFull(keyFile string) string { return strings.TrimSuffix(keyFile, basicKeyExt) + passExt } func promptGetPassword(prompt string) (string, error) { if !strings.HasSuffix(prompt, ":") { prompt += ":" } console.print(prompt) return console.readPassword() } const yesNoPrompt = "[y/n]: " func promptYesNo(prompt string) (bool, error) { if !strings.HasSuffix(prompt, yesNoPrompt) { prompt = prompt + yesNoPrompt } for { console.print(prompt) response, err := console.readln() if err != nil { return false, err } response = strings.TrimSpace(strings.ToLower(response)) if response == "y" || response == "yes" { return true, nil } else if response == "n" || response == "no" { return false, nil } } } func stringIsSet(val *string) bool { return val != nil && *val != "" }