Source code for doubleratchet.kdf

from abc import ABC, abstractmethod


__all__ = [
    "KDF"
]


[docs] class KDF(ABC): """ A KDF is defined as a cryptographic function that takes a secret and random KDF key and some input data and returns output data. The output data is indistinguishable from random provided the key isn't known (i.e. a KDF satisfies the requirements of a cryptographic "PRF"). If the key is not secret and random, the KDF should still provide a secure cryptographic hash of its key and input data. https://signal.org/docs/specifications/doubleratchet/#kdf-chains """
[docs] @staticmethod @abstractmethod async def derive(key: bytes, data: bytes, length: int) -> bytes: """ Args: key: The KDF key. data: The input data. length: The desired size of the output data, in bytes. Returns: ``length`` bytes of output data, derived from the KDF key and the input data. """