]>
Commit | Line | Data |
---|---|---|
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. | |
10 | NS_ASSUME_NONNULL_BEGIN | |
11 | ||
12 | NSData* extractStartFromInitialMessage(NSData* initialMessage, NSError** error); | |
13 | ||
14 | size_t sizeof_initialmessage(NSData*data); | |
15 | uint8_t* _Nullable encode_initialmessage(NSData* data, NSError**error, | |
16 | const uint8_t *der, uint8_t *der_end); | |
17 | const uint8_t* _Nullable decode_initialmessage(NSData* _Nonnull * _Nonnull data, NSError** error, | |
18 | const uint8_t* der, const uint8_t *der_end); | |
19 | ||
20 | size_t sizeof_seq_data_data(NSData*data1, NSData*data2, NSError** error); | |
21 | uint8_t* _Nullable encode_seq_data_data(NSData* data, NSData*data2, NSError**error, | |
22 | const uint8_t *der, uint8_t *der_end); | |
23 | const 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 | ||
27 | size_t sizeof_seq_string_data(NSString*string, NSData*data, NSError** error); | |
28 | uint8_t* _Nullable encode_seq_string_data(NSString* string, NSData*data, NSError**error, | |
29 | const uint8_t *der, uint8_t *der_end); | |
30 | const 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 | |
62 | typedef 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 | ||
112 | NS_ASSUME_NONNULL_END | |
113 |