author | "Vincent Veronis" |
Mon, 05 Sep 2011 18:01:49 +0200 | |
changeset 903 | 970559c45e43 |
parent 897 | 84d62c76469e |
permissions | -rw-r--r-- |
897
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
1 |
Index: org/jivesoftware/smack/XMPPConnection.java |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
2 |
=================================================================== |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
3 |
--- org/jivesoftware/smack/XMPPConnection.java (révision 11644) |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
4 |
+++ org/jivesoftware/smack/XMPPConnection.java (copie de travail) |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
5 |
@@ -758,14 +758,14 @@ |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
6 |
* @throws Exception if an exception occurs. |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
7 |
*/ |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
8 |
void proceedTLSReceived() throws Exception { |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
9 |
- SSLContext context = SSLContext.getInstance("TLS"); |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
10 |
+ SSLContext context = this.config.getCustomSSLContext(); |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
11 |
KeyStore ks = null; |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
12 |
KeyManager[] kms = null; |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
13 |
PasswordCallback pcb = null; |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
14 |
|
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
15 |
if(config.getCallbackHandler() == null) { |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
16 |
ks = null; |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
17 |
- } else { |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
18 |
+ } else if (context == null) { |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
19 |
//System.out.println("Keystore type: "+configuration.getKeystoreType()); |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
20 |
if(config.getKeystoreType().equals("NONE")) { |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
21 |
ks = null; |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
22 |
@@ -821,10 +821,12 @@ |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
23 |
} |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
24 |
|
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
25 |
// Verify certificate presented by the server |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
26 |
- context.init(kms, |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
27 |
- new javax.net.ssl.TrustManager[]{new ServerTrustManager(getServiceName(), config)}, |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
28 |
- //new javax.net.ssl.TrustManager[]{new OpenTrustManager()}, |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
29 |
- new java.security.SecureRandom()); |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
30 |
+ if (context == null) { |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
31 |
+ context = SSLContext.getInstance("TLS"); |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
32 |
+ context.init(kms, |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
33 |
+ new javax.net.ssl.TrustManager[]{new ServerTrustManager(getServiceName(), config)}, |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
34 |
+ new java.security.SecureRandom()); |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
35 |
+ } |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
36 |
Socket plain = socket; |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
37 |
// Secure the plain connection |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
38 |
socket = context.getSocketFactory().createSocket(plain, |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
39 |
Index: org/jivesoftware/smack/ConnectionConfiguration.java |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
40 |
=================================================================== |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
41 |
--- org/jivesoftware/smack/ConnectionConfiguration.java (révision 11644) |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
42 |
+++ org/jivesoftware/smack/ConnectionConfiguration.java (copie de travail) |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
43 |
@@ -20,6 +20,7 @@ |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
44 |
|
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
45 |
package org.jivesoftware.smack; |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
46 |
|
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
47 |
+import javax.net.ssl.SSLContext; |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
48 |
import org.jivesoftware.smack.proxy.ProxyInfo; |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
49 |
import org.jivesoftware.smack.util.DNSUtil; |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
50 |
|
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
51 |
@@ -59,6 +60,7 @@ |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
52 |
private boolean selfSignedCertificateEnabled = false; |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
53 |
private boolean expiredCertificatesCheckEnabled = false; |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
54 |
private boolean notMatchingDomainCheckEnabled = false; |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
55 |
+ private SSLContext customSSLContext; |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
56 |
|
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
57 |
private boolean compressionEnabled = false; |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
58 |
|
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
59 |
@@ -487,6 +489,25 @@ |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
60 |
} |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
61 |
|
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
62 |
/** |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
63 |
+ * Gets the custom SSLContext for SSL sockets. This is null by default. |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
64 |
+ * |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
65 |
+ * @return the SSLContext previously set with setCustomSSLContext() or null. |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
66 |
+ */ |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
67 |
+ public SSLContext getCustomSSLContext() { |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
68 |
+ return this.customSSLContext; |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
69 |
+ } |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
70 |
+ |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
71 |
+ /** |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
72 |
+ * Sets a custom SSLContext for creating SSL sockets. A custom Context causes all other |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
73 |
+ * SSL/TLS realted settings to be ignored. |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
74 |
+ * |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
75 |
+ * @param context the custom SSLContext for new sockets; null to reset default behaviour. |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
76 |
+ */ |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
77 |
+ public void setCustomSSLContext(SSLContext context) { |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
78 |
+ this.customSSLContext = context; |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
79 |
+ } |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
80 |
+ |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
81 |
+ /** |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
82 |
* Returns true if the connection is going to use stream compression. Stream compression |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
83 |
* will be requested after TLS was established (if TLS was enabled) and only if the server |
84d62c76469e
Add MemorizingTrustManager library in source.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
84 |
* offered stream compression. With stream compression network traffic can be reduced |