1
2#ifndef SOSTransportKeyParameter_h
3#define SOSTransportKeyParameter_h
4
5#include <CoreFoundation/CoreFoundation.h>
6#include <CoreFoundation/CFRuntime.h>
7#include <SecureObjectSync/SOSAccount.h>
8
9typedef struct __OpaqueSOSTransportKeyParameter * SOSTransportKeyParameterRef;
10
11struct __OpaqueSOSTransportKeyParameter {
12    CFRuntimeBase   _base;
13    SOSAccountRef   account;
14    /* Connections from CF land to vtable land */
15    CFStringRef             (*copyDescription)(SOSTransportKeyParameterRef object);
16    void                    (*destroy)(SOSTransportKeyParameterRef object);
17
18
19    // TODO: Make this take broader parameters and assemble the key parameters blob?
20    bool                    (*publishCloudParameters)(SOSTransportKeyParameterRef transport, CFDataRef data, CFErrorRef* error);
21    bool                    (*handleKeyParameterChanges)(SOSTransportKeyParameterRef transport, CFDataRef data, CFErrorRef error);
22    bool                    (*setToNewAccount)(SOSTransportKeyParameterRef transport);
23};
24
25bool SOSTrasnportKeyParameterPublishCloudParameters(SOSTransportKeyParameterRef transport, CFDataRef data, CFErrorRef* error);
26
27bool SOSTrasnportKeyParameterPublishCloudParameters(SOSTransportKeyParameterRef transport, CFDataRef data, CFErrorRef* error);
28SOSTransportKeyParameterRef SOSTransportKeyParameterCreateForSubclass(size_t size, SOSAccountRef account, CFErrorRef *error);
29bool SOSTransportKeyParameterHandleKeyParameterChanges(SOSTransportKeyParameterRef transport, CFDataRef data, CFErrorRef error);
30bool SOSTransportKeyParameterHandleNewAccount(SOSTransportKeyParameterRef transport);
31
32SOSAccountRef SOSTransportKeyParameterGetAccount(SOSTransportKeyParameterRef transport);
33
34#endif
35