package java.security.cert;
import java.security.InvalidKeyException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.PublicKey;
import java.security.SignatureException;
public abstract class Certificate extends Object
{
private String type;
protected Certificate(String type)
{
this.type = type;
}
public boolean equals(Object other)
{
if ( !(other instanceof Certificate) )
return false;
if ( other == this )
return true;
try
{
byte[] enc1 = getEncoded();
byte[] enc2 = ((Certificate)other).getEncoded();
return MessageDigest.isEqual(enc1, enc2);
}
catch (CertificateEncodingException e)
{
return false;
}
}
public final String getType()
{
return type;
}
// XXX
public int hashCode()
{
try
{
byte[] enc1 = getEncoded();
int hc = 0;
for (int i = 0; i < enc1.length; i++)
{
hc += enc1[i];
}
return hc;
}
catch (CertificateEncodingException e)
{
return 0;
}
}
public abstract byte[] getEncoded()
throws CertificateEncodingException;
public abstract PublicKey getPublicKey();
public abstract String toString();
public abstract void verify(PublicKey key)
throws CertificateException, NoSuchAlgorithmException,
InvalidKeyException, NoSuchProviderException, SignatureException;
public abstract void verify(PublicKey key, String sigProvider)
throws CertificateException, NoSuchAlgorithmException,
InvalidKeyException, NoSuchProviderException, SignatureException;
}