Mercurial > prosody-modules
comparison mod_sasl2_fast/mod_sasl2_fast.lua @ 5083:4837232474ca
mod_sasl2_fast: Fixes to make channel binding work again
tls-endpoint isn't a thing that exists.
Also, we needed to copy more channel binding state from the primary
sasl_handler. Ideally we'd have a cleaner way to do this, but I think that's
part of more substantial changes that the SASL API deserves.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Mon, 07 Nov 2022 10:21:18 +0000 |
parents | ddb1940b08e0 |
children | dda2af7ed02f |
comparison
equal
deleted
inserted
replaced
5082:ddb1940b08e0 | 5083:4837232474ca |
---|---|
96 username = jid.node(event.stream.from); | 96 username = jid.node(event.stream.from); |
97 if not username then return; end | 97 if not username then return; end |
98 end | 98 end |
99 local sasl_handler = get_sasl_handler(username); | 99 local sasl_handler = get_sasl_handler(username); |
100 if not sasl_handler then return; end | 100 if not sasl_handler then return; end |
101 sasl_handler.profile.cb = session.sasl_handler.profile.cb; | |
102 sasl_handler.userdata = session.sasl_handler.userdata; | |
101 session.fast_sasl_handler = sasl_handler; | 103 session.fast_sasl_handler = sasl_handler; |
102 local fast = st.stanza("fast", { xmlns = xmlns_fast }); | 104 local fast = st.stanza("fast", { xmlns = xmlns_fast }); |
103 for mech in pairs(sasl_handler:mechanisms()) do | 105 for mech in pairs(sasl_handler:mechanisms()) do |
104 fast:text_tag("mechanism", mech); | 106 fast:text_tag("mechanism", mech); |
105 end | 107 end |
148 local session = event.session; | 150 local session = event.session; |
149 | 151 |
150 local token_request = session.fast_token_request; | 152 local token_request = session.fast_token_request; |
151 local client_id = session.client_id; | 153 local client_id = session.client_id; |
152 local sasl_handler = session.sasl_handler; | 154 local sasl_handler = session.sasl_handler; |
153 if token_request or sasl_handler.fast and sasl_handler.rotation_needed then | 155 if token_request or (sasl_handler.fast and sasl_handler.rotation_needed) then |
154 if not client_id then | 156 if not client_id then |
155 session.log("warn", "FAST token requested, but missing client id"); | 157 session.log("warn", "FAST token requested, but missing client id"); |
156 return; | 158 return; |
157 end | 159 end |
158 local mechanism = token_request and token_request.mechanism or session.sasl_handler.selected; | 160 local mechanism = token_request and token_request.mechanism or session.sasl_handler.selected; |
200 return sasl.registerMechanism(name, { backend_profile_name }, new_ht_mechanism( | 202 return sasl.registerMechanism(name, { backend_profile_name }, new_ht_mechanism( |
201 name, | 203 name, |
202 backend_profile_name, | 204 backend_profile_name, |
203 cb_name | 205 cb_name |
204 ), | 206 ), |
205 { cb_name }); | 207 cb_name and { cb_name } or nil); |
206 end | 208 end |
207 | 209 |
208 register_ht_mechanism("HT-SHA-256-NONE", "ht_sha_256", nil); | 210 register_ht_mechanism("HT-SHA-256-NONE", "ht_sha_256", nil); |
209 register_ht_mechanism("HT-SHA-256-UNIQ", "ht_sha_256", "tls-unique"); | 211 register_ht_mechanism("HT-SHA-256-UNIQ", "ht_sha_256", "tls-unique"); |
210 register_ht_mechanism("HT-SHA-256-ENDP", "ht_sha_256", "tls-endpoint"); | 212 register_ht_mechanism("HT-SHA-256-ENDP", "ht_sha_256", "tls-server-end-point"); |
211 register_ht_mechanism("HT-SHA-256-EXPR", "ht_sha_256", "tls-exporter"); | 213 register_ht_mechanism("HT-SHA-256-EXPR", "ht_sha_256", "tls-exporter"); |