#!/usr/bin/python import argparse import base64 import json import sys if __name__ == "__main__": # Make sure that this program isn't running interactively: if sys.stdout.isatty(): sys.stderr.write("This is an OpenTofu encryption method and is not meant to be run interactively. " "Please configure this program in your OpenTofu encryption block to use it.\n") sys.exit(1) parser = argparse.ArgumentParser(prog='My External Encryption Method') parser.add_argument('--encrypt', action='store_true') parser.add_argument('--decrypt', action='store_true') args = parser.parse_args() # Write the header: sys.stdout.write((json.dumps({"magic": "OpenTofu-External-Encryption-Method", "version": 1}) + "\n")) sys.stdout.flush() # Read the input: inputData = sys.stdin.read() data = json.loads(inputData) key = base64.b64decode(data["key"]) payload = base64.b64decode(data["payload"]) # Produce the output payload here. if args.encrypt: outputPayload = b'' elif args.decrypt: outputPayload = b'' else: raise "Expected --encrypt or --decrypt." # Write the output: sys.stdout.write(json.dumps({ "payload": base64.b64encode(outputPayload).decode('ascii'), }))