Source code for tno.quantum.communication.qkd_key_rate.classical._sender

"""Base class for Sending party."""

from __future__ import annotations

from copy import deepcopy
from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from tno.quantum.communication.qkd_key_rate.classical import Message, Permutations


[docs]class SenderBase: """This class encodes all functions available to both sender and receiver.""" transcript: str """This keeps track of the exchanged messages."""
[docs] def __init__( self, message: Message, permutations: Permutations, name: str | None = None, ) -> None: """Init of base sender class. Args: message: Input message of the sender party permutations: Permutations for each pass name: Name of the sender party """ self._message = message self._original_message = deepcopy(message) self.permutations = permutations self._number_of_exposed_bits = 0 self._net_exposed_bits = 0 self.name = name self.transcript = ""
@property def original_message(self) -> Message: """Returns original uncorrected message.""" return self._original_message @property def message(self) -> Message: """Returns the (partially corrected) message.""" return self._message @property def number_of_exposed_bits(self) -> int: """Counter to track number of exposed bits during protocol.""" return self._number_of_exposed_bits @property def net_exposed_bits(self) -> int: """Counter to track the `net` number of exposed bits. During the Winnow protocol some bits are discarded. The net number of exposed bits is the number of exposed bits, minus number of discarded bits. For the Cascade protocol the net number of exposed bits is the same as the number of exposed bits. """ return self._number_of_exposed_bits