Class DEREncoder

    • Field Detail

      • BITS

        private static final int[] BITS
      • LARGEST_UNSHIFTED_LONG

        private static final long LARGEST_UNSHIFTED_LONG
        See Also:
        Constant Field Values
      • NULL_CONTENTS

        private static final byte[] NULL_CONTENTS
      • BOOLEAN_TRUE_AS_BYTES

        private static final byte[] BOOLEAN_TRUE_AS_BYTES
      • BOOLEAN_FALSE_AS_BYTES

        private static final byte[] BOOLEAN_FALSE_AS_BYTES
      • buffers

        private final ArrayList<org.wildfly.common.bytes.ByteStringBuilder> buffers
      • currentBuffer

        private org.wildfly.common.bytes.ByteStringBuilder currentBuffer
      • currentBufferPos

        private int currentBufferPos
      • target

        private final org.wildfly.common.bytes.ByteStringBuilder target
      • implicitTag

        private int implicitTag
      • UTF_32BE

        private static final Charset UTF_32BE
      • GENERALIZED_TIME_FORMAT

        private static final DateTimeFormatter GENERALIZED_TIME_FORMAT
      • digits

        private static final BigInteger[] digits
    • Constructor Detail

      • DEREncoder

        public DEREncoder()
        Create a DER encoder.
      • DEREncoder

        DEREncoder​(org.wildfly.common.bytes.ByteStringBuilder target)
        Create a DER encoder that writes its output to the given ByteStringBuilder.
        Parameters:
        target - the ByteStringBuilder to which the DER encoded values are written
    • Method Detail

      • startSet

        public void startSet()
        Description copied from interface: ASN1Encoder
        Start encoding an ASN.1 set. All subsequent encode operations will be part of this set until ASN1Encoder.endSet() is called.
        Specified by:
        startSet in interface ASN1Encoder
      • startSetOf

        public void startSetOf()
        Description copied from interface: ASN1Encoder
        Start encoding an ASN.1 "set of" element. All subsequent encode operations will be part of this set until ASN1Encoder.endSetOf() is called.
        Specified by:
        startSetOf in interface ASN1Encoder
      • startExplicit

        public void startExplicit​(int number)
        Description copied from interface: ASN1Encoder
        Start encoding an ASN.1 explicitly tagged element. All subsequent encode operations will be part of this explicitly tagged element until ASN1Encoder.endExplicit() is called.
        Specified by:
        startExplicit in interface ASN1Encoder
        Parameters:
        number - the tag number for the explicit, context-specific tag
      • startExplicit

        public void startExplicit​(int clazz,
                                  int number)
        Description copied from interface: ASN1Encoder
        Start encoding an ASN.1 explicitly tagged element. All subsequent encode operations will be part of this explicitly tagged element until ASN1Encoder.endExplicit() is called.
        Specified by:
        startExplicit in interface ASN1Encoder
        Parameters:
        clazz - the class for the explicit tag
        number - the tag number for the explicit tag
      • startConstructedElement

        private void startConstructedElement​(int tag)
      • endConstructedElement

        private void endConstructedElement()
      • encodeOctetString

        public void encodeOctetString​(String str)
        Description copied from interface: ASN1Encoder
        Encode an ASN.1 octet string value.
        Specified by:
        encodeOctetString in interface ASN1Encoder
        Parameters:
        str - the octet string to encode
      • encodeOctetString

        public void encodeOctetString​(byte[] str)
        Description copied from interface: ASN1Encoder
        Encode an ASN.1 octet string value.
        Specified by:
        encodeOctetString in interface ASN1Encoder
        Parameters:
        str - the byte array containing the octet string to encode
      • encodeOctetString

        void encodeOctetString​(org.wildfly.common.bytes.ByteStringBuilder str)
      • encodeIA5String

        public void encodeIA5String​(String str)
        Description copied from interface: ASN1Encoder
        Encode an ASN.1 IA5 string value.
        Specified by:
        encodeIA5String in interface ASN1Encoder
        Parameters:
        str - the IA5 string to encode
      • encodeIA5String

        public void encodeIA5String​(byte[] str)
        Description copied from interface: ASN1Encoder
        Encode an ASN.1 IA5 string value.
        Specified by:
        encodeIA5String in interface ASN1Encoder
        Parameters:
        str - the byte array containing IA5 string to encode
      • encodeIA5String

        void encodeIA5String​(org.wildfly.common.bytes.ByteStringBuilder str)
      • encodePrintableString

        public void encodePrintableString​(byte[] str)
        Description copied from interface: ASN1Encoder
        Encode an ASN.1 printable string value.
        Specified by:
        encodePrintableString in interface ASN1Encoder
        Parameters:
        str - the byte array containing the printable string to encode
      • encodePrintableString

        public void encodePrintableString​(String str)
        Description copied from interface: ASN1Encoder
        Encode an ASN.1 printable string value.
        Specified by:
        encodePrintableString in interface ASN1Encoder
        Parameters:
        str - the printable string to encode
      • encodeUTF8String

        public void encodeUTF8String​(String str)
        Description copied from interface: ASN1Encoder
        Encode an ASN.1 UTF8String string value.
        Specified by:
        encodeUTF8String in interface ASN1Encoder
        Parameters:
        str - the string to encode
      • encodeBMPString

        public void encodeBMPString​(String str)
        Description copied from interface: ASN1Encoder
        Encode an ASN.1 BMPString string value.
        Specified by:
        encodeBMPString in interface ASN1Encoder
        Parameters:
        str - the string to encode
      • encodeUniversalString

        public void encodeUniversalString​(String str)
        Description copied from interface: ASN1Encoder
        Encode an ASN.1 UniversalString string value.
        Specified by:
        encodeUniversalString in interface ASN1Encoder
        Parameters:
        str - the string to encode
      • encodeBitString

        public void encodeBitString​(byte[] str)
        Description copied from interface: ASN1Encoder
        Encode an ASN.1 bit string value.
        Specified by:
        encodeBitString in interface ASN1Encoder
        Parameters:
        str - the byte array containing the bit string to encode (all bits in the bit string will be used)
      • encodeBitString

        public void encodeBitString​(byte[] str,
                                    int numUnusedBits)
        Description copied from interface: ASN1Encoder
        Encode an ASN.1 bit string value.
        Specified by:
        encodeBitString in interface ASN1Encoder
        Parameters:
        str - the byte array containing the bit string to encode
        numUnusedBits - the number of unused bits in the byte array
      • encodeBitString

        public void encodeBitString​(EnumSet<?> enumSet)
        Description copied from interface: ASN1Encoder
        Encode an enum set as an ASN.1 bit string, with each ordinal value of the set representing a single bit.
        Specified by:
        encodeBitString in interface ASN1Encoder
        Parameters:
        enumSet - the enum set (must not be null)
      • encodeBitString

        public void encodeBitString​(BitSet bitSet)
        Description copied from interface: ASN1Encoder
        Encode an ASN.1 bit string value.
        Specified by:
        encodeBitString in interface ASN1Encoder
        Parameters:
        bitSet - the bit set (must not be null)
      • encodeBitString

        public void encodeBitString​(String binaryStr)
        Description copied from interface: ASN1Encoder
        Encode an ASN.1 bit string value.
        Specified by:
        encodeBitString in interface ASN1Encoder
        Parameters:
        binaryStr - the bit string to encode, as a binary string
      • encodeBitString

        public void encodeBitString​(BigInteger integer)
        Description copied from interface: ASN1Encoder
        Encode an ASN.1 bit string where the value represents the binary form of the given integer.
        Specified by:
        encodeBitString in interface ASN1Encoder
        Parameters:
        integer - the integer to encode as a binary string
      • encodeGeneralizedTime

        public void encodeGeneralizedTime​(ZonedDateTime time)
        Description copied from interface: ASN1Encoder
        Encode an ASN.1 GeneralizedTime type.
        Specified by:
        encodeGeneralizedTime in interface ASN1Encoder
        Parameters:
        time - the time to encode (must not be null)
      • encodeObjectIdentifier

        public void encodeObjectIdentifier​(String objectIdentifier)
                                    throws ASN1Exception
        Description copied from interface: ASN1Encoder
        Encode an ASN.1 object identifier value.
        Specified by:
        encodeObjectIdentifier in interface ASN1Encoder
        Parameters:
        objectIdentifier - the object identifier to encode
        Throws:
        ASN1Exception - if the given object identifier is invalid
      • encodeNull

        public void encodeNull()
        Description copied from interface: ASN1Encoder
        Encode an ASN.1 null value.
        Specified by:
        encodeNull in interface ASN1Encoder
      • encodeImplicit

        public void encodeImplicit​(int number)
        Description copied from interface: ASN1Encoder
        Indicate that the next encode operation should encode an ASN.1 value using the given implicit, context-specific tag.
        Specified by:
        encodeImplicit in interface ASN1Encoder
        Parameters:
        number - the tag number for the implicit, context-specific tag
      • encodeImplicit

        public void encodeImplicit​(int clazz,
                                   int number)
        Description copied from interface: ASN1Encoder
        Indicate that the next encode operation should encode an ASN.1 value using the given implicit tag.
        Specified by:
        encodeImplicit in interface ASN1Encoder
        Parameters:
        clazz - the class for the implicit tag
        number - the tag number for the implicit tag
      • encodeBoolean

        public void encodeBoolean​(boolean value)
        Description copied from interface: ASN1Encoder
        Encode an ASN.1 boolean value.
        Specified by:
        encodeBoolean in interface ASN1Encoder
        Parameters:
        value - the boolean to encode
      • encodeInteger

        public void encodeInteger​(BigInteger integer)
        Description copied from interface: ASN1Encoder
        Encode an ASN.1 integer value.
        Specified by:
        encodeInteger in interface ASN1Encoder
        Parameters:
        integer - the integer to encode
      • writeEncoded

        public void writeEncoded​(byte[] encoded)
        Description copied from interface: ASN1Encoder
        Write an already encoded ASN.1 value to the target destination.
        Specified by:
        writeEncoded in interface ASN1Encoder
        Parameters:
        encoded - the encoded ASN.1 value to write
      • flush

        public void flush()
        Description copied from interface: ASN1Encoder
        Flush the encoder, writing any saved ASN.1 encoded values to the target destination. Any unfinished sequences or sets will be ended.
        Specified by:
        flush in interface ASN1Encoder
        Specified by:
        flush in interface Flushable
      • getEncoded

        public byte[] getEncoded()
        Description copied from interface: ASN1Encoder
        Get the ASN.1 encoded bytes.
        Specified by:
        getEncoded in interface ASN1Encoder
        Returns:
        the ASN.1 encoded bytes
      • validateSecondOIDComponent

        private void validateSecondOIDComponent​(long second,
                                                int first)
                                         throws ASN1Exception
        Throws:
        ASN1Exception
      • encodeOIDComponent

        private void encodeOIDComponent​(long value,
                                        org.wildfly.common.bytes.ByteStringBuilder contents,
                                        int numComponents,
                                        int first)
                                 throws ASN1Exception
        Throws:
        ASN1Exception
      • encodeOIDComponent

        private void encodeOIDComponent​(BigInteger value,
                                        org.wildfly.common.bytes.ByteStringBuilder contents,
                                        int numComponents,
                                        int first)
                                 throws ASN1Exception
        Throws:
        ASN1Exception
      • encodeOIDComponent

        private void encodeOIDComponent​(long value,
                                        org.wildfly.common.bytes.ByteStringBuilder contents)
      • encodeOIDComponent

        private void encodeOIDComponent​(BigInteger value,
                                        org.wildfly.common.bytes.ByteStringBuilder contents)
      • writeTag

        private void writeTag​(int tag,
                              org.wildfly.common.bytes.ByteStringBuilder dest)
      • writeLength

        private int writeLength​(int length,
                                org.wildfly.common.bytes.ByteStringBuilder dest)
                         throws ASN1Exception
        Throws:
        ASN1Exception
      • updateCurrentBuffer

        private void updateCurrentBuffer()
      • writeElement

        private void writeElement​(int tag,
                                  byte[] contents)
      • writeElement

        private void writeElement​(int tag,
                                  org.wildfly.common.bytes.ByteStringBuilder contents)