1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.net.util;
19
20 import java.security.GeneralSecurityException;
21 import java.security.KeyStore;
22 import java.security.cert.CertificateException;
23 import java.security.cert.X509Certificate;
24
25 import javax.net.ssl.TrustManagerFactory;
26 import javax.net.ssl.X509TrustManager;
27
28
29
30
31
32
33 public final class TrustManagerUtils
34 {
35 private static final X509Certificate[] EMPTY_X509CERTIFICATE_ARRAY = new X509Certificate[]{};
36
37 private static class TrustManager implements X509TrustManager {
38
39 private final boolean checkServerValidity;
40
41 TrustManager(boolean checkServerValidity) {
42 this.checkServerValidity = checkServerValidity;
43 }
44
45
46
47
48
49 public void checkClientTrusted(X509Certificate[] certificates, String authType)
50 {
51 return;
52 }
53
54
55 public void checkServerTrusted(X509Certificate[] certificates, String authType)
56 throws CertificateException
57 {
58 if (checkServerValidity) {
59 for (X509Certificate certificate : certificates)
60 {
61 certificate.checkValidity();
62 }
63 }
64 }
65
66
67
68
69
70 public X509Certificate[] getAcceptedIssuers()
71 {
72 return EMPTY_X509CERTIFICATE_ARRAY;
73 }
74 }
75
76 private static final X509TrustManager ACCEPT_ALL=new TrustManager(false);
77
78 private static final X509TrustManager CHECK_SERVER_VALIDITY=new TrustManager(true);
79
80
81
82
83
84
85 public static X509TrustManager getAcceptAllTrustManager(){
86 return ACCEPT_ALL;
87 }
88
89
90
91
92
93
94
95 public static X509TrustManager getValidateServerCertificateTrustManager(){
96 return CHECK_SERVER_VALIDITY;
97 }
98
99
100
101
102
103
104
105
106
107
108
109 public static X509TrustManager getDefaultTrustManager(KeyStore keyStore) throws GeneralSecurityException {
110 String defaultAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
111 TrustManagerFactory instance = TrustManagerFactory.getInstance(defaultAlgorithm);
112 instance.init(keyStore);
113 return (X509TrustManager) instance.getTrustManagers()[0];
114 }
115
116 }