#include <paths.h>
#include <fcntl.h>
#include "authhost.h"
#include "server.h"
#include <security_utilities/logging.h>
#include <security_utilities/debugging.h>
#include <bsm/audit.h>
#include <bootstrap_priv.h>
#include <grp.h>
#include <pwd.h>
#include <sys/types.h>
#include <sys/sysctl.h>
#include <syslog.h>
#include <pthread.h>
static pthread_once_t agent_cred_init = PTHREAD_ONCE_INIT;
static gid_t agent_gid = 92;
static uid_t agent_uid = 92;
void initialize_agent_creds()
{
struct passwd *agentUser = getpwnam("securityagent");
if (agentUser)
{
agent_uid = agentUser->pw_uid;
agent_gid = agentUser->pw_gid;
endpwent();
}
}
AuthHostInstance::AuthHostInstance(Session &session, AuthHostType host) :
mHostType(host)
{
secdebug("authhost", "authhost born (%p)", this);
referent(session);
session.addReference(*this);
if (host == securityAgent)
pthread_once(&agent_cred_init, initialize_agent_creds);
}
AuthHostInstance::~AuthHostInstance()
{
secdebug("authhost", "authhost died (%p)", this);
}
Session &AuthHostInstance::session() const
{
return referent<Session>();
}
bool AuthHostInstance::inDarkWake()
{
return session().server().inDarkWake();
}
void
AuthHostInstance::childAction()
{
secdebug("AuthHostInstance", "authhostinstance not supported");
_exit(1);
}
#define SECURITYAGENT_BOOTSTRAP_NAME_BASE "com.apple.SecurityAgent"
#define AUTHORIZATIONHOST_BOOTSTRAP_NAME_BASE "com.apple.authorizationhost"
mach_port_t
AuthHostInstance::lookup()
{
CssmError::throwMe(CSSM_ERRCODE_INTERNAL_ERROR);
}
Port AuthHostInstance::activate()
{
CssmError::throwMe(CSSM_ERRCODE_INTERNAL_ERROR);
}