1 /** 2 * Logback: the reliable, generic, fast and flexible logging framework. 3 * Copyright (C) 1999-2015, QOS.ch. All rights reserved. 4 * 5 * This program and the accompanying materials are dual-licensed under 6 * either the terms of the Eclipse Public License v1.0 as published by 7 * the Eclipse Foundation 8 * 9 * or (per the licensee's choosing) 10 * 11 * under the terms of the GNU Lesser General Public License version 2.1 12 * as published by the Free Software Foundation. 13 */ 14 package ch.qos.logback.core.net.ssl; 15 16 /** 17 * An object that has configurable SSL parameters. 18 * <p> 19 * This interface allows us o decouple the 20 * {@link ch.qos.logback.core.net.ssl.SSLParametersConfiguration 21 * SSLParametersConfiguration} from {@link javax.net.ssl.SSLSocket SSLSocket} 22 * and {@link javax.net.ssl.SSLServerSocket SSLServerSocket} to facilitate unit 23 * testing. 24 * 25 * @author Carl Harris 26 * @author Bruno Harbulot 27 */ 28 public interface SSLConfigurable { 29 30 /** 31 * Gets the set of protocols that the SSL component enables by default. 32 * 33 * @return protocols (generally a subset of the set returned by 34 * {@link #getSupportedProtocols()}); the return value may be an empty 35 * array but must never be {@code null}. 36 */ 37 String[] getDefaultProtocols(); 38 39 /** 40 * Gets the set of protocols that the SSL component supports. 41 * 42 * @return protocols supported protocols; the return value may be an empty array 43 * but must never be {@code null}. 44 */ 45 String[] getSupportedProtocols(); 46 47 /** 48 * Sets the enabled protocols on the SSL component. 49 * 50 * @param protocols the protocols to enable 51 */ 52 void setEnabledProtocols(String[] protocols); 53 54 /** 55 * Gets the set of cipher suites that the SSL component enables by default. 56 * 57 * @return cipher suites (generally a subset of the set returned by 58 * {@link #getSupportedCipherSuites()}); the return value may be an 59 * empty array but must never be {@code null} 60 */ 61 String[] getDefaultCipherSuites(); 62 63 /** 64 * Gets the set of cipher suites that the SSL component supports. 65 * 66 * @return supported cipher suites; the return value may be an empty array but 67 * must never be {@code null} 68 */ 69 String[] getSupportedCipherSuites(); 70 71 /** 72 * Sets the enabled cipher suites on the SSL component. 73 * 74 * @param cipherSuites the cipher suites to enable 75 */ 76 void setEnabledCipherSuites(String[] cipherSuites); 77 78 /** 79 * Sets a flag indicating whether the SSL component should require client 80 * authentication. 81 * 82 * @param state the flag state to set 83 */ 84 void setNeedClientAuth(boolean state); 85 86 /** 87 * Sets a flag indicating whether the SSL component should request client 88 * authentication. 89 * 90 * @param state the flag state to set 91 */ 92 void setWantClientAuth(boolean state); 93 94 void setHostnameVerification(boolean verifyHostname); 95 96 }