git.fiddlerwoaroof.com
pam.h
01c00cfe
 #ifndef _PAM_H
 #define _PAM_H
 #include <memory>
2fade7af
 #include <vector>
01c00cfe
 #include <security/pam_modules.h>
 
f46fb7b6
 class pam_ifc
cdf7fd74
 {
 public:
2fade7af
     virtual int get_conv (pam_handle *handle, const pam_conv **out)
     {
         return PAM_SERVICE_ERR;
     }
01c00cfe
 };
 
f46fb7b6
 class pam : public pam_ifc
cdf7fd74
 {
f46fb7b6
     typedef std::shared_ptr<pam_ifc> delegate;
 private:
     delegate delegate_;
cdf7fd74
 public:
f46fb7b6
     pam (const delegate &delegate) : delegate_ (delegate) {}
     pam() : pam (delegate (new pam_ifc)) {}
2fade7af
     int get_conv (pam_handle *handle, const pam_conv **out)
f46fb7b6
     {
2fade7af
         return delegate_->get_conv (handle, out);
f46fb7b6
     }
01c00cfe
 };
 
f46fb7b6
 pam system_pam();
01c00cfe
 
 #endif
92957308