Inventor(s)

Abstract

The block is laid out group-major: the descriptor, then every mix’s group 0, then every mix’s group 1, and so on; the error-correction parity and the keyed tag come last. A group is therefore complete as soon as its own bits have landed. As a block arrives, the receiver hands the bits up after each read; groups of its mix that are whole are decrypted (the block’s keystream is known from its period), checked by their own per-group parity in detect-only modes, decoded and written to the output, before the block’s code and tag are checked. Speculation is permitted only when the previous block passed its check under the current key, and not while the receiver is re-arming after any failure. A lost block (nothing received) does not stop it. Before the first group of a streamed block, the decoder’s state is saved into one of STATE_SLOTS (= 4) slots indexed by the block’s period. When the whole block is checked, the calls the checked block would make on the decoder are compared with those already made (side info and each group’s bits). Equal: the remaining groups are decoded and nothing else happens. Different: the state is restored from the slot and the whole block is decoded again for state (a redo); later blocks already streamed from the old state are decoded again too.

Creative Commons License

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 License.

Share

COinS