@@ -15,18 +15,21 @@ const _resolve = require("@xmpp/resolve");
15
15
16
16
// Stream features - order matters and define priority
17
17
const _starttls = require ( "@xmpp/starttls/client" ) ;
18
+ const _sasl2 = require ( "@xmpp/sasl2" ) ;
18
19
const _sasl = require ( "@xmpp/sasl" ) ;
19
20
const _resourceBinding = require ( "@xmpp/resource-binding" ) ;
20
21
const _sessionEstablishment = require ( "@xmpp/session-establishment" ) ;
21
22
const _streamManagement = require ( "@xmpp/stream-management" ) ;
22
23
23
24
// SASL mechanisms - order matters and define priority
24
25
const scramsha1 = require ( "@xmpp/sasl-scram-sha-1" ) ;
26
+ const htsha256 = require ( "@xmpp/sasl-ht-sha-256-none" ) ;
25
27
const plain = require ( "@xmpp/sasl-plain" ) ;
26
28
const anonymous = require ( "@xmpp/sasl-anonymous" ) ;
27
29
28
30
function client ( options = { } ) {
29
31
const { resource, credentials, username, password, ...params } = options ;
32
+ const { clientId, software, device } = params ;
30
33
31
34
const { domain, service } = params ;
32
35
if ( ! domain && service ) {
@@ -47,6 +50,11 @@ function client(options = {}) {
47
50
const resolve = _resolve ( { entity } ) ;
48
51
// Stream features - order matters and define priority
49
52
const starttls = _starttls ( { streamFeatures } ) ;
53
+ const sasl2 = _sasl2 (
54
+ { streamFeatures } ,
55
+ credentials || { username, password } ,
56
+ { clientId, software, device } ,
57
+ ) ;
50
58
const sasl = _sasl ( { streamFeatures } , credentials || { username, password } ) ;
51
59
const streamManagement = _streamManagement ( {
52
60
streamFeatures,
@@ -64,9 +72,10 @@ function client(options = {}) {
64
72
// SASL mechanisms - order matters and define priority
65
73
const mechanisms = Object . entries ( {
66
74
scramsha1,
75
+ htsha256,
67
76
plain,
68
77
anonymous,
69
- } ) . map ( ( [ k , v ] ) => ( { [ k ] : v ( sasl ) } ) ) ;
78
+ } ) . map ( ( [ k , v ] ) => ( { [ k ] : [ v ( sasl2 ) , v ( sasl ) ] } ) ) ;
70
79
71
80
return Object . assign ( entity , {
72
81
entity,
@@ -80,6 +89,7 @@ function client(options = {}) {
80
89
iqCallee,
81
90
resolve,
82
91
starttls,
92
+ sasl2,
83
93
sasl,
84
94
resourceBinding,
85
95
sessionEstablishment,
0 commit comments