]> git.saurik.com Git - apple/security.git/blobdiff - libsecurity_codesigning/lib/SecTask.h
Security-55163.44.tar.gz
[apple/security.git] / libsecurity_codesigning / lib / SecTask.h
diff --git a/libsecurity_codesigning/lib/SecTask.h b/libsecurity_codesigning/lib/SecTask.h
new file mode 100644 (file)
index 0000000..7563b66
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2008-2009 Apple Inc. All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ * 
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+#ifndef _SECURITY_SECTASK_H_
+#define _SECURITY_SECTASK_H_
+
+#include <CoreFoundation/CoreFoundation.h>
+#include <mach/message.h>
+#include <Security/SecCode.h>
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/*!
+    @typedef SecTaskRef
+    @abstract CFType used for representing a task
+*/
+typedef struct __SecTask *SecTaskRef;
+
+/*!
+    @function SecTaskGetTypeID
+    @abstract Returns the type ID for CF instances of SecTask.
+    @result A CFTypeID for SecTask
+*/
+CFTypeID SecTaskGetTypeID(void);
+
+/*!
+    @function SecTaskCreateWithAuditToken
+    @abstract Create a SecTask object for the task that sent the mach message
+    represented by the audit token.
+    @param token The audit token of a mach message
+    @result The newly created SecTask object or NULL on error.  The caller must
+    CFRelease the returned object.
+*/
+SecTaskRef SecTaskCreateWithAuditToken(CFAllocatorRef allocator, audit_token_t token);
+
+/*!
+    @function SecTaskCreateFromSelf
+    @abstract Create a SecTask object for the current task.
+    @result The newly created SecTask object or NULL on error.  The caller must
+    CFRelease the returned object.
+*/
+SecTaskRef SecTaskCreateFromSelf(CFAllocatorRef allocator);
+
+/*!
+    @function SecTaskCopyValueForEntitlement
+    @abstract Returns the value of a single entitlement for the represented 
+    task.
+    @param task A previously created SecTask object
+    @param entitlement The name of the entitlement to be fetched
+    @param error On a NULL return, this may be contain a CFError describing
+    the problem.  This argument may be NULL if the caller is not interested in
+    detailed errors.
+    @result The value of the specified entitlement for the process or NULL if
+    the entitlement value could not be retrieved.  The type of the returned
+    value will depend on the entitlement specified.  The caller must release
+    the returned object.
+    @discussion A NULL return may indicate an error, or it may indicate that
+    the entitlement is simply not present.  In the latter case, no CFError is
+    returned.
+*/
+CFTypeRef SecTaskCopyValueForEntitlement(SecTaskRef task, CFStringRef entitlement, CFErrorRef *error);
+
+/*!
+    @function SecTaskCopyValuesForEntitlements
+    @abstract Returns the values of multiple entitlements for the represented 
+    task.
+    @param task A previously created SecTask object
+    @param entitlements An array of entitlement names to be fetched
+    @param error On a NULL return, this will contain a CFError describing
+    the problem.  This argument may be NULL if the caller is not interested in
+    detailed errors.  If a requested entitlement is not present for the 
+    returned dictionary, the entitlement is not set on the task.  The caller
+    must CFRelease the returned value
+*/
+CFDictionaryRef SecTaskCopyValuesForEntitlements(SecTaskRef task, CFArrayRef entitlements, CFErrorRef *error);
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* !_SECURITY_SECTASK_H_ */