docs: def UploadSignedBinary(source_path,
                         binary_type,
                         platform,
                         upload_subdirectory=""):
    """Signs a binary and uploads it to the datastore.
  
    Args:
      source_path: Path to the binary to upload.
      binary_type: Type of the binary, e.g python-hack or executable.
      platform: Client platform where the binary is intended to be run.
      upload_subdirectory: Path of a subdirectory to upload the binary to,
        relative to the canonical path for binaries of the given type and
        platform.
  
    Raises:
      BinaryTooLargeError: If the binary to upload is too large.
    """
    file_size = os.path.getsize(source_path)
    if file_size > _MAX_SIGNED_BINARY_BYTES:
      raise BinaryTooLargeError(
          "File [%s] is of size %d (bytes), which exceeds the allowed maximum "
          "of %d bytes." % (source_path, file_size, _MAX_SIGNED_BINARY_BYTES))
  
    context = ["Platform:%s" % platform.title(), "Client Context"]
    signing_key = grr_config.CONFIG.Get(
        "PrivateKeys.executable_signing_private_key", context=context)
  
    root_api = maintenance_utils.InitGRRRootAPI()
    binary_path = "/".join([
        platform.lower(),
        upload_subdirectory,
        os.path.basename(source_path),
    ])
    binary = root_api.GrrBinary(binary_type, binary_path)
  
    with open(source_path, "rb") as fd:
      binary.Upload(
          fd,
          sign_fn=binary.DefaultUploadSigner(
              private_key=signing_key.GetRawPrivateKey()))
  
    print("Uploaded %s to %s" % (binary_type, binary_path))