git.fiddlerwoaroof.com
dual_control.h
e56d3c56
 #ifndef _DUAL_CONTROL_H
 #define _DUAL_CONTROL_H
 
 #include <string>
 #include <memory>
 #include <vector>
 #include <security/pam_modules.h>
 
caf7db60
 #include "validator.h"
 #include "conversation.h"
47f9faed
 #include "logger.h"
caf7db60
 
e56d3c56
 class dual_control_ifc {
     public:
4a1812fd
         virtual ~dual_control_ifc() {}
e56d3c56
         virtual int authenticate(pam_handle_t *handle, int flags, const std::vector<const std::string> &arguments ) = 0;
         virtual int setcred(pam_handle_t *handle, int flags, const std::vector<const std::string> &arguments) = 0;
 };
4a1812fd
 typedef std::shared_ptr<dual_control_ifc> dual_control;
 
caf7db60
 struct dual_control_configuration {
     validator validator;
     conversations conversations;
47f9faed
     logger logger;
caf7db60
 };
 dual_control create_dual_control(const dual_control_configuration &configuration);
 
e56d3c56
 #endif