You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by le...@apache.org on 2007/08/14 07:25:26 UTC
svn commit: r565626 - in
/harmony/enhanced/classlib/branches/java6/modules/auth/src:
main/java/common/javax/security/auth/kerberos/
test/java/common/org/apache/harmony/auth/tests/javax/security/auth/kerberos/
Author: leoli
Date: Mon Aug 13 22:25:26 2007
New Revision: 565626
URL: http://svn.apache.org/viewvc?view=rev&rev=565626
Log:
Add Java 6 new feature in auth module (javax.security.auth.kerberos.KerberosKey and javax.security.auth.kerberos.KerberosTicket.equals and hashCode()).
Modified:
harmony/enhanced/classlib/branches/java6/modules/auth/src/main/java/common/javax/security/auth/kerberos/KerberosKey.java
harmony/enhanced/classlib/branches/java6/modules/auth/src/main/java/common/javax/security/auth/kerberos/KerberosTicket.java
harmony/enhanced/classlib/branches/java6/modules/auth/src/main/java/common/javax/security/auth/kerberos/KeyImpl.java
harmony/enhanced/classlib/branches/java6/modules/auth/src/test/java/common/org/apache/harmony/auth/tests/javax/security/auth/kerberos/KerberosKeyTest.java
harmony/enhanced/classlib/branches/java6/modules/auth/src/test/java/common/org/apache/harmony/auth/tests/javax/security/auth/kerberos/KerberosTicketTest.java
Modified: harmony/enhanced/classlib/branches/java6/modules/auth/src/main/java/common/javax/security/auth/kerberos/KerberosKey.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/auth/src/main/java/common/javax/security/auth/kerberos/KerberosKey.java?view=diff&rev=565626&r1=565625&r2=565626
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/auth/src/main/java/common/javax/security/auth/kerberos/KerberosKey.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/auth/src/main/java/common/javax/security/auth/kerberos/KerberosKey.java Mon Aug 13 22:25:26 2007
@@ -117,4 +117,32 @@
throw new IllegalStateException(Messages.getString("auth.48")); //$NON-NLS-1$
}
}
+
+ @Override
+ public boolean equals(Object other) {
+ if ((other instanceof KerberosKey) && (!this.isDestroyed())) {
+ KerberosKey that = (KerberosKey) other;
+ if ((!that.isDestroyed()) && (versionNum == that.versionNum)) {
+ if (key.equals(((KerberosKey) other).key)) {
+ if (principal != null) {
+ return principal.equals(that.principal);
+ } else {
+ return that.principal == null;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ int hashcode = 0;
+ if (principal != null) {
+ hashcode += principal.hashCode();
+ }
+ hashcode += versionNum;
+ hashcode += key.hashCode();
+ return hashcode;
+ }
}
Modified: harmony/enhanced/classlib/branches/java6/modules/auth/src/main/java/common/javax/security/auth/kerberos/KerberosTicket.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/auth/src/main/java/common/javax/security/auth/kerberos/KerberosTicket.java?view=diff&rev=565626&r1=565625&r2=565626
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/auth/src/main/java/common/javax/security/auth/kerberos/KerberosTicket.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/auth/src/main/java/common/javax/security/auth/kerberos/KerberosTicket.java Mon Aug 13 22:25:26 2007
@@ -371,4 +371,73 @@
throw new IllegalStateException(Messages.getString("auth.43")); //$NON-NLS-1$
}
}
+
+ @Override
+ public boolean equals(Object other) {
+ if ((other instanceof KerberosTicket) && (!this.isDestroyed())) {
+ KerberosTicket that = (KerberosTicket) other;
+ if ((!that.isDestroyed()) && sessionKey.equals(that.sessionKey)
+ && (authTime.equals(that.authTime))
+ && (endTime.equals(that.endTime))
+ && (startTime.equals(that.startTime))
+ && (client.equals(that.client))
+ && (server.equals(that.server))
+ && (asn1Encoding.length == that.asn1Encoding.length)
+ && (flags.length == that.flags.length)) {
+ for (int i = 0; i < asn1Encoding.length; i++) {
+ if (asn1Encoding[i] != that.asn1Encoding[i]) {
+ return false;
+ }
+ }
+ for (int i = 0; i < flags.length; i++) {
+ if (flags[i] != that.flags[i]) {
+ return false;
+ }
+ }
+ if (((renewTill != null) && (renewTill.equals(that.renewTill)))
+ || ((renewTill == null) && that.renewTill == null)) {
+ if ((clientAddresses != null)
+ && (that.clientAddresses != null)) {
+ for (int i = 0; i < clientAddresses.length; i++) {
+ if ((clientAddresses[i] == null && that.clientAddresses[i] != null)
+ || (clientAddresses[i] != null && !clientAddresses[i]
+ .equals(that.clientAddresses[i]))) {
+ return false;
+ }
+ }
+ return true;
+ } else if ((clientAddresses == null)
+ && (that.clientAddresses == null)) {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ int hashcode = 0;
+ for (int i = 0; i < asn1Encoding.length; i++) {
+ hashcode += asn1Encoding[i];
+ }
+ hashcode += sessionKey.hashCode();
+ for (int i = 0; i < flags.length; i++) {
+ hashcode += (flags[i] ? 1 : 0);
+ }
+ hashcode += authTime.hashCode();
+ hashcode += startTime.hashCode();
+ hashcode += endTime.hashCode();
+ hashcode += (renewTill != null ? renewTill.hashCode() : 0);
+ hashcode += client.hashCode();
+ hashcode += server.hashCode();
+ if (clientAddresses != null) {
+ for (int i = 0; i < clientAddresses.length; i++) {
+ hashcode += (clientAddresses[i] != null ? clientAddresses[i]
+ .hashCode() : 0);
+ }
+ }
+ return hashcode;
+ }
}
Modified: harmony/enhanced/classlib/branches/java6/modules/auth/src/main/java/common/javax/security/auth/kerberos/KeyImpl.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/auth/src/main/java/common/javax/security/auth/kerberos/KeyImpl.java?view=diff&rev=565626&r1=565625&r2=565626
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/auth/src/main/java/common/javax/security/auth/kerberos/KeyImpl.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/auth/src/main/java/common/javax/security/auth/kerberos/KeyImpl.java Mon Aug 13 22:25:26 2007
@@ -316,4 +316,31 @@
keyBytes));
s.writeObject(enc);
}
+
+ @Override
+ public boolean equals(Object other) {
+ if (other instanceof KeyImpl && !this.isDestroyed()
+ && !((KeyImpl) other).isDestroyed()) {
+ if ((keyType == ((KeyImpl) other).keyType)
+ && (keyBytes.length == ((KeyImpl) other).keyBytes.length)) {
+ for (int i = 0; i < keyBytes.length; i++) {
+ if (keyBytes[i] != ((KeyImpl) other).keyBytes[i]) {
+ return false;
+ }
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ int hashcode = 0;
+ for (int i = 0; i < keyBytes.length; i++) {
+ hashcode += keyBytes[i];
+ }
+ hashcode *= keyType;
+ return hashcode;
+ }
}
Modified: harmony/enhanced/classlib/branches/java6/modules/auth/src/test/java/common/org/apache/harmony/auth/tests/javax/security/auth/kerberos/KerberosKeyTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/auth/src/test/java/common/org/apache/harmony/auth/tests/javax/security/auth/kerberos/KerberosKeyTest.java?view=diff&rev=565626&r1=565625&r2=565626
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/auth/src/test/java/common/org/apache/harmony/auth/tests/javax/security/auth/kerberos/KerberosKeyTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/auth/src/test/java/common/org/apache/harmony/auth/tests/javax/security/auth/kerberos/KerberosKeyTest.java Mon Aug 13 22:25:26 2007
@@ -22,6 +22,7 @@
import java.io.ObjectOutputStream;
import java.util.Arrays;
+import javax.security.auth.DestroyFailedException;
import javax.security.auth.kerberos.KerberosKey;
import javax.security.auth.kerberos.KerberosPrincipal;
@@ -224,5 +225,38 @@
fail("No expected IllegalStateException");
} catch (IllegalStateException e) {
}
+ }
+
+ /**
+ * @tests javax.security.auth.kerberos.KerberosKey#equals(java.lang.Object)
+ */
+ public void test_equals() {
+ KerberosKey kerberosKey1 = new KerberosKey(principal, keyBytes, 1, 123);
+ KerberosKey kerberosKey2 = new KerberosKey(principal, keyBytes, 1, 123);
+ KerberosKey kerberosKey3 = new KerberosKey(principal, new byte[] { 1,
+ 3, 4, 5 }, 1, 123);
+ assertEquals("kerberosKey1 and kerberosKey2 should be equivalent ",
+ kerberosKey1, kerberosKey2);
+ assertFalse("kerberosKey1 and kerberosKey3 sholudn't be equivalent ",
+ kerberosKey1.equals(kerberosKey3));
+ try {
+ kerberosKey2.destroy();
+ } catch (DestroyFailedException e) {
+ fail("kerberosKey2 destroy failed");
+ }
+ assertFalse("Destroyed kerberosKey sholudn't be equivalent ",
+ kerberosKey1.equals(kerberosKey2));
+ }
+
+ /**
+ * @tests javax.security.auth.kerberos.KerberosKey#hashCode()
+ */
+ public void test_hashCode() {
+ KerberosKey kerberosKey1 = new KerberosKey(principal, keyBytes, 1, 123);
+ KerberosKey kerberosKey2 = new KerberosKey(principal, keyBytes, 1, 123);
+ assertEquals("kerberosKey1 and kerberosKey2 should be equivalent ",
+ kerberosKey1, kerberosKey2);
+ assertEquals("hashCode should be equivalent", kerberosKey1.hashCode(),
+ kerberosKey2.hashCode());
}
}
Modified: harmony/enhanced/classlib/branches/java6/modules/auth/src/test/java/common/org/apache/harmony/auth/tests/javax/security/auth/kerberos/KerberosTicketTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/branches/java6/modules/auth/src/test/java/common/org/apache/harmony/auth/tests/javax/security/auth/kerberos/KerberosTicketTest.java?view=diff&rev=565626&r1=565625&r2=565626
==============================================================================
--- harmony/enhanced/classlib/branches/java6/modules/auth/src/test/java/common/org/apache/harmony/auth/tests/javax/security/auth/kerberos/KerberosTicketTest.java (original)
+++ harmony/enhanced/classlib/branches/java6/modules/auth/src/test/java/common/org/apache/harmony/auth/tests/javax/security/auth/kerberos/KerberosTicketTest.java Mon Aug 13 22:25:26 2007
@@ -23,6 +23,7 @@
import java.util.Date;
import javax.crypto.SecretKey;
+import javax.security.auth.DestroyFailedException;
import javax.security.auth.RefreshFailedException;
import javax.security.auth.kerberos.KerberosKey;
import javax.security.auth.kerberos.KerberosPrincipal;
@@ -519,6 +520,48 @@
}
// TODO test: ticket refreshing
+ }
+
+ /**
+ * @tests javax.security.auth.kerberos.KerberosTicket#equals(java.lang.Object)
+ */
+ public void test_equals() throws Exception {
+ KerberosTicket krbTicket1 = new KerberosTicket(ticket, pClient,
+ pServer, sessionKey, KEY_TYPE, flags, authTime, startTime,
+ endTime, renewTill, addesses);
+ KerberosTicket krbTicket2 = new KerberosTicket(ticket, pClient,
+ pServer, sessionKey, KEY_TYPE, flags, authTime, startTime,
+ endTime, renewTill, addesses);
+ KerberosTicket krbTicket3 = new KerberosTicket(ticket, pClient,
+ pServer, sessionKey, KEY_TYPE, new boolean[] { true, false },
+ authTime, startTime, endTime, renewTill, addesses);
+ assertEquals("krbTicket1 and krbTicket2 should be equivalent ",
+ krbTicket1, krbTicket2);
+ assertFalse("krbTicket1 and krbTicket3 sholudn't be equivalent ",
+ krbTicket1.equals(krbTicket3));
+ try {
+ krbTicket2.destroy();
+ } catch (DestroyFailedException e) {
+ fail("krbTicket2 destroy failed");
+ }
+ assertFalse("Destroyed krbTicket sholudn't be equivalent ", krbTicket1
+ .equals(krbTicket2));
+ }
+
+ /**
+ * @tests javax.security.auth.kerberos.KerberosTicket#hashCode()
+ */
+ public void test_hashCode() {
+ KerberosTicket krbTicket1 = new KerberosTicket(ticket, pClient,
+ pServer, sessionKey, KEY_TYPE, flags, authTime, startTime,
+ endTime, renewTill, addesses);
+ KerberosTicket krbTicket2 = new KerberosTicket(ticket, pClient,
+ pServer, sessionKey, KEY_TYPE, flags, authTime, startTime,
+ endTime, renewTill, addesses);
+ assertEquals("krbTicket1 and krbTicket2 should be equivalent",
+ krbTicket1, krbTicket2);
+ assertEquals("hashCode should be equivalent", krbTicket1.hashCode(),
+ krbTicket2.hashCode());
}
// Hands-created ticket encoding: