001package org.apache.commons.ssl.asn1;
002
003import java.io.IOException;
004
005public abstract class ASN1Object
006    extends DERObject {
007    /**
008     * Create a base ASN.1 object from a byte stream.
009     *
010     * @param data the byte stream to parse.
011     * @return the base ASN.1 object represented by the byte stream.
012     * @throws IOException if there is a problem parsing the data.
013     */
014    public static ASN1Object fromByteArray(byte[] data)
015        throws IOException {
016        ASN1InputStream aIn = new ASN1InputStream(data);
017
018        return (ASN1Object) aIn.readObject();
019    }
020
021    public final boolean equals(Object o) {
022        if (this == o) {
023            return true;
024        }
025
026        return (o instanceof DEREncodable) && asn1Equals(((DEREncodable) o).getDERObject());
027    }
028
029    public abstract int hashCode();
030
031    abstract void encode(DEROutputStream out) throws IOException;
032
033    abstract boolean asn1Equals(DERObject o);
034}