Files
opentf/internal/encryption/method/external/protocol.go
2025-01-31 12:13:18 -05:00

37 lines
1.5 KiB
Go

// Copyright (c) The OpenTofu Authors
// SPDX-License-Identifier: MPL-2.0
// Copyright (c) 2023 HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package external
// TODO #2386 / 1.11: consider if the external method changes and unify protocol with the external key provider.
// Magic is the magic string the external method needs to output in the Header.
const Magic = "OpenTofu-External-Encryption-Method"
// Header is the initial message the external method writes to stdout as a single-line JSON.
type Header struct {
// Magic must always be "OpenTofu-External-Encryption-Method"
Magic string `json:"magic"`
// Version must always be 1.
Version int `json:"version"`
}
// InputV1 is an encryption/decryption request from OpenTofu to the external method. OpenTofu writes this message
// to the standard input of the external method as a JSON message.
type InputV1 struct {
// Key is the encryption or decryption key for this operation. On the wire, this is base64-encoded. If no key is
// present, this will be nil. The method should exit with a non-zero exit code.
Key []byte `json:"key,omitempty"`
// Payload is the payload to encrypt/decrypt.
Payload []byte `json:"payload"`
}
// OutputV1 is the returned encrypted/decrypted payload from the external method. The external method writes this
// to the standard output as JSON.
type OutputV1 struct {
// Payload is the payload that has been encrypted/decrypted by the external method.
Payload []byte `json:"payload"`
}