]> git.saurik.com Git - apple/security.git/blob - KeychainCircle/KCJoiningMessages.h
Security-57740.60.18.tar.gz
[apple/security.git] / KeychainCircle / KCJoiningMessages.h
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