diff options
| author | Robert Godfrey <rgodfrey@apache.org> | 2013-05-12 14:26:04 +0000 |
|---|---|---|
| committer | Robert Godfrey <rgodfrey@apache.org> | 2013-05-12 14:26:04 +0000 |
| commit | e865458653a2c06747d2ae7c714f02a323f500a7 (patch) | |
| tree | ef48b55e184812dc73c0b01b79eede13fde1650b /java | |
| parent | 1159ea60e35569629c1aefa4850c17e8f22ad3a6 (diff) | |
| download | qpid-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-x | java/broker/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java | 16 |
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; |
