Cryptography Encrypt

Cryptography Encrypt

Certified

Encrypt and optionally sign files with OpenPGP

Streams a Kestra-stored file through ASCII-armored PGP encryption (AES-256 with integrity) and returns the storage URI. Optionally signs the payload when a private key and passphrase are provided; only the first public key in key is used for encryption.

yaml
type: io.kestra.plugin.crypto.openpgp.Encrypt

Encrypt a file not signed

yaml
id: crypto_encrypt
namespace: company.team

inputs:
  - id: file
    type: FILE

tasks:
  - id: encrypt
    type: io.kestra.plugin.crypto.openpgp.Encrypt
    from: "{{ inputs.file }}"
    key: |
      -----BEGIN PGP PUBLIC KEY BLOCK----- ...
    recipients:
      - hello@kestra.io

Encrypt a file signed

yaml
id: crypto_encrypt
namespace: company.team

inputs:
  - id: file
    type: FILE

tasks:
  - id: encrypt
    type: io.kestra.plugin.crypto.openpgp.Encrypt
    from: "{{ inputs.file }}"
    key: |
      -----BEGIN PGP PUBLIC KEY BLOCK----- ...
    recipients:
      - hello@kestra.io
    signPublicKey: |
      -----BEGIN PGP PUBLIC KEY BLOCK----- ...
    signPrivateKey: "{{ secret('PGP_SIGN_PRIVATE_KEY') }}"
    signPassphrase: "{{ secret('PGP_SIGN_PASSPHRASE') }}"
    signUser: signer@kestra.io
Properties
SubTypestring

Recipient identifiers

Required metadata for compatibility; values are not validated against the provided key.

Source file to encrypt

Kestra internal storage URI or templated path to the cleartext file.

Public key for encryption

ASCII-armored export such as gpg --export -a; the first key ring found is used.

Passphrase for signing key

Leave empty if the signing key is not protected.

Private key for signing

ASCII-armored secret key used to sign the encrypted payload.

Public key used for signature metadata

Optional ASCII-armored export; kept for compatibility with legacy plugin expectations.

User ID bound to the signature

Required when signing; identifies the signing key within the secret key ring.

Formaturi

URI of encrypted file