git.fiddlerwoaroof.com
Raw Blame History
#ifndef _DUAL_CONTROL_H
#define _DUAL_CONTROL_H

#include <string>
#include <memory>
#include <vector>
#include <security/pam_modules.h>

#include "validator.h"
#include "conversation.h"
#include "logger.h"

class dual_control_ifc {
    public:
        virtual ~dual_control_ifc() {}
        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;
};
typedef std::shared_ptr<dual_control_ifc> dual_control;

struct dual_control_configuration {
    validator validator;
    conversations conversations;
    logger logger;
};
dual_control create_dual_control(const dual_control_configuration &configuration);

#endif