Package org.ldaptive.asn1
Class DERParser
java.lang.Object
org.ldaptive.asn1.DERParser
This class provides a SAX-like parsing facility for DER-encoded data where elements of interest in the parse tree may
be registered to handlers via the
registerHandler(org.ldaptive.asn1.DERPath, org.ldaptive.asn1.ParseHandler)
methods. DERPath
strings are used to map handlers
to elements of interest.- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Map<DERPath,
ParseHandler> Handlers for DER paths.protected final org.slf4j.Logger
Logger for this class.Permutations of the current path. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate void
Add the given tag at the specified index to all permutations of the current parser path and increases the number of permutations as necessary to satisfy the following relation:void
Parse a DER-encoded data structure by calling registered handlers when points of interest are encountered in the parse tree.private void
Invokes the parse handler for the current path and advances to the next position in the encoded bytes.private void
Reads the supplied DER encoded bytes and invokes handlers as configured paths are encountered.int
readLength
(DERBuffer encoded) Reads the length of a DER-encoded value from the given byte buffer.Reads a DER tag from a single byte at the current position of the given buffer.void
registerHandler
(DERPath path, ParseHandler handler) Registers the supplied handler to fire when the supplied path is encountered.private void
Removes the tag at the leaf position of all permutations of the current parser path, and reduces the number of permutations as necessary to satisfy the following relation:
-
Field Details
-
logger
protected final org.slf4j.Logger loggerLogger for this class. -
handlerMap
Handlers for DER paths. -
permutations
Permutations of the current path.
-
-
Constructor Details
-
DERParser
public DERParser()
-
-
Method Details
-
registerHandler
Registers the supplied handler to fire when the supplied path is encountered.- Parameters:
path
- to registerhandler
- to associate with the path
-
parse
Parse a DER-encoded data structure by calling registered handlers when points of interest are encountered in the parse tree.- Parameters:
encoded
- DER-encoded bytes.
-
readTag
Reads a DER tag from a single byte at the current position of the given buffer. The buffer position is naturally advanced one byte in this operation.- Parameters:
encoded
- Buffer containing DER-encoded bytes positioned at tag.- Returns:
- Tag or null if no universal tag or application-specific tag is known that matches the byte read in.
-
readLength
Reads the length of a DER-encoded value from the given byte buffer. The buffer is expected to be positioned at the byte immediately following the tag byte, which is where the length byte(s) begin(s). Invocation of this method has two generally beneficial side effects:- Buffer is positioned at start of value bytes.
- Buffer limit is set to the end of value bytes.
- Parameters:
encoded
- buffer containing DER-encoded bytes positioned at start of length byte(s).- Returns:
- number of bytes occupied by tag value.
-
parseTags
Reads the supplied DER encoded bytes and invokes handlers as configured paths are encountered.- Parameters:
encoded
- to parse
-
parseTag
Invokes the parse handler for the current path and advances to the next position in the encoded bytes.- Parameters:
tag
- to inspect for internal tagsencoded
- to parse
-
addTag
Add the given tag at the specified index to all permutations of the current parser path and increases the number of permutations as necessary to satisfy the following relation:size = 2^n
where n is the path length.
- Parameters:
tag
- to add to path.index
- of tag relative to parent.
-
removeTag
private void removeTag()Removes the tag at the leaf position of all permutations of the current parser path, and reduces the number of permutations as necessary to satisfy the following relation:size = 2^n
where n is the path length.
-