1/*
2 * Copyright (c) 2006, 2008 Apple Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23
24#ifndef	_SCPREFERENCESKEYCHAINPRIVATE_H
25#define	_SCPREFERENCESKEYCHAINPRIVATE_H
26
27/*
28 * SCPreferencesKeychain.h
29 * - routines to deal with keychain passwords
30 */
31
32#include <Availability.h>
33#include <TargetConditionals.h>
34#include <sys/cdefs.h>
35#include <CoreFoundation/CoreFoundation.h>
36#include <SystemConfiguration/SCPreferences.h>
37#if	!TARGET_OS_IPHONE
38#include <Security/Security.h>
39#else	// !TARGET_OS_IPHONE
40typedef struct OpaqueSecKeychainRef *SecKeychainRef;
41#endif	// !TARGET_OS_IPHONE
42
43#pragma mark -
44#pragma mark Keychain helper APIs
45
46#define	kSCKeychainOptionsAllowRoot		CFSTR("AllowRoot")		// CFBoolean, allow uid==0 applications
47#define kSCKeychainOptionsAllowedExecutables	CFSTR("AllowedExecutables")	// CFArray[CFURL]
48
49__BEGIN_DECLS
50
51SecKeychainRef
52_SCSecKeychainCopySystemKeychain		(void)					__OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
53
54CFDataRef
55_SCSecKeychainPasswordItemCopy			(SecKeychainRef		keychain,
56						 CFStringRef		unique_id)	__OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
57
58Boolean
59_SCSecKeychainPasswordItemExists		(SecKeychainRef		keychain,
60						 CFStringRef		unique_id)	__OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
61
62Boolean
63_SCSecKeychainPasswordItemRemove		(SecKeychainRef		keychain,
64						 CFStringRef		unique_id)	__OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
65
66Boolean
67_SCSecKeychainPasswordItemSet			(SecKeychainRef		keychain,
68						 CFStringRef		unique_id,
69						 CFStringRef		label,
70						 CFStringRef		description,
71						 CFStringRef		account,
72						 CFDataRef		password,
73						 CFDictionaryRef	options)	__OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
74
75
76#pragma mark -
77#pragma mark "System" Keychain APIs (w/SCPreferences)
78
79
80CFDataRef
81_SCPreferencesSystemKeychainPasswordItemCopy	(SCPreferencesRef	prefs,
82						 CFStringRef		unique_id)	__OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
83
84Boolean
85_SCPreferencesSystemKeychainPasswordItemExists	(SCPreferencesRef	prefs,
86						 CFStringRef		unique_id)	__OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
87
88Boolean
89_SCPreferencesSystemKeychainPasswordItemRemove	(SCPreferencesRef	prefs,
90						 CFStringRef		unique_id)	__OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
91
92Boolean
93_SCPreferencesSystemKeychainPasswordItemSet	(SCPreferencesRef	prefs,
94						 CFStringRef		unique_id,
95						 CFStringRef		label,
96						 CFStringRef		description,
97						 CFStringRef		account,
98						 CFDataRef		password,
99						 CFDictionaryRef	options)	__OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);
100
101__END_DECLS
102
103#endif	// _SCPREFERENCESKEYCHAINPRIVATE_H
104
105