package org.bouncycastle.asn1;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

import org.bouncycastle.util.Encodable;

Base class for defining an ASN.1 object.
/** * Base class for defining an ASN.1 object. */
public abstract class ASN1Object implements ASN1Encodable, Encodable {
Return the default BER or DER encoding for this object.
Throws:
Returns:BER/DER byte encoded object.
/** * Return the default BER or DER encoding for this object. * * @return BER/DER byte encoded object. * @throws java.io.IOException on encoding error. */
public byte[] getEncoded() throws IOException { ByteArrayOutputStream bOut = new ByteArrayOutputStream(); ASN1OutputStream aOut = new ASN1OutputStream(bOut); aOut.writeObject(this); return bOut.toByteArray(); }
Return either the default for "BER" or a DER encoding if "DER" is specified.
Params:
  • encoding – name of encoding to use.
Throws:
Returns:byte encoded object.
/** * Return either the default for "BER" or a DER encoding if "DER" is specified. * * @param encoding name of encoding to use. * @return byte encoded object. * @throws IOException on encoding error. */
public byte[] getEncoded( String encoding) throws IOException { if (encoding.equals(ASN1Encoding.DER)) { ByteArrayOutputStream bOut = new ByteArrayOutputStream(); DEROutputStream dOut = new DEROutputStream(bOut); dOut.writeObject(this); return bOut.toByteArray(); } else if (encoding.equals(ASN1Encoding.DL)) { ByteArrayOutputStream bOut = new ByteArrayOutputStream(); DLOutputStream dOut = new DLOutputStream(bOut); dOut.writeObject(this); return bOut.toByteArray(); } return this.getEncoded(); } public int hashCode() { return this.toASN1Primitive().hashCode(); } public boolean equals( Object o) { if (this == o) { return true; } if (!(o instanceof ASN1Encodable)) { return false; } ASN1Encodable other = (ASN1Encodable)o; return this.toASN1Primitive().equals(other.toASN1Primitive()); }
Deprecated:use toASN1Primitive()
Returns:the underlying primitive type.
/** * @deprecated use toASN1Primitive() * @return the underlying primitive type. */
public ASN1Primitive toASN1Object() { return this.toASN1Primitive(); }
Return true if obj is a byte array and represents an object with the given tag value.
Params:
  • obj – object of interest.
  • tagValue – tag value to check for.
Returns: true if obj is a byte encoding starting with the given tag value, false otherwise.
/** * Return true if obj is a byte array and represents an object with the given tag value. * * @param obj object of interest. * @param tagValue tag value to check for. * @return true if obj is a byte encoding starting with the given tag value, false otherwise. */
protected static boolean hasEncodedTagValue(Object obj, int tagValue) { return (obj instanceof byte[]) && ((byte[])obj)[0] == tagValue; }
Method providing a primitive representation of this object suitable for encoding.
Returns:a primitive representation of this object.
/** * Method providing a primitive representation of this object suitable for encoding. * @return a primitive representation of this object. */
public abstract ASN1Primitive toASN1Primitive(); }