2 * Copyright (c) 2003-2004 Apple Computer, Inc. All Rights Reserved.
4 * @APPLE_LICENSE_HEADER_START@
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
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.
21 * @APPLE_LICENSE_HEADER_END@
24 #ifndef _SECURITY_SECKEYCHAINPRIV_H_
25 #define _SECURITY_SECKEYCHAINPRIV_H_
27 #include <Security/Security.h>
28 #include <Security/SecBasePriv.h>
29 #include <CoreFoundation/CoreFoundation.h>
31 #if defined(__cplusplus)
35 enum {kSecKeychainEnteredBatchModeEvent
= 14,
36 kSecKeychainLeftBatchModeEvent
= 15};
37 enum {kSecKeychainEnteredBatchModeEventMask
= 1 << kSecKeychainEnteredBatchModeEvent
,
38 kSecKeychainLeftBatchModeEventMask
= 1 << kSecKeychainLeftBatchModeEvent
};
41 /* Keychain management */
42 OSStatus
SecKeychainCreateNew(SecKeychainRef keychainRef
, UInt32 passwordLength
, const char* inPassword
);
43 OSStatus
SecKeychainMakeFromFullPath(const char *fullPathName
, SecKeychainRef
*keychainRef
);
44 OSStatus
SecKeychainIsValid(SecKeychainRef keychainRef
, Boolean
* isValid
);
45 OSStatus
SecKeychainChangePassword(SecKeychainRef keychainRef
, UInt32 oldPasswordLength
, const void *oldPassword
, UInt32 newPasswordLength
, const void *newPassword
);
46 OSStatus
SecKeychainOpenWithGuid(const CSSM_GUID
*guid
, uint32 subserviceId
, uint32 subserviceType
, const char* dbName
, const CSSM_NET_ADDRESS
*dbLocation
, SecKeychainRef
*keychain
);
47 OSStatus
SecKeychainSetBatchMode (SecKeychainRef kcRef
, Boolean mode
, Boolean rollback
);
49 /* Keychain list management */
50 UInt16
SecKeychainListGetCount(void);
51 OSStatus
SecKeychainListCopyKeychainAtIndex(UInt16 index
, SecKeychainRef
*keychainRef
);
52 OSStatus
SecKeychainListRemoveKeychain(SecKeychainRef
*keychainRef
);
53 OSStatus
SecKeychainRemoveFromSearchList(SecKeychainRef keychainRef
);
55 /* Login keychain support */
56 OSStatus
SecKeychainLogin(UInt32 nameLength
, const void* name
, UInt32 passwordLength
, const void* password
);
57 OSStatus
SecKeychainLogout();
58 OSStatus
SecKeychainCopyLogin(SecKeychainRef
*keychainRef
);
59 OSStatus
SecKeychainResetLogin(UInt32 passwordLength
, const void* password
, Boolean resetSearchList
);
61 /* Keychain synchronization */
63 kSecKeychainNotSynchronized
= 0,
64 kSecKeychainSynchronizedWithDotMac
= 1
66 typedef UInt32 SecKeychainSyncState
;
68 OSStatus
SecKeychainCopySignature(SecKeychainRef keychainRef
, CFDataRef
*keychainSignature
);
69 OSStatus
SecKeychainCopyBlob(SecKeychainRef keychainRef
, CFDataRef
*dbBlob
);
70 OSStatus
SecKeychainRecodeKeychain(SecKeychainRef keychainRef
, CFArrayRef dbBlobArray
, CFDataRef extraData
);
71 OSStatus
SecKeychainCreateWithBlob(const char* fullPathName
, CFDataRef dbBlob
, SecKeychainRef
*kcRef
);
73 /* Keychain list manipulation */
74 OSStatus
SecKeychainAddDBToKeychainList (SecPreferencesDomain domain
, const char* dbName
, const CSSM_GUID
*guid
, uint32 subServiceType
);
75 OSStatus
SecKeychainDBIsInKeychainList (SecPreferencesDomain domain
, const char* dbName
, const CSSM_GUID
*guid
, uint32 subServiceType
);
76 OSStatus
SecKeychainRemoveDBFromKeychainList (SecPreferencesDomain domain
, const char* dbName
, const CSSM_GUID
*guid
, uint32 subServiceType
);
78 /* server operation (keychain inhibit) */
79 void SecKeychainSetServerMode();
82 OSStatus
SecKeychainCleanupHandles();
83 OSStatus
SecKeychainSystemKeychainCheckWouldDeadlock();
85 #if defined(__cplusplus)
89 #endif /* !_SECURITY_SECKEYCHAINPRIV_H_ */