github.com/olli-ai/jx/v2@v2.0.400-0.20210921045218-14731b4dd448/pkg/util/secrets/secrets.go (about) 1 package secrets 2 3 import ( 4 "github.com/pkg/errors" 5 "github.com/sethvargo/go-password/password" 6 ) 7 8 const ( 9 allowedSymbols = "~!#%^_+-=?,." 10 length = 20 11 numDigits = 4 12 numSymbols = 2 13 upperCaseAllowed = true 14 allowRepeat = true 15 ) 16 17 // DefaultGenerateSecret generates a secret using sensible defaults 18 func DefaultGenerateSecret() (string, error) { 19 input := password.GeneratorInput{ 20 Symbols: allowedSymbols, 21 } 22 23 generator, err := password.NewGenerator(&input) 24 if err != nil { 25 return "", errors.Wrap(err, "unable to create password generator") 26 } 27 28 secret, err := generator.Generate(length, numDigits, numSymbols, !upperCaseAllowed, allowRepeat) 29 30 if err != nil { 31 return "", errors.Wrap(err, "unable to generate secret") 32 } 33 return secret, nil 34 }