package org.bouncycastle.asn1;

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

Class representing the DER-type External
/** * Class representing the DER-type External */
public class DERExternal extends ASN1External {
Construct a DER EXTERNAL object, the input encoding vector must have exactly two elements on it.

Acceptable input formats are:

Throws:
/** * Construct a DER EXTERNAL object, the input encoding vector must have exactly two elements on it. * <p> * Acceptable input formats are: * <ul> * <li> {@link ASN1ObjectIdentifier} + data {@link DERTaggedObject} (direct reference form)</li> * <li> {@link ASN1Integer} + data {@link DERTaggedObject} (indirect reference form)</li> * <li> Anything but {@link DERTaggedObject} + data {@link DERTaggedObject} (data value form)</li> * </ul> * * @throws IllegalArgumentException if input size is wrong, or */
public DERExternal(ASN1EncodableVector vector) { super(vector); }
Creates a new instance of DERExternal See X.690 for more informations about the meaning of these parameters
Params:
  • directReference – The direct reference or null if not set.
  • indirectReference – The indirect reference or null if not set.
  • dataValueDescriptor – The data value descriptor or null if not set.
  • externalData – The external data in its encoded form.
/** * Creates a new instance of DERExternal * See X.690 for more informations about the meaning of these parameters * @param directReference The direct reference or <code>null</code> if not set. * @param indirectReference The indirect reference or <code>null</code> if not set. * @param dataValueDescriptor The data value descriptor or <code>null</code> if not set. * @param externalData The external data in its encoded form. */
public DERExternal(ASN1ObjectIdentifier directReference, ASN1Integer indirectReference, ASN1Primitive dataValueDescriptor, DERTaggedObject externalData) { this(directReference, indirectReference, dataValueDescriptor, externalData.getTagNo(), externalData.toASN1Primitive()); }
Creates a new instance of DERExternal. See X.690 for more informations about the meaning of these parameters
Params:
  • directReference – The direct reference or null if not set.
  • indirectReference – The indirect reference or null if not set.
  • dataValueDescriptor – The data value descriptor or null if not set.
  • encoding – The encoding to be used for the external data
  • externalData – The external data
/** * Creates a new instance of DERExternal. * See X.690 for more informations about the meaning of these parameters * @param directReference The direct reference or <code>null</code> if not set. * @param indirectReference The indirect reference or <code>null</code> if not set. * @param dataValueDescriptor The data value descriptor or <code>null</code> if not set. * @param encoding The encoding to be used for the external data * @param externalData The external data */
public DERExternal(ASN1ObjectIdentifier directReference, ASN1Integer indirectReference, ASN1Primitive dataValueDescriptor, int encoding, ASN1Primitive externalData) { super(directReference, indirectReference, dataValueDescriptor, encoding, externalData); } int encodedLength() throws IOException { return this.getEncoded().length; } /* (non-Javadoc) * @see org.bouncycastle.asn1.ASN1Primitive#encode(org.bouncycastle.asn1.DEROutputStream) */ void encode(ASN1OutputStream out) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); if (directReference != null) { baos.write(directReference.getEncoded(ASN1Encoding.DER)); } if (indirectReference != null) { baos.write(indirectReference.getEncoded(ASN1Encoding.DER)); } if (dataValueDescriptor != null) { baos.write(dataValueDescriptor.getEncoded(ASN1Encoding.DER)); } DERTaggedObject obj = new DERTaggedObject(true, encoding, externalContent); baos.write(obj.getEncoded(ASN1Encoding.DER)); out.writeEncoded(BERTags.CONSTRUCTED, BERTags.EXTERNAL, baos.toByteArray()); } }