You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by bs...@apache.org on 2018/01/31 00:18:48 UTC

[geode] 03/03: wip - tests are failing

This is an automated email from the ASF dual-hosted git repository.

bschuchardt pushed a commit to branch feature/GEODE-4439
in repository https://gitbox.apache.org/repos/asf/geode.git

commit fbefe7d7ca484cca781fff1b953d23d69a763b7d
Author: Bruce Schuchardt <bs...@pivotal.io>
AuthorDate: Tue Jan 30 15:56:43 2018 -0800

    wip - tests are failing
---
 .../client/internal/ClientSideHandshakeImpl.java   |  4 +++-
 .../internal/cache/tier/ClientSideHandshake.java   |  2 +-
 .../internal/cache/tier/ServerSideHandshake.java   |  2 +-
 .../internal/cache/tier/sockets/EncryptorImpl.java | 28 ++++++----------------
 .../internal/cache/tier/sockets/Handshake.java     | 20 +++++++++++++++-
 .../cache/tier/sockets/ServerConnection.java       | 10 ++++----
 .../tier/sockets/ServerSideHandshakeImpl.java      |  3 ++-
 .../cache/tier/sockets/ServerConnectionTest.java   |  2 +-
 8 files changed, 39 insertions(+), 32 deletions(-)

diff --git a/geode-core/src/main/java/org/apache/geode/cache/client/internal/ClientSideHandshakeImpl.java b/geode-core/src/main/java/org/apache/geode/cache/client/internal/ClientSideHandshakeImpl.java
index ea2a80a..8db79a3 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/client/internal/ClientSideHandshakeImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/client/internal/ClientSideHandshakeImpl.java
@@ -57,6 +57,7 @@ import org.apache.geode.internal.cache.tier.ClientSideHandshake;
 import org.apache.geode.internal.cache.tier.CommunicationMode;
 import org.apache.geode.internal.cache.tier.Encryptor;
 import org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID;
+import org.apache.geode.internal.cache.tier.sockets.EncryptorImpl;
 import org.apache.geode.internal.cache.tier.sockets.Handshake;
 import org.apache.geode.internal.cache.tier.sockets.ServerQueueStatus;
 import org.apache.geode.internal.i18n.LocalizedStrings;
@@ -98,6 +99,7 @@ public class ClientSideHandshakeImpl extends Handshake implements ClientSideHand
     this.replyCode = REPLY_OK;
     setOverrides();
     this.credentials = null;
+    this.encryptor = new EncryptorImpl(distributedSystem.getSecurityLogWriter());
   }
 
   /**
@@ -454,6 +456,6 @@ public class ClientSideHandshakeImpl extends Handshake implements ClientSideHand
    * @return
    */
   public Encryptor getEncryptor() {
-    return this;
+    return encryptor;
   }
 }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/ClientSideHandshake.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/ClientSideHandshake.java
index c472fcd..14877b4 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/ClientSideHandshake.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/ClientSideHandshake.java
@@ -25,7 +25,7 @@ import org.apache.geode.internal.cache.tier.sockets.ServerQueueStatus;
 import org.apache.geode.security.AuthenticationFailedException;
 import org.apache.geode.security.AuthenticationRequiredException;
 
-public interface ClientSideHandshake extends Encryptor {
+public interface ClientSideHandshake {
   Encryptor getEncryptor();
 
   ClientProxyMembershipID getMembershipId();
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/ServerSideHandshake.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/ServerSideHandshake.java
index f382609..ce8aa8f 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/ServerSideHandshake.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/ServerSideHandshake.java
@@ -27,7 +27,7 @@ import org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID;
  * <code>ClientHandShake</code> represents a handshake from the client.
  *
  */
-public interface ServerSideHandshake extends Encryptor {
+public interface ServerSideHandshake {
   boolean isOK();
 
   ClientProxyMembershipID getMembershipId();
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/EncryptorImpl.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/EncryptorImpl.java
index c6e73bf..323c09f 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/EncryptorImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/EncryptorImpl.java
@@ -130,7 +130,7 @@ public class EncryptorImpl implements Encryptor{
     this.appSecureMode = encryptor.appSecureMode;
   }
 
-  EncryptorImpl(LogWriter logWriter) {
+  public EncryptorImpl(LogWriter logWriter) {
     this.logWriter = logWriter;
   }
 
@@ -384,15 +384,7 @@ public class EncryptorImpl implements Encryptor{
 
       // Expect the alias and signature in the reply
       acceptanceCode = dis.readByte();
-      if (acceptanceCode != REPLY_OK && acceptanceCode != REPLY_AUTH_NOT_REQUIRED) {
-        // Ignore the useless data
-        dis.readByte();
-        dis.readInt();
-        if (!isNotification) {
-          DataSerializer.readByteArray(dis);
-        }
-        readMessage(dis, dos, acceptanceCode, member);
-      } else if (acceptanceCode == REPLY_OK) {
+      if (acceptanceCode == REPLY_OK) {
         // Get the public key of the other side
         keyBytes = DataSerializer.readByteArray(dis);
         if (requireAuthentication) {
@@ -448,10 +440,11 @@ public class EncryptorImpl implements Encryptor{
     return acceptanceCode;
   }
 
-  void writeEncryptedCredentials(DataOutputStream dos, DataInputStream dis,
+  byte writeEncryptedCredentials(DataOutputStream dos, DataInputStream dis,
                                  Properties p_credentials,
                                  boolean isNotification, DistributedMember member,
                                  HeapDataOutputStream heapdos) throws IOException {
+    byte acceptanceCode;
     try {
       logWriter.fine("HandShake: using Diffie-Hellman key exchange with algo " + dhSKAlgo);
       boolean requireAuthentication =
@@ -481,16 +474,8 @@ public class EncryptorImpl implements Encryptor{
       dos.flush();
 
       // Expect the alias and signature in the reply
-      byte acceptanceCode = dis.readByte();
-      if (acceptanceCode != REPLY_OK && acceptanceCode != REPLY_AUTH_NOT_REQUIRED) {
-        // Ignore the useless data
-        dis.readByte();
-        dis.readInt();
-        if (!isNotification) {
-          DataSerializer.readByteArray(dis);
-        }
-        readMessage(dis, dos, acceptanceCode, member);
-      } else if (acceptanceCode == REPLY_OK) {
+      acceptanceCode = dis.readByte();
+      if (acceptanceCode == REPLY_OK) {
         // Get the public key of the other side
         keyBytes = DataSerializer.readByteArray(dis);
         if (requireAuthentication) {
@@ -546,6 +531,7 @@ public class EncryptorImpl implements Encryptor{
       throw new AuthenticationFailedException("HandShake failed in Diffie-Hellman key exchange",
           ex);
     }
+    return acceptanceCode;
   }
 
   void readEncryptedCredentials(DataInputStream dis, DataOutputStream dos,
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/Handshake.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/Handshake.java
index 37412c4..e76ef7f 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/Handshake.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/Handshake.java
@@ -205,6 +205,15 @@ public abstract class Handshake {
     }
     byte acceptanceCode = -1;
     acceptanceCode = encryptor.writeEncryptedCredential(dos, dis, isNotification, member, heapdos);
+    if (acceptanceCode != REPLY_OK && acceptanceCode != REPLY_AUTH_NOT_REQUIRED) {
+      // Ignore the useless data
+      dis.readByte();
+      dis.readInt();
+      if (!isNotification) {
+        DataSerializer.readByteArray(dis);
+      }
+      readMessage(dis, dos, acceptanceCode, member);
+    }
     dos.flush();
     return acceptanceCode;
   }
@@ -246,7 +255,16 @@ public abstract class Handshake {
       return;
     }
 
-    encryptor.writeEncryptedCredentials(dos, dis, p_credentials, isNotification, member, heapdos);
+    byte acceptanceCode = encryptor.writeEncryptedCredentials(dos, dis, p_credentials, isNotification, member, heapdos);
+    if (acceptanceCode != REPLY_OK && acceptanceCode != REPLY_AUTH_NOT_REQUIRED) {
+      // Ignore the useless data
+      dis.readByte();
+      dis.readInt();
+      if (!isNotification) {
+        DataSerializer.readByteArray(dis);
+      }
+      readMessage(dis, dos, acceptanceCode, member);
+    }
     dos.flush();
   }
 
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ServerConnection.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ServerConnection.java
index 4e86396..56b18a0 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ServerConnection.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ServerConnection.java
@@ -620,7 +620,7 @@ public abstract class ServerConnection implements Runnable {
       try {
         byte[] secureBytes = this.requestMsg.getSecureBytes();
 
-        secureBytes = ((Handshake) this.handshake).decryptBytes(secureBytes);
+        secureBytes = this.handshake.getEncryptor().decryptBytes(secureBytes);
         AuthIds aIds = new AuthIds(secureBytes);
 
         long uniqueId = aIds.getUniqueId();
@@ -951,7 +951,7 @@ public abstract class ServerConnection implements Runnable {
     try {
       byte[] secureBytes = msg.getSecureBytes();
 
-      secureBytes = ((Handshake) this.handshake).decryptBytes(secureBytes);
+      secureBytes = this.handshake.getEncryptor().decryptBytes(secureBytes);
 
       // need to decrypt it first then get connectionid
       AuthIds aIds = new AuthIds(secureBytes);
@@ -1013,7 +1013,7 @@ public abstract class ServerConnection implements Runnable {
 
       byte[] secureBytes = msg.getSecureBytes();
 
-      secureBytes = ((Handshake) this.handshake).decryptBytes(secureBytes);
+      secureBytes = this.handshake.getEncryptor().decryptBytes(secureBytes);
 
       // need to decrypt it first then get connectionid
       AuthIds aIds = new AuthIds(secureBytes);
@@ -1026,7 +1026,7 @@ public abstract class ServerConnection implements Runnable {
 
       byte[] credBytes = msg.getPart(0).getSerializedForm();
 
-      credBytes = ((Handshake) this.handshake).decryptBytes(credBytes);
+      credBytes = this.handshake.getEncryptor().decryptBytes(credBytes);
 
       ByteArrayInputStream bis = new ByteArrayInputStream(credBytes);
       DataInputStream dinp = new DataInputStream(bis);
@@ -1727,7 +1727,7 @@ public abstract class ServerConnection implements Runnable {
 
       hdos.writeLong(id);
 
-      return ((Handshake) this.handshake).encryptBytes(hdos.toByteArray());
+      return this.handshake.getEncryptor().encryptBytes(hdos.toByteArray());
     } finally {
       hdos.close();
     }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ServerSideHandshakeImpl.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ServerSideHandshakeImpl.java
index 8d2f77a..dea11e7 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ServerSideHandshakeImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ServerSideHandshakeImpl.java
@@ -51,6 +51,7 @@ public class ServerSideHandshakeImpl extends Handshake implements ServerSideHand
     this.clientVersion = clientVersion;
     this.system = sys;
     this.securityService = securityService;
+    this.encryptor = new EncryptorImpl(sys.getSecurityLogWriter());
 
     {
       int soTimeout = -1;
@@ -185,7 +186,7 @@ public class ServerSideHandshakeImpl extends Handshake implements ServerSideHand
 
   @Override
   public Encryptor getEncryptor() {
-    return this;
+    return encryptor;
   }
 
   private void sendCredentialsForWan(OutputStream out, InputStream in) {
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/ServerConnectionTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/ServerConnectionTest.java
index d5f8baf..fa08df8 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/ServerConnectionTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/ServerConnectionTest.java
@@ -231,7 +231,7 @@ public class ServerConnectionTest {
 
       long fakeId = -1;
       MessageIdExtractor extractor = mock(MessageIdExtractor.class);
-      when(extractor.getUniqueIdFromMessage(getRequestMessage(), handshake,
+      when(extractor.getUniqueIdFromMessage(getRequestMessage(), handshake.getEncryptor(),
           Connection.DEFAULT_CONNECTION_ID)).thenReturn(fakeId);
       setMessageIdExtractor(extractor);
     }

-- 
To stop receiving notification emails like this one, please contact
bschuchardt@apache.org.