X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/80e2389990082500d76eb566d4946be3e786c3ef..d8f41ccd20de16f8ebe2ccc84d47bf1cb2b26bbb:/sec/SOSCircle/SecureObjectSync/SOSEngine.h?ds=sidebyside diff --git a/sec/SOSCircle/SecureObjectSync/SOSEngine.h b/sec/SOSCircle/SecureObjectSync/SOSEngine.h deleted file mode 100644 index cc63bbf7..00000000 --- a/sec/SOSCircle/SecureObjectSync/SOSEngine.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Created by Michael Brouwer on 7/17/12. - * Copyright 2012 Apple Inc. All Rights Reserved. - */ - -/*! - @header SOSEngine.h - The functions provided in SOSEngine.h provide an interface to a - secure object syncing engine - */ - -#ifndef _SEC_SOSENGINE_H_ -#define _SEC_SOSENGINE_H_ - -#include -#include - -__BEGIN_DECLS - -enum { - kSOSEngineInvalidMessageError = 1, - kSOSEngineInternalError = 2, -}; - -typedef struct __OpaqueSOSEngine *SOSEngineRef; -typedef struct __OpaqueSOSPeer *SOSPeerRef; - -/* SOSDataSource protocol (non opaque). */ -typedef struct SOSDataSource *SOSDataSourceRef; - -typedef struct __OpaqueSOSObject *SOSObjectRef; - -/* Implement this if you want to create a new type of sync client. - Currently we support keychains, but the engine should scale to - entire filesystems. */ -enum SOSMergeResult { - kSOSMergeFailure = 0, // CFErrorRef returned, no error returned in any other case - kSOSMergeLocalObject, // We choose the current object in the dataSource the manifest is still valid. - kSOSMergePeersObject, // We chose the peers object over our own, manifest is now dirty. - kSOSMergeCreatedObject, // *createdObject is returned and should be released -}; -typedef CFIndex SOSMergeResult; - -struct SOSDataSource { - bool (*get_manifest_digest)(SOSDataSourceRef ds, uint8_t *out_digest, CFErrorRef *error); - SOSManifestRef (*copy_manifest)(SOSDataSourceRef ds, CFErrorRef *error); - bool (*foreach_object)(SOSDataSourceRef ds, SOSManifestRef manifest, CFErrorRef *error, bool (^handle_object)(SOSObjectRef object, CFErrorRef *error)); - SOSMergeResult (*add)(SOSDataSourceRef ds, SOSObjectRef object, CFErrorRef *error); - void (*release)(SOSDataSourceRef ds); - - SOSObjectRef (*createWithPropertyList)(SOSDataSourceRef ds, CFDictionaryRef plist, CFErrorRef *error); - CFDataRef (*copyDigest)(SOSObjectRef object, CFErrorRef *error); - CFDataRef (*copyPrimaryKey)(SOSObjectRef object, CFErrorRef *error); - CFDictionaryRef (*copyPropertyList)(SOSObjectRef object, CFErrorRef *error); - SOSObjectRef (*copyMergedObject)(SOSObjectRef object1, SOSObjectRef object2, CFErrorRef *error); - CFDictionaryRef (*backupObject)(SOSObjectRef object, uint64_t handle, CFErrorRef *error); - bool (*restoreObject)(SOSDataSourceRef ds, uint64_t handle, CFDictionaryRef item, CFErrorRef *error); -}; - -// Create a new engine instance for a given datasource. -SOSEngineRef SOSEngineCreate(SOSDataSourceRef dataSource, CFErrorRef *error); - -// Dispose of an engine when it's no longer needed. -void SOSEngineDispose(SOSEngineRef engine); - -// Handle incoming message from a remote peer. -bool SOSEngineHandleMessage(SOSEngineRef engine, SOSPeerRef peer, - CFDataRef message, CFErrorRef *error); - -// Initiate a sync with the providied peer by sending it a message. -bool SOSEngineSyncWithPeer(SOSEngineRef engine, SOSPeerRef peer, bool force, - CFErrorRef *error); - -/* Internal functions exposed for testability. */ -CFDataRef SOSEngineCreateManifestDigestMessage(SOSEngineRef engine, SOSPeerRef peer, CFErrorRef *error); -CFDataRef SOSEngineCreateManifestMessage(SOSEngineRef engine, SOSPeerRef peer, CFErrorRef *error); -CFDataRef SOSEngineCreateManifestAndObjectsMessage(SOSEngineRef engine, SOSPeerRef peer, CFErrorRef *error); - -CFStringRef SOSMessageCopyDescription(CFDataRef message); - -__END_DECLS - -#endif /* !_SEC_SOSENGINE_H_ */