pam.go 589 B

1234567891011121314151617181920212223242526272829
  1. //go:build pam
  2. package pam
  3. import (
  4. "github.com/cockroachdb/errors"
  5. "github.com/msteinert/pam"
  6. )
  7. func (c *Config) doAuth(login, password string) error {
  8. t, err := pam.StartFunc(c.ServiceName, login, func(s pam.Style, msg string) (string, error) {
  9. switch s {
  10. case pam.PromptEchoOff:
  11. return password, nil
  12. case pam.PromptEchoOn, pam.ErrorMsg, pam.TextInfo:
  13. return "", nil
  14. }
  15. return "", errors.Errorf("unrecognized PAM message style: %v - %s", s, msg)
  16. })
  17. if err != nil {
  18. return err
  19. }
  20. err = t.Authenticate(0)
  21. if err != nil {
  22. return err
  23. }
  24. return t.AcctMgmt(0)
  25. }