20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
+
+
|
* POSSIBILITY OF SUCH DAMAGE.
*/
#import <ObjFW/ObjFW.h>
#import "XMPPAuthenticator.h"
#import "XMPPConnection.h"
OF_ASSUME_NONNULL_BEGIN
/**
* \brief A class to authenticate using SCRAM
*/
@interface XMPPSCRAMAuth: XMPPAuthenticator
{
Class _hashType;
OFString *_cNonce;
|
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
-
-
-
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
+
+
-
-
+
-
-
-
-
-
-
-
-
-
|
* \param authcid The authcid to authenticate with
* \param password The password to authenticate with
* \param connection The connection over which authentication is done
* \param hash The class to use for calulating hashes
* \param plusAvailable Whether the PLUS variant was offered
* \return A new autoreleased XMPPSCRAMAuth
*/
+ (instancetype)SCRAMAuthWithAuthcid: (OFString*)authcid
password: (OFString*)password
connection: (XMPPConnection*)connection
+ (instancetype)SCRAMAuthWithAuthcid: (nullable OFString *)authcid
password: (nullable OFString *)password
connection: (XMPPConnection *)connection
hash: (Class)hash
plusAvailable: (bool)plusAvailable;
/**
* \brief Creates a new autoreleased XMPPSCRAMAuth with an authzid, authcid and
* password.
*
* \param authzid The authzid to get authorization for
* \param authcid The authcid to authenticate with
* \param password The password to authenticate with
* \param connection The connection over which authentication is done
* \param hash The class to use for calulating hashes
* \param plusAvailable Whether the PLUS variant was offered
* \return A new autoreleased XMPPSCRAMAuth
*/
+ (instancetype)SCRAMAuthWithAuthzid: (OFString*)authzid
authcid: (OFString*)authcid
password: (OFString*)password
connection: (XMPPConnection*)connection
+ (instancetype)SCRAMAuthWithAuthzid: (nullable OFString *)authzid
authcid: (nullable OFString *)authcid
password: (nullable OFString *)password
connection: (XMPPConnection *)connection
hash: (Class)hash
plusAvailable: (bool)plusAvailable;
- initWithAuthcid: (nullable OFString *)authcid
password: (nullable OFString *)password OF_UNAVAILABLE;
- initWithAuthzid: (nullable OFString *)authzid
authcid: (nullable OFString *)authcid
password: (nullable OFString *)password OF_UNAVAILABLE;
/**
* \brief Initializes an already allocated XMPPSCRAMAuth with an authcid and
* password.
*
* \param authcid The authcid to authenticate with
* \param password The password to authenticate with
* \param connection The connection over which authentication is done
* \param hash The class to use for calulating hashes
* \param plusAvailable Whether the PLUS variant was offered
* \return A initialized XMPPSCRAMAuth
*/
- initWithAuthcid: (OFString*)authcid
password: (OFString*)password
connection: (XMPPConnection*)connection
- initWithAuthcid: (nullable OFString *)authcid
password: (nullable OFString *)password
connection: (XMPPConnection *)connection
hash: (Class)hash
plusAvailable: (bool)plusAvailable;
/**
* \brief Initializes an already allocated XMPPSCRAMAuth with a authzid,
* authcid and password.
*
* \param authzid The authzid to get authorization for
* \param authcid The authcid to authenticate with
* \param password The password to authenticate with
* \param connection The connection over which authentication is done
* \param hash The class to use for calulating hashes
* \param plusAvailable Whether the PLUS variant was offered
* \return A initialized XMPPSCRAMAuth
*/
- initWithAuthzid: (OFString*)authzid
authcid: (OFString*)authcid
password: (OFString*)password
connection: (XMPPConnection*)connection
- initWithAuthzid: (nullable OFString *)authzid
authcid: (nullable OFString *)authcid
password: (nullable OFString *)password
connection: (XMPPConnection *)connection
hash: (Class)hash
plusAvailable: (bool)plusAvailable;
plusAvailable: (bool)plusAvailable OF_DESIGNATED_INITIALIZER;
@end
/// \cond internal
- (OFString*)XMPP_genNonce;
OF_ASSUME_NONNULL_END
- (const uint8_t*)XMPP_HMACWithKey: (OFDataArray*)key
data: (OFDataArray*)data;
- (OFDataArray*)XMPP_hiWithData: (OFDataArray*)str
salt: (OFDataArray*)salt
iterationCount: (intmax_t)i;
- (OFDataArray*)XMPP_parseServerFirstMessage: (OFDataArray*)data;
- (OFDataArray*)XMPP_parseServerFinalMessage: (OFDataArray*)data;
/// \endcond
@end
|