Class DERParser

java.lang.Object
java.io.InputStream
java.io.FilterInputStream
org.apache.sshd.common.util.io.der.DERParser
All Implemented Interfaces:
Closeable, AutoCloseable

public class DERParser extends FilterInputStream
A bare minimum DER parser - just enough to be able to decode signatures and private keys
  • Field Details

    • MAX_DER_VALUE_LENGTH

      public static final int MAX_DER_VALUE_LENGTH
      Maximum size of data allowed by readLength() - it is a bit arbitrary since one can encode 32-bit length data, but it is good enough for the keys
      See Also:
    • lenBytes

      private final byte[] lenBytes
  • Constructor Details

    • DERParser

      public DERParser(byte... bytes)
    • DERParser

      public DERParser(byte[] bytes, int offset, int len)
    • DERParser

      public DERParser(InputStream s)
  • Method Details

    • readLength

      public int readLength() throws IOException
      Decode the length of the field. Can only support length encoding up to 4 octets. In BER/DER encoding, length can be encoded in 2 forms:
      • Short form - One octet. Bit 8 has value "0" and bits 7-1 give the length.

      • Long form - Two to 127 octets (only 4 is supported here). Bit 8 of first octet has value "1" and bits 7-1 give the number of additional length octets. Second and following octets give the length, base 256, most significant digit first.

      Returns:
      The length as integer
      Throws:
      IOException - If invalid format found
    • readObject

      public ASN1Object readObject() throws IOException
      Throws:
      IOException
    • readBigInteger

      public BigInteger readBigInteger() throws IOException
      Throws:
      IOException