This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 92b06957aae9 CAMEL-23098 - Camel-PQC: Wire KeyLifecycleManager into
PQC producer to enable key lifecycle operations (#21636)
92b06957aae9 is described below
commit 92b06957aae92973f72db8b5f867e0135f74ee1f
Author: Andrea Cosentino <[email protected]>
AuthorDate: Fri Feb 27 23:48:52 2026 +0100
CAMEL-23098 - Camel-PQC: Wire KeyLifecycleManager into PQC producer to
enable key lifecycle operations (#21636)
Signed-off-by: Andrea Cosentino <[email protected]>
---
.gitignore | 1 +
.../org/apache/camel/catalog/components/pqc.json | 42 ++--
.../component/pqc/PQCComponentConfigurer.java | 8 +-
.../camel/component/pqc/PQCEndpointConfigurer.java | 8 +-
.../camel/component/pqc/PQCEndpointUriFactory.java | 3 +-
.../org/apache/camel/component/pqc/pqc.json | 42 ++--
.../camel/component/pqc/PQCConfiguration.java | 17 ++
.../apache/camel/component/pqc/PQCProducer.java | 226 +++++++++++++++++++++
.../component/pqc/stateful/StatefulKeyState.java | 63 ++++++
.../component/dsl/PqcComponentBuilderFactory.java | 18 ++
.../endpoint/dsl/PQCEndpointBuilderFactory.java | 32 +++
11 files changed, 417 insertions(+), 43 deletions(-)
diff --git a/.gitignore b/.gitignore
index 6dafc7809cc6..de2fa30d9aef 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,3 +30,4 @@ mvnd.zip*
.camel-jbang
.camel-jbang-run
.mvn/.develocity/develocity-workspace-id
+backlog
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/pqc.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/pqc.json
index 3fbc016cd7cc..a7ad60e9a84c 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/pqc.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/pqc.json
@@ -36,17 +36,18 @@
"hybridKdfAlgorithm": { "index": 9, "kind": "property", "displayName":
"Hybrid Kdf Algorithm", "group": "advanced", "label": "advanced", "required":
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "HKDF-SHA256",
"HKDF-SHA384", "HKDF-SHA512" ], "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "defaultValue": "HKDF-SHA256",
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "de [...]
"keyEncapsulationAlgorithm": { "index": 10, "kind": "property",
"displayName": "Key Encapsulation Algorithm", "group": "advanced", "label":
"advanced", "required": false, "type": "enum", "javaType": "java.lang.String",
"enum": [ "MLKEM", "BIKE", "HQC", "CMCE", "SABER", "FRODO", "NTRU",
"NTRULPRime", "SNTRUPrime", "KYBER" ], "deprecated": false, "deprecationNote":
"", "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configu [...]
"keyGenerator": { "index": 11, "kind": "property", "displayName": "Key
Generator", "group": "advanced", "label": "advanced", "required": false,
"type": "object", "javaType": "javax.crypto.KeyGenerator", "deprecated": false,
"deprecationNote": "", "autowired": true, "secret": false,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The Key Generator to be
used in encapsulation and extraction" },
- "keyPair": { "index": 12, "kind": "property", "displayName": "Key Pair",
"group": "advanced", "label": "advanced", "required": false, "type": "object",
"javaType": "java.security.KeyPair", "deprecated": false, "deprecationNote":
"", "autowired": true, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "The KeyPair to be used" },
- "keyPairAlias": { "index": 13, "kind": "property", "displayName": "Key
Pair Alias", "group": "advanced", "label": "advanced", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "A KeyPair alias to use
in combination with KeyStore parameter" },
- "keyStore": { "index": 14, "kind": "property", "displayName": "Key Store",
"group": "advanced", "label": "advanced", "required": false, "type": "object",
"javaType": "java.security.KeyStore", "deprecated": false, "deprecationNote":
"", "autowired": true, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "A KeyStore where we could get Cryptographic
material" },
- "keyStorePassword": { "index": 15, "kind": "property", "displayName": "Key
Store Password", "group": "advanced", "label": "advanced", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": true,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The KeyStore password to
use in combination with KeyStore Parameter" },
- "signatureAlgorithm": { "index": 16, "kind": "property", "displayName":
"Signature Algorithm", "group": "advanced", "label": "advanced", "required":
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "MLDSA",
"SLHDSA", "LMS", "HSS", "XMSS", "XMSSMT", "DILITHIUM", "FALCON", "PICNIC",
"SNOVA", "MAYO", "SPHINCSPLUS" ], "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "c [...]
- "signer": { "index": 17, "kind": "property", "displayName": "Signer",
"group": "advanced", "label": "advanced", "required": false, "type": "object",
"javaType": "java.security.Signature", "deprecated": false, "deprecationNote":
"", "autowired": true, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "The Signer to be used" },
- "storeExtractedSecretKeyAsHeader": { "index": 18, "kind": "property",
"displayName": "Store Extracted Secret Key As Header", "group": "advanced",
"label": "advanced", "required": false, "type": "boolean", "javaType":
"boolean", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "In the context of extractSec [...]
- "symmetricKeyAlgorithm": { "index": 19, "kind": "property", "displayName":
"Symmetric Key Algorithm", "group": "advanced", "label": "advanced",
"required": false, "type": "enum", "javaType": "java.lang.String", "enum": [
"AES", "ARIA", "RC2", "RC5", "CAMELLIA", "CAST5", "CAST6", "CHACHA7539",
"DSTU7624", "GOST28147", "GOST3412_2015", "GRAIN128", "HC128", "HC256",
"SALSA20", "SEED", "SM4", "DESEDE" ], "deprecated": false, "deprecationNote":
"", "autowired": false, "secret": false, "co [...]
- "symmetricKeyLength": { "index": 20, "kind": "property", "displayName":
"Symmetric Key Length", "group": "advanced", "label": "advanced", "required":
false, "type": "integer", "javaType": "int", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
128, "configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The required length of
the symmetric key used" },
- "healthCheckConsumerEnabled": { "index": 21, "kind": "property",
"displayName": "Health Check Consumer Enabled", "group": "health", "label":
"health", "required": false, "type": "boolean", "javaType": "boolean",
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true,
"description": "Used for enabling or disabling all consumer based health checks
from this component" },
- "healthCheckProducerEnabled": { "index": 22, "kind": "property",
"displayName": "Health Check Producer Enabled", "group": "health", "label":
"health", "required": false, "type": "boolean", "javaType": "boolean",
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true,
"description": "Used for enabling or disabling all producer based health checks
from this component. Notice: Camel has by default disabled all producer based
health-checks. You can turn on produce [...]
+ "keyLifecycleManager": { "index": 12, "kind": "property", "displayName":
"Key Lifecycle Manager", "group": "advanced", "label": "advanced", "required":
false, "type": "object", "javaType":
"org.apache.camel.component.pqc.lifecycle.KeyLifecycleManager", "deprecated":
false, "deprecationNote": "", "autowired": true, "secret": false,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The KeyLifecycleManager
to [...]
+ "keyPair": { "index": 13, "kind": "property", "displayName": "Key Pair",
"group": "advanced", "label": "advanced", "required": false, "type": "object",
"javaType": "java.security.KeyPair", "deprecated": false, "deprecationNote":
"", "autowired": true, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "The KeyPair to be used" },
+ "keyPairAlias": { "index": 14, "kind": "property", "displayName": "Key
Pair Alias", "group": "advanced", "label": "advanced", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "A KeyPair alias to use
in combination with KeyStore parameter" },
+ "keyStore": { "index": 15, "kind": "property", "displayName": "Key Store",
"group": "advanced", "label": "advanced", "required": false, "type": "object",
"javaType": "java.security.KeyStore", "deprecated": false, "deprecationNote":
"", "autowired": true, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "A KeyStore where we could get Cryptographic
material" },
+ "keyStorePassword": { "index": 16, "kind": "property", "displayName": "Key
Store Password", "group": "advanced", "label": "advanced", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": true,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The KeyStore password to
use in combination with KeyStore Parameter" },
+ "signatureAlgorithm": { "index": 17, "kind": "property", "displayName":
"Signature Algorithm", "group": "advanced", "label": "advanced", "required":
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "MLDSA",
"SLHDSA", "LMS", "HSS", "XMSS", "XMSSMT", "DILITHIUM", "FALCON", "PICNIC",
"SNOVA", "MAYO", "SPHINCSPLUS" ], "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "c [...]
+ "signer": { "index": 18, "kind": "property", "displayName": "Signer",
"group": "advanced", "label": "advanced", "required": false, "type": "object",
"javaType": "java.security.Signature", "deprecated": false, "deprecationNote":
"", "autowired": true, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "The Signer to be used" },
+ "storeExtractedSecretKeyAsHeader": { "index": 19, "kind": "property",
"displayName": "Store Extracted Secret Key As Header", "group": "advanced",
"label": "advanced", "required": false, "type": "boolean", "javaType":
"boolean", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "In the context of extractSec [...]
+ "symmetricKeyAlgorithm": { "index": 20, "kind": "property", "displayName":
"Symmetric Key Algorithm", "group": "advanced", "label": "advanced",
"required": false, "type": "enum", "javaType": "java.lang.String", "enum": [
"AES", "ARIA", "RC2", "RC5", "CAMELLIA", "CAST5", "CAST6", "CHACHA7539",
"DSTU7624", "GOST28147", "GOST3412_2015", "GRAIN128", "HC128", "HC256",
"SALSA20", "SEED", "SM4", "DESEDE" ], "deprecated": false, "deprecationNote":
"", "autowired": false, "secret": false, "co [...]
+ "symmetricKeyLength": { "index": 21, "kind": "property", "displayName":
"Symmetric Key Length", "group": "advanced", "label": "advanced", "required":
false, "type": "integer", "javaType": "int", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
128, "configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The required length of
the symmetric key used" },
+ "healthCheckConsumerEnabled": { "index": 22, "kind": "property",
"displayName": "Health Check Consumer Enabled", "group": "health", "label":
"health", "required": false, "type": "boolean", "javaType": "boolean",
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true,
"description": "Used for enabling or disabling all consumer based health checks
from this component" },
+ "healthCheckProducerEnabled": { "index": 23, "kind": "property",
"displayName": "Health Check Producer Enabled", "group": "health", "label":
"health", "required": false, "type": "boolean", "javaType": "boolean",
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true,
"description": "Used for enabling or disabling all producer based health checks
from this component. Notice: Camel has by default disabled all producer based
health-checks. You can turn on produce [...]
},
"headers": {
"CamelPQCOperation": { "index": 0, "kind": "header", "displayName": "",
"group": "producer", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The operation we want to perform", "constantName":
"org.apache.camel.component.pqc.PQCConstants#OPERATION" },
@@ -85,14 +86,15 @@
"hybridKdfAlgorithm": { "index": 8, "kind": "parameter", "displayName":
"Hybrid Kdf Algorithm", "group": "advanced", "label": "advanced", "required":
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "HKDF-SHA256",
"HKDF-SHA384", "HKDF-SHA512" ], "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "defaultValue": "HKDF-SHA256",
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "d [...]
"keyEncapsulationAlgorithm": { "index": 9, "kind": "parameter",
"displayName": "Key Encapsulation Algorithm", "group": "advanced", "label":
"advanced", "required": false, "type": "enum", "javaType": "java.lang.String",
"enum": [ "MLKEM", "BIKE", "HQC", "CMCE", "SABER", "FRODO", "NTRU",
"NTRULPRime", "SNTRUPrime", "KYBER" ], "deprecated": false, "deprecationNote":
"", "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configu [...]
"keyGenerator": { "index": 10, "kind": "parameter", "displayName": "Key
Generator", "group": "advanced", "label": "advanced", "required": false,
"type": "object", "javaType": "javax.crypto.KeyGenerator", "deprecated": false,
"deprecationNote": "", "autowired": true, "secret": false,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The Key Generator to be
used in encapsulation and extraction" },
- "keyPair": { "index": 11, "kind": "parameter", "displayName": "Key Pair",
"group": "advanced", "label": "advanced", "required": false, "type": "object",
"javaType": "java.security.KeyPair", "deprecated": false, "deprecationNote":
"", "autowired": true, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "The KeyPair to be used" },
- "keyPairAlias": { "index": 12, "kind": "parameter", "displayName": "Key
Pair Alias", "group": "advanced", "label": "advanced", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "A KeyPair alias to use
in combination with KeyStore parameter" },
- "keyStore": { "index": 13, "kind": "parameter", "displayName": "Key
Store", "group": "advanced", "label": "advanced", "required": false, "type":
"object", "javaType": "java.security.KeyStore", "deprecated": false,
"deprecationNote": "", "autowired": true, "secret": false,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "A KeyStore where we
could get Cryptographic material" },
- "keyStorePassword": { "index": 14, "kind": "parameter", "displayName":
"Key Store Password", "group": "advanced", "label": "advanced", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": true,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The KeyStore password to
use in combination with KeyStore Parameter" },
- "signatureAlgorithm": { "index": 15, "kind": "parameter", "displayName":
"Signature Algorithm", "group": "advanced", "label": "advanced", "required":
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "MLDSA",
"SLHDSA", "LMS", "HSS", "XMSS", "XMSSMT", "DILITHIUM", "FALCON", "PICNIC",
"SNOVA", "MAYO", "SPHINCSPLUS" ], "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", " [...]
- "signer": { "index": 16, "kind": "parameter", "displayName": "Signer",
"group": "advanced", "label": "advanced", "required": false, "type": "object",
"javaType": "java.security.Signature", "deprecated": false, "deprecationNote":
"", "autowired": true, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "The Signer to be used" },
- "storeExtractedSecretKeyAsHeader": { "index": 17, "kind": "parameter",
"displayName": "Store Extracted Secret Key As Header", "group": "advanced",
"label": "advanced", "required": false, "type": "boolean", "javaType":
"boolean", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "In the context of extractSe [...]
- "symmetricKeyAlgorithm": { "index": 18, "kind": "parameter",
"displayName": "Symmetric Key Algorithm", "group": "advanced", "label":
"advanced", "required": false, "type": "enum", "javaType": "java.lang.String",
"enum": [ "AES", "ARIA", "RC2", "RC5", "CAMELLIA", "CAST5", "CAST6",
"CHACHA7539", "DSTU7624", "GOST28147", "GOST3412_2015", "GRAIN128", "HC128",
"HC256", "SALSA20", "SEED", "SM4", "DESEDE" ], "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "c [...]
- "symmetricKeyLength": { "index": 19, "kind": "parameter", "displayName":
"Symmetric Key Length", "group": "advanced", "label": "advanced", "required":
false, "type": "integer", "javaType": "int", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
128, "configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The required length of
the symmetric key used" }
+ "keyLifecycleManager": { "index": 11, "kind": "parameter", "displayName":
"Key Lifecycle Manager", "group": "advanced", "label": "advanced", "required":
false, "type": "object", "javaType":
"org.apache.camel.component.pqc.lifecycle.KeyLifecycleManager", "deprecated":
false, "deprecationNote": "", "autowired": true, "secret": false,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The KeyLifecycleManager
to [...]
+ "keyPair": { "index": 12, "kind": "parameter", "displayName": "Key Pair",
"group": "advanced", "label": "advanced", "required": false, "type": "object",
"javaType": "java.security.KeyPair", "deprecated": false, "deprecationNote":
"", "autowired": true, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "The KeyPair to be used" },
+ "keyPairAlias": { "index": 13, "kind": "parameter", "displayName": "Key
Pair Alias", "group": "advanced", "label": "advanced", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "A KeyPair alias to use
in combination with KeyStore parameter" },
+ "keyStore": { "index": 14, "kind": "parameter", "displayName": "Key
Store", "group": "advanced", "label": "advanced", "required": false, "type":
"object", "javaType": "java.security.KeyStore", "deprecated": false,
"deprecationNote": "", "autowired": true, "secret": false,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "A KeyStore where we
could get Cryptographic material" },
+ "keyStorePassword": { "index": 15, "kind": "parameter", "displayName":
"Key Store Password", "group": "advanced", "label": "advanced", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": true,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The KeyStore password to
use in combination with KeyStore Parameter" },
+ "signatureAlgorithm": { "index": 16, "kind": "parameter", "displayName":
"Signature Algorithm", "group": "advanced", "label": "advanced", "required":
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "MLDSA",
"SLHDSA", "LMS", "HSS", "XMSS", "XMSSMT", "DILITHIUM", "FALCON", "PICNIC",
"SNOVA", "MAYO", "SPHINCSPLUS" ], "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", " [...]
+ "signer": { "index": 17, "kind": "parameter", "displayName": "Signer",
"group": "advanced", "label": "advanced", "required": false, "type": "object",
"javaType": "java.security.Signature", "deprecated": false, "deprecationNote":
"", "autowired": true, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "The Signer to be used" },
+ "storeExtractedSecretKeyAsHeader": { "index": 18, "kind": "parameter",
"displayName": "Store Extracted Secret Key As Header", "group": "advanced",
"label": "advanced", "required": false, "type": "boolean", "javaType":
"boolean", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "In the context of extractSe [...]
+ "symmetricKeyAlgorithm": { "index": 19, "kind": "parameter",
"displayName": "Symmetric Key Algorithm", "group": "advanced", "label":
"advanced", "required": false, "type": "enum", "javaType": "java.lang.String",
"enum": [ "AES", "ARIA", "RC2", "RC5", "CAMELLIA", "CAST5", "CAST6",
"CHACHA7539", "DSTU7624", "GOST28147", "GOST3412_2015", "GRAIN128", "HC128",
"HC256", "SALSA20", "SEED", "SM4", "DESEDE" ], "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "c [...]
+ "symmetricKeyLength": { "index": 20, "kind": "parameter", "displayName":
"Symmetric Key Length", "group": "advanced", "label": "advanced", "required":
false, "type": "integer", "javaType": "int", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
128, "configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The required length of
the symmetric key used" }
}
}
diff --git
a/components/camel-pqc/src/generated/java/org/apache/camel/component/pqc/PQCComponentConfigurer.java
b/components/camel-pqc/src/generated/java/org/apache/camel/component/pqc/PQCComponentConfigurer.java
index 6017b9fcb364..a4da0eb7933c 100644
---
a/components/camel-pqc/src/generated/java/org/apache/camel/component/pqc/PQCComponentConfigurer.java
+++
b/components/camel-pqc/src/generated/java/org/apache/camel/component/pqc/PQCComponentConfigurer.java
@@ -53,6 +53,8 @@ public class PQCComponentConfigurer extends
PropertyConfigurerSupport implements
case "keyEncapsulationAlgorithm":
getOrCreateConfiguration(target).setKeyEncapsulationAlgorithm(property(camelContext,
java.lang.String.class, value)); return true;
case "keygenerator":
case "keyGenerator":
getOrCreateConfiguration(target).setKeyGenerator(property(camelContext,
javax.crypto.KeyGenerator.class, value)); return true;
+ case "keylifecyclemanager":
+ case "keyLifecycleManager":
getOrCreateConfiguration(target).setKeyLifecycleManager(property(camelContext,
org.apache.camel.component.pqc.lifecycle.KeyLifecycleManager.class, value));
return true;
case "keypair":
case "keyPair":
getOrCreateConfiguration(target).setKeyPair(property(camelContext,
java.security.KeyPair.class, value)); return true;
case "keypairalias":
@@ -79,7 +81,7 @@ public class PQCComponentConfigurer extends
PropertyConfigurerSupport implements
@Override
public String[] getAutowiredNames() {
- return new String[]{"classicalKeyAgreement", "classicalKeyPair",
"classicalSigner", "keyGenerator", "keyPair", "keyStore", "signer"};
+ return new String[]{"classicalKeyAgreement", "classicalKeyPair",
"classicalSigner", "keyGenerator", "keyLifecycleManager", "keyPair",
"keyStore", "signer"};
}
@Override
@@ -108,6 +110,8 @@ public class PQCComponentConfigurer extends
PropertyConfigurerSupport implements
case "keyEncapsulationAlgorithm": return java.lang.String.class;
case "keygenerator":
case "keyGenerator": return javax.crypto.KeyGenerator.class;
+ case "keylifecyclemanager":
+ case "keyLifecycleManager": return
org.apache.camel.component.pqc.lifecycle.KeyLifecycleManager.class;
case "keypair":
case "keyPair": return java.security.KeyPair.class;
case "keypairalias":
@@ -159,6 +163,8 @@ public class PQCComponentConfigurer extends
PropertyConfigurerSupport implements
case "keyEncapsulationAlgorithm": return
getOrCreateConfiguration(target).getKeyEncapsulationAlgorithm();
case "keygenerator":
case "keyGenerator": return
getOrCreateConfiguration(target).getKeyGenerator();
+ case "keylifecyclemanager":
+ case "keyLifecycleManager": return
getOrCreateConfiguration(target).getKeyLifecycleManager();
case "keypair":
case "keyPair": return getOrCreateConfiguration(target).getKeyPair();
case "keypairalias":
diff --git
a/components/camel-pqc/src/generated/java/org/apache/camel/component/pqc/PQCEndpointConfigurer.java
b/components/camel-pqc/src/generated/java/org/apache/camel/component/pqc/PQCEndpointConfigurer.java
index 6b006728cb64..1d15c2a783b7 100644
---
a/components/camel-pqc/src/generated/java/org/apache/camel/component/pqc/PQCEndpointConfigurer.java
+++
b/components/camel-pqc/src/generated/java/org/apache/camel/component/pqc/PQCEndpointConfigurer.java
@@ -39,6 +39,8 @@ public class PQCEndpointConfigurer extends
PropertyConfigurerSupport implements
case "keyEncapsulationAlgorithm":
target.getConfiguration().setKeyEncapsulationAlgorithm(property(camelContext,
java.lang.String.class, value)); return true;
case "keygenerator":
case "keyGenerator":
target.getConfiguration().setKeyGenerator(property(camelContext,
javax.crypto.KeyGenerator.class, value)); return true;
+ case "keylifecyclemanager":
+ case "keyLifecycleManager":
target.getConfiguration().setKeyLifecycleManager(property(camelContext,
org.apache.camel.component.pqc.lifecycle.KeyLifecycleManager.class, value));
return true;
case "keypair":
case "keyPair":
target.getConfiguration().setKeyPair(property(camelContext,
java.security.KeyPair.class, value)); return true;
case "keypairalias":
@@ -65,7 +67,7 @@ public class PQCEndpointConfigurer extends
PropertyConfigurerSupport implements
@Override
public String[] getAutowiredNames() {
- return new String[]{"classicalKeyAgreement", "classicalKeyPair",
"classicalSigner", "keyGenerator", "keyPair", "keyStore", "signer"};
+ return new String[]{"classicalKeyAgreement", "classicalKeyPair",
"classicalSigner", "keyGenerator", "keyLifecycleManager", "keyPair",
"keyStore", "signer"};
}
@Override
@@ -87,6 +89,8 @@ public class PQCEndpointConfigurer extends
PropertyConfigurerSupport implements
case "keyEncapsulationAlgorithm": return java.lang.String.class;
case "keygenerator":
case "keyGenerator": return javax.crypto.KeyGenerator.class;
+ case "keylifecyclemanager":
+ case "keyLifecycleManager": return
org.apache.camel.component.pqc.lifecycle.KeyLifecycleManager.class;
case "keypair":
case "keyPair": return java.security.KeyPair.class;
case "keypairalias":
@@ -131,6 +135,8 @@ public class PQCEndpointConfigurer extends
PropertyConfigurerSupport implements
case "keyEncapsulationAlgorithm": return
target.getConfiguration().getKeyEncapsulationAlgorithm();
case "keygenerator":
case "keyGenerator": return
target.getConfiguration().getKeyGenerator();
+ case "keylifecyclemanager":
+ case "keyLifecycleManager": return
target.getConfiguration().getKeyLifecycleManager();
case "keypair":
case "keyPair": return target.getConfiguration().getKeyPair();
case "keypairalias":
diff --git
a/components/camel-pqc/src/generated/java/org/apache/camel/component/pqc/PQCEndpointUriFactory.java
b/components/camel-pqc/src/generated/java/org/apache/camel/component/pqc/PQCEndpointUriFactory.java
index 7cd7770f07b0..60e66d94b1e8 100644
---
a/components/camel-pqc/src/generated/java/org/apache/camel/component/pqc/PQCEndpointUriFactory.java
+++
b/components/camel-pqc/src/generated/java/org/apache/camel/component/pqc/PQCEndpointUriFactory.java
@@ -23,7 +23,7 @@ public class PQCEndpointUriFactory extends
org.apache.camel.support.component.En
private static final Set<String> SECRET_PROPERTY_NAMES;
private static final Map<String, String> MULTI_VALUE_PREFIXES;
static {
- Set<String> props = new HashSet<>(20);
+ Set<String> props = new HashSet<>(21);
props.add("classicalKEMAlgorithm");
props.add("classicalKeyAgreement");
props.add("classicalKeyPair");
@@ -32,6 +32,7 @@ public class PQCEndpointUriFactory extends
org.apache.camel.support.component.En
props.add("hybridKdfAlgorithm");
props.add("keyEncapsulationAlgorithm");
props.add("keyGenerator");
+ props.add("keyLifecycleManager");
props.add("keyPair");
props.add("keyPairAlias");
props.add("keyStore");
diff --git
a/components/camel-pqc/src/generated/resources/META-INF/org/apache/camel/component/pqc/pqc.json
b/components/camel-pqc/src/generated/resources/META-INF/org/apache/camel/component/pqc/pqc.json
index 3fbc016cd7cc..a7ad60e9a84c 100644
---
a/components/camel-pqc/src/generated/resources/META-INF/org/apache/camel/component/pqc/pqc.json
+++
b/components/camel-pqc/src/generated/resources/META-INF/org/apache/camel/component/pqc/pqc.json
@@ -36,17 +36,18 @@
"hybridKdfAlgorithm": { "index": 9, "kind": "property", "displayName":
"Hybrid Kdf Algorithm", "group": "advanced", "label": "advanced", "required":
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "HKDF-SHA256",
"HKDF-SHA384", "HKDF-SHA512" ], "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "defaultValue": "HKDF-SHA256",
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "de [...]
"keyEncapsulationAlgorithm": { "index": 10, "kind": "property",
"displayName": "Key Encapsulation Algorithm", "group": "advanced", "label":
"advanced", "required": false, "type": "enum", "javaType": "java.lang.String",
"enum": [ "MLKEM", "BIKE", "HQC", "CMCE", "SABER", "FRODO", "NTRU",
"NTRULPRime", "SNTRUPrime", "KYBER" ], "deprecated": false, "deprecationNote":
"", "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configu [...]
"keyGenerator": { "index": 11, "kind": "property", "displayName": "Key
Generator", "group": "advanced", "label": "advanced", "required": false,
"type": "object", "javaType": "javax.crypto.KeyGenerator", "deprecated": false,
"deprecationNote": "", "autowired": true, "secret": false,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The Key Generator to be
used in encapsulation and extraction" },
- "keyPair": { "index": 12, "kind": "property", "displayName": "Key Pair",
"group": "advanced", "label": "advanced", "required": false, "type": "object",
"javaType": "java.security.KeyPair", "deprecated": false, "deprecationNote":
"", "autowired": true, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "The KeyPair to be used" },
- "keyPairAlias": { "index": 13, "kind": "property", "displayName": "Key
Pair Alias", "group": "advanced", "label": "advanced", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "A KeyPair alias to use
in combination with KeyStore parameter" },
- "keyStore": { "index": 14, "kind": "property", "displayName": "Key Store",
"group": "advanced", "label": "advanced", "required": false, "type": "object",
"javaType": "java.security.KeyStore", "deprecated": false, "deprecationNote":
"", "autowired": true, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "A KeyStore where we could get Cryptographic
material" },
- "keyStorePassword": { "index": 15, "kind": "property", "displayName": "Key
Store Password", "group": "advanced", "label": "advanced", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": true,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The KeyStore password to
use in combination with KeyStore Parameter" },
- "signatureAlgorithm": { "index": 16, "kind": "property", "displayName":
"Signature Algorithm", "group": "advanced", "label": "advanced", "required":
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "MLDSA",
"SLHDSA", "LMS", "HSS", "XMSS", "XMSSMT", "DILITHIUM", "FALCON", "PICNIC",
"SNOVA", "MAYO", "SPHINCSPLUS" ], "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "c [...]
- "signer": { "index": 17, "kind": "property", "displayName": "Signer",
"group": "advanced", "label": "advanced", "required": false, "type": "object",
"javaType": "java.security.Signature", "deprecated": false, "deprecationNote":
"", "autowired": true, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "The Signer to be used" },
- "storeExtractedSecretKeyAsHeader": { "index": 18, "kind": "property",
"displayName": "Store Extracted Secret Key As Header", "group": "advanced",
"label": "advanced", "required": false, "type": "boolean", "javaType":
"boolean", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "In the context of extractSec [...]
- "symmetricKeyAlgorithm": { "index": 19, "kind": "property", "displayName":
"Symmetric Key Algorithm", "group": "advanced", "label": "advanced",
"required": false, "type": "enum", "javaType": "java.lang.String", "enum": [
"AES", "ARIA", "RC2", "RC5", "CAMELLIA", "CAST5", "CAST6", "CHACHA7539",
"DSTU7624", "GOST28147", "GOST3412_2015", "GRAIN128", "HC128", "HC256",
"SALSA20", "SEED", "SM4", "DESEDE" ], "deprecated": false, "deprecationNote":
"", "autowired": false, "secret": false, "co [...]
- "symmetricKeyLength": { "index": 20, "kind": "property", "displayName":
"Symmetric Key Length", "group": "advanced", "label": "advanced", "required":
false, "type": "integer", "javaType": "int", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
128, "configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The required length of
the symmetric key used" },
- "healthCheckConsumerEnabled": { "index": 21, "kind": "property",
"displayName": "Health Check Consumer Enabled", "group": "health", "label":
"health", "required": false, "type": "boolean", "javaType": "boolean",
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true,
"description": "Used for enabling or disabling all consumer based health checks
from this component" },
- "healthCheckProducerEnabled": { "index": 22, "kind": "property",
"displayName": "Health Check Producer Enabled", "group": "health", "label":
"health", "required": false, "type": "boolean", "javaType": "boolean",
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true,
"description": "Used for enabling or disabling all producer based health checks
from this component. Notice: Camel has by default disabled all producer based
health-checks. You can turn on produce [...]
+ "keyLifecycleManager": { "index": 12, "kind": "property", "displayName":
"Key Lifecycle Manager", "group": "advanced", "label": "advanced", "required":
false, "type": "object", "javaType":
"org.apache.camel.component.pqc.lifecycle.KeyLifecycleManager", "deprecated":
false, "deprecationNote": "", "autowired": true, "secret": false,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The KeyLifecycleManager
to [...]
+ "keyPair": { "index": 13, "kind": "property", "displayName": "Key Pair",
"group": "advanced", "label": "advanced", "required": false, "type": "object",
"javaType": "java.security.KeyPair", "deprecated": false, "deprecationNote":
"", "autowired": true, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "The KeyPair to be used" },
+ "keyPairAlias": { "index": 14, "kind": "property", "displayName": "Key
Pair Alias", "group": "advanced", "label": "advanced", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "A KeyPair alias to use
in combination with KeyStore parameter" },
+ "keyStore": { "index": 15, "kind": "property", "displayName": "Key Store",
"group": "advanced", "label": "advanced", "required": false, "type": "object",
"javaType": "java.security.KeyStore", "deprecated": false, "deprecationNote":
"", "autowired": true, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "A KeyStore where we could get Cryptographic
material" },
+ "keyStorePassword": { "index": 16, "kind": "property", "displayName": "Key
Store Password", "group": "advanced", "label": "advanced", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": true,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The KeyStore password to
use in combination with KeyStore Parameter" },
+ "signatureAlgorithm": { "index": 17, "kind": "property", "displayName":
"Signature Algorithm", "group": "advanced", "label": "advanced", "required":
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "MLDSA",
"SLHDSA", "LMS", "HSS", "XMSS", "XMSSMT", "DILITHIUM", "FALCON", "PICNIC",
"SNOVA", "MAYO", "SPHINCSPLUS" ], "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "c [...]
+ "signer": { "index": 18, "kind": "property", "displayName": "Signer",
"group": "advanced", "label": "advanced", "required": false, "type": "object",
"javaType": "java.security.Signature", "deprecated": false, "deprecationNote":
"", "autowired": true, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "The Signer to be used" },
+ "storeExtractedSecretKeyAsHeader": { "index": 19, "kind": "property",
"displayName": "Store Extracted Secret Key As Header", "group": "advanced",
"label": "advanced", "required": false, "type": "boolean", "javaType":
"boolean", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "In the context of extractSec [...]
+ "symmetricKeyAlgorithm": { "index": 20, "kind": "property", "displayName":
"Symmetric Key Algorithm", "group": "advanced", "label": "advanced",
"required": false, "type": "enum", "javaType": "java.lang.String", "enum": [
"AES", "ARIA", "RC2", "RC5", "CAMELLIA", "CAST5", "CAST6", "CHACHA7539",
"DSTU7624", "GOST28147", "GOST3412_2015", "GRAIN128", "HC128", "HC256",
"SALSA20", "SEED", "SM4", "DESEDE" ], "deprecated": false, "deprecationNote":
"", "autowired": false, "secret": false, "co [...]
+ "symmetricKeyLength": { "index": 21, "kind": "property", "displayName":
"Symmetric Key Length", "group": "advanced", "label": "advanced", "required":
false, "type": "integer", "javaType": "int", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
128, "configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The required length of
the symmetric key used" },
+ "healthCheckConsumerEnabled": { "index": 22, "kind": "property",
"displayName": "Health Check Consumer Enabled", "group": "health", "label":
"health", "required": false, "type": "boolean", "javaType": "boolean",
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true,
"description": "Used for enabling or disabling all consumer based health checks
from this component" },
+ "healthCheckProducerEnabled": { "index": 23, "kind": "property",
"displayName": "Health Check Producer Enabled", "group": "health", "label":
"health", "required": false, "type": "boolean", "javaType": "boolean",
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true,
"description": "Used for enabling or disabling all producer based health checks
from this component. Notice: Camel has by default disabled all producer based
health-checks. You can turn on produce [...]
},
"headers": {
"CamelPQCOperation": { "index": 0, "kind": "header", "displayName": "",
"group": "producer", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The operation we want to perform", "constantName":
"org.apache.camel.component.pqc.PQCConstants#OPERATION" },
@@ -85,14 +86,15 @@
"hybridKdfAlgorithm": { "index": 8, "kind": "parameter", "displayName":
"Hybrid Kdf Algorithm", "group": "advanced", "label": "advanced", "required":
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "HKDF-SHA256",
"HKDF-SHA384", "HKDF-SHA512" ], "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "defaultValue": "HKDF-SHA256",
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "d [...]
"keyEncapsulationAlgorithm": { "index": 9, "kind": "parameter",
"displayName": "Key Encapsulation Algorithm", "group": "advanced", "label":
"advanced", "required": false, "type": "enum", "javaType": "java.lang.String",
"enum": [ "MLKEM", "BIKE", "HQC", "CMCE", "SABER", "FRODO", "NTRU",
"NTRULPRime", "SNTRUPrime", "KYBER" ], "deprecated": false, "deprecationNote":
"", "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configu [...]
"keyGenerator": { "index": 10, "kind": "parameter", "displayName": "Key
Generator", "group": "advanced", "label": "advanced", "required": false,
"type": "object", "javaType": "javax.crypto.KeyGenerator", "deprecated": false,
"deprecationNote": "", "autowired": true, "secret": false,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The Key Generator to be
used in encapsulation and extraction" },
- "keyPair": { "index": 11, "kind": "parameter", "displayName": "Key Pair",
"group": "advanced", "label": "advanced", "required": false, "type": "object",
"javaType": "java.security.KeyPair", "deprecated": false, "deprecationNote":
"", "autowired": true, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "The KeyPair to be used" },
- "keyPairAlias": { "index": 12, "kind": "parameter", "displayName": "Key
Pair Alias", "group": "advanced", "label": "advanced", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "A KeyPair alias to use
in combination with KeyStore parameter" },
- "keyStore": { "index": 13, "kind": "parameter", "displayName": "Key
Store", "group": "advanced", "label": "advanced", "required": false, "type":
"object", "javaType": "java.security.KeyStore", "deprecated": false,
"deprecationNote": "", "autowired": true, "secret": false,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "A KeyStore where we
could get Cryptographic material" },
- "keyStorePassword": { "index": 14, "kind": "parameter", "displayName":
"Key Store Password", "group": "advanced", "label": "advanced", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": true,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The KeyStore password to
use in combination with KeyStore Parameter" },
- "signatureAlgorithm": { "index": 15, "kind": "parameter", "displayName":
"Signature Algorithm", "group": "advanced", "label": "advanced", "required":
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "MLDSA",
"SLHDSA", "LMS", "HSS", "XMSS", "XMSSMT", "DILITHIUM", "FALCON", "PICNIC",
"SNOVA", "MAYO", "SPHINCSPLUS" ], "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", " [...]
- "signer": { "index": 16, "kind": "parameter", "displayName": "Signer",
"group": "advanced", "label": "advanced", "required": false, "type": "object",
"javaType": "java.security.Signature", "deprecated": false, "deprecationNote":
"", "autowired": true, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "The Signer to be used" },
- "storeExtractedSecretKeyAsHeader": { "index": 17, "kind": "parameter",
"displayName": "Store Extracted Secret Key As Header", "group": "advanced",
"label": "advanced", "required": false, "type": "boolean", "javaType":
"boolean", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "In the context of extractSe [...]
- "symmetricKeyAlgorithm": { "index": 18, "kind": "parameter",
"displayName": "Symmetric Key Algorithm", "group": "advanced", "label":
"advanced", "required": false, "type": "enum", "javaType": "java.lang.String",
"enum": [ "AES", "ARIA", "RC2", "RC5", "CAMELLIA", "CAST5", "CAST6",
"CHACHA7539", "DSTU7624", "GOST28147", "GOST3412_2015", "GRAIN128", "HC128",
"HC256", "SALSA20", "SEED", "SM4", "DESEDE" ], "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "c [...]
- "symmetricKeyLength": { "index": 19, "kind": "parameter", "displayName":
"Symmetric Key Length", "group": "advanced", "label": "advanced", "required":
false, "type": "integer", "javaType": "int", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
128, "configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The required length of
the symmetric key used" }
+ "keyLifecycleManager": { "index": 11, "kind": "parameter", "displayName":
"Key Lifecycle Manager", "group": "advanced", "label": "advanced", "required":
false, "type": "object", "javaType":
"org.apache.camel.component.pqc.lifecycle.KeyLifecycleManager", "deprecated":
false, "deprecationNote": "", "autowired": true, "secret": false,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The KeyLifecycleManager
to [...]
+ "keyPair": { "index": 12, "kind": "parameter", "displayName": "Key Pair",
"group": "advanced", "label": "advanced", "required": false, "type": "object",
"javaType": "java.security.KeyPair", "deprecated": false, "deprecationNote":
"", "autowired": true, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "The KeyPair to be used" },
+ "keyPairAlias": { "index": 13, "kind": "parameter", "displayName": "Key
Pair Alias", "group": "advanced", "label": "advanced", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "A KeyPair alias to use
in combination with KeyStore parameter" },
+ "keyStore": { "index": 14, "kind": "parameter", "displayName": "Key
Store", "group": "advanced", "label": "advanced", "required": false, "type":
"object", "javaType": "java.security.KeyStore", "deprecated": false,
"deprecationNote": "", "autowired": true, "secret": false,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "A KeyStore where we
could get Cryptographic material" },
+ "keyStorePassword": { "index": 15, "kind": "parameter", "displayName":
"Key Store Password", "group": "advanced", "label": "advanced", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": true,
"configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The KeyStore password to
use in combination with KeyStore Parameter" },
+ "signatureAlgorithm": { "index": 16, "kind": "parameter", "displayName":
"Signature Algorithm", "group": "advanced", "label": "advanced", "required":
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "MLDSA",
"SLHDSA", "LMS", "HSS", "XMSS", "XMSSMT", "DILITHIUM", "FALCON", "PICNIC",
"SNOVA", "MAYO", "SPHINCSPLUS" ], "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", " [...]
+ "signer": { "index": 17, "kind": "parameter", "displayName": "Signer",
"group": "advanced", "label": "advanced", "required": false, "type": "object",
"javaType": "java.security.Signature", "deprecated": false, "deprecationNote":
"", "autowired": true, "secret": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "The Signer to be used" },
+ "storeExtractedSecretKeyAsHeader": { "index": 18, "kind": "parameter",
"displayName": "Store Extracted Secret Key As Header", "group": "advanced",
"label": "advanced", "required": false, "type": "boolean", "javaType":
"boolean", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.pqc.PQCConfiguration", "configurationField":
"configuration", "description": "In the context of extractSe [...]
+ "symmetricKeyAlgorithm": { "index": 19, "kind": "parameter",
"displayName": "Symmetric Key Algorithm", "group": "advanced", "label":
"advanced", "required": false, "type": "enum", "javaType": "java.lang.String",
"enum": [ "AES", "ARIA", "RC2", "RC5", "CAMELLIA", "CAST5", "CAST6",
"CHACHA7539", "DSTU7624", "GOST28147", "GOST3412_2015", "GRAIN128", "HC128",
"HC256", "SALSA20", "SEED", "SM4", "DESEDE" ], "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "c [...]
+ "symmetricKeyLength": { "index": 20, "kind": "parameter", "displayName":
"Symmetric Key Length", "group": "advanced", "label": "advanced", "required":
false, "type": "integer", "javaType": "int", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "defaultValue":
128, "configurationClass": "org.apache.camel.component.pqc.PQCConfiguration",
"configurationField": "configuration", "description": "The required length of
the symmetric key used" }
}
}
diff --git
a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/PQCConfiguration.java
b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/PQCConfiguration.java
index 87ace93b481d..be91d6ffb789 100644
---
a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/PQCConfiguration.java
+++
b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/PQCConfiguration.java
@@ -24,6 +24,7 @@ import javax.crypto.KeyAgreement;
import javax.crypto.KeyGenerator;
import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.pqc.lifecycle.KeyLifecycleManager;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
@@ -100,6 +101,10 @@ public class PQCConfiguration implements Cloneable {
@Metadata(label = "advanced")
private String hybridKdfAlgorithm = "HKDF-SHA256";
+ @UriParam(description = "The KeyLifecycleManager to use for key lifecycle
operations such as generation, rotation, import/export, expiration, and
revocation")
+ @Metadata(label = "advanced", autowired = true)
+ private KeyLifecycleManager keyLifecycleManager;
+
public PQCOperations getOperation() {
return operation;
}
@@ -299,6 +304,18 @@ public class PQCConfiguration implements Cloneable {
this.hybridKdfAlgorithm = hybridKdfAlgorithm;
}
+ public KeyLifecycleManager getKeyLifecycleManager() {
+ return keyLifecycleManager;
+ }
+
+ /**
+ * The KeyLifecycleManager to use for key lifecycle operations such as
generation, rotation, import/export,
+ * expiration, and revocation
+ */
+ public void setKeyLifecycleManager(KeyLifecycleManager
keyLifecycleManager) {
+ this.keyLifecycleManager = keyLifecycleManager;
+ }
+
// *************************************************
//
// *************************************************
diff --git
a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/PQCProducer.java
b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/PQCProducer.java
index fcdb77d397e6..5ab1c2d89a0a 100644
---
a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/PQCProducer.java
+++
b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/PQCProducer.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.pqc;
import java.security.*;
import java.security.cert.Certificate;
+import java.util.List;
import javax.crypto.KeyAgreement;
import javax.crypto.KeyGenerator;
@@ -29,11 +30,17 @@ import org.apache.camel.Exchange;
import org.apache.camel.InvalidPayloadException;
import org.apache.camel.component.pqc.crypto.hybrid.HybridKEM;
import org.apache.camel.component.pqc.crypto.hybrid.HybridSignature;
+import org.apache.camel.component.pqc.lifecycle.KeyLifecycleManager;
+import org.apache.camel.component.pqc.lifecycle.KeyMetadata;
+import org.apache.camel.component.pqc.stateful.StatefulKeyState;
import org.apache.camel.support.DefaultProducer;
import org.apache.camel.util.ObjectHelper;
import org.bouncycastle.jcajce.SecretKeyWithEncapsulation;
import org.bouncycastle.jcajce.spec.KEMExtractSpec;
import org.bouncycastle.jcajce.spec.KEMGenerateSpec;
+import org.bouncycastle.pqc.jcajce.interfaces.LMSPrivateKey;
+import org.bouncycastle.pqc.jcajce.interfaces.XMSSMTPrivateKey;
+import org.bouncycastle.pqc.jcajce.interfaces.XMSSPrivateKey;
/**
* A Producer which sign or verify a payload
@@ -86,6 +93,39 @@ public class PQCProducer extends DefaultProducer {
case hybridExtractSecretKeyFromEncapsulation:
hybridExtractSecretKeyFromEncapsulation(exchange);
break;
+ case generateKeyPair:
+ lifecycleGenerateKeyPair(exchange);
+ break;
+ case exportKey:
+ lifecycleExportKey(exchange);
+ break;
+ case importKey:
+ lifecycleImportKey(exchange);
+ break;
+ case rotateKey:
+ lifecycleRotateKey(exchange);
+ break;
+ case getKeyMetadata:
+ lifecycleGetKeyMetadata(exchange);
+ break;
+ case listKeys:
+ lifecycleListKeys(exchange);
+ break;
+ case expireKey:
+ lifecycleExpireKey(exchange);
+ break;
+ case revokeKey:
+ lifecycleRevokeKey(exchange);
+ break;
+ case getRemainingSignatures:
+ statefulGetRemainingSignatures(exchange);
+ break;
+ case getKeyState:
+ statefulGetKeyState(exchange);
+ break;
+ case deleteKeyState:
+ statefulDeleteKeyState(exchange);
+ break;
default:
throw new IllegalArgumentException("Unsupported operation");
}
@@ -439,4 +479,190 @@ public class PQCProducer extends DefaultProducer {
}
}
+ // ========== Key Lifecycle Operations ==========
+
+ private KeyLifecycleManager getRequiredKeyLifecycleManager() {
+ KeyLifecycleManager klm = getConfiguration().getKeyLifecycleManager();
+ if (klm == null) {
+ throw new IllegalStateException(
+ "A KeyLifecycleManager must be configured to use key
lifecycle operations. "
+ + "Set the keyLifecycleManager
option on the PQC endpoint.");
+ }
+ return klm;
+ }
+
+ private void lifecycleGenerateKeyPair(Exchange exchange) throws Exception {
+ KeyLifecycleManager klm = getRequiredKeyLifecycleManager();
+ String algorithm =
exchange.getMessage().getHeader(PQCConstants.ALGORITHM, String.class);
+ String keyId = exchange.getMessage().getHeader(PQCConstants.KEY_ID,
String.class);
+
+ if (ObjectHelper.isEmpty(algorithm)) {
+ throw new IllegalArgumentException(
+ "Algorithm header (" + PQCConstants.ALGORITHM + ") is
required for generateKeyPair");
+ }
+ if (ObjectHelper.isEmpty(keyId)) {
+ throw new IllegalArgumentException("Key ID header (" +
PQCConstants.KEY_ID + ") is required for generateKeyPair");
+ }
+
+ KeyPair generated = klm.generateKeyPair(algorithm, keyId);
+ exchange.getMessage().setHeader(PQCConstants.KEY_PAIR, generated);
+ }
+
+ private void lifecycleExportKey(Exchange exchange) throws Exception {
+ KeyLifecycleManager klm = getRequiredKeyLifecycleManager();
+ String formatStr =
exchange.getMessage().getHeader(PQCConstants.KEY_FORMAT, String.class);
+ Boolean includePrivate =
exchange.getMessage().getHeader(PQCConstants.INCLUDE_PRIVATE, Boolean.class);
+
+ KeyLifecycleManager.KeyFormat format = formatStr != null
+ ? KeyLifecycleManager.KeyFormat.valueOf(formatStr)
+ : KeyLifecycleManager.KeyFormat.DER;
+ boolean inclPriv = includePrivate != null ? includePrivate : false;
+
+ byte[] exported = klm.exportKey(keyPair, format, inclPriv);
+ exchange.getMessage().setHeader(PQCConstants.EXPORTED_KEY, exported);
+ }
+
+ private void lifecycleImportKey(Exchange exchange) throws Exception {
+ KeyLifecycleManager klm = getRequiredKeyLifecycleManager();
+ byte[] keyData = exchange.getMessage().getMandatoryBody(byte[].class);
+ String formatStr =
exchange.getMessage().getHeader(PQCConstants.KEY_FORMAT, String.class);
+ String algorithm =
exchange.getMessage().getHeader(PQCConstants.ALGORITHM, String.class);
+
+ KeyLifecycleManager.KeyFormat format = formatStr != null
+ ? KeyLifecycleManager.KeyFormat.valueOf(formatStr)
+ : KeyLifecycleManager.KeyFormat.DER;
+
+ if (ObjectHelper.isEmpty(algorithm)) {
+ throw new IllegalArgumentException("Algorithm header (" +
PQCConstants.ALGORITHM + ") is required for importKey");
+ }
+
+ KeyPair imported = klm.importKey(keyData, format, algorithm);
+ exchange.getMessage().setHeader(PQCConstants.KEY_PAIR, imported);
+ }
+
+ private void lifecycleRotateKey(Exchange exchange) throws Exception {
+ KeyLifecycleManager klm = getRequiredKeyLifecycleManager();
+ String oldKeyId = exchange.getMessage().getHeader(PQCConstants.KEY_ID,
String.class);
+ String newKeyId = exchange.getMessage().getHeader("CamelPQCNewKeyId",
String.class);
+ String algorithm =
exchange.getMessage().getHeader(PQCConstants.ALGORITHM, String.class);
+
+ if (ObjectHelper.isEmpty(oldKeyId)) {
+ throw new IllegalArgumentException("Key ID header (" +
PQCConstants.KEY_ID + ") is required for rotateKey");
+ }
+ if (ObjectHelper.isEmpty(newKeyId)) {
+ throw new IllegalArgumentException("New Key ID header
(CamelPQCNewKeyId) is required for rotateKey");
+ }
+ if (ObjectHelper.isEmpty(algorithm)) {
+ throw new IllegalArgumentException("Algorithm header (" +
PQCConstants.ALGORITHM + ") is required for rotateKey");
+ }
+
+ KeyPair rotated = klm.rotateKey(oldKeyId, newKeyId, algorithm);
+ exchange.getMessage().setHeader(PQCConstants.KEY_PAIR, rotated);
+ }
+
+ private void lifecycleGetKeyMetadata(Exchange exchange) throws Exception {
+ KeyLifecycleManager klm = getRequiredKeyLifecycleManager();
+ String keyId = exchange.getMessage().getHeader(PQCConstants.KEY_ID,
String.class);
+
+ if (ObjectHelper.isEmpty(keyId)) {
+ throw new IllegalArgumentException("Key ID header (" +
PQCConstants.KEY_ID + ") is required for getKeyMetadata");
+ }
+
+ KeyMetadata metadata = klm.getKeyMetadata(keyId);
+ exchange.getMessage().setHeader(PQCConstants.KEY_METADATA, metadata);
+ }
+
+ private void lifecycleListKeys(Exchange exchange) throws Exception {
+ KeyLifecycleManager klm = getRequiredKeyLifecycleManager();
+ List<KeyMetadata> keys = klm.listKeys();
+ exchange.getMessage().setHeader(PQCConstants.KEY_LIST, keys);
+ }
+
+ private void lifecycleExpireKey(Exchange exchange) throws Exception {
+ KeyLifecycleManager klm = getRequiredKeyLifecycleManager();
+ String keyId = exchange.getMessage().getHeader(PQCConstants.KEY_ID,
String.class);
+
+ if (ObjectHelper.isEmpty(keyId)) {
+ throw new IllegalArgumentException("Key ID header (" +
PQCConstants.KEY_ID + ") is required for expireKey");
+ }
+
+ klm.expireKey(keyId);
+ }
+
+ private void lifecycleRevokeKey(Exchange exchange) throws Exception {
+ KeyLifecycleManager klm = getRequiredKeyLifecycleManager();
+ String keyId = exchange.getMessage().getHeader(PQCConstants.KEY_ID,
String.class);
+ String reason =
exchange.getMessage().getHeader(PQCConstants.REVOCATION_REASON, String.class);
+
+ if (ObjectHelper.isEmpty(keyId)) {
+ throw new IllegalArgumentException("Key ID header (" +
PQCConstants.KEY_ID + ") is required for revokeKey");
+ }
+
+ klm.revokeKey(keyId, reason);
+ }
+
+ // ========== Stateful Key Operations ==========
+
+ private void statefulGetRemainingSignatures(Exchange exchange) {
+ if (keyPair == null || keyPair.getPrivate() == null) {
+ throw new IllegalStateException("A KeyPair with a private key is
required for getRemainingSignatures");
+ }
+
+ PrivateKey privateKey = keyPair.getPrivate();
+ long remaining;
+
+ if (privateKey instanceof XMSSPrivateKey) {
+ remaining = ((XMSSPrivateKey) privateKey).getUsagesRemaining();
+ } else if (privateKey instanceof XMSSMTPrivateKey) {
+ remaining = ((XMSSMTPrivateKey) privateKey).getUsagesRemaining();
+ } else if (privateKey instanceof LMSPrivateKey) {
+ remaining = ((LMSPrivateKey) privateKey).getUsagesRemaining();
+ } else {
+ throw new IllegalArgumentException(
+ "getRemainingSignatures is only supported for stateful
signature schemes (XMSS, XMSSMT, LMS/HSS). "
+ + "Key type: " +
privateKey.getClass().getName());
+ }
+
+ exchange.getMessage().setHeader(PQCConstants.REMAINING_SIGNATURES,
remaining);
+ }
+
+ private void statefulGetKeyState(Exchange exchange) {
+ if (keyPair == null || keyPair.getPrivate() == null) {
+ throw new IllegalStateException("A KeyPair with a private key is
required for getKeyState");
+ }
+
+ PrivateKey privateKey = keyPair.getPrivate();
+ StatefulKeyState state;
+
+ if (privateKey instanceof XMSSPrivateKey) {
+ XMSSPrivateKey xmssKey = (XMSSPrivateKey) privateKey;
+ state = new StatefulKeyState(privateKey.getAlgorithm(),
xmssKey.getIndex(), xmssKey.getUsagesRemaining());
+ } else if (privateKey instanceof XMSSMTPrivateKey) {
+ XMSSMTPrivateKey xmssmtKey = (XMSSMTPrivateKey) privateKey;
+ state = new StatefulKeyState(privateKey.getAlgorithm(),
xmssmtKey.getIndex(), xmssmtKey.getUsagesRemaining());
+ } else if (privateKey instanceof LMSPrivateKey) {
+ LMSPrivateKey lmsKey = (LMSPrivateKey) privateKey;
+ state = new StatefulKeyState(privateKey.getAlgorithm(),
lmsKey.getIndex(), lmsKey.getUsagesRemaining());
+ } else {
+ throw new IllegalArgumentException(
+ "getKeyState is only supported for stateful signature
schemes (XMSS, XMSSMT, LMS/HSS). "
+ + "Key type: " +
privateKey.getClass().getName());
+ }
+
+ exchange.getMessage().setHeader(PQCConstants.KEY_STATE, state);
+ }
+
+ private void statefulDeleteKeyState(Exchange exchange) throws Exception {
+ String keyId = exchange.getMessage().getHeader(PQCConstants.KEY_ID,
String.class);
+
+ if (ObjectHelper.isEmpty(keyId)) {
+ throw new IllegalArgumentException("Key ID header (" +
PQCConstants.KEY_ID + ") is required for deleteKeyState");
+ }
+
+ KeyLifecycleManager klm = getConfiguration().getKeyLifecycleManager();
+ if (klm != null) {
+ klm.deleteKey(keyId);
+ }
+ }
+
}
diff --git
a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/stateful/StatefulKeyState.java
b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/stateful/StatefulKeyState.java
new file mode 100644
index 000000000000..73b951cb9b18
--- /dev/null
+++
b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/stateful/StatefulKeyState.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.pqc.stateful;
+
+import java.io.Serializable;
+
+/**
+ * Represents the state of a stateful PQC signature key (XMSS, XMSSMT, LMS,
HSS). These hash-based signature schemes
+ * have a limited number of signatures that can be produced before the key is
exhausted.
+ */
+public class StatefulKeyState implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private final String algorithm;
+ private final long index;
+ private final long usagesRemaining;
+ private final boolean exhausted;
+
+ public StatefulKeyState(String algorithm, long index, long
usagesRemaining) {
+ this.algorithm = algorithm;
+ this.index = index;
+ this.usagesRemaining = usagesRemaining;
+ this.exhausted = usagesRemaining <= 0;
+ }
+
+ public String getAlgorithm() {
+ return algorithm;
+ }
+
+ public long getIndex() {
+ return index;
+ }
+
+ public long getUsagesRemaining() {
+ return usagesRemaining;
+ }
+
+ public boolean isExhausted() {
+ return exhausted;
+ }
+
+ @Override
+ public String toString() {
+ return String.format(
+ "StatefulKeyState[algorithm=%s, index=%d, usagesRemaining=%d,
exhausted=%s]",
+ algorithm, index, usagesRemaining, exhausted);
+ }
+}
diff --git
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/PqcComponentBuilderFactory.java
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/PqcComponentBuilderFactory.java
index 47dc3a913158..23be92c87793 100644
---
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/PqcComponentBuilderFactory.java
+++
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/PqcComponentBuilderFactory.java
@@ -260,6 +260,23 @@ public interface PqcComponentBuilderFactory {
return this;
}
+ /**
+ * The KeyLifecycleManager to use for key lifecycle operations such as
+ * generation, rotation, import/export, expiration, and revocation.
+ *
+ * The option is a:
+ *
<code>org.apache.camel.component.pqc.lifecycle.KeyLifecycleManager</code>
type.
+ *
+ * Group: advanced
+ *
+ * @param keyLifecycleManager the value to set
+ * @return the dsl builder
+ */
+ default PqcComponentBuilder
keyLifecycleManager(org.apache.camel.component.pqc.lifecycle.KeyLifecycleManager
keyLifecycleManager) {
+ doSetProperty("keyLifecycleManager", keyLifecycleManager);
+ return this;
+ }
+
/**
* The KeyPair to be used.
*
@@ -474,6 +491,7 @@ public interface PqcComponentBuilderFactory {
case "hybridKdfAlgorithm": getOrCreateConfiguration((PQCComponent)
component).setHybridKdfAlgorithm((java.lang.String) value); return true;
case "keyEncapsulationAlgorithm":
getOrCreateConfiguration((PQCComponent)
component).setKeyEncapsulationAlgorithm((java.lang.String) value); return true;
case "keyGenerator": getOrCreateConfiguration((PQCComponent)
component).setKeyGenerator((javax.crypto.KeyGenerator) value); return true;
+ case "keyLifecycleManager":
getOrCreateConfiguration((PQCComponent)
component).setKeyLifecycleManager((org.apache.camel.component.pqc.lifecycle.KeyLifecycleManager)
value); return true;
case "keyPair": getOrCreateConfiguration((PQCComponent)
component).setKeyPair((java.security.KeyPair) value); return true;
case "keyPairAlias": getOrCreateConfiguration((PQCComponent)
component).setKeyPairAlias((java.lang.String) value); return true;
case "keyStore": getOrCreateConfiguration((PQCComponent)
component).setKeyStore((java.security.KeyStore) value); return true;
diff --git
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/PQCEndpointBuilderFactory.java
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/PQCEndpointBuilderFactory.java
index 31f0870473be..2e0bf7b2c35d 100644
---
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/PQCEndpointBuilderFactory.java
+++
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/PQCEndpointBuilderFactory.java
@@ -314,6 +314,38 @@ public interface PQCEndpointBuilderFactory {
doSetProperty("keyGenerator", keyGenerator);
return this;
}
+ /**
+ * The KeyLifecycleManager to use for key lifecycle operations such as
+ * generation, rotation, import/export, expiration, and revocation.
+ *
+ * The option is a:
+ *
<code>org.apache.camel.component.pqc.lifecycle.KeyLifecycleManager</code> type.
+ *
+ * Group: advanced
+ *
+ * @param keyLifecycleManager the value to set
+ * @return the dsl builder
+ */
+ default AdvancedPQCEndpointBuilder
keyLifecycleManager(org.apache.camel.component.pqc.lifecycle.KeyLifecycleManager
keyLifecycleManager) {
+ doSetProperty("keyLifecycleManager", keyLifecycleManager);
+ return this;
+ }
+ /**
+ * The KeyLifecycleManager to use for key lifecycle operations such as
+ * generation, rotation, import/export, expiration, and revocation.
+ *
+ * The option will be converted to a
+ *
<code>org.apache.camel.component.pqc.lifecycle.KeyLifecycleManager</code> type.
+ *
+ * Group: advanced
+ *
+ * @param keyLifecycleManager the value to set
+ * @return the dsl builder
+ */
+ default AdvancedPQCEndpointBuilder keyLifecycleManager(String
keyLifecycleManager) {
+ doSetProperty("keyLifecycleManager", keyLifecycleManager);
+ return this;
+ }
/**
* The KeyPair to be used.
*