//export openSession func openSession(handle *C.pam_handle_t, flags C.int, argv []string) C.int { hdl := pam.Handle{unsafe.Pointer(handle)} fmt.Println("open_session: ", argv) hdl.SetModuleData("session-begin", time.Now()) return C.PAM_SUCCESS }
//export goAuthenticate func goAuthenticate(handle *C.pam_handle_t, flags C.int, argv []string) C.int { hdl := pam.Handle{unsafe.Pointer(handle)} fmt.Println("authenticate:", argv) usr, err := hdl.GetUser() if err != nil { return C.PAM_AUTH_ERR } fmt.Println("User:"******"test" { return C.PAM_USER_UNKNOWN } resps, err := hdl.Conversation( pam.Message{ Style: pam.MessageEchoOff, Msg: "Password: "******"Error: ", err) return C.PAM_CONV_ERR } if resps[0] != "cake" { return C.PAM_AUTH_ERR } resps, err = hdl.Conversation( pam.Message{ Style: pam.MessageEchoOn, Msg: "Favourite colour: ", }) if err != nil { fmt.Println("Error: ", err) return C.PAM_CONV_ERR } fmt.Println("I can't believe you like the colour", resps[0]) hdl.SetModuleData("fav-colour", resps[0]) return C.PAM_SUCCESS }