1package org.bouncycastle.asn1; 2 3import java.io.IOException; 4import java.io.OutputStream; 5 6/** 7 * A class which writes indefinite and definite length objects, 8 */ 9public class BEROutputStream 10 extends DEROutputStream 11{ 12 /** 13 * Base constructor. 14 * 15 * @param os target output stream. 16 */ 17 public BEROutputStream( 18 OutputStream os) 19 { 20 super(os); 21 } 22 23 /** 24 * Write out an ASN.1 object. 25 * 26 * @param obj the object to be encoded. 27 * @throws IOException if there is an issue on encoding or output of the object. 28 */ 29 public void writeObject( 30 Object obj) 31 throws IOException 32 { 33 if (obj == null) 34 { 35 writeNull(); 36 } 37 else if (obj instanceof ASN1Primitive) 38 { 39 ((ASN1Primitive)obj).encode(this); 40 } 41 else if (obj instanceof ASN1Encodable) 42 { 43 ((ASN1Encodable)obj).toASN1Primitive().encode(this); 44 } 45 else 46 { 47 throw new IOException("object not BEREncodable"); 48 } 49 } 50} 51