Software /
code /
prosody
Comparison
plugins/mod_s2s/mod_s2s.lua @ 6319:92d009af6eba
mod_s2s_auth_certs: Split PKIX based certificate checking from mod_s2s into new plugin
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 25 Jul 2014 20:41:54 +0200 |
parent | 6301:2fdd71b08126 |
child | 6321:566c8e571108 |
comparison
equal
deleted
inserted
replaced
6315:7a3e2f2d43fc | 6319:92d009af6eba |
---|---|
241 local cert | 241 local cert |
242 if conn.getpeercertificate then | 242 if conn.getpeercertificate then |
243 cert = conn:getpeercertificate() | 243 cert = conn:getpeercertificate() |
244 end | 244 end |
245 | 245 |
246 if cert then | |
247 local chain_valid, errors; | |
248 if conn.getpeerverification then | |
249 chain_valid, errors = conn:getpeerverification(); | |
250 elseif conn.getpeerchainvalid then -- COMPAT mw/luasec-hg | |
251 chain_valid, errors = conn:getpeerchainvalid(); | |
252 errors = (not chain_valid) and { { errors } } or nil; | |
253 else | |
254 chain_valid, errors = false, { { "Chain verification not supported by this version of LuaSec" } }; | |
255 end | |
256 -- Is there any interest in printing out all/the number of errors here? | |
257 if not chain_valid then | |
258 (session.log or log)("debug", "certificate chain validation result: invalid"); | |
259 for depth, t in pairs(errors or NULL) do | |
260 (session.log or log)("debug", "certificate error(s) at depth %d: %s", depth-1, table.concat(t, ", ")) | |
261 end | |
262 session.cert_chain_status = "invalid"; | |
263 else | |
264 (session.log or log)("debug", "certificate chain validation result: valid"); | |
265 session.cert_chain_status = "valid"; | |
266 | |
267 -- We'll go ahead and verify the asserted identity if the | |
268 -- connecting server specified one. | |
269 if host then | |
270 if cert_verify_identity(host, "xmpp-server", cert) then | |
271 session.cert_identity_status = "valid" | |
272 else | |
273 session.cert_identity_status = "invalid" | |
274 end | |
275 (session.log or log)("debug", "certificate identity validation result: %s", session.cert_identity_status); | |
276 end | |
277 end | |
278 end | |
279 return module:fire_event("s2s-check-certificate", { host = host, session = session, cert = cert }); | 246 return module:fire_event("s2s-check-certificate", { host = host, session = session, cert = cert }); |
280 end | 247 end |
281 | 248 |
282 --- XMPP stream event handlers | 249 --- XMPP stream event handlers |
283 | 250 |