Files
opentf/website/docs/language/state/examples/encryption/external-method/method-external-method.py
2025-01-31 12:13:18 -05:00

41 lines
1.3 KiB
Python

#!/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'),
}))