final ChannelBindingCallback channelBindingCallback = new ChannelBindingCallback(); try { cbh.handle(new Callback[] { channelBindingCallback }); final String bindingType = channelBindingCallback.getBindingType(); final byte[] bindingData = channelBindingCallback.getBindingData(); boolean bindingOk = (bindingType != null) && (bindingData != null); boolean bindingRequired = props != null && "true".equals(props.get(WildFlySasl.CHANNEL_BINDING_REQUIRED));
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 ChannelBindingCallback) { ((ChannelBindingCallback) callback).setBindingType(bindingType); ((ChannelBindingCallback) callback).setBindingData(bindingData); } } if (!list.isEmpty()) { cbh.handle(list.toArray(new Callback[list.size()])); } }); } }
public ScramServer createServer(final CallbackHandler callbackHandler, final SecureRandom random, final ChannelBindingCallback bindingCallback, final int minimumIterationCount, final int maximumIterationCount, final Supplier<Provider[]> providers) throws AuthenticationMechanismException { final byte[] bindingData; final String bindingType; if (bindingCallback != null) { bindingData = bindingCallback.getBindingData(); bindingType = bindingCallback.getBindingType(); } else { if (plus) return null; bindingData = null; bindingType = null; } return new ScramServer(this, callbackHandler, random, bindingData, bindingType, minimumIterationCount, maximumIterationCount, providers); }
/** * Create a SCRAM client for this mechanism. * * @param authorizationId the authorization ID ({@code null} if none is given) * @param callbackHandler the callback handler (may not be {@code null}) * @param secureRandom an optional secure random implementation to use (may be {@code null}) * @param bindingCallback the optional channel binding callback result (may be {@code null}) * @param minimumIterationCount the minimum iteration count to allow * @param maximumIterationCount the maximum iteration count to allow * @return the SCRAM client, or {@code null} if the client cannot be created from this mechanism variant * @throws AuthenticationMechanismException if the mechanism fails for some reason * @see WildFlySasl#SCRAM_MIN_ITERATION_COUNT * @see WildFlySasl#SCRAM_MAX_ITERATION_COUNT */ public ScramClient createClient(final String authorizationId, final CallbackHandler callbackHandler, final SecureRandom secureRandom, final ChannelBindingCallback bindingCallback, final int minimumIterationCount, final int maximumIterationCount, final Supplier<Provider[]> providers) throws AuthenticationMechanismException { final byte[] bindingData; final String bindingType; if (bindingCallback != null) { bindingData = bindingCallback.getBindingData(); bindingType = bindingCallback.getBindingType(); } else { if (plus) return null; bindingData = null; bindingType = null; } return new ScramClient(this, authorizationId, callbackHandler, secureRandom, bindingData, bindingType, minimumIterationCount, maximumIterationCount, providers); }
if (! Gs2Util.isIncluded(mechanism, supportedMechanisms)) continue; if (! bindingStatusDetermined) { final ChannelBindingCallback callback = new ChannelBindingCallback(); try { cbh.handle(new Callback[] { callback }); bindingType = callback.getBindingType(); bindingData = callback.getBindingData(); bindingOk = (bindingType != null) && (bindingData != null); bindingStatusDetermined = true;
final byte[] bindingData; if (bindingCallback != null) { bindingType = bindingCallback.getBindingType(); bindingData = bindingCallback.getBindingData(); } else { bindingType = null;
/** * Populate the given channel binding callback with any channel binding data that might be present on this * connection. If no channel binding seems to be supported, then the callback will be left unpopulated. * * @param callback the binding callback to populate (must not be {@code null}) */ public void handleChannelBindingCallback(final ChannelBindingCallback callback) { Assert.checkNotNullParam("callback", callback); byte[] bindingData = getChannelBinding("tls-unique"); if (bindingData != null) { callback.setBindingType("tls-unique"); callback.setBindingData(bindingData); } else { bindingData = getChannelBinding(TLS_SERVER_ENDPOINT); if (bindingData != null) { callback.setBindingType(TLS_SERVER_ENDPOINT); callback.setBindingData(bindingData); } } }
public SaslClient createSaslClient(final String[] mechanisms, final String authorizationId, final String protocol, final String serverName, Map<String, ?> props, final CallbackHandler cbh) throws SaslException { Assert.checkNotNullParam("cbh", cbh); if (props == null) props = Collections.emptyMap(); final ChannelBindingCallback callback = new ChannelBindingCallback(); try { cbh.handle(new Callback[] { callback }); final String bindingType = callback.getBindingType(); final byte[] bindingData = callback.getBindingData(); boolean bindingOk = bindingType != null && bindingData != null; boolean bindingRequired = "true".equals(props.get(WildFlySasl.CHANNEL_BINDING_REQUIRED));
public ScramServer createServer(final CallbackHandler callbackHandler, final SecureRandom random, final ChannelBindingCallback bindingCallback, final int minimumIterationCount, final int maximumIterationCount, final Supplier<Provider[]> providers) throws AuthenticationMechanismException { final byte[] bindingData; final String bindingType; if (bindingCallback != null) { bindingData = bindingCallback.getBindingData(); bindingType = bindingCallback.getBindingType(); } else { if (plus) return null; bindingData = null; bindingType = null; } return new ScramServer(this, callbackHandler, random, bindingData, bindingType, minimumIterationCount, maximumIterationCount, providers); }
public SaslClient createSaslClient(final String[] mechanisms, final String authorizationId, final String protocol, final String serverName, final Map<String, ?> props, final CallbackHandler cbh) throws SaslException { return delegate.createSaslClient(mechanisms, authorizationId, 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 ChannelBindingCallback) { ((ChannelBindingCallback) callback).setBindingType(bindingType); ((ChannelBindingCallback) callback).setBindingData(bindingData); 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, Map<String, ?> props, final CallbackHandler cbh) throws SaslException { Assert.checkNotNullParam("cbh", cbh); if (props == null) props = Collections.emptyMap(); final ChannelBindingCallback callback = new ChannelBindingCallback(); try { cbh.handle(new Callback[] { callback }); final String bindingType = callback.getBindingType(); final byte[] bindingData = callback.getBindingData(); boolean bindingOk = bindingType != null && bindingData != null; boolean bindingRequired = "true".equals(props.get(WildFlySasl.CHANNEL_BINDING_REQUIRED));
public ScramServer createServer(final CallbackHandler callbackHandler, final SecureRandom random, final ChannelBindingCallback bindingCallback, final int minimumIterationCount, final int maximumIterationCount, final Supplier<Provider[]> providers) throws AuthenticationMechanismException { final byte[] bindingData; final String bindingType; if (bindingCallback != null) { bindingData = bindingCallback.getBindingData(); bindingType = bindingCallback.getBindingType(); } else { if (plus) return null; bindingData = null; bindingType = null; } return new ScramServer(this, callbackHandler, random, bindingData, bindingType, minimumIterationCount, maximumIterationCount, providers); }
/** * Convenience method to handle a channel binding callback. * * @param channelBindingCallback the callback (must not be {@code null}) * @param serverCerts the server certificate chain * @throws UnsupportedCallbackException if the server certificates are not present or unsupported and the callback is not optional */ public static void handleChannelBindingCallback(ChannelBindingCallback channelBindingCallback, X509Certificate[] serverCerts) throws UnsupportedCallbackException { if (serverCerts != null && serverCerts.length > 0) { // tls-server-end-point try { final byte[] bindingData = getChannelBindingData(serverCerts[0]); if (bindingData != null) { channelBindingCallback.setBindingData(bindingData); channelBindingCallback.setBindingType(TLS_SERVER_ENDPOINT); return; } } catch (CertificateEncodingException | NoSuchAlgorithmException e) { // fail silently } } CallbackUtil.unsupported(channelBindingCallback); }
final ChannelBindingCallback channelBindingCallback = new ChannelBindingCallback(); try { cbh.handle(new Callback[] { channelBindingCallback }); final String bindingType = channelBindingCallback.getBindingType(); final byte[] bindingData = channelBindingCallback.getBindingData(); boolean bindingOk = (bindingType != null) && (bindingData != null); boolean bindingRequired = props != null && "true".equals(props.get(WildFlySasl.CHANNEL_BINDING_REQUIRED));
public ScramServer createServer(final CallbackHandler callbackHandler, final SecureRandom random, final ChannelBindingCallback bindingCallback, final int minimumIterationCount, final int maximumIterationCount, final Supplier<Provider[]> providers) throws AuthenticationMechanismException { final byte[] bindingData; final String bindingType; if (bindingCallback != null) { bindingData = bindingCallback.getBindingData(); bindingType = bindingCallback.getBindingType(); } else { if (plus) return null; bindingData = null; bindingType = null; } return new ScramServer(this, callbackHandler, random, bindingData, bindingType, minimumIterationCount, maximumIterationCount, providers); }
/** * Populate the given channel binding callback with any channel binding data that might be present on this * connection. If no channel binding seems to be supported, then the callback will be left unpopulated. * * @param callback the binding callback to populate (must not be {@code null}) */ public void handleChannelBindingCallback(final ChannelBindingCallback callback) { Assert.checkNotNullParam("callback", callback); byte[] bindingData = getChannelBinding("tls-unique"); if (bindingData != null) { callback.setBindingType("tls-unique"); callback.setBindingData(bindingData); } else { bindingData = getChannelBinding(TLS_SERVER_ENDPOINT); if (bindingData != null) { callback.setBindingType(TLS_SERVER_ENDPOINT); callback.setBindingData(bindingData); } } }
final ChannelBindingCallback channelBindingCallback = new ChannelBindingCallback(); try { cbh.handle(new Callback[] { channelBindingCallback }); final String bindingType = channelBindingCallback.getBindingType(); final byte[] bindingData = channelBindingCallback.getBindingData(); boolean bindingOk = (bindingType != null) && (bindingData != null); boolean bindingRequired = props != null && "true".equals(props.get(WildFlySasl.CHANNEL_BINDING_REQUIRED));
/** * Create a SCRAM client for this mechanism. * * @param authorizationId the authorization ID ({@code null} if none is given) * @param callbackHandler the callback handler (may not be {@code null}) * @param secureRandom an optional secure random implementation to use (may be {@code null}) * @param bindingCallback the optional channel binding callback result (may be {@code null}) * @param minimumIterationCount the minimum iteration count to allow * @param maximumIterationCount the maximum iteration count to allow * @return the SCRAM client, or {@code null} if the client cannot be created from this mechanism variant * @throws AuthenticationMechanismException if the mechanism fails for some reason * @see WildFlySasl#SCRAM_MIN_ITERATION_COUNT * @see WildFlySasl#SCRAM_MAX_ITERATION_COUNT */ public ScramClient createClient(final String authorizationId, final CallbackHandler callbackHandler, final SecureRandom secureRandom, final ChannelBindingCallback bindingCallback, final int minimumIterationCount, final int maximumIterationCount, final Supplier<Provider[]> providers) throws AuthenticationMechanismException { final byte[] bindingData; final String bindingType; if (bindingCallback != null) { bindingData = bindingCallback.getBindingData(); bindingType = bindingCallback.getBindingType(); } else { if (plus) return null; bindingData = null; bindingType = null; } return new ScramClient(this, authorizationId, callbackHandler, secureRandom, bindingData, bindingType, minimumIterationCount, maximumIterationCount, providers); }
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 ChannelBindingCallback) { ((ChannelBindingCallback) callback).setBindingType(bindingType); ((ChannelBindingCallback) callback).setBindingData(bindingData); } } if (!list.isEmpty()) { cbh.handle(list.toArray(new Callback[list.size()])); } }); } }
final ChannelBindingCallback channelBindingCallback = new ChannelBindingCallback(); try { cbh.handle(new Callback[] { channelBindingCallback }); final String bindingType = channelBindingCallback.getBindingType(); final byte[] bindingData = channelBindingCallback.getBindingData(); boolean bindingOk = (bindingType != null) && (bindingData != null); boolean bindingRequired = props != null && "true".equals(props.get(WildFlySasl.CHANNEL_BINDING_REQUIRED));