doc/asmack-beem/beem_patches/10-custom-sslcontext.patch
author Da Risk <da_risk@elyzion.net>
Mon, 05 Sep 2011 09:31:22 +0200
changeset 902 c82293948d2f
parent 897 84d62c76469e
permissions -rw-r--r--
Fix a NullPointerException in ChangeStatus.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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