com.lowagie.bc.asn1.ASN1Encodable Maven / Gradle / Ivy
package com.lowagie.bc.asn1;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
/**
* Abstract Syntax Notation One (ASN.1) is a formal language for abstractly describing messages to be exchanged between distributed computer systems.
*/
public abstract class ASN1Encodable
implements DEREncodable
{
/**
* Encodes the ASN1Encodable object.
* @return an encoded bytearray
* @throws IOException
*/
public byte[] getEncoded()
throws IOException
{
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
ASN1OutputStream aOut = new ASN1OutputStream(bOut);
aOut.writeObject(this);
return bOut.toByteArray();
}
/**
* @see java.lang.Object#hashCode()
*/
public int hashCode()
{
return this.getDERObject().hashCode();
}
/**
* @see java.lang.Object#equals(java.lang.Object)
*/
public boolean equals(
Object o)
{
if ((o == null) || !(o instanceof DEREncodable))
{
return false;
}
DEREncodable other = (DEREncodable)o;
return this.getDERObject().equals(other.getDERObject());
}
/**
* @see com.lowagie.bc.asn1.DEREncodable#getDERObject()
*/
public DERObject getDERObject()
{
return this.toASN1Object();
}
/**
* Abstract method that returns the object as an ASN1 object.
* @return an encodable object
*/
public abstract DERObject toASN1Object();
}