mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Matthew Swift
18.58.2012 fc11cb328f23d141ecfedd16d791e39fd4e1d299
opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/asn1/ASN1.java
@@ -22,6 +22,7 @@
 *
 *
 *      Copyright 2006-2008 Sun Microsystems, Inc.
 *      Portions copyright 2012 ForgeRock AS.
 */
package org.forgerock.opendj.asn1;
@@ -46,6 +47,119 @@
public final class ASN1 {
    /**
     * The byte array containing the pre-encoded ASN.1 encoding for a boolean
     * value of "false".
     */
    public static final byte BOOLEAN_VALUE_FALSE = 0x00;
    /**
     * The byte array containing the pre-encoded ASN.1 encoding for a boolean
     * value of "false".
     */
    public static final byte BOOLEAN_VALUE_TRUE = (byte) 0xFF;
    /**
     * The BER type that is assigned to the universal Boolean element.
     */
    public static final byte UNIVERSAL_BOOLEAN_TYPE = 0x01;
    /**
     * The BER type that is assigned to the universal enumerated type.
     */
    public static final byte UNIVERSAL_ENUMERATED_TYPE = 0x0A;
    /**
     * The BER type that is assigned to the universal integer type.
     */
    public static final byte UNIVERSAL_INTEGER_TYPE = 0x02;
    /**
     * The BER type that is assigned to the universal null type.
     */
    public static final byte UNIVERSAL_NULL_TYPE = 0x05;
    /**
     * The BER type that is assigned to the universal octet string type.
     */
    public static final byte UNIVERSAL_OCTET_STRING_TYPE = 0x04;
    /**
     * The BER type that is assigned to the universal sequence type.
     */
    public static final byte UNIVERSAL_SEQUENCE_TYPE = 0x30;
    /**
     * The BER type that is assigned to the universal set type.
     */
    public static final byte UNIVERSAL_SET_TYPE = 0x31;
    /**
     * The ASN.1 element decoding state that indicates that the next byte read
     * should be additional bytes of a multi-byte length.
     */
    static final int ELEMENT_READ_STATE_NEED_ADDITIONAL_LENGTH_BYTES = 2;
    /**
     * The ASN.1 element decoding state that indicates that the next byte read
     * should be the first byte for the element length.
     */
    static final int ELEMENT_READ_STATE_NEED_FIRST_LENGTH_BYTE = 1;
    /**
     * The ASN.1 element decoding state that indicates that the next byte read
     * should be the BER type for a new element.
     */
    static final int ELEMENT_READ_STATE_NEED_TYPE = 0;
    /**
     * The ASN.1 element decoding state that indicates that the next byte read
     * should be applied to the value of the element.
     */
    static final int ELEMENT_READ_STATE_NEED_VALUE_BYTES = 3;
    /**
     * The byte array that will be used for ASN.1 elements with no value.
     */
    static final byte[] NO_VALUE = new byte[0];
    /**
     * The bitmask that can be ANDed with the BER type to zero out all bits
     * except those used in the class.
     */
    static final byte TYPE_MASK_ALL_BUT_CLASS = (byte) 0xC0;
    /**
     * The bitmask that can be ANDed with the BER type to zero out all bits
     * except the primitive/constructed bit.
     */
    static final byte TYPE_MASK_ALL_BUT_PC = (byte) 0x20;
    /**
     * The bitmask that can be ANDed with the BER type to determine if the
     * element is in the application-specific class.
     */
    static final byte TYPE_MASK_APPLICATION = 0x40;
    /**
     * The bitmask that can be ANDed with the BER type to determine if the
     * element is constructed.
     */
    static final byte TYPE_MASK_CONSTRUCTED = 0x20;
    /**
     * The bitmask that can be ANDed with the BER type to determine if the
     * element is in the context-specific class.
     */
    static final byte TYPE_MASK_CONTEXT = (byte) 0x80;
    /**
     * The bitmask that can be ANDed with the BER type to determine if the
     * element is a primitive.
     */
    static final byte TYPE_MASK_PRIMITIVE = 0x00;
    /**
     * The bitmask that can be ANDed with the BER type to determine if the
     * element is in the private class.
     */
    static final byte TYPE_MASK_PRIVATE = (byte) 0xC0;
    /**
     * The bitmask that can be ANDed with the BER type to determine if the
     * element is in the universal class.
     */
    static final byte TYPE_MASK_UNIVERSAL = 0x00;
    /**
     * Returns an ASN.1 reader whose source is the provided byte array and
     * having an unlimited maximum BER element size.
     *