diff options
Diffstat (limited to 'base/util/src/netscape/security/x509/GeneralSubtrees.java')
-rw-r--r-- | base/util/src/netscape/security/x509/GeneralSubtrees.java | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/base/util/src/netscape/security/x509/GeneralSubtrees.java b/base/util/src/netscape/security/x509/GeneralSubtrees.java new file mode 100644 index 000000000..37097ca71 --- /dev/null +++ b/base/util/src/netscape/security/x509/GeneralSubtrees.java @@ -0,0 +1,106 @@ +// --- BEGIN COPYRIGHT BLOCK --- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; version 2 of the License. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this program; if not, write to the Free Software Foundation, Inc., +// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +// +// (C) 2007 Red Hat, Inc. +// All rights reserved. +// --- END COPYRIGHT BLOCK --- +package netscape.security.x509; + +import java.io.IOException; +import java.util.Enumeration; +import java.util.Vector; + +import netscape.security.util.DerOutputStream; +import netscape.security.util.DerValue; +import netscape.security.util.PrettyPrintFormat; + +/** + * Represent the GeneralSubtrees ASN.1 object. + * + * @version 1.4 + * + * @author Amit Kapoor + * @author Hemma Prafullchandra + */ +public class GeneralSubtrees { + private Vector<GeneralSubtree> trees; + private PrettyPrintFormat pp = new PrettyPrintFormat(":"); + + /** + * The default constructor for the class. + * + * @param trees the sequence of GeneralSubtree. + */ + public GeneralSubtrees(Vector<GeneralSubtree> trees) { + this.trees = trees; + } + + /** + * Create the object from the passed DER encoded form. + * + * @param val the DER encoded form of the same. + */ + public GeneralSubtrees(DerValue val) throws IOException { + trees = new Vector<GeneralSubtree>(1, 1); + if (val.tag != DerValue.tag_Sequence) { + throw new IOException("Invalid encoding of GeneralSubtrees."); + } + while (val.data.available() != 0) { + DerValue opt = val.data.getDerValue(); + GeneralSubtree tree = new GeneralSubtree(opt); + trees.addElement(tree); + } + } + + /** + * Return a printable string of the GeneralSubtree. + */ + public String toString() { + String s = " GeneralSubtrees:\n" + trees.toString() + + "\n"; + + return (s); + } + + public String toPrint(int indent) { + + String s = ""; + GeneralSubtree element; + + for (Enumeration<GeneralSubtree> e = trees.elements(); e.hasMoreElements();) { + element = (GeneralSubtree) e.nextElement(); + s = s + pp.indent(indent + 4) + element.toPrint(indent) + "\n"; + } + + return (s); + } + + /** + * Encode the GeneralSubtrees. + * + * @param out the DerOutputStrean to encode this object to. + */ + public void encode(DerOutputStream out) throws IOException { + DerOutputStream seq = new DerOutputStream(); + + for (int i = 0; i < trees.size(); i++) { + ((GeneralSubtree) trees.elementAt(i)).encode(seq); + } + out.write(DerValue.tag_Sequence, seq); + } + + public Vector<GeneralSubtree> getSubtrees() { + return trees; + } +} |