Class DLOctetStringGenerator


public class DLOctetStringGenerator extends DLGenerator
A stream generator for definite-length (primitive) OCTET STRINGs. The caller commits to the octet count up front; the header is written immediately and the octets then stream through getOctetOutputStream(), which enforces the count — writing past it fails immediately, and close() fails if it was not reached. The count is a long, so content larger than a Java array can carry is supported.

The result is a single primitive OCTET STRING (as DER requires), in contrast to BEROctetStringGenerator's indefinite-length constructed chunking.

  • Constructor Details

    • DLOctetStringGenerator

      public DLOctetStringGenerator(OutputStream out, long octetCount) throws IOException
      Use the passed in stream as the target for the generator, writing out the header for a definite-length primitive OCTET STRING.
      Parameters:
      out - target stream
      octetCount - the exact number of octets that will be written
      Throws:
      IOException - if the target stream cannot be written to.
    • DLOctetStringGenerator

      public DLOctetStringGenerator(OutputStream out, int tagNo, boolean isExplicit, long octetCount) throws IOException
      Use the passed in stream as the target for the generator, writing out the header for a tagged definite-length OCTET STRING (primitive when implicit, per X.690 8.14.3).
      Parameters:
      out - target stream
      tagNo - the tag number to introduce
      isExplicit - true if this is an explicitly tagged object, false otherwise.
      octetCount - the exact number of octets that will be written
      Throws:
      IOException - if the target stream cannot be written to.
  • Method Details

    • getOctetOutputStream

      public OutputStream getOctetOutputStream()
      Return the content target for this OCTET STRING. Writes are counted against the count declared at construction; writing past it fails immediately.
    • close

      public void close() throws IOException
      Verify the declared octet count was written in full.
      Throws:
      IOException - if fewer octets were written than declared.