]> git.saurik.com Git - apple/security.git/blobdiff - OSX/sec/securityd/spi.c
Security-59306.41.2.tar.gz
[apple/security.git] / OSX / sec / securityd / spi.c
diff --git a/OSX/sec/securityd/spi.c b/OSX/sec/securityd/spi.c
deleted file mode 100644 (file)
index 04fbc37..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (c) 2009-2010,2012-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@
- */
-
-#if TARGET_DARWINOS
-#undef OCTAGON
-#undef SECUREOBJECTSYNC
-#undef SHAREDWEBCREDENTIALS
-#endif
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wfour-char-constants"
-
-#include "securityd/spi.h"
-#include "ipc/SecdWatchdog.h"
-#include "ipc/server_security_helpers.h"
-#include "ipc/securityd_client.h"
-#include "securityd/SecItemBackupServer.h"
-#include "securityd/SecItemServer.h"
-#include <Security/SecureObjectSync/SOSPeerInfo.h>
-#include <CoreFoundation/CFString.h>
-#include <CoreFoundation/CFError.h>
-#include "securityd/SOSCloudCircleServer.h"
-#include "securityd/SecOTRRemote.h"
-#include "securityd/SecLogSettingsServer.h"
-
-#include <CoreFoundation/CFXPCBridge.h>
-#include "utilities/iOSforOSX.h"
-#include "utilities/SecFileLocations.h"
-#include "OTATrustUtilities.h"
-#include "../../trustd/trustd_spi.h"
-
-#pragma clang diagnostic pop
-
-static struct securityd securityd_spi = {
-    .sec_item_add                           = _SecItemAdd,
-    .sec_item_copy_matching                 = _SecItemCopyMatching,
-    .sec_item_update                        = _SecItemUpdate,
-    .sec_item_delete                        = _SecItemDelete,
-    .sec_item_delete_all                    = _SecItemDeleteAll,
-    .sec_keychain_backup                    = _SecServerKeychainCreateBackup,
-    .sec_keychain_restore                   = _SecServerKeychainRestore,
-    .sec_item_copy_parent_certificates      = _SecItemCopyParentCertificates,
-    .sec_item_certificate_exists            = _SecItemCertificateExists,
-    .sec_roll_keys                          = _SecServerRollKeysGlue,
-    .sec_item_update_token_items            = _SecItemUpdateTokenItems,
-    .sec_delete_items_with_access_groups    = _SecItemServerDeleteAllWithAccessGroups,
-#if SHAREDWEBCREDENTIALS
-    .sec_add_shared_web_credential          = _SecAddSharedWebCredential,
-    .sec_copy_shared_web_credential         = _SecCopySharedWebCredential,
-#endif
-#if SECUREOBJECTSYNC
-    .sec_keychain_backup_syncable           = _SecServerBackupSyncable,
-    .sec_keychain_restore_syncable          = _SecServerRestoreSyncable,
-    .sec_item_backup_copy_names             = SecServerItemBackupCopyNames,
-    .sec_item_backup_handoff_fd             = SecServerItemBackupHandoffFD,
-    .sec_item_backup_set_confirmed_manifest = SecServerItemBackupSetConfirmedManifest,
-    .sec_item_backup_restore                = SecServerItemBackupRestore,
-    .sec_otr_session_create_remote          = _SecOTRSessionCreateRemote,
-    .sec_otr_session_process_packet_remote  = _SecOTRSessionProcessPacketRemote,
-    .soscc_TryUserCredentials               = SOSCCTryUserCredentials_Server,
-    .soscc_SetUserCredentials               = SOSCCSetUserCredentials_Server,
-    .soscc_SetUserCredentialsAndDSID        = SOSCCSetUserCredentialsAndDSID_Server,
-    .soscc_SetUserCredentialsAndDSIDWithAnalytics  = SOSCCSetUserCredentialsAndDSIDWithAnalytics_Server,
-    .soscc_CanAuthenticate                  = SOSCCCanAuthenticate_Server,
-    .soscc_PurgeUserCredentials             = SOSCCPurgeUserCredentials_Server,
-    .soscc_ThisDeviceIsInCircle             = SOSCCThisDeviceIsInCircle_Server,
-    .soscc_RequestToJoinCircle              = SOSCCRequestToJoinCircle_Server,
-    .soscc_RequestToJoinCircleAfterRestore  = SOSCCRequestToJoinCircleAfterRestore_Server,
-    .soscc_RequestToJoinCircleAfterRestoreWithAnalytics  = SOSCCRequestToJoinCircleAfterRestoreWithAnalytics_Server,
-    .soscc_RequestEnsureFreshParameters     = SOSCCRequestEnsureFreshParameters_Server,
-    .soscc_GetAllTheRings                   = SOSCCGetAllTheRings_Server,
-    .soscc_ApplyToARing                     = SOSCCApplyToARing_Server,
-    .soscc_WithdrawlFromARing               = SOSCCWithdrawlFromARing_Server,
-    .soscc_EnableRing                       = SOSCCEnableRing_Server,
-    .soscc_RingStatus                       = SOSCCRingStatus_Server,
-    .soscc_SetToNew                         = SOSCCAccountSetToNew_Server,
-    .soscc_ResetToOffering                  = SOSCCResetToOffering_Server,
-    .soscc_ResetToEmpty                     = SOSCCResetToEmpty_Server,
-    .soscc_ResetToEmptyWithAnalytics        = SOSCCResetToEmptyWithAnalytics_Server,
-    .soscc_View                             = SOSCCView_Server,
-    .soscc_ViewSet                          = SOSCCViewSet_Server,
-    .soscc_ViewSetWithAnalytics             = SOSCCViewSetWithAnalytics_Server,
-    .soscc_RemoveThisDeviceFromCircle       = SOSCCRemoveThisDeviceFromCircle_Server,
-    .soscc_RemoveThisDeviceFromCircleWithAnalytics = SOSCCRemoveThisDeviceFromCircleWithAnalytics_Server,
-    .soscc_RemovePeersFromCircle            = SOSCCRemovePeersFromCircle_Server,
-    .soscc_RemovePeersFromCircleWithAnalytics = SOSCCRemovePeersFromCircleWithAnalytics_Server,
-    .soscc_LoggedOutOfAccount               = SOSCCLoggedOutOfAccount_Server,
-    .soscc_BailFromCircle                   = SOSCCBailFromCircle_Server,
-    .soscc_AcceptApplicants                 = SOSCCAcceptApplicants_Server,
-    .soscc_RejectApplicants                 = SOSCCRejectApplicants_Server,
-    .soscc_CopyApplicantPeerInfo            = SOSCCCopyApplicantPeerInfo_Server,
-    .soscc_CopyGenerationPeerInfo           = SOSCCCopyGenerationPeerInfo_Server,
-    .soscc_CopyValidPeerPeerInfo            = SOSCCCopyValidPeerPeerInfo_Server,
-    .soscc_ValidateUserPublic               = SOSCCValidateUserPublic_Server,
-    .soscc_CopyNotValidPeerPeerInfo         = SOSCCCopyNotValidPeerPeerInfo_Server,
-    .soscc_CopyRetirementPeerInfo           = SOSCCCopyRetirementPeerInfo_Server,
-    .soscc_CopyViewUnawarePeerInfo          = SOSCCCopyViewUnawarePeerInfo_Server,
-    .soscc_CopyEngineState                  = SOSCCCopyEngineState_Server,
-    .soscc_CopyPeerInfo                     = SOSCCCopyPeerPeerInfo_Server,
-    .soscc_CopyConcurringPeerInfo           = SOSCCCopyConcurringPeerPeerInfo_Server,
-    .soscc_ProcessSyncWithPeers             = SOSCCProcessSyncWithPeers_Server,
-    .soscc_ProcessSyncWithAllPeers          = SOSCCProcessSyncWithAllPeers_Server,
-    .soscc_EnsurePeerRegistration           = SOSCCProcessEnsurePeerRegistration_Server,
-    .sec_keychain_sync_update_message       = _SecServerKeychainSyncUpdateMessage,
-    .sec_get_log_settings                   = SecCopyLogSettings_Server,
-    .sec_set_xpc_log_settings               = SecSetXPCLogSettings_Server,
-    .sec_set_circle_log_settings            = SecSetCircleLogSettings_Server,
-    .soscc_CopyMyPeerInfo                   = SOSCCCopyMyPeerInfo_Server,
-       .soscc_SetLastDepartureReason           = SOSCCSetLastDepartureReason_Server,
-    .soscc_SetNewPublicBackupKey            = SOSCCSetNewPublicBackupKey_Server,
-    .soscc_RegisterSingleRecoverySecret     = SOSCCRegisterSingleRecoverySecret_Server,
-    .soscc_WaitForInitialSync               = SOSCCWaitForInitialSync_Server,
-    .soscc_WaitForInitialSyncWithAnalytics  = SOSCCWaitForInitialSyncWithAnalytics_Server,
-    .soscc_CopyYetToSyncViewsList           = SOSCCCopyYetToSyncViewsList_Server,
-    .soscc_SetEscrowRecords                 = SOSCCSetEscrowRecord_Server,
-    .soscc_CopyEscrowRecords                = SOSCCCopyEscrowRecord_Server,
-    .sosbskb_WrapToBackupSliceKeyBagForView = SOSWrapToBackupSliceKeyBagForView_Server,
-    .soscc_CopyAccountState                 = SOSCCCopyAccountState_Server,
-    .soscc_DeleteAccountState               = SOSCCDeleteAccountState_Server,
-    .soscc_CopyEngineData                   = SOSCCCopyEngineData_Server,
-    .soscc_DeleteEngineState                = SOSCCDeleteEngineState_Server,
-    .soscc_AccountHasPublicKey              = SOSCCAccountHasPublicKey_Server,
-    .soscc_AccountIsNew                     = SOSCCAccountIsNew_Server,
-    .soscc_IsThisDeviceLastBackup           = SOSCCkSecXPCOpIsThisDeviceLastBackup_Server,
-    .soscc_SOSCCPeersHaveViewsEnabled       = SOSCCPeersHaveViewsEnabled_Server,
-    .soscc_RegisterRecoveryPublicKey        = SOSCCRegisterRecoveryPublicKey_Server,
-    .soscc_CopyRecoveryPublicKey            = SOSCCCopyRecoveryPublicKey_Server,
-    .soscc_CopyBackupInformation            = SOSCCCopyBackupInformation_Server,
-    .soscc_SOSCCMessageFromPeerIsPending    = SOSCCMessageFromPeerIsPending_Server,
-    .soscc_SOSCCSendToPeerIsPending         = SOSCCSendToPeerIsPending_Server,
-#endif /* SECUREOBJECTSYNC */
-};
-
-#if SECD_SERVER && SECUREOBJECTSYNC
-static CFTypeRef
-delayedSOSSharedObject(void)
-{
-    return SOSKeychainAccountGetSharedAccount();
-}
-#endif
-
-void securityd_init_local_spi(void) {
-    gSecurityd = &securityd_spi;
-#if SECD_SERVER && SECUREOBJECTSYNC
-    // We're the server: we need to handle this locally. Bring them up and set them in the global object.
-    securityd_spi.soscc_status = delayedSOSSharedObject;
-#endif
-    // You're trying to bring up a (non-trustd) 'securityd'. Create the local handler for securityd XPCs.
-    securityd_spi.secd_xpc_server = SecCreateLocalCFSecuritydXPCServer();
-}
-
-void securityd_init_server(void) {
-    securityd_init_local_spi();
-
-    // Lazy initialization is no good; bring up the keychain on start
-    // If you want to not do this, you'll need to check the APSConnection Mach mailbox for messages here instead (good luck)
-    CFErrorRef cferror = nil;
-    bool keychainAlive = kc_with_dbt(false, &cferror, ^bool(SecDbConnectionRef dbt) {
-        secnotice("keychain", "Keychain initialized!");
-        return true;
-    });
-    if(!keychainAlive || cferror) {
-        secerror("Couldn't bring up keychain: %@", cferror);
-    }
-    CFReleaseNull(cferror);
-
-    SecdLoadWatchDog();
-}
-
-void securityd_init(CFURLRef home_path) {
-    if (home_path) {
-        SetCustomHomeURL(home_path);
-    }
-
-    securityd_init_server();
-#ifdef LIBTRUSTD
-    trustd_init_server();
-#endif
-}