summaryrefslogtreecommitdiff
path: root/libjava/classpath/java/security/cert/PolicyQualifierInfo.java
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /libjava/classpath/java/security/cert/PolicyQualifierInfo.java
downloadcbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2
cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'libjava/classpath/java/security/cert/PolicyQualifierInfo.java')
-rw-r--r--libjava/classpath/java/security/cert/PolicyQualifierInfo.java169
1 files changed, 169 insertions, 0 deletions
diff --git a/libjava/classpath/java/security/cert/PolicyQualifierInfo.java b/libjava/classpath/java/security/cert/PolicyQualifierInfo.java
new file mode 100644
index 000000000..b53faa935
--- /dev/null
+++ b/libjava/classpath/java/security/cert/PolicyQualifierInfo.java
@@ -0,0 +1,169 @@
+/* PolicyQualifierInfo.java -- policy qualifier info object.
+ Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package java.security.cert;
+
+import gnu.java.io.ASN1ParsingException;
+import gnu.java.security.OID;
+import gnu.java.security.der.DERReader;
+import gnu.java.security.der.DERValue;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+
+/**
+ * The PolicyQualifierInfo X.509 certificate extension.
+ * PolicyQualifierInfo objects are represented by the ASN.1 structure:
+ *
+ * <pre>
+ * PolicyQualifierInfo ::= SEQUENCE {
+ * policyQualifierId PolicyQualifierId,
+ * qualifier ANY DEFINED BY policyQualifierId
+ * }
+ *
+ * PolicyQualifierId ::= OBJECT IDENTIFIER
+ * </pre>
+ *
+ * @since 1.4
+ * @specnote this class was final in 1.4, but beginning with 1.5 is not
+ */
+public class PolicyQualifierInfo
+{
+
+ // Fields.
+ // ------------------------------------------------------------------------
+
+ /** The <code>policyQualifierId</code> field. */
+ private OID oid;
+
+ /** The DER encoded form of this object. */
+ private byte[] encoded;
+
+ /** The DER encoded form of the <code>qualifier</code> field. */
+ private DERValue qualifier;
+
+ // Constructor.
+ // ------------------------------------------------------------------------
+
+ /**
+ * Create a new PolicyQualifierInfo object from the DER encoded form
+ * passed in the byte array. The argument is copied.
+ *
+ * <p>The ASN.1 form of PolicyQualifierInfo is:
+<pre>
+PolicyQualifierInfo ::= SEQUENCE {
+ policyQualifierId PolicyQualifierId,
+ qualifier ANY DEFINED BY policyQualifierId
+}
+
+PolicyQualifierId ::= OBJECT IDENTIFIER
+</pre>
+ *
+ * @param encoded The DER encoded form.
+ * @throws IOException If the structure cannot be parsed from the
+ * encoded bytes.
+ */
+ public PolicyQualifierInfo(byte[] encoded) throws IOException
+ {
+ if (encoded == null)
+ throw new IOException("null bytes");
+ this.encoded = (byte[]) encoded.clone();
+ DERReader in = new DERReader(new ByteArrayInputStream(this.encoded));
+ DERValue qualInfo = in.read();
+ if (!qualInfo.isConstructed())
+ throw new ASN1ParsingException("malformed PolicyQualifierInfo");
+ DERValue val = in.read();
+ if (!(val.getValue() instanceof OID))
+ throw new ASN1ParsingException("value read not an OBJECT IDENTIFIER");
+ oid = (OID) val.getValue();
+ if (val.getEncodedLength() < val.getLength())
+ qualifier = in.read();
+ }
+
+ // Instance methods.
+ // ------------------------------------------------------------------------
+
+ /**
+ * Returns the <code>policyQualifierId</code> field of this structure,
+ * as a dotted-decimal representation of the object identifier.
+ *
+ * @return This structure's OID field.
+ */
+ public final String getPolicyQualifierId()
+ {
+ return oid.toString();
+ }
+
+ /**
+ * Returns the DER encoded form of this object; the contents of the
+ * returned byte array are equivalent to those that were passed to the
+ * constructor. The byte array is cloned every time this method is
+ * called.
+ *
+ * @return The encoded form.
+ */
+ public final byte[] getEncoded()
+ {
+ return (byte[]) encoded.clone();
+ }
+
+ /**
+ * Get the <code>qualifier</code> field of this object, as a DER
+ * encoded byte array. The byte array returned is cloned every time
+ * this method is called.
+ *
+ * @return The encoded qualifier.
+ */
+ public final byte[] getPolicyQualifier()
+ {
+ if (qualifier == null)
+ return new byte[0];
+ return qualifier.getEncoded();
+ }
+
+ /**
+ * Returns a printable string representation of this object.
+ *
+ * @return The string representation.
+ */
+ public String toString()
+ {
+ return "PolicyQualifierInfo { policyQualifierId ::= " + oid
+ + ", qualifier ::= " + qualifier + " }";
+ }
+}