core
#
JLAP reader.
Classes#
A more or less complete user-defined wrapper around list objects. |
Functions#
|
Keyed hash. |
|
Attributes#
- DIGEST_SIZE = 32#
- DEFAULT_IV#
- line_and_pos(lines: Iterable[bytes], pos=0) Iterator[tuple[int, bytes]] #
- Parameters:
lines -- iterator over input split by 'n', with 'n' removed.
pos -- initial position
- class JLAP(initlist=None)#
Bases:
collections.UserList
A more or less complete user-defined wrapper around list objects.
- property body#
All lines except the first, and last two.
- property penultimate#
Next-to-last line. Should contain the footer.
- property last#
Last line. Should contain the trailing checksum.
- classmethod from_lines(lines: Iterable[bytes], iv: bytes, pos=0, verify=True)#
- Parameters:
lines -- iterator over input split by b'n', with b'n' removed
pos -- initial position
iv -- initialization vector (first line of .jlap stream, hex decoded). Ignored if pos==0.
verify -- assert last line equals computed checksum of previous line. Useful for writing new .jlap files if False.
- Raises:
ValueError -- if trailing and computed checksums do not match
- Returns:
list of (offset, line, checksum)
- classmethod from_path(path: pathlib.Path | str, verify=True)#
- add(line: str)#
Add line to buffer, following checksum rules.
Buffer must not be empty.
(Remember to pop trailing checksum and possibly trailing metadata line, if appending to a complete jlap file)
Less efficient than creating a new buffer from many lines and our last iv, and extending.
- Returns:
self
- terminate()#
Add trailing checksum to buffer.
- Returns:
self
- write(path: pathlib.Path)#
Write buffer to path.