#include <Security/Security.h>
#include <Security/SecBasePriv.h>
+#include <Security/SecKeychain.h>
#include <CoreFoundation/CoreFoundation.h>
#if defined(__cplusplus)
OSStatus SecKeychainChangePassword(SecKeychainRef keychainRef, UInt32 oldPasswordLength, const void *oldPassword, UInt32 newPasswordLength, const void *newPassword)
__OSX_AVAILABLE_STARTING(__MAC_10_2, __IPHONE_NA);
OSStatus SecKeychainOpenWithGuid(const CSSM_GUID *guid, uint32 subserviceId, uint32 subserviceType, const char* dbName, const CSSM_NET_ADDRESS *dbLocation, SecKeychainRef *keychain)
- __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_NA);
+ API_DEPRECATED("CSSM_GUID/CSSM_NET_ADDRESS is deprecated", macos(10.4,10.14)) API_UNAVAILABLE(ios);
OSStatus SecKeychainSetBatchMode (SecKeychainRef kcRef, Boolean mode, Boolean rollback)
__OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_NA);
/* Login keychain support */
OSStatus SecKeychainLogin(UInt32 nameLength, const void* name, UInt32 passwordLength, const void* password)
__OSX_AVAILABLE_STARTING(__MAC_10_2, __IPHONE_NA);
-OSStatus SecKeychainStash()
+OSStatus SecKeychainStash(void)
__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_NA);
-OSStatus SecKeychainLogout()
+OSStatus SecKeychainLogout(void)
__OSX_AVAILABLE_STARTING(__MAC_10_2, __IPHONE_NA);
OSStatus SecKeychainCopyLogin(SecKeychainRef *keychainRef)
__OSX_AVAILABLE_STARTING(__MAC_10_2, __IPHONE_NA);
OSStatus SecKeychainVerifyKeyStorePassphrase(uint32_t retries)
__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_NA);
-OSStatus SecKeychainChangeKeyStorePassphrase()
+OSStatus SecKeychainChangeKeyStorePassphrase(void)
__OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_NA);
/* Keychain synchronization */
/* Keychain list manipulation */
OSStatus SecKeychainAddDBToKeychainList (SecPreferencesDomain domain, const char* dbName, const CSSM_GUID *guid, uint32 subServiceType)
- __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_NA);
+ API_DEPRECATED("CSSM_GUID is deprecated", macos(10.4,10.14)) API_UNAVAILABLE(ios);
OSStatus SecKeychainDBIsInKeychainList (SecPreferencesDomain domain, const char* dbName, const CSSM_GUID *guid, uint32 subServiceType)
- __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_NA);
+ API_DEPRECATED("CSSM_GUID is deprecated", macos(10.4,10.14)) API_UNAVAILABLE(ios);
OSStatus SecKeychainRemoveDBFromKeychainList (SecPreferencesDomain domain, const char* dbName, const CSSM_GUID *guid, uint32 subServiceType)
- __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_NA);
+ API_DEPRECATED("CSSM_GUID is deprecated", macos(10.4,10.14)) API_UNAVAILABLE(ios);
/* server operation (keychain inhibit) */
-void SecKeychainSetServerMode()
+void SecKeychainSetServerMode(void)
__OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_NA);
/* special calls */
-OSStatus SecKeychainCleanupHandles()
+OSStatus SecKeychainCleanupHandles(void)
__OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_NA);
-OSStatus SecKeychainSystemKeychainCheckWouldDeadlock()
+OSStatus SecKeychainSystemKeychainCheckWouldDeadlock(void)
__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
OSStatus SecKeychainStoreUnlockKey(SecKeychainRef userKeychainRef, SecKeychainRef systemKeychainRef, CFStringRef username, CFStringRef password)
__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_NA);
+/* Token login support */
+OSStatus SecKeychainStoreUnlockKeyWithPubKeyHash(CFDataRef pubKeyHash, CFStringRef tokenID, CFDataRef wrapPubKeyHash, SecKeychainRef userKeychain, CFStringRef password)
+ __OSX_AVAILABLE_STARTING(__MAC_10_12, __IPHONE_NA);
+OSStatus SecKeychainEraseUnlockKeyWithPubKeyHash(CFDataRef pubKeyHash)
+ __OSX_AVAILABLE_STARTING(__MAC_10_12, __IPHONE_NA);
+
+/* calls to interact with keychain versions */
OSStatus SecKeychainGetKeychainVersion(SecKeychainRef keychain, UInt32* version)
__OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_NA);
+OSStatus SecKeychainAttemptMigrationWithMasterKey(SecKeychainRef keychain, UInt32 version, const char* masterKeyFilename)
+ __OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_NA);
+
+/* calls for testing only */
+OSStatus SecKeychainGetUserPromptAttempts(uint32_t* attempts)
+ __OSX_AVAILABLE_STARTING(__MAC_10_12, __IPHONE_NA);
+
/*!
@function SecKeychainMDSInstall
Set up MDS.
*/
-OSStatus SecKeychainMDSInstall();
+OSStatus SecKeychainMDSInstall(void);
#if defined(__cplusplus)
}