From e865458653a2c06747d2ae7c714f02a323f500a7 Mon Sep 17 00:00:00 2001 From: Robert Godfrey Date: Sun, 12 May 2013 14:26:04 +0000 Subject: 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 --- .../qpid/server/protocol/MultiVersionProtocolEngine.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'java') 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 @@ -757,6 +757,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 @@ -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; -- cgit v1.2.1