summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2013-05-12 14:26:04 +0000
committerRobert Godfrey <rgodfrey@apache.org>2013-05-12 14:26:04 +0000
commite865458653a2c06747d2ae7c714f02a323f500a7 (patch)
treeef48b55e184812dc73c0b01b79eede13fde1650b /java
parent1159ea60e35569629c1aefa4850c17e8f22ad3a6 (diff)
downloadqpid-python-e865458653a2c06747d2ae7c714f02a323f500a7.tar.gz
QPID-4831 : [Java Broker] Allow identification of SSLv2 Client Hello messages (used in Java 1.6)
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1481567 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
-rwxr-xr-xjava/broker/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java16
1 files changed, 16 insertions, 0 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java b/java/broker/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java
index 267857a34a..c0764272a4 100755
--- a/java/broker/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java
@@ -758,6 +758,11 @@ public class MultiVersionProtocolEngine implements ServerProtocolEngine
private boolean looksLikeSSL(byte[] headerBytes)
{
+ return looksLikeSSLv3ClientHello(headerBytes) || looksLikeSSLv2ClientHello(headerBytes);
+ }
+
+ private boolean looksLikeSSLv3ClientHello(byte[] headerBytes)
+ {
return headerBytes[0] == 22 && // SSL Handshake
(headerBytes[1] == 3 && // SSL 3.0 / TLS 1.x
(headerBytes[2] == 0 || // SSL 3.0
@@ -767,6 +772,17 @@ public class MultiVersionProtocolEngine implements ServerProtocolEngine
(headerBytes[5] == 1); // client_hello
}
+ private boolean looksLikeSSLv2ClientHello(byte[] headerBytes)
+ {
+ return headerBytes[0] == -128 &&
+ headerBytes[3] == 3 && // SSL 3.0 / TLS 1.x
+ (headerBytes[4] == 0 || // SSL 3.0
+ headerBytes[4] == 1 || // TLS 1.0
+ headerBytes[4] == 2 || // TLS 1.1
+ headerBytes[4] == 3);
+ }
+
+
private static class SSLNetworkConnection implements NetworkConnection
{
private final NetworkConnection _network;