1 package org.eclipse.aether.transport.http;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.IOException;
23
24 import javax.net.ssl.HostnameVerifier;
25 import javax.net.ssl.SSLContext;
26 import javax.net.ssl.SSLSocket;
27 import javax.net.ssl.SSLSocketFactory;
28
29 import org.apache.http.conn.ssl.X509HostnameVerifier;
30
31
32
33
34
35
36
37
38 final class SslSocketFactory
39 extends org.apache.http.conn.ssl.SSLSocketFactory
40 {
41
42 private final String[] cipherSuites;
43
44 private final String[] protocols;
45
46 SslSocketFactory( SslConfig config )
47 {
48 this( getSocketFactory( config.context ), getHostnameVerifier( config.verifier ), config.cipherSuites,
49 config.protocols );
50 }
51
52 private static SSLSocketFactory getSocketFactory( SSLContext context )
53 {
54 return ( context != null ) ? context.getSocketFactory() : (SSLSocketFactory) SSLSocketFactory.getDefault();
55 }
56
57 private static X509HostnameVerifier getHostnameVerifier( HostnameVerifier verifier )
58 {
59 return ( verifier != null ) ? X509HostnameVerifierAdapter.adapt( verifier )
60 : org.apache.http.conn.ssl.SSLSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER;
61 }
62
63 private SslSocketFactory( SSLSocketFactory socketfactory, X509HostnameVerifier hostnameVerifier,
64 String[] cipherSuites, String[] protocols )
65 {
66 super( socketfactory, hostnameVerifier );
67
68 this.cipherSuites = cipherSuites;
69 this.protocols = protocols;
70 }
71
72 @Override
73 protected void prepareSocket( SSLSocket socket )
74 throws IOException
75 {
76 super.prepareSocket( socket );
77 if ( cipherSuites != null )
78 {
79 socket.setEnabledCipherSuites( cipherSuites );
80 }
81 if ( protocols != null )
82 {
83 socket.setEnabledProtocols( protocols );
84 }
85 }
86
87 }