    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}