public SaslServer createSaslServer(final String mechanism, final String protocol, final String serverName, final Map<String, ?> props, final CallbackHandler cbh) throws SaslException { return delegate.createSaslServer(mechanism, protocol, serverName, props, callbacks -> { ArrayList<Callback> list = new ArrayList<>(Arrays.asList(callbacks)); final Iterator<Callback> iterator = list.iterator(); while (iterator.hasNext()) { Callback callback = iterator.next(); if (callback instanceof TrustedAuthoritiesCallback) { final X509TrustManager trustManager = getTrustManager(); ((TrustedAuthoritiesCallback) callback).setTrustedAuthorities(getTrustedAuthorities(trustManager.getAcceptedIssuers())); iterator.remove(); } else if (callback instanceof EvidenceVerifyCallback) { final EvidenceVerifyCallback evidenceVerifyCallback = (EvidenceVerifyCallback) callback; final X509PeerCertificateChainEvidence peerCertificateChainEvidence = evidenceVerifyCallback.getEvidence(X509PeerCertificateChainEvidence.class); if (peerCertificateChainEvidence != null) { final X509TrustManager trustManager = getTrustManager(); try { trustManager.checkClientTrusted(peerCertificateChainEvidence.getPeerCertificateChain(), peerCertificateChainEvidence.getAlgorithm()); evidenceVerifyCallback.setVerified(true); } catch (CertificateException e) { } iterator.remove(); } } } if (! list.isEmpty()) { cbh.handle(list.toArray(new Callback[list.size()])); } }); }
public SaslServer createSaslServer(final String mechanism, final String protocol, final String serverName, final Map<String, ?> props, final CallbackHandler cbh) throws SaslException { return delegate.createSaslServer(mechanism, protocol, serverName, props, callbacks -> { ArrayList<Callback> list = new ArrayList<>(Arrays.asList(callbacks)); final Iterator<Callback> iterator = list.iterator(); while (iterator.hasNext()) { Callback callback = iterator.next(); if (callback instanceof TrustedAuthoritiesCallback) { final X509TrustManager trustManager = getTrustManager(); ((TrustedAuthoritiesCallback) callback).setTrustedAuthorities(getTrustedAuthorities(trustManager.getAcceptedIssuers())); iterator.remove(); } else if (callback instanceof EvidenceVerifyCallback) { final EvidenceVerifyCallback evidenceVerifyCallback = (EvidenceVerifyCallback) callback; final X509PeerCertificateChainEvidence peerCertificateChainEvidence = evidenceVerifyCallback.getEvidence(X509PeerCertificateChainEvidence.class); if (peerCertificateChainEvidence != null) { final X509TrustManager trustManager = getTrustManager(); try { trustManager.checkClientTrusted(peerCertificateChainEvidence.getPeerCertificateChain(), peerCertificateChainEvidence.getAlgorithm()); evidenceVerifyCallback.setVerified(true); } catch (CertificateException e) { } iterator.remove(); } } } if (! list.isEmpty()) { cbh.handle(list.toArray(new Callback[list.size()])); } }); }
public SaslServer createSaslServer(final String mechanism, final String protocol, final String serverName, final Map<String, ?> props, final CallbackHandler cbh) throws SaslException { return delegate.createSaslServer(mechanism, protocol, serverName, props, callbacks -> { ArrayList<Callback> list = new ArrayList<>(Arrays.asList(callbacks)); final Iterator<Callback> iterator = list.iterator(); while (iterator.hasNext()) { Callback callback = iterator.next(); if (callback instanceof TrustedAuthoritiesCallback) { final X509TrustManager trustManager = getTrustManager(); ((TrustedAuthoritiesCallback) callback).setTrustedAuthorities(getTrustedAuthorities(trustManager.getAcceptedIssuers())); iterator.remove(); } else if (callback instanceof EvidenceVerifyCallback) { final EvidenceVerifyCallback evidenceVerifyCallback = (EvidenceVerifyCallback) callback; final X509PeerCertificateChainEvidence peerCertificateChainEvidence = evidenceVerifyCallback.getEvidence(X509PeerCertificateChainEvidence.class); if (peerCertificateChainEvidence != null) { final X509TrustManager trustManager = getTrustManager(); try { trustManager.checkClientTrusted(peerCertificateChainEvidence.getPeerCertificateChain(), peerCertificateChainEvidence.getAlgorithm()); evidenceVerifyCallback.setVerified(true); } catch (CertificateException e) { } iterator.remove(); } } } if (! list.isEmpty()) { cbh.handle(list.toArray(new Callback[list.size()])); } }); }
public SaslServer createSaslServer(final String mechanism, final String protocol, final String serverName, final Map<String, ?> props, final CallbackHandler cbh) throws SaslException { return delegate.createSaslServer(mechanism, protocol, serverName, props, callbacks -> { ArrayList<Callback> list = new ArrayList<>(Arrays.asList(callbacks)); final Iterator<Callback> iterator = list.iterator(); while (iterator.hasNext()) { Callback callback = iterator.next(); if (callback instanceof TrustedAuthoritiesCallback) { final X509TrustManager trustManager = getTrustManager(); ((TrustedAuthoritiesCallback) callback).setTrustedAuthorities(getTrustedAuthorities(trustManager.getAcceptedIssuers())); iterator.remove(); } else if (callback instanceof EvidenceVerifyCallback) { final EvidenceVerifyCallback evidenceVerifyCallback = (EvidenceVerifyCallback) callback; final X509PeerCertificateChainEvidence peerCertificateChainEvidence = evidenceVerifyCallback.getEvidence(X509PeerCertificateChainEvidence.class); if (peerCertificateChainEvidence != null) { final X509TrustManager trustManager = getTrustManager(); try { trustManager.checkClientTrusted(peerCertificateChainEvidence.getPeerCertificateChain(), peerCertificateChainEvidence.getAlgorithm()); evidenceVerifyCallback.setVerified(true); } catch (CertificateException e) { } iterator.remove(); } } } if (! list.isEmpty()) { cbh.handle(list.toArray(new Callback[list.size()])); } }); }