public boolean equals(Object obj) {
if (!(obj instanceof CertificateChain))
return false;
if (certificates == null)
return false;
CertificateChain chain = (CertificateChain) obj;
if((signingTime == null ? chain.getSigningTime() != null : !signingTime.equals(chain.getSigningTime())))
return false;
if (trusted != chain.isTrusted() || (certChain == null ? chain.getChain() != null : !certChain.equals(chain.getChain())))
return false;
Certificate[] otherCerts = chain.getCertificates();
if (otherCerts == null || certificates.length != otherCerts.length)
return false;
for (int i = 0; i < certificates.length; i++)
if (!certificates[i].equals(otherCerts[i]))
return false;