Source code for templates.exceptions

"""
Custom exceptions for the tno.mpc.encryption_scheme modules.
"""

from __future__ import annotations

[docs] WARN_INEFFICIENT_RANDOMIZATION = ( "Randomizing a fresh ciphertext. This indicates a potential inefficiency as the ciphertext is " "randomized while the current randomness in the ciphertext is still fresh. It is more " "efficient to skip this randomization." )
[docs] WARN_INEFFICIENT_HOM_OPERATION = ( "Identified a fresh ciphertext as input to a homomorphic operation, which is no longer fresh " "after the operation. This indicates a potential inefficiency if the non-fresh input may also " "be used in other operations (unused randomness). Solution: randomize ciphertexts as late as " "possible, e.g. by encrypting them with scheme.unsafe_encrypt and randomizing them just " "before sending. Note that the serializer randomizes non-fresh ciphertexts by default." )
[docs] class EncryptionSchemeWarning(UserWarning): """ Issued to suggest cryptographic best practises. """
[docs] class RandomizedEncryptionSchemeWarning(EncryptionSchemeWarning): """ Issued for warnings related to the randomness generation. """
[docs] class TooMuchRandomnessWarning(RandomizedEncryptionSchemeWarning): """ Issued when more randomness has been generated than used by the protocol. """
[docs] class TooLittleRandomnessWarning(RandomizedEncryptionSchemeWarning): """ Issued when less randomness has been generated than required by the protocol, resulting in randomness needing to be generated on the fly. """
[docs] class EncryptionSchemeError(Exception): """ Generic error type for encryption schemes. """
[docs] class SerializationError(EncryptionSchemeError): """ Serialization error for encryption schemes. """ def __init__(self, m: str | None = None) -> None: super().__init__( m if m is not None else "The tno.mpc.communication package has not been installed. Please install this package before you call the serialization code." )