#include <security_utilities/ccaudit.h> // some queries do their own authentication
#include <Security/AuthorizationPlugin.h>
#include "kcdatabase.h"
-#include "AuthorizationEngine.h"
#include "authhost.h"
#include "server.h"
#include "session.h"
using Authorization::AuthValueVector;
using Security::OSXCode;
-const uint64_t kMaximumAuthorizationTries = 10000;
+#define kMaximumAuthorizationTries (10000)
//
// base for classes talking to com.apple.security.agent and com.apple.security.authhost
//
-class SecurityAgentXPCConnection : public SecurityAgentConnectionInterface
+class SecurityAgentXPCConnection
{
public:
- SecurityAgentXPCConnection(const AuthHostType type = securityAgent, Session &session = Server::session());
+ SecurityAgentXPCConnection(Session &session = Server::session());
virtual ~SecurityAgentXPCConnection();
virtual void activate(bool ignoreUid);
- virtual void reconnect();
virtual void disconnect() { };
virtual void terminate();
-
- AuthHostType hostType() { return mAuthHostType; }
-
+
protected:
- AuthHostType mAuthHostType;
RefPointer<AuthHostInstance> mHostInstance;
Session &mSession;
xpc_connection_t mXPCConnection;
//
-// The main com.apple.security.agent/com.apple.security.authhost interaction base class
+// The main com.apple.security.agent interaction base class
//
class SecurityAgentXPCQuery : public SecurityAgentXPCConnection
{
typedef SecurityAgent::Reason Reason;
- SecurityAgentXPCQuery(const AuthHostType type = securityAgent, Session &session = Server::session());
+ SecurityAgentXPCQuery(Session &session = Server::session());
void inferHints(Process &thisProcess);
virtual void disconnect();
virtual void terminate();
void create(const char *pluginId, const char *mechanismId);
- OSStatus invoke();
+ void invoke();
void setTerminateOnSleep(bool terminateOnSleep) {mTerminateOnSleep = terminateOnSleep;}
bool getTerminateOnSleep() {return mTerminateOnSleep;}
void setInput(const AuthItemSet& inHints, const AuthItemSet& inContext) { mInHints = inHints; mInContext = inContext; }
};
-//
-// Specialized for code signature adjustment queries
-//
-class QueryCodeCheck : public SecurityAgentXPCQuery {
-public:
- bool operator () (const char *aclPath);
-};
-
-
//
// A query for an existing passphrase
//
public:
QueryKeychainAuth() { }
// "prompt" can be NULL
- Reason operator () (const char *database, const char *description, AclAuthorization action, const char *prompt);
+ Reason performQuery(const KeychainDatabase&, const char *description, AclAuthorization action, const char *prompt);
Reason accept(string &username, string &passphrase);
};