Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
ebdc9d7
MINIFICPP-2749 Add EncryptContentPGP and DecryptContentPGP
martinzink Jun 30, 2026
161dd61
update manifest
martinzink Aug 14, 2026
7b85c6e
minifi_pgp set version to 1.0.0
martinzink Aug 14, 2026
78861f5
refactor
martinzink Aug 14, 2026
825a32b
no public key should route to failure instead of rollback
martinzink Aug 17, 2026
c3bb10c
ruff format, ruff check --fix
martinzink Aug 26, 2026
a0a1ecf
rebase
martinzink Sep 1, 2026
32fccc9
review changes
martinzink Sep 3, 2026
400669f
refresh manifest
Sep 3, 2026
8c63d48
review changes
martinzink Sep 14, 2026
9c04d2b
renames
martinzink Sep 16, 2026
b67dcac
move defs into super files
martinzink Sep 16, 2026
de1bd89
python changes
martinzink Sep 16, 2026
27d679e
add_minifi_dependent_option MINIFI_EXTENSION_PGP
martinzink Sep 16, 2026
844bf60
add pgp documentation to root docs
martinzink Sep 16, 2026
7dbbf1c
python fixes
martinzink Sep 16, 2026
c353a86
review changes
martinzink Sep 18, 2026
d32ae32
review changes 2
martinzink Sep 18, 2026
94f4b0f
cargo fmt
martinzink Sep 18, 2026
f563965
refresh manifest
martinzink Sep 18, 2026
2aa8dc3
fixing opus 5's findings
martinzink Sep 23, 2026
e2350e6
get_raw_property does EL, so its not a good idea to check that in sch…
martinzink Sep 24, 2026
77e0a82
Key -> Keyring, Key File -> Keyring File
martinzink Sep 25, 2026
24162d3
docs update
martinzink Sep 25, 2026
a4cd718
manifest refresh
martinzink Sep 25, 2026
9b9403a
win warning fix
martinzink Sep 28, 2026
ffdb7ba
compile cargo_test during compilation step
martinzink Sep 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
178 changes: 178 additions & 0 deletions .github/references/ubuntu_22_04_clang_arm_manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -12104,6 +12104,184 @@
"version": "1.0.0"
}
},
{
"bundles": {
"componentManifest": {
"processors": [
{
"propertyDescriptors": {
"Passphrase": {
"name": "Passphrase",
"description": "Passphrase used for decrypting data encrypted with Password-Based Encryption",
"validator": "NON_BLANK_VALIDATOR",
"required": "false",
"sensitive": "true",
"expressionLanguageScope": "NONE"
},
"Private Key Service": {
"typeProvidedByValue": {
"type": "minifi_pgp.controller_services.private_key_service.PGPPrivateKeyService",
"group": "org.apache.nifi.minifi.rust",
"artifact": "minifi_pgp"
},
"name": "Private Key Service",
"description": "PGP Private Key Service for decrypting data encrypted with Public Key Encryption",
"validator": "VALID",
"required": "false",
"sensitive": "false",
"expressionLanguageScope": "NONE"
}
},
"inputRequirement": "INPUT_REQUIRED",
"isSingleThreaded": "false",
"supportedRelationships": [
{
"name": "failure",
"description": "Decryption Failed"
},
{
"name": "success",
"description": "Decryption Succeeded"
}
],
"typeDescription": "Decrypt contents of OpenPGP messages.",
"supportsDynamicRelationships": "false",
"supportsDynamicProperties": "false",
"type": "minifi_pgp.processors.decrypt_content.DecryptContentPGP"
},
{
"propertyDescriptors": {
"File Encoding": {
"name": "File Encoding",
"description": "File Encoding for encryption",
"validator": "VALID",
"required": "true",
"sensitive": "false",
"expressionLanguageScope": "NONE",
"defaultValue": "BINARY",
"allowableValues": [
{
"value": "ASCII",
"displayName": "ASCII"
},
{
"value": "BINARY",
"displayName": "BINARY"
}
]
},
"Passphrase": {
"name": "Passphrase",
"description": "Passphrase used for encrypting data with Password-Based Encryption",
"validator": "NON_BLANK_VALIDATOR",
"required": "false",
"sensitive": "true",
"expressionLanguageScope": "NONE"
},
"Public Key Search": {
"name": "Public Key Search",
"description": "PGP Public Key Search will be used to match against the User ID or Key ID when formatted as uppercase hexadecimal string of 16 characters",
"validator": "VALID",
"required": "false",
"sensitive": "false",
"expressionLanguageScope": "FLOWFILE_ATTRIBUTES"
},
"Public Key Service": {
"typeProvidedByValue": {
"type": "minifi_pgp.controller_services.public_key_service.PGPPublicKeyService",
"group": "org.apache.nifi.minifi.rust",
"artifact": "minifi_pgp"
},
"name": "Public Key Service",
"description": "PGP Public Key Service for encrypting data with Public Key Encryption",
"validator": "VALID",
"required": "false",
"sensitive": "false",
"expressionLanguageScope": "NONE"
}
},
"inputRequirement": "INPUT_REQUIRED",
"isSingleThreaded": "false",
"supportedRelationships": [
{
"name": "failure",
"description": "Encryption Failed"
},
{
"name": "success",
"description": "Encryption Succeeded"
}
],
"typeDescription": "Encrypt contents using OpenPGP.",
"supportsDynamicRelationships": "false",
"supportsDynamicProperties": "false",
"type": "minifi_pgp.processors.encrypt_content.EncryptContentPGP"
}
],
"controllerServices": [
{
"propertyDescriptors": {
"Key Password": {
"name": "Key Password",
"description": "Password used for decrypting Private Keys. Multiple passwords may be supplied one per line, each of them is tried in turn",
"validator": "NON_BLANK_VALIDATOR",
"required": "false",
"sensitive": "true",
"expressionLanguageScope": "NONE"
},
"Keyring": {
"name": "Keyring",
"description": "Secret Key encoded in ASCII Armor",
"validator": "VALID",
"required": "false",
"sensitive": "true",
"expressionLanguageScope": "NONE"
},
"Keyring File": {
"name": "Keyring File",
"description": "File path to PGP Secret Key encoded in binary or ASCII Armor",
"validator": "VALID",
"required": "false",
"sensitive": "false",
"expressionLanguageScope": "FLOWFILE_ATTRIBUTES"
}
},
"typeDescription": "PGP Private Key Service provides Private Keys loaded from files or properties",
"supportsDynamicRelationships": "false",
"supportsDynamicProperties": "false",
"type": "minifi_pgp.controller_services.private_key_service.PGPPrivateKeyService"
},
{
"propertyDescriptors": {
"Keyring": {
"name": "Keyring",
"description": "PGP Keyring or Public Key encoded in ASCII Armor",
"validator": "VALID",
"required": "false",
"sensitive": "false",
"expressionLanguageScope": "NONE"
},
"Keyring File": {
"name": "Keyring File",
"description": "File path to PGP Keyring or Public Key encoded in binary or ASCII Armor",
"validator": "VALID",
"required": "false",
"sensitive": "false",
"expressionLanguageScope": "FLOWFILE_ATTRIBUTES"
}
},
"typeDescription": "PGP Public Key Service providing Public Keys loaded from files",
"supportsDynamicRelationships": "false",
"supportsDynamicProperties": "false",
"type": "minifi_pgp.controller_services.public_key_service.PGPPublicKeyService"
}
]
},
"group": "org.apache.nifi.minifi.rust",
"artifact": "minifi_pgp",
"version": "1.0.0"
}
},
{
"bundles": {
"componentManifest": {
Expand Down
36 changes: 35 additions & 1 deletion CONTROLLERS.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ limitations under the License.
- [NetworkPrioritizerService](#NetworkPrioritizerService)
- [ODBCService](#ODBCService)
- [PersistentMapStateStorage](#PersistentMapStateStorage)
- [PGPPrivateKeyService](#PGPPrivateKeyService)
- [PGPPublicKeyService](#PGPPublicKeyService)
- [ProxyConfigurationService](#ProxyConfigurationService)
- [RocksDbStateStorage](#RocksDbStateStorage)
- [SmbConnectionControllerService](#SmbConnectionControllerService)
Expand Down Expand Up @@ -245,6 +247,39 @@ In the list below, the names of required properties appear in bold. Any other pr
| **File** | | | Path to a file to store state |


## PGPPrivateKeyService

### Description

PGP Private Key Service provides Private Keys loaded from files or properties

### Properties

In the list below, the names of required properties appear in bold. Any other properties (not in bold) are considered optional. The table also indicates any default values, and whether a property supports the NiFi Expression Language.

| Name | Default Value | Allowable Values | Description |
|--------------|---------------|------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Key Password | | | Password used for decrypting Private Keys. Multiple passwords may be supplied one per line, each of them is tried in turn<br/>**Sensitive Property: true** |
| Keyring | | | Secret Key encoded in ASCII Armor<br/>**Sensitive Property: true** |
| Keyring File | | | File path to PGP Secret Key encoded in binary or ASCII Armor<br/>**Supports Expression Language: true** |


## PGPPublicKeyService

### Description

PGP Public Key Service providing Public Keys loaded from files

### Properties

In the list below, the names of required properties appear in bold. Any other properties (not in bold) are considered optional. The table also indicates any default values, and whether a property supports the NiFi Expression Language.

| Name | Default Value | Allowable Values | Description |
|--------------|---------------|------------------|--------------------------------------------------------------------------------------------------------------------|
| Keyring | | | PGP Keyring or Public Key encoded in ASCII Armor |
| Keyring File | | | File path to PGP Keyring or Public Key encoded in binary or ASCII Armor<br/>**Supports Expression Language: true** |


## ProxyConfigurationService

### Description
Expand Down Expand Up @@ -393,4 +428,3 @@ In the list below, the names of required properties appear in bold. Any other pr
| **Pretty Print XML** | false | true<br/>false | Specifies whether or not the XML should be pretty printed |
| **Name of Record Tag** | | | Specifies the name of the XML record tag wrapping the record fields. |
| **Name of Root Tag** | | | Specifies the name of the XML root tag wrapping the record set. |

56 changes: 56 additions & 0 deletions PROCESSORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,13 @@ limitations under the License.
- [ConsumeMQTT](#ConsumeMQTT)
- [ConsumeWindowsEventLog](#ConsumeWindowsEventLog)
- [ConvertRecord](#ConvertRecord)
- [DecryptContentPGP](#DecryptContentPGP)
- [DefragmentText](#DefragmentText)
- [DeleteAzureBlobStorage](#DeleteAzureBlobStorage)
- [DeleteAzureDataLakeStorage](#DeleteAzureDataLakeStorage)
- [DeleteGCSObject](#DeleteGCSObject)
- [DeleteS3Object](#DeleteS3Object)
- [EncryptContentPGP](#EncryptContentPGP)
- [EvaluateJsonPath](#EvaluateJsonPath)
- [ExecuteProcess](#ExecuteProcess)
- [ExecuteScript](#ExecuteScript)
Expand Down Expand Up @@ -436,6 +438,29 @@ In the list below, the names of required properties appear in bold. Any other pr
| record.error.message | failure | This attribute provides on failure the error message encountered by the Reader or Writer. |


## DecryptContentPGP

### Description

Decrypt contents of OpenPGP messages.

### Properties

In the list below, the names of required properties appear in bold. Any other properties (not in bold) are considered optional. The table also indicates any default values, and whether a property supports the NiFi Expression Language.

| Name | Default Value | Allowable Values | Description |
|---------------------|---------------|------------------|---------------------------------------------------------------------------------------------------------------|
| Passphrase | | | Passphrase used for decrypting data encrypted with Password-Based Encryption<br/>**Sensitive Property: true** |
| Private Key Service | | | PGP Private Key Service for decrypting data encrypted with Public Key Encryption |

### Relationships

| Name | Description |
|---------|----------------------|
| failure | Decryption Failed |
| success | Decryption Succeeded |


## DefragmentText

### Description
Expand Down Expand Up @@ -594,6 +619,37 @@ In the list below, the names of required properties appear in bold. Any other pr
| failure | FlowFiles are routed to failure relationship |


## EncryptContentPGP

### Description

Encrypt contents using OpenPGP.

### Properties

In the list below, the names of required properties appear in bold. Any other properties (not in bold) are considered optional. The table also indicates any default values, and whether a property supports the NiFi Expression Language.

| Name | Default Value | Allowable Values | Description |
|--------------------|---------------|------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **File Encoding** | BINARY | ASCII<br/>BINARY | File Encoding for encryption |
| Passphrase | | | Passphrase used for encrypting data with Password-Based Encryption<br/>**Sensitive Property: true** |
| Public Key Search | | | PGP Public Key Search will be used to match against the User ID or Key ID when formatted as uppercase hexadecimal string of 16 characters<br/>**Supports Expression Language: true** |
| Public Key Service | | | PGP Public Key Service for encrypting data with Public Key Encryption |

### Relationships

| Name | Description |
|---------|----------------------|
| failure | Encryption Failed |
| success | Encryption Succeeded |

### Output Attributes

| Attribute | Relationship | Description |
|-------------------|--------------|---------------|
| pgp.file.encoding | success | File Encoding |


## EvaluateJsonPath

### Description
Expand Down
Loading