7 #import <Foundation/Foundation.h>
9 // Initial messages are versioned and not typed for negotiation.
10 NS_ASSUME_NONNULL_BEGIN
12 NSData
* extractStartFromInitialMessage(NSData
* initialMessage
, NSError
** error
);
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
);
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
,
25 const uint8_t* der
, const uint8_t *der_end
);
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
,
32 const uint8_t* der
, const uint8_t *der_end
);
34 @interface
NSData(KCJoiningMessages
)
36 + (nullable instancetype
) dataWithEncodedString
: (NSString
*) string
37 error
: (NSError
**) error
;
39 + (nullable instancetype
) dataWithEncodedSequenceData
: (NSData
*) data1
41 error
: (NSError
**) error
;
43 - (bool) decodeSequenceData
: (NSData
* _Nullable
* _Nonnull
) data1
44 data
: (NSData
* _Nullable
* _Nonnull
) data2
45 error
: (NSError
** _Nullable
) error
;
48 + (nullable instancetype
) dataWithEncodedSequenceString
: (NSString
*) string
50 error
: (NSError
**) error
;
52 - (bool) decodeSequenceString
: (NSString
* _Nullable
* _Nonnull
) string
53 data
: (NSData
* _Nullable
* _Nonnull
) data
54 error
: (NSError
** _Nullable
) error
;
57 @interface
NSString(KCJoiningMessages
)
58 + (nullable instancetype
) decodeFromDER
: (NSData
*)der error
: (NSError
** _Nullable
) error
;
61 // Subsequent messages have a message type
73 kLargestMessageType
= kUnknown
,
75 } KCJoiningMessageType
;
78 @interface KCJoiningMessage
: NSObject
80 @
property (readonly
) KCJoiningMessageType type
;
81 @
property (readonly
) NSData
* firstData
;
82 @
property (nullable
, readonly
) NSData
* secondData
;
84 @
property (readonly
) NSData
* der
;
86 + (nullable instancetype
) messageWithDER
: (NSData
*) message
87 error
: (NSError
**) error
;
89 + (nullable instancetype
) messageWithType
: (KCJoiningMessageType
) type
90 data
: (NSData
*) firstData
91 error
: (NSError
**) error
;
93 + (nullable instancetype
) messageWithType
: (KCJoiningMessageType
) type
94 data
: (NSData
*) firstData
95 payload
: (NSData
*) secondData
96 error
: (NSError
**) error
;
99 - (nullable instancetype
) initWithDER
: (NSData
*) message
100 error
: (NSError
**) error NS_DESIGNATED_INITIALIZER
;
102 - (nullable instancetype
) initWithType
: (KCJoiningMessageType
) type
103 data
: (NSData
*) firstData
104 payload
: (nullable NSData
*) secondData
105 error
: (NSError
**) error NS_DESIGNATED_INITIALIZER
;
108 - (instancetype
) init NS_UNAVAILABLE
;
112 NS_ASSUME_NONNULL_END