pam.go 540 B

1234567891011121314151617181920212223242526272829303132
  1. // +build pam
  2. package pam
  3. import (
  4. "errors"
  5. "github.com/msteinert/pam"
  6. )
  7. func PAMAuth(serviceName, userName, passwd string) error {
  8. t, err := pam.StartFunc(serviceName, userName, func(s pam.Style, msg string) (string, error) {
  9. switch s {
  10. case pam.PromptEchoOff:
  11. return passwd, nil
  12. case pam.PromptEchoOn, pam.ErrorMsg, pam.TextInfo:
  13. return "", nil
  14. }
  15. return "", errors.New("Unrecognized PAM message style")
  16. })
  17. if err != nil {
  18. return err
  19. }
  20. if err = t.Authenticate(0); err != nil {
  21. return err
  22. }
  23. return nil
  24. }