]> git.saurik.com Git - apple/security.git/blame - KeychainCircle/KCJoiningMessages.h
Security-57740.60.18.tar.gz
[apple/security.git] / KeychainCircle / KCJoiningMessages.h
CommitLineData
fa7225c8
A
1//
2// KCJoiningMessages.h
3// KeychainCircle
4//
5//
6
7#import <Foundation/Foundation.h>
8
9// Initial messages are versioned and not typed for negotiation.
10NS_ASSUME_NONNULL_BEGIN
11
12NSData* extractStartFromInitialMessage(NSData* initialMessage, NSError** error);
13
14size_t sizeof_initialmessage(NSData*data);
15uint8_t* _Nullable encode_initialmessage(NSData* data, NSError**error,
16 const uint8_t *der, uint8_t *der_end);
17const uint8_t* _Nullable decode_initialmessage(NSData* _Nonnull * _Nonnull data, NSError** error,
18 const uint8_t* der, const uint8_t *der_end);
19
20size_t sizeof_seq_data_data(NSData*data1, NSData*data2, NSError** error);
21uint8_t* _Nullable encode_seq_data_data(NSData* data, NSData*data2, NSError**error,
22 const uint8_t *der, uint8_t *der_end);
23const uint8_t* _Nullable decode_seq_data_data(NSData* _Nonnull * _Nonnull data1, NSData* _Nonnull * _Nonnull data2,
24 NSError** error,
25 const uint8_t* der, const uint8_t *der_end);
26
27size_t sizeof_seq_string_data(NSString*string, NSData*data, NSError** error);
28uint8_t* _Nullable encode_seq_string_data(NSString* string, NSData*data, NSError**error,
29 const uint8_t *der, uint8_t *der_end);
30const uint8_t* _Nullable decode_seq_string_data(NSString* _Nonnull * _Nonnull string, NSData* _Nonnull * _Nonnull data,
31 NSError** error,
32 const uint8_t* der, const uint8_t *der_end);
33
34@interface NSData(KCJoiningMessages)
35
36+ (nullable instancetype) dataWithEncodedString: (NSString*) string
37 error: (NSError**) error;
38
39+ (nullable instancetype) dataWithEncodedSequenceData: (NSData*) data1
40 data: (NSData*) data2
41 error: (NSError**) error;
42
43- (bool) decodeSequenceData: (NSData* _Nullable * _Nonnull) data1
44 data: (NSData* _Nullable * _Nonnull) data2
45 error: (NSError** _Nullable) error;
46
47
48+ (nullable instancetype) dataWithEncodedSequenceString: (NSString*) string
49 data: (NSData*) data
50 error: (NSError**) error;
51
52- (bool) decodeSequenceString: (NSString* _Nullable * _Nonnull) string
53 data: (NSData* _Nullable * _Nonnull) data
54 error: (NSError** _Nullable) error;
55@end
56
57@interface NSString(KCJoiningMessages)
58+ (nullable instancetype) decodeFromDER: (NSData*)der error: (NSError** _Nullable) error;
59@end
60
61// Subsequent messages have a message type
62typedef enum {
63 kChallenge = 1,
64 kResponse = 2,
65 kVerification = 3,
66 kPeerInfo = 4,
67 kCircleBlob = 5,
68
69 kError = 0,
70
71 kUnknown = 255,
72
73 kLargestMessageType = kUnknown,
74
75} KCJoiningMessageType;
76
77
78@interface KCJoiningMessage : NSObject
79
80@property (readonly) KCJoiningMessageType type;
81@property (readonly) NSData* firstData;
82@property (nullable, readonly) NSData* secondData;
83
84@property (readonly) NSData* der;
85
86+ (nullable instancetype) messageWithDER: (NSData*) message
87 error: (NSError**) error;
88
89+ (nullable instancetype) messageWithType: (KCJoiningMessageType) type
90 data: (NSData*) firstData
91 error: (NSError**) error;
92
93+ (nullable instancetype) messageWithType: (KCJoiningMessageType) type
94 data: (NSData*) firstData
95 payload: (NSData*) secondData
96 error: (NSError**) error;
97
98
99- (nullable instancetype) initWithDER: (NSData*) message
100 error: (NSError**) error NS_DESIGNATED_INITIALIZER;
101
102- (nullable instancetype) initWithType: (KCJoiningMessageType) type
103 data: (NSData*) firstData
104 payload: (nullable NSData*) secondData
105 error: (NSError**) error NS_DESIGNATED_INITIALIZER;
106
107
108- (instancetype) init NS_UNAVAILABLE;
109
110@end
111
112NS_ASSUME_NONNULL_END
113