docs: def encrypt(fingerprint, data):
      """
      Encrypts the given data known the fingerprint to be used
      in the way Telegram requires us to do so (sha1(data) + data + padding)
  
      :param fingerprint: the fingerprint of the RSA key.
      :param data: the data to be encrypted.
      :return:
          the cipher text, or None if no key matching this fingerprint is found.
      """
      global _server_keys
      key = _server_keys.get(fingerprint, None)
      if not key:
          return None
  
      # len(sha1.digest) is always 20, so we're left with 255 - 20 - x padding
      to_encrypt = sha1(data).digest() + data + os.urandom(235 - len(data))
  
      # rsa module rsa.encrypt adds 11 bits for padding which we don't want
      # rsa module uses rsa.transform.bytes2int(to_encrypt), easier way:
      payload = int.from_bytes(to_encrypt, 'big')
      encrypted = rsa.core.encrypt_int(payload, key.e, key.n)
      # rsa module uses transform.int2bytes(encrypted, keylength), easier:
      block = encrypted.to_bytes(256, 'big')
      return block