Class DLSequenceGenerator
java.lang.Object
org.bouncycastle.asn1.ASN1Generator
org.bouncycastle.asn1.DLGenerator
org.bouncycastle.asn1.DLSequenceGenerator
A stream generator for definite-length SEQUENCEs. The caller commits to the
total length of the SEQUENCE body up front; the header is written
immediately and the body then streams through
getRawOutputStream()
/ addObject(ASN1Encodable). close() verifies the body
came out at exactly the promised length and throws an IOException
otherwise — by then the output is not usable, but every length mismatch is
a caller arithmetic bug that must not pass silently.
Unlike DERSequenceGenerator nothing is buffered, so the body may
exceed the size of a Java array; the trade-off is that the length has to be
known before any content is produced.
-
Field Summary
Fields inherited from class ASN1Generator
_out -
Constructor Summary
ConstructorsConstructorDescriptionDLSequenceGenerator(OutputStream out, int tagNo, boolean isExplicit, long bodyLength) Use the passed in stream as the target for the generator, writing out the header for a tagged definite-length constructed SEQUENCE (possibly implicit).DLSequenceGenerator(OutputStream out, long bodyLength) Use the passed in stream as the target for the generator, writing out the header for a definite-length constructed SEQUENCE. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddObject(ASN1Encodable object) Add the DL encoding of the passed in object to the SEQUENCE body.voidclose()Verify the declared body length was written in full.Return the target stream for the SEQUENCE body.Methods inherited from class DLGenerator
getDLEncodingLength, getLengthOctetCount, writeDLHeader
-
Constructor Details
-
DLSequenceGenerator
Use the passed in stream as the target for the generator, writing out the header for a definite-length constructed SEQUENCE.- Parameters:
out- target streambodyLength- the exact number of content octets that will be written- Throws:
IOException- if the target stream cannot be written to.
-
DLSequenceGenerator
public DLSequenceGenerator(OutputStream out, int tagNo, boolean isExplicit, long bodyLength) throws IOException Use the passed in stream as the target for the generator, writing out the header for a tagged definite-length constructed SEQUENCE (possibly implicit).- Parameters:
out- target streamtagNo- the tag number to introduceisExplicit- true if this is an explicitly tagged object, false otherwise.bodyLength- the exact number of content octets that will be written- Throws:
IOException- if the target stream cannot be written to.
-
-
Method Details
-
getRawOutputStream
Return the target stream for the SEQUENCE body. Writes are counted against the length declared at construction; writing past it fails immediately.- Overrides:
getRawOutputStreamin classDLGenerator- Returns:
- the stream that is directly encoded to.
-
addObject
Add the DL encoding of the passed in object to the SEQUENCE body.- Throws:
IOException
-
close
Verify the declared body length was written in full.- Throws:
IOException- if fewer content octets were written than declared.
-