2 * Created by Michael Brouwer on 6/22/12.
3 * Copyright 2012 Apple Inc. All Rights Reserved.
8 The functions provided in SOSPeer provide an interface to a
9 secure object syncing peer in a circle
15 #include <SecureObjectSync/SOSEngine.h>
16 // #include <SecureObjectSync/SOSCoder.h>
17 #include <SecureObjectSync/SOSFullPeerInfo.h>
18 #include <SecureObjectSync/SOSPeerInfo.h>
23 kSOSPeerHasNoManifest
= 1,
24 kSOSPeerDigestFailure
= 2,
28 kSOSPeerCoderDataReturned
= 0,
29 kSOSPeerCoderNegotiating
= 1,
30 kSOSPeerCoderNegotiationCompleted
= 2,
31 kSOSPeerCoderFailure
= 3,
32 kSOSPeerCoderStaleEvent
= 4,
34 typedef uint32_t SOSPeerCoderStatus
;
36 typedef bool (^SOSPeerSendBlock
)(CFDataRef message
, CFErrorRef
*error
);
40 SOSPeerRef
SOSPeerCreate(SOSFullPeerInfoRef myPeerInfo
, SOSPeerInfoRef peerInfo
, CFErrorRef
*error
,
41 SOSPeerSendBlock sendBlock
);
43 // Permanently forgetting stored information (e.g. keys on keychain)
44 void SOSPeerPurge(SOSPeerRef
);
45 void SOSPeerPurgeAllFor(CFStringRef my_id
);
47 // Dispose of a peer when it's no longer needed.
48 void SOSPeerDispose(SOSPeerRef peer
);
50 SOSPeerCoderStatus
SOSPeerStartSync(SOSPeerRef peer
, SOSEngineRef engine
, CFErrorRef
*error
);
52 // Handle an incoming message and pass it to the engine.
53 SOSPeerCoderStatus
SOSPeerHandleMessage(SOSPeerRef peer
, SOSEngineRef engine
, CFDataRef message
, CFErrorRef
*error
);
55 // Called by engine to send message to our tranport.
56 bool SOSPeerSendMessage(SOSPeerRef peer
, CFDataRef message
, CFErrorRef
*error
);
58 // Return true if the peer is ready to transmit data.
59 bool SOSPeerCanSendMessage(SOSPeerRef peer
);
61 CFIndex
SOSPeerGetVersion(SOSPeerRef peer
);
63 CFStringRef
SOSPeerGetID(SOSPeerRef peer
);
64 bool SOSPeersEqual(SOSPeerRef peerA
, SOSPeerRef peerB
);
66 bool SOSPeerSetManifest(SOSPeerRef peer
, SOSManifestRef manifest
, CFErrorRef
*error
);
68 SOSManifestRef
SOSPeerCopyManifest(SOSPeerRef peer
, CFErrorRef
*error
);
69 CFDataRef
SOSPeerCopyManifestDigest(SOSPeerRef peer
, CFErrorRef
*error
);
71 /* For testing, doesn't OTR encode and uses static ID for self */
72 SOSPeerRef
SOSPeerCreateSimple(CFStringRef peer_id
, CFIndex version
, CFErrorRef
*error
,
73 SOSPeerSendBlock sendBlock
);
77 #endif /* !_SOSPEER_H_ */