package org.bouncycastle.asn1.x509;

import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.DEREncodable;
import org.bouncycastle.asn1.DERObjectIdentifier;
import org.bouncycastle.asn1.DEROctetString;

import java.io.IOException;
import java.util.Hashtable;
import java.util.Vector;

Generator for X.509 extensions
/** * Generator for X.509 extensions */
public class X509ExtensionsGenerator { private Hashtable extensions = new Hashtable(); private Vector extOrdering = new Vector();
Reset the generator
/** * Reset the generator */
public void reset() { extensions = new Hashtable(); extOrdering = new Vector(); }
Add an extension with the given oid and the passed in value to be included in the OCTET STRING associated with the extension.
Params:
  • oid – OID for the extension.
  • critical – true if critical, false otherwise.
  • value – the ASN.1 object to be included in the extension.
/** * Add an extension with the given oid and the passed in value to be included * in the OCTET STRING associated with the extension. * * @param oid OID for the extension. * @param critical true if critical, false otherwise. * @param value the ASN.1 object to be included in the extension. */
public void addExtension( DERObjectIdentifier oid, boolean critical, DEREncodable value) { try { this.addExtension(oid, critical, value.getDERObject().getEncoded(ASN1Encodable.DER)); } catch (IOException e) { throw new IllegalArgumentException("error encoding value: " + e); } }
Add an extension with the given oid and the passed in byte array to be wrapped in the OCTET STRING associated with the extension.
Params:
  • oid – OID for the extension.
  • critical – true if critical, false otherwise.
  • value – the byte array to be wrapped.
/** * Add an extension with the given oid and the passed in byte array to be wrapped in the * OCTET STRING associated with the extension. * * @param oid OID for the extension. * @param critical true if critical, false otherwise. * @param value the byte array to be wrapped. */
public void addExtension( DERObjectIdentifier oid, boolean critical, byte[] value) { if (extensions.containsKey(oid)) { throw new IllegalArgumentException("extension " + oid + " already added"); } extOrdering.addElement(oid); extensions.put(oid, new X509Extension(critical, new DEROctetString(value))); }
Return true if there are no extension present in this generator.
Returns:true if empty, false otherwise
/** * Return true if there are no extension present in this generator. * * @return true if empty, false otherwise */
public boolean isEmpty() { return extOrdering.isEmpty(); }
Generate an X509Extensions object based on the current state of the generator.
Returns: an X09Extensions object.
/** * Generate an X509Extensions object based on the current state of the generator. * * @return an X09Extensions object. */
public X509Extensions generate() { return new X509Extensions(extOrdering, extensions); } }