+++ /dev/null
-/*
- * Copyright (c) 2002-2004,2011,2014 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@
- */
-
-/*!
- @header SecAccess
- SecAccess implements a way to set and manipulate access control rules and
- restrictions on SecKeychainItems.
-*/
-
-#ifndef _SECURITY_SECACCESS_H_
-#define _SECURITY_SECACCESS_H_
-
-#include <Security/SecBase.h>
-#include <Security/cssmtype.h>
-#include <CoreFoundation/CFArray.h>
-#include <CoreFoundation/CFError.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-
-
-typedef UInt32 SecAccessOwnerType;
-enum
-{
- kSecUseOnlyUID = 1,
- kSecUseOnlyGID = 2,
- kSecHonorRoot = 0x100,
- kSecMatchBits = (kSecUseOnlyUID | kSecUseOnlyGID)
-};
-
-/* No restrictions. Permission to perform all operations on
- the resource or available to an ACL owner. */
-extern CFTypeRef kSecACLAuthorizationAny
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-
-extern CFTypeRef kSecACLAuthorizationLogin
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-extern CFTypeRef kSecACLAuthorizationGenKey
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-extern CFTypeRef kSecACLAuthorizationDelete
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-extern CFTypeRef kSecACLAuthorizationExportWrapped
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-extern CFTypeRef kSecACLAuthorizationExportClear
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-extern CFTypeRef kSecACLAuthorizationImportWrapped
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-extern CFTypeRef kSecACLAuthorizationImportClear
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-extern CFTypeRef kSecACLAuthorizationSign
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-extern CFTypeRef kSecACLAuthorizationEncrypt
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-extern CFTypeRef kSecACLAuthorizationDecrypt
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-extern CFTypeRef kSecACLAuthorizationMAC
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-extern CFTypeRef kSecACLAuthorizationDerive
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-
-/* Defined authorization tag values for Keychain */
-extern CFTypeRef kSecACLAuthorizationKeychainCreate
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-extern CFTypeRef kSecACLAuthorizationKeychainDelete
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-extern CFTypeRef kSecACLAuthorizationKeychainItemRead
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-extern CFTypeRef kSecACLAuthorizationKeychainItemInsert
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-extern CFTypeRef kSecACLAuthorizationKeychainItemModify
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-extern CFTypeRef kSecACLAuthorizationKeychainItemDelete
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-
-extern CFTypeRef kSecACLAuthorizationChangeACL
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-extern CFTypeRef kSecACLAuthorizationChangeOwner
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-
-
-/*!
- @function SecAccessGetTypeID
- @abstract Returns the type identifier of SecAccess instances.
- @result The CFTypeID of SecAccess instances.
-*/
-CFTypeID SecAccessGetTypeID(void);
-
-/*!
- @function SecAccessCreate
- @abstract Creates a new SecAccessRef that is set to the currently designated system default
- configuration of a (newly created) security object. Note that the precise nature of
- this default may change between releases.
- @param descriptor The name of the item as it should appear in security dialogs
- @param trustedlist A CFArray of TrustedApplicationRefs, specifying which applications
- should be allowed to access an item without triggering confirmation dialogs.
- If NULL, defaults to (just) the application creating the item. To set no applications,
- pass a CFArray with no elements.
- @param accessRef On return, a pointer to the new access reference.
- @result A result code. See "Security Error Codes" (SecBase.h).
-*/
-OSStatus SecAccessCreate(CFStringRef descriptor, CFArrayRef trustedlist, SecAccessRef *accessRef);
-
-/*!
- @function SecAccessCreateFromOwnerAndACL
- @abstract Creates a new SecAccessRef using the owner and access control list you provide.
- @param owner A pointer to a CSSM access control list owner.
- @param aclCount An unsigned 32-bit integer representing the number of items in the access control list.
- @param acls A pointer to the access control list.
- @param On return, a pointer to the new access reference.
- @result A result code. See "Security Error Codes" (SecBase.h).
- @discussion For 10.7 and later please use the SecAccessCreateWithOwnerAndACL API
-*/
-OSStatus SecAccessCreateFromOwnerAndACL(const CSSM_ACL_OWNER_PROTOTYPE *owner, uint32 aclCount, const CSSM_ACL_ENTRY_INFO *acls, SecAccessRef *accessRef)
- DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
-
-/*!
- @function SecAccessCreateWithOwnerAndACL
- @abstract Creates a new SecAccessRef using either for a user or a group with a list of ACLs
- @param userId An user id that specifies the user to associate with this SecAccessRef.
- @param groupId A group id that specifies the group to associate with this SecAccessRef.
- @param ownerType Specifies the how the ownership of the new SecAccessRef is defined.
- @param acls A CFArrayRef of the ACLs to associate with this SecAccessRef
- @param error Optionally a pointer to a CFErrorRef to return any errors with may have occured
- @result A pointer to the new access reference.
-*/
-SecAccessRef SecAccessCreateWithOwnerAndACL(uid_t userId, gid_t groupId, SecAccessOwnerType ownerType, CFArrayRef acls, CFErrorRef *error)
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-
-/*!
- @function SecAccessGetOwnerAndACL
- @abstract Retrieves the owner and the access control list of a given access.
- @param accessRef A reference to the access from which to retrieve the information.
- @param owner On return, a pointer to the access control list owner.
- @param aclCount On return, a pointer to an unsigned 32-bit integer representing the number of items in the access control list.
- @param acls On return, a pointer to the access control list.
- @result A result code. See "Security Error Codes" (SecBase.h).
- @discussion For 10.7 and later please use the SecAccessCopyOwnerAndACL API
- */
-OSStatus SecAccessGetOwnerAndACL(SecAccessRef accessRef, CSSM_ACL_OWNER_PROTOTYPE_PTR *owner, uint32 *aclCount, CSSM_ACL_ENTRY_INFO_PTR *acls)
- DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
-
-/*!
- @function SecAccessCopyOwnerAndACL
- @abstract Retrieves the owner and the access control list of a given access.
- @param accessRef A reference to the access from which to retrieve the information.
- @param userId On return, the user id of the owner
- @param groupId On return, the group id of the owner
- @param ownerType On return, the type of owner for this AccessRef
- @param aclCount On return, a Boolean that if true specifies that the ownerId is a uid_t else it is a gid_t.
- @param aclList On return, a pointer to a new created CFArray of SecACL instances. The caller is responsible for calling CFRelease on this array.
- @result A result code. See "Security Error Codes" (SecBase.h).
- */
-OSStatus SecAccessCopyOwnerAndACL(SecAccessRef accessRef, uid_t* userId, gid_t* groupId, SecAccessOwnerType* ownerType, CFArrayRef* aclList)
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-
-/*!
- @function SecAccessCopyACLList
- @abstract Copies all the access control lists of a given access.
- @param accessRef A reference to the access from which to retrieve the information.
- @param aclList On return, a pointer to a new created CFArray of SecACL instances. The caller is responsible for calling CFRelease on this array.
- @result A result code. See "Security Error Codes" (SecBase.h).
-*/
-OSStatus SecAccessCopyACLList(SecAccessRef accessRef, CFArrayRef *aclList);
-
-/*!
- @function SecAccessCopySelectedACLList
- @abstract Copies selected access control lists from a given access.
- @param accessRef A reference to the access from which to retrieve the information.
- @param action An authorization tag specifying what action with which to select the action control lists.
- @param aclList On return, a pointer to the selected access control lists.
- @result A result code. See "Security Error Codes" (SecBase.h).
- @discussion For 10.7 and later please use the SecAccessCopyMatchingACLList API
-*/
-OSStatus SecAccessCopySelectedACLList(SecAccessRef accessRef, CSSM_ACL_AUTHORIZATION_TAG action, CFArrayRef *aclList)
- DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
-
-
-/*!
- @function SecAccessCopyMatchingACLList
- @abstract Copies selected access control lists from a given access.
- @param accessRef A reference to the access from which to retrieve the information.
- @param authorizationTag An authorization tag specifying what action with which to select the action control lists.
- @result A pointer to the selected access control lists.
-*/
-CFArrayRef SecAccessCopyMatchingACLList(SecAccessRef accessRef, CFTypeRef authorizationTag)
- __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* !_SECURITY_SECACCESS_H_ */