PHPackages                             techdivision/form-encryption - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Security](/categories/security)
4. /
5. techdivision/form-encryption

ActiveNeos-plugin[Security](/categories/security)

techdivision/form-encryption
============================

Neos formbuilder encryption package. GPG encryption for forms, needs gpg binary.

v1.0.1(5y ago)13441PHP

Since Dec 6Pushed 5y ago17 watchersCompare

[ Source](https://github.com/techdivision/form-encryption)[ Packagist](https://packagist.org/packages/techdivision/form-encryption)[ RSS](/packages/techdivision-form-encryption/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (2)Dependencies (1)Versions (4)Used By (1)

TechDivision.Form.Encryption
============================

[](#techdivisionformencryption)

This package gives you a very basic PGP encryption for the [neos/form-builder](https://github.com/neos/form-builder) package.

### Installation

[](#installation)

TechDivision.Form.Encryption is available via packagist. Add `"techdivision/form-encryption" : "~1.0"` to the require section of the composer.json or run `composer require techdivision/form-encryption`.

Simple Setup
------------

[](#simple-setup)

This enables a basic encryption with minimum configuration. You basically just need a public key.

1. Install the package using `composer require techdivision/form-encryption`.
    If not yet installed, it will also install the Neos Formbuilder.
2. Add your own pgp PUBLIC key (not as ascii, but as binary file) `gpg --dearmor < yourPublicKey.asc > yourPublicKey.gpg`
    *Never add your private key!*
3. Add the path to your key as well as the email-address your key is attributed with to your Settings.yaml (do not use `resource://` links here as they wont work)

```
TechDivision:
  Form:
    Encryption:
      gpg:
        options:
          gpgArguments:
            '--keyring': '%FLOW_PATH_PACKAGES%Application/TechDivision.Form.Encryption/Resources/Public/Keys/yourPublicKey.gpg'
            '--recipient': 'you@domain.com'

```

4. Add the path to your gpg binary and the homedir attribute.

```
TechDivision:
  Form:
    Encryption:
      gpg:
        options:
          gpgBinary: '/usr/bin/gpg'
          gpgArguments:
          '--homedir': '~/.gnupg'

```

5. Add the `EncryptedEmailFinisher` to your form - either in fusion or as a NodeType.
    Remove any other EmailFinisher from the form.

Advanced setup
--------------

[](#advanced-setup)

If you are familiar with gpg and want to set it up on your own, you can easily change all the arguments you want. This is useful if you want to add your keys directly in gpg, check them against a trust db etc.

FAQs
----

[](#faqs)

- Why did we choose an exec command over php gnupg extension?
    gpg is widely spread across many \*nix distributions. Enabling a simple and straightforward usage was more important than known but limited drawbacks (key validation, signing etc.).
- Why didnt we use the SwiftMailer Event Dispatcher?
    We tried to, but it would have required more Classes to be overwritten.
- Why didnt we use the SwiftMailer Signer Pattern?
    Because signing does need private keys, which we wanted to avoid in order to have a simple usage.

### Contribution

[](#contribution)

We will be happy to receive pull requests - dont hesitate!

###  Health Score

29

—

LowBetter than 59% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity13

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 50% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~264 days

Total

2

Last Release

2090d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/e2402ac081fc0dc57b15f8cfcc16a1c1b37adfa3211a7fe30eb80d622b6586f3?d=identicon)[regniets](/maintainers/regniets)

---

Top Contributors

[![regniets](https://avatars.githubusercontent.com/u/4123716?v=4)](https://github.com/regniets "regniets (3 commits)")[![SimonPaidla](https://avatars.githubusercontent.com/u/28459705?v=4)](https://github.com/SimonPaidla "SimonPaidla (2 commits)")[![mwitte](https://avatars.githubusercontent.com/u/1611200?v=4)](https://github.com/mwitte "mwitte (1 commits)")

---

Tags

gpg-encryptionneosneos-plugin

### Embed Badge

![Health badge](/badges/techdivision-form-encryption/health.svg)

```
[![Health](https://phpackages.com/badges/techdivision-form-encryption/health.svg)](https://phpackages.com/packages/techdivision-form-encryption)
```

###  Alternatives

[defuse/php-encryption

Secure PHP Encryption Library

3.9k162.4M214](/packages/defuse-php-encryption)[roave/security-advisories

Prevents installation of composer packages with known security vulnerabilities: no API, simply require it

2.9k97.3M6.4k](/packages/roave-security-advisories)[mews/purifier

Laravel 5/6/7/8/9/10 HtmlPurifier Package

2.0k16.7M113](/packages/mews-purifier)[robrichards/xmlseclibs

A PHP library for XML Security

41278.1M118](/packages/robrichards-xmlseclibs)[bjeavons/zxcvbn-php

Realistic password strength estimation PHP library based on Zxcvbn JS

86917.5M63](/packages/bjeavons-zxcvbn-php)[illuminate/encryption

The Illuminate Encryption package.

9229.7M280](/packages/illuminate-encryption)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
