]> git.saurik.com Git - apple/security.git/blobdiff - Security/authd/agent.h
Security-57031.1.35.tar.gz
[apple/security.git] / Security / authd / agent.h
diff --git a/Security/authd/agent.h b/Security/authd/agent.h
new file mode 100644 (file)
index 0000000..96c382a
--- /dev/null
@@ -0,0 +1,106 @@
+/* Copyright (c) 2012-2013 Apple Inc. All Rights Reserved. */
+
+#ifndef _SECURITY_AUTH_AGENT_H_
+#define _SECURITY_AUTH_AGENT_H_
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+typedef enum _PluginState {
+    init,
+    created,
+    current,
+    deactivating,
+    active,
+    interrupting,
+    mechinterrupting,
+    dead
+} PluginState;
+    
+typedef enum {
+    privilegedAuthHost,
+    securityAgent,
+    userAuthHost
+} AuthHostType;
+    
+//
+// Unified reason codes transmitted to SecurityAgent (and internationalized there)
+//
+enum Reason {
+    noReason = 0,                   // no reason (not used, used as a NULL)
+    unknownReason,                  // something else (catch-all internal error)
+    
+    // reasons for asking for a new passphrase
+    newDatabase = 11,               // need passphrase for a new database
+    changePassphrase,               // changing passphrase for existing database
+    
+    // reasons for retrying an unlock query
+    invalidPassphrase = 21,         // passphrase was wrong
+    
+    // reasons for retrying a new passphrase query
+    passphraseIsNull = 31,          // empty passphrase
+    passphraseTooSimple,            // passphrase is not complex enough
+    passphraseRepeated,             // passphrase was used before (must use new one)
+    passphraseUnacceptable,         // passphrase unacceptable for some other reason
+    oldPassphraseWrong,             // the old passphrase given is wrong
+    
+    // reasons for retrying an authorization query
+    userNotInGroup = 41,            // authenticated user not in needed group
+    unacceptableUser,               // authenticated user unacceptable for some other reason
+    
+    // reasons for canceling a staged query
+    tooManyTries = 61,              // too many failed attempts to get it right
+    noLongerNeeded,                 // the queried item is no longer needed
+    keychainAddFailed,              // the requested itemed couldn't be added to the keychain
+    generalErrorCancel,              // something went wrong so we have to give up now
+    
+    worldChanged = 101
+};
+    
+typedef enum {
+    tool = 'TOOL',
+    bundle = 'BNDL',
+    unknown = 'UNKN'
+} RequestorType;
+    
+AUTH_WARN_RESULT AUTH_MALLOC AUTH_NONNULL_ALL AUTH_RETURNS_RETAINED
+agent_t agent_create(engine_t engine, mechanism_t mech, auth_token_t auth, process_t proc, bool firstMech);
+
+AUTH_NONNULL_ALL
+uint64_t agent_run(agent_t,auth_items_t hints, auth_items_t context, auth_items_t immutable_hints);
+    
+AUTH_NONNULL_ALL
+auth_items_t agent_get_hints(agent_t);
+
+AUTH_NONNULL_ALL
+auth_items_t agent_get_context(agent_t);
+
+AUTH_NONNULL_ALL
+void agent_deactivate(agent_t);
+    
+AUTH_NONNULL_ALL
+void agent_destroy(agent_t);
+    
+AUTH_NONNULL_ALL
+PluginState agent_get_state(agent_t);
+
+AUTH_NONNULL_ALL
+mechanism_t agent_get_mechanism(agent_t);
+    
+AUTH_NONNULL_ALL
+void agent_recieve(agent_t);
+
+AUTH_NONNULL_ALL
+void
+agent_notify_interrupt(agent_t agent);
+
+AUTH_NONNULL_ALL
+void
+agent_clear_interrupt(agent_t agent);
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* !_SECURITY_AUTH_AGENT_H_ */