summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--base/ca/src/com/netscape/ca/CMSCRLExtensions.java12
-rw-r--r--base/ca/src/com/netscape/ca/CRLIssuingPoint.java35
-rw-r--r--base/common/src/com/netscape/certsrv/common/NameValuePairs.java8
-rw-r--r--base/common/src/com/netscape/cmscore/base/SimpleProperties.java26
-rw-r--r--base/common/src/com/netscape/cmscore/logging/Auditor.java56
-rw-r--r--base/common/src/com/netscape/cmscore/realm/ACL.java6
-rw-r--r--base/common/src/com/netscape/cmscore/realm/PKIJNDIRealm.java3
-rw-r--r--base/common/src/com/netscape/cmscore/request/ExtDataHashtable.java10
-rw-r--r--base/common/test/com/netscape/cmscore/request/RequestTest.java30
-rw-r--r--base/java-tools/src/com/netscape/cmstools/CMCResponse.java4
-rw-r--r--base/java-tools/src/com/netscape/cmstools/PrettyPrintCert.java9
-rw-r--r--base/silent/src/com/netscape/pkisilent/common/CMSProperties.java25
-rw-r--r--base/util/src/netscape/security/pkcs/PKCS10Attributes.java26
-rw-r--r--base/util/src/netscape/security/provider/DSAPrivateKey.java26
-rw-r--r--base/util/src/netscape/security/provider/DSAPublicKey.java26
-rw-r--r--base/util/src/netscape/security/provider/RSAPublicKey.java32
-rw-r--r--base/util/src/netscape/security/x509/AlgIdDSA.java42
-rwxr-xr-xbase/util/src/netscape/security/x509/CRLExtensions.java26
-rw-r--r--base/util/src/netscape/security/x509/CertificateExtensions.java26
-rw-r--r--base/util/src/netscape/security/x509/Extensions.java26
20 files changed, 374 insertions, 80 deletions
diff --git a/base/ca/src/com/netscape/ca/CMSCRLExtensions.java b/base/ca/src/com/netscape/ca/CMSCRLExtensions.java
index 507faa8e8..11f810af2 100644
--- a/base/ca/src/com/netscape/ca/CMSCRLExtensions.java
+++ b/base/ca/src/com/netscape/ca/CMSCRLExtensions.java
@@ -21,6 +21,7 @@ import java.io.IOException;
import java.security.cert.CertificateException;
import java.util.Enumeration;
import java.util.Hashtable;
+import java.util.Map;
import java.util.StringTokenizer;
import java.util.Vector;
@@ -581,8 +582,9 @@ public class CMSCRLExtensions implements ICMSCRLExtensions {
ip = ca.getCRLIssuingPoint(ipId);
}
- for (String name : nvp.keySet()) {
- String value = nvp.get(name);
+ for (Map.Entry<String,String> entry : nvp.entrySet()) {
+ String name = entry.getKey();
+ String value = entry.getValue();
if (name.equals(PROP_ENABLE)) {
if (!(value.equals(Constants.TRUE) || value.equals(Constants.FALSE))) {
@@ -618,8 +620,10 @@ public class CMSCRLExtensions implements ICMSCRLExtensions {
boolean crlCACertsOnly = false;
boolean issuingDistPointExtEnabled = false;
-
- CMSCRLExtensions cmsCRLExtensions = (CMSCRLExtensions) ip.getCRLExtensions();
+ CMSCRLExtensions cmsCRLExtensions = null;
+ if (ip != null) {
+ cmsCRLExtensions = (CMSCRLExtensions) ip.getCRLExtensions();
+ }
if (cmsCRLExtensions != null) {
issuingDistPointExtEnabled =
cmsCRLExtensions.isCRLExtensionEnabled(IssuingDistributionPointExtension.NAME);
diff --git a/base/ca/src/com/netscape/ca/CRLIssuingPoint.java b/base/ca/src/com/netscape/ca/CRLIssuingPoint.java
index 5dd823737..46891fd6b 100644
--- a/base/ca/src/com/netscape/ca/CRLIssuingPoint.java
+++ b/base/ca/src/com/netscape/ca/CRLIssuingPoint.java
@@ -25,6 +25,7 @@ import java.util.Date;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.LinkedHashSet;
+import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TimeZone;
@@ -930,8 +931,9 @@ public class CRLIssuingPoint implements ICRLIssuingPoint, Runnable {
boolean noRestart = true;
boolean modifiedSchedule = false;
- for (String name : params.keySet()) {
- String value = params.get(name);
+ for (Map.Entry<String, String> entry : params.entrySet()) {
+ String name = entry.getKey();
+ String value = entry.getValue();
// -- Update Schema --
if (name.equals(Constants.PR_ENABLE_CRL)) {
@@ -2707,7 +2709,7 @@ public class CRLIssuingPoint implements ICRLIssuingPoint, Runnable {
long totalTime = 0;
long crlTime = 0;
long deltaTime = 0;
- String splitTimes = " (";
+ StringBuilder splitTimes = new StringBuilder(" (");
for (int i = 0; i < mSplits.length; i++) {
totalTime += mSplits[i];
if (i > 0 && i < 5) {
@@ -2716,13 +2718,10 @@ public class CRLIssuingPoint implements ICRLIssuingPoint, Runnable {
crlTime += mSplits[i];
}
if (i > 0)
- splitTimes += ",";
- splitTimes += Long.toString(mSplits[i]);
+ splitTimes.append(",");
+ splitTimes.append(mSplits[i]);
}
- splitTimes +=
- ","
- + Long.toString(deltaTime) + "," + Long.toString(crlTime) + ","
- + Long.toString(totalTime) + ")";
+ splitTimes.append(String.format(",%d,%d,%d)",deltaTime,crlTime,totalTime));
mLogger.log(ILogger.EV_AUDIT, ILogger.S_OTHER,
AuditFormat.LEVEL,
CMS.getLogMessage("CMSCORE_CA_CA_CRL_UPDATED"),
@@ -3095,14 +3094,12 @@ class CertRecProcessor implements IElementProcessor {
return includeCert;
}
boolean reasonMatch = false;
- if (reason != null) {
- if (mOnlySomeReasons != null) {
- reasonMatch = mOnlySomeReasons.get(reasonIndex);
- if (reasonMatch != true) {
- includeCert = false;
- } else {
- CMS.debug("onlySomeReasons match! reason: " + reason);
- }
+ if (mOnlySomeReasons != null) {
+ reasonMatch = mOnlySomeReasons.get(reasonIndex);
+ if (reasonMatch != true) {
+ includeCert = false;
+ } else {
+ CMS.debug("onlySomeReasons match! reason: " + reason);
}
}
@@ -3150,9 +3147,7 @@ class CertRecProcessor implements IElementProcessor {
if (includeCert == true) {
mCRLCerts.put(serialNumber, newRevokedCert);
- if (serialNumber != null) {
- CMS.debug("Putting certificate serial: 0x" + serialNumber.toString(16) + " into CRL hashtable");
- }
+ CMS.debug("Putting certificate serial: 0x" + serialNumber.toString(16) + " into CRL hashtable");
}
} catch (EBaseException e) {
CMS.debug(
diff --git a/base/common/src/com/netscape/certsrv/common/NameValuePairs.java b/base/common/src/com/netscape/certsrv/common/NameValuePairs.java
index 0f95ad2e3..30491cdd0 100644
--- a/base/common/src/com/netscape/certsrv/common/NameValuePairs.java
+++ b/base/common/src/com/netscape/certsrv/common/NameValuePairs.java
@@ -18,6 +18,7 @@
package com.netscape.certsrv.common;
import java.util.LinkedHashMap;
+import java.util.Map;
import java.util.StringTokenizer;
/**
@@ -43,12 +44,11 @@ public class NameValuePairs extends LinkedHashMap<String, String> {
* @return string representation
*/
public String toString() {
- StringBuffer buf = new StringBuffer();
+ StringBuilder buf = new StringBuilder();
- for (String name : keySet()) {
- String value = get(name);
+ for (Map.Entry<String, String> entry : entrySet()) {
- buf.append(name + "=" + value);
+ buf.append(String.format("%s=%s", entry.getKey(), entry.getValue()));
buf.append("\n");
}
diff --git a/base/common/src/com/netscape/cmscore/base/SimpleProperties.java b/base/common/src/com/netscape/cmscore/base/SimpleProperties.java
index 527b4f694..c1ec27a8c 100644
--- a/base/common/src/com/netscape/cmscore/base/SimpleProperties.java
+++ b/base/common/src/com/netscape/cmscore/base/SimpleProperties.java
@@ -453,4 +453,30 @@ public class SimpleProperties extends Hashtable<String, String> {
h.put(key, get(key));
}
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + ((defaults == null) ? 0 : defaults.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ SimpleProperties other = (SimpleProperties) obj;
+ if (defaults == null) {
+ if (other.defaults != null)
+ return false;
+ } else if (!defaults.equals(other.defaults))
+ return false;
+ return true;
+ }
+
}
diff --git a/base/common/src/com/netscape/cmscore/logging/Auditor.java b/base/common/src/com/netscape/cmscore/logging/Auditor.java
index eef4ad14b..f0bcb5bee 100644
--- a/base/common/src/com/netscape/cmscore/logging/Auditor.java
+++ b/base/common/src/com/netscape/cmscore/logging/Auditor.java
@@ -18,9 +18,7 @@
package com.netscape.cmscore.logging;
-import java.util.Collection;
import java.util.Enumeration;
-import java.util.Iterator;
import java.util.Map;
import com.netscape.certsrv.apps.CMS;
@@ -98,62 +96,62 @@ public class Auditor implements IAuditor {
// if no signed audit object exists, bail
if (signedAuditLogger == null) return null;
-
- String parameters = SIGNED_AUDIT_EMPTY_NAME_VALUE_PAIR;
+ StringBuilder parameters = new StringBuilder();
// always identify the scope of the request
if (scope != null) {
- parameters = SIGNED_AUDIT_SCOPE
+ parameters.append(SIGNED_AUDIT_SCOPE
+ SIGNED_AUDIT_NAME_VALUE_DELIMITER
- + scope;
+ + scope);
+ } else {
+ parameters.append(SIGNED_AUDIT_EMPTY_NAME_VALUE_PAIR);
}
// identify the operation type of the request
if (type != null) {
- parameters += SIGNED_AUDIT_NAME_VALUE_PAIRS_DELIMITER;
+ parameters.append(SIGNED_AUDIT_NAME_VALUE_PAIRS_DELIMITER);
- parameters += SIGNED_AUDIT_OPERATION
+ parameters.append(SIGNED_AUDIT_OPERATION
+ SIGNED_AUDIT_NAME_VALUE_DELIMITER
- + type;
+ + type);
}
// identify the resource type of the request
if (id != null) {
- parameters += SIGNED_AUDIT_NAME_VALUE_PAIRS_DELIMITER;
+ parameters.append(SIGNED_AUDIT_NAME_VALUE_PAIRS_DELIMITER);
- parameters += SIGNED_AUDIT_RESOURCE
+ parameters.append(SIGNED_AUDIT_RESOURCE
+ SIGNED_AUDIT_NAME_VALUE_DELIMITER
- + id;
+ + id);
}
- if (params == null) return parameters;
+ if (params == null) return parameters.toString();
// identify any remaining request parameters
- Collection<String> names = params.keySet();
- for (Iterator<String> i = names.iterator(); i.hasNext(); ) {
- String name = i.next();
+ for (Map.Entry<String,String> entry : params.entrySet() ) {
+ String name = entry.getKey();
// skip "RULENAME" parameter
if (name.equals(SIGNED_AUDIT_RULENAME)) continue;
- parameters += SIGNED_AUDIT_NAME_VALUE_PAIRS_DELIMITER;
+ parameters.append(SIGNED_AUDIT_NAME_VALUE_PAIRS_DELIMITER);
- String value = params.get(name);
+ String value = entry.getValue();
if (value == null) {
- parameters += name
+ parameters.append(name
+ SIGNED_AUDIT_NAME_VALUE_DELIMITER
- + ILogger.SIGNED_AUDIT_EMPTY_VALUE;
+ + ILogger.SIGNED_AUDIT_EMPTY_VALUE);
continue;
}
value = value.trim();
if (value.equals("")) {
- parameters += name
+ parameters.append(name
+ SIGNED_AUDIT_NAME_VALUE_DELIMITER
- + ILogger.SIGNED_AUDIT_EMPTY_VALUE;
+ + ILogger.SIGNED_AUDIT_EMPTY_VALUE);
continue;
}
@@ -182,19 +180,19 @@ public class Auditor implements IAuditor {
name.equals(Constants.PR_TOKEN_PASSWD)) {
// hide password value
- parameters += name
- + SIGNED_AUDIT_NAME_VALUE_DELIMITER
- + SIGNED_AUDIT_PASSWORD_VALUE;
+ parameters.append(name
+ + SIGNED_AUDIT_NAME_VALUE_DELIMITER
+ + SIGNED_AUDIT_PASSWORD_VALUE);
} else {
// process normally
- parameters += name
- + SIGNED_AUDIT_NAME_VALUE_DELIMITER
- + value;
+ parameters.append(name
+ + SIGNED_AUDIT_NAME_VALUE_DELIMITER
+ + value);
}
}
- return parameters;
+ return parameters.toString();
}
@Override
diff --git a/base/common/src/com/netscape/cmscore/realm/ACL.java b/base/common/src/com/netscape/cmscore/realm/ACL.java
index 6c06c92c1..13fcdac44 100644
--- a/base/common/src/com/netscape/cmscore/realm/ACL.java
+++ b/base/common/src/com/netscape/cmscore/realm/ACL.java
@@ -150,15 +150,15 @@ public class ACL {
* <resource name>[<ACLEntry1>,<ACLEntry 2>,...<ACLEntry N>]
*/
public String toString() {
- String entries = "";
+ StringBuilder entries = new StringBuilder();
Enumeration<ACLEntry> e = entries();
for (; e.hasMoreElements();) {
ACLEntry entry = e.nextElement();
- entries += entry.toString();
+ entries.append(entry);
if (e.hasMoreElements())
- entries += ",";
+ entries.append(",");
}
return getName() + "[" + entries + "]";
}
diff --git a/base/common/src/com/netscape/cmscore/realm/PKIJNDIRealm.java b/base/common/src/com/netscape/cmscore/realm/PKIJNDIRealm.java
index abd27fddf..0576bcf58 100644
--- a/base/common/src/com/netscape/cmscore/realm/PKIJNDIRealm.java
+++ b/base/common/src/com/netscape/cmscore/realm/PKIJNDIRealm.java
@@ -869,9 +869,6 @@ public class PKIJNDIRealm extends JNDIRealm {
private synchronized void loadAuthzProperties(Context context) {
if (authzProperties == null && context != null) {
- ClassLoader loader = this.getClass().getClassLoader();
- if (loader == null)
- loader = ClassLoader.getSystemClassLoader();
InputStream inputStream = context.getServletContext().getResourceAsStream(PROP_AUTH_FILE_PATH);
diff --git a/base/common/src/com/netscape/cmscore/request/ExtDataHashtable.java b/base/common/src/com/netscape/cmscore/request/ExtDataHashtable.java
index b7bd43793..317b8e56c 100644
--- a/base/common/src/com/netscape/cmscore/request/ExtDataHashtable.java
+++ b/base/common/src/com/netscape/cmscore/request/ExtDataHashtable.java
@@ -1,9 +1,7 @@
package com.netscape.cmscore.request;
import java.util.Hashtable;
-import java.util.Iterator;
import java.util.Map;
-import java.util.Set;
/**
* Subclass of Hashtable returned by IRequest.getExtDataInHashtable. Its
@@ -56,14 +54,6 @@ public class ExtDataHashtable<V> extends Hashtable<String, V> {
return super.put(oKey.toLowerCase(), val);
}
- public void putAll(Map<? extends String, ? extends V> map) {
- Set<? extends String> keys = map.keySet();
- for (Iterator<? extends String> i = keys.iterator(); i.hasNext();) {
- Object key = i.next();
- put((String) key, map.get(key));
- }
- }
-
public V remove(Object o) {
if (o instanceof String) {
String key = (String) o;
diff --git a/base/common/test/com/netscape/cmscore/request/RequestTest.java b/base/common/test/com/netscape/cmscore/request/RequestTest.java
index 0e98ab084..7a655fd08 100644
--- a/base/common/test/com/netscape/cmscore/request/RequestTest.java
+++ b/base/common/test/com/netscape/cmscore/request/RequestTest.java
@@ -631,6 +631,36 @@ public class RequestTest extends CMSBaseTestCase {
getEncodedCalled = true;
return new byte[] {};
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + getOuterType().hashCode();
+ result = prime * result + (getEncodedCalled ? 1231 : 1237);
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ X509CertInfoStub other = (X509CertInfoStub) obj;
+ if (!getOuterType().equals(other.getOuterType()))
+ return false;
+ if (getEncodedCalled != other.getEncodedCalled)
+ return false;
+ return true;
+ }
+
+ private RequestTest getOuterType() {
+ return RequestTest.this;
+ }
+
}
class RevokedCertImplStub extends RevokedCertImpl {
diff --git a/base/java-tools/src/com/netscape/cmstools/CMCResponse.java b/base/java-tools/src/com/netscape/cmstools/CMCResponse.java
index eae0b7303..50db485a4 100644
--- a/base/java-tools/src/com/netscape/cmstools/CMCResponse.java
+++ b/base/java-tools/src/com/netscape/cmstools/CMCResponse.java
@@ -122,10 +122,10 @@ public class CMCResponse {
ASN1Util.encode(sts.elementAt(j)));
SEQUENCE seq = cst.getBodyList();
- String s = " BodyList: ";
+ StringBuilder s = new StringBuilder(" BodyList: ");
for (int k = 0; k < seq.size(); k++) {
INTEGER n = (INTEGER) seq.elementAt(k);
- s = s + n.toString() + " ";
+ s.append(n.toString() + " ");
}
System.out.println(s);
int st = cst.getStatus();
diff --git a/base/java-tools/src/com/netscape/cmstools/PrettyPrintCert.java b/base/java-tools/src/com/netscape/cmstools/PrettyPrintCert.java
index 90d1eff9e..100304cfe 100644
--- a/base/java-tools/src/com/netscape/cmstools/PrettyPrintCert.java
+++ b/base/java-tools/src/com/netscape/cmstools/PrettyPrintCert.java
@@ -86,7 +86,7 @@ public class PrettyPrintCert {
X509CertImpl cert = null;
Locale aLocale = null;
CertPrettyPrint certDetails = null;
- String pp = "";
+ StringBuilder pp = new StringBuilder();
FileOutputStream outputCert = null;
boolean mSimpleInfo = false;
String inputfile = null;
@@ -194,11 +194,10 @@ public class PrettyPrintCert {
X500Name dname = (X500Name) csn.get(CertificateSubjectName.DN_NAME);
- pp = "";
RDN[] rdns = dname.getNames();
for (int i = rdns.length - 1; i >= 0; i--) {
- pp = pp + rdns[i] + "\n";
+ pp.append(rdns[i] + "\n");
}
} catch (Exception e) {
@@ -213,7 +212,7 @@ public class PrettyPrintCert {
certDetails = new CertPrettyPrint(cert);
// (9) Convert the CertPrettyPrint() object into a String() object
- pp = certDetails.toString(aLocale);
+ pp.append(certDetails.toString(aLocale));
}
// (10) Finally, "pretty print" the actual certificate to the console
@@ -230,7 +229,7 @@ public class PrettyPrintCert {
}
try {
- outputCert.write(pp.getBytes());
+ outputCert.write(pp.toString().getBytes());
} catch (IOException e) {
System.out.println("PrettyPrintCert: Unexpected error " +
"encountered while attempting to write() " +
diff --git a/base/silent/src/com/netscape/pkisilent/common/CMSProperties.java b/base/silent/src/com/netscape/pkisilent/common/CMSProperties.java
index 16f18500c..5cf513417 100644
--- a/base/silent/src/com/netscape/pkisilent/common/CMSProperties.java
+++ b/base/silent/src/com/netscape/pkisilent/common/CMSProperties.java
@@ -675,4 +675,29 @@ class CMSProperties extends Hashtable<String, String> {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D',
'E', 'F'
};
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + ((defaults == null) ? 0 : defaults.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ CMSProperties other = (CMSProperties) obj;
+ if (defaults == null) {
+ if (other.defaults != null)
+ return false;
+ } else if (!defaults.equals(other.defaults))
+ return false;
+ return true;
+ }
}
diff --git a/base/util/src/netscape/security/pkcs/PKCS10Attributes.java b/base/util/src/netscape/security/pkcs/PKCS10Attributes.java
index d9b463b5f..22a0dce21 100644
--- a/base/util/src/netscape/security/pkcs/PKCS10Attributes.java
+++ b/base/util/src/netscape/security/pkcs/PKCS10Attributes.java
@@ -144,4 +144,30 @@ public class PKCS10Attributes extends Vector<PKCS10Attribute> implements DerEnco
public Enumeration<PKCS10Attribute> getElements() {
return map.elements();
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + ((map == null) ? 0 : map.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ PKCS10Attributes other = (PKCS10Attributes) obj;
+ if (map == null) {
+ if (other.map != null)
+ return false;
+ } else if (!map.equals(other.map))
+ return false;
+ return true;
+ }
+
}
diff --git a/base/util/src/netscape/security/provider/DSAPrivateKey.java b/base/util/src/netscape/security/provider/DSAPrivateKey.java
index 8b64fbf6c..385aa173c 100644
--- a/base/util/src/netscape/security/provider/DSAPrivateKey.java
+++ b/base/util/src/netscape/security/provider/DSAPrivateKey.java
@@ -141,4 +141,30 @@ public final class DSAPrivateKey extends PKCS8Key
throw new InvalidKeyException(e.getMessage());
}
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + ((x == null) ? 0 : x.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ DSAPrivateKey other = (DSAPrivateKey) obj;
+ if (x == null) {
+ if (other.x != null)
+ return false;
+ } else if (!x.equals(other.x))
+ return false;
+ return true;
+ }
+
}
diff --git a/base/util/src/netscape/security/provider/DSAPublicKey.java b/base/util/src/netscape/security/provider/DSAPublicKey.java
index 66c3eb45a..481b9ee7f 100644
--- a/base/util/src/netscape/security/provider/DSAPublicKey.java
+++ b/base/util/src/netscape/security/provider/DSAPublicKey.java
@@ -130,4 +130,30 @@ public final class DSAPublicKey extends X509Key
e.getMessage());
}
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + ((y == null) ? 0 : y.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ DSAPublicKey other = (DSAPublicKey) obj;
+ if (y == null) {
+ if (other.y != null)
+ return false;
+ } else if (!y.equals(other.y))
+ return false;
+ return true;
+ }
+
}
diff --git a/base/util/src/netscape/security/provider/RSAPublicKey.java b/base/util/src/netscape/security/provider/RSAPublicKey.java
index a70d1aeee..40f5583ac 100644
--- a/base/util/src/netscape/security/provider/RSAPublicKey.java
+++ b/base/util/src/netscape/security/provider/RSAPublicKey.java
@@ -149,4 +149,36 @@ public final class RSAPublicKey extends X509Key implements Serializable {
}
}
+ @Override
+ public boolean equals(Object object) {
+
+ if (object == null) {
+ return false;
+ }
+ if (object instanceof RSAPublicKey) {
+ RSAPublicKey rhs = (RSAPublicKey) object;
+ if (this == rhs) {
+ return true;
+ }
+ if (!(bigIntEquals(this.modulus, rhs.modulus) && bigIntEquals(this.publicExponent, rhs.publicExponent))) {
+ return false;
+ }
+ return super.equals(rhs);
+ }
+
+ return false;
+ }
+
+ public boolean bigIntEquals(BigInt x, BigInt y) {
+ if (x == null) {
+ if (y != null) {
+ return false;
+ }
+ } else {
+ if (!x.equals(y)) {
+ return false;
+ }
+ }
+ return true;
+ }
}
diff --git a/base/util/src/netscape/security/x509/AlgIdDSA.java b/base/util/src/netscape/security/x509/AlgIdDSA.java
index a34c5f59f..1f00b0355 100644
--- a/base/util/src/netscape/security/x509/AlgIdDSA.java
+++ b/base/util/src/netscape/security/x509/AlgIdDSA.java
@@ -174,4 +174,46 @@ public final class AlgIdDSA extends AlgorithmId implements DSAParams {
"\n g:\n" + (new BigInt(g)).toString() +
"\n";
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((g == null) ? 0 : g.hashCode());
+ result = prime * result + ((p == null) ? 0 : p.hashCode());
+ result = prime * result + ((q == null) ? 0 : q.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (other == null) {
+ return false;
+ }
+ if (other instanceof AlgIdDSA) {
+ AlgIdDSA rhs = (AlgIdDSA) other;
+ if (this == rhs) {
+ return true;
+ }
+ if (!(bigIntEquals(this.p, rhs.p) && bigIntEquals(this.q, rhs.q) && bigIntEquals(this.g, rhs.g))) {
+ return false;
+ }
+ return super.equals(rhs);
+ }
+ return false;
+ }
+
+ public boolean bigIntEquals(BigInteger x, BigInteger y) {
+ if (x == null) {
+ if (y != null) {
+ return false;
+ }
+ } else {
+ if (!x.equals(y)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
}
diff --git a/base/util/src/netscape/security/x509/CRLExtensions.java b/base/util/src/netscape/security/x509/CRLExtensions.java
index 60a6532ba..9c844cd3d 100755
--- a/base/util/src/netscape/security/x509/CRLExtensions.java
+++ b/base/util/src/netscape/security/x509/CRLExtensions.java
@@ -226,4 +226,30 @@ public class CRLExtensions extends Vector<Extension> {
public Enumeration<Extension> getElements() {
return (map.elements());
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + ((map == null) ? 0 : map.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ CRLExtensions other = (CRLExtensions) obj;
+ if (map == null) {
+ if (other.map != null)
+ return false;
+ } else if (!map.equals(other.map))
+ return false;
+ return true;
+ }
+
}
diff --git a/base/util/src/netscape/security/x509/CertificateExtensions.java b/base/util/src/netscape/security/x509/CertificateExtensions.java
index a8ce5ebee..93be196ab 100644
--- a/base/util/src/netscape/security/x509/CertificateExtensions.java
+++ b/base/util/src/netscape/security/x509/CertificateExtensions.java
@@ -273,4 +273,30 @@ public class CertificateExtensions extends Vector<Extension>
public String getName() {
return (NAME);
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + ((map == null) ? 0 : map.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ CertificateExtensions other = (CertificateExtensions) obj;
+ if (map == null) {
+ if (other.map != null)
+ return false;
+ } else if (!map.equals(other.map))
+ return false;
+ return true;
+ }
+
}
diff --git a/base/util/src/netscape/security/x509/Extensions.java b/base/util/src/netscape/security/x509/Extensions.java
index 3feac9599..109f795e9 100644
--- a/base/util/src/netscape/security/x509/Extensions.java
+++ b/base/util/src/netscape/security/x509/Extensions.java
@@ -223,4 +223,30 @@ public class Extensions extends Vector<Extension>
public String getName() {
return (NAME);
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + ((map == null) ? 0 : map.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Extensions other = (Extensions) obj;
+ if (map == null) {
+ if (other.map != null)
+ return false;
+ } else if (!map.equals(other.map))
+ return false;
+ return true;
+ }
+
}