5 // Created by Mitch Adler on 10/26/12.
9 #ifndef _SOSFULLPEERINFO_H_
10 #define _SOSFULLPEERINFO_H_
12 #include <CoreFoundation/CoreFoundation.h>
13 #include <Security/SecKey.h>
14 #include <CommonCrypto/CommonDigestSPI.h>
15 #include <SecureObjectSync/SOSPeerInfo.h>
19 typedef struct __OpaqueSOSFullPeerInfo
*SOSFullPeerInfoRef
;
22 kSOSFullPeerVersion
= 1,
25 SOSFullPeerInfoRef
SOSFullPeerInfoCreate(CFAllocatorRef allocator
, CFDictionaryRef gestalt
, SecKeyRef signingKey
, CFErrorRef
*error
);
27 SOSFullPeerInfoRef
SOSFullPeerInfoCreateCloudIdentity(CFAllocatorRef allocator
, SOSPeerInfoRef peer
, CFErrorRef
* error
);
29 SOSPeerInfoRef
SOSFullPeerInfoGetPeerInfo(SOSFullPeerInfoRef fullPeer
);
30 SecKeyRef
SOSFullPeerInfoCopyDeviceKey(SOSFullPeerInfoRef fullPeer
, CFErrorRef
* error
);
32 bool SOSFullPeerInfoPurgePersistentKey(SOSFullPeerInfoRef peer
, CFErrorRef
* error
);
34 SOSPeerInfoRef
SOSFullPeerInfoPromoteToRetiredAndCopy(SOSFullPeerInfoRef peer
, CFErrorRef
*error
);
36 bool SOSFullPeerInfoValidate(SOSFullPeerInfoRef peer
, CFErrorRef
* error
);
38 bool SOSFullPeerInfoUpdateGestalt(SOSFullPeerInfoRef peer
, CFDictionaryRef gestalt
, CFErrorRef
* error
);
40 bool SOSFullPeerInfoPromoteToApplication(SOSFullPeerInfoRef fpi
, SecKeyRef user_key
, CFErrorRef
*error
);
42 bool SOSFullPeerInfoUpgradeSignatures(SOSFullPeerInfoRef fpi
, SecKeyRef user_key
, CFErrorRef
*error
);
47 SOSFullPeerInfoRef
SOSFullPeerInfoCreateFromDER(CFAllocatorRef allocator
, CFErrorRef
* error
,
48 const uint8_t** der_p
, const uint8_t *der_end
);
50 SOSFullPeerInfoRef
SOSFullPeerInfoCreateFromData(CFAllocatorRef allocator
, CFDataRef fullPeerData
, CFErrorRef
*error
);
52 size_t SOSFullPeerInfoGetDEREncodedSize(SOSFullPeerInfoRef peer
, CFErrorRef
*error
);
53 uint8_t* SOSFullPeerInfoEncodeToDER(SOSFullPeerInfoRef peer
, CFErrorRef
* error
,
54 const uint8_t* der
, uint8_t* der_end
);
56 CFDataRef
SOSFullPeerInfoCopyEncodedData(SOSFullPeerInfoRef peer
, CFAllocatorRef allocator
, CFErrorRef
*error
);