docs: def sign_data(args):
      """ Sign a data file with a ECDSA private key, append binary signature to file contents """
      sk = _load_ecdsa_signing_key(args)
  
      # calculate signature of binary data
      binary_content = args.datafile.read()
      signature = sk.sign_deterministic(binary_content, hashlib.sha256)
  
      # back-verify signature
      vk = sk.get_verifying_key()
      vk.verify(signature, binary_content, hashlib.sha256)  # throws exception on failure
  
      if args.output is None or os.path.abspath(args.output) == os.path.abspath(args.datafile.name):  # append signature to input file
          args.datafile.close()
          outfile = open(args.datafile.name, "ab")
      else:  # write file & signature to new file
          outfile = open(args.output, "wb")
          outfile.write(binary_content)
      outfile.write(struct.pack("I", 0))  # Version indicator, allow for different curves/formats later
      outfile.write(signature)
      outfile.close()
      print("Signed %d bytes of data from %s with key %s" % (len(binary_content), args.datafile.name, args.keyfile.name))