mirror of
https://github.com/opentffoundation/opentf.git
synced 2025-12-21 10:47:34 -05:00
Signed-off-by: AbstractionFactory <179820029+abstractionfactory@users.noreply.github.com>
49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
#!/usr/bin/python
|
|
|
|
import base64
|
|
import json
|
|
import sys
|
|
|
|
if __name__ == "__main__":
|
|
# Write the header:
|
|
sys.stdout.write((json.dumps(
|
|
{"magic": "OpenTofu-External-Key-Provider", "version": 1}) + "\n"
|
|
))
|
|
sys.stdout.flush()
|
|
|
|
# Read the input:
|
|
inputData = sys.stdin.read()
|
|
data = json.loads(inputData)
|
|
|
|
# Construct the key:
|
|
key = b''
|
|
for i in range(1, 17):
|
|
key += chr(i).encode('ascii')
|
|
|
|
# Output the keys:
|
|
if data is None:
|
|
# No input metadata was passed, we shouldn't output a decryption key.
|
|
# If needed, we can produce an output metadata here, which will be
|
|
# stored alongside the encrypted data.
|
|
outputMeta = {"external_data":{}}
|
|
sys.stdout.write(json.dumps({
|
|
"keys": {
|
|
"encryption_key": base64.b64encode(key).decode('ascii')
|
|
},
|
|
"meta": outputMeta
|
|
}))
|
|
else:
|
|
# We had some input metadata, output a decryption key. In a real-life
|
|
# scenario we would use the metadata for something like pbdkf2.
|
|
inputMeta = data["external_data"]
|
|
# Do something with the input metadata if needed and produce the output
|
|
# metadata:
|
|
outputMeta = {"external_data":{}}
|
|
sys.stdout.write(json.dumps({
|
|
"keys": {
|
|
"encryption_key": base64.b64encode(key).decode('ascii'),
|
|
"decryption_key": base64.b64encode(key).decode('ascii')
|
|
},
|
|
"meta": outputMeta
|
|
}))
|