You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2021/04/16 11:38:08 UTC

[camel] 05/05: CAMEL-16524 - Remove Camel-Crypto-CMS

This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 2cc2e47a06568ba1a545a5482a42f706a0372d22
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Apr 16 13:27:50 2021 +0200

    CAMEL-16524 - Remove Camel-Crypto-CMS
---
 .../org/apache/camel/catalog/components.properties |   1 -
 .../camel/catalog/components/crypto-cms.json       |  50 ---
 .../org/apache/camel/catalog/docs.properties       |   1 -
 .../camel/catalog/docs/crypto-cms-component.adoc   | 411 --------------------
 .../component/ComponentsBuilderFactory.java        |   2 +-
 .../src/generated/resources/metadata.json          |  23 --
 .../builder/endpoint/EndpointBuilderFactory.java   |   1 -
 .../camel/builder/endpoint/EndpointBuilders.java   |   1 -
 .../builder/endpoint/StaticEndpointBuilders.java   |   2 +-
 .../org/apache/camel/main/components.properties    |   1 -
 docs/components/modules/ROOT/nav.adoc              |   1 -
 .../modules/ROOT/pages/crypto-cms-component.adoc   | 413 ---------------------
 12 files changed, 2 insertions(+), 905 deletions(-)

diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
index a594e0a..6f18e3e 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
@@ -72,7 +72,6 @@ couchdb
 cql
 cron
 crypto
-crypto-cms
 cxf
 cxfrs
 dataformat
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/crypto-cms.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/crypto-cms.json
deleted file mode 100644
index c1efbcd..0000000
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/crypto-cms.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-  "component": {
-    "kind": "component",
-    "name": "crypto-cms",
-    "title": "Crypto CMS",
-    "description": "Encrypt, decrypt, sign and verify data in CMS Enveloped Data format.",
-    "deprecated": true,
-    "deprecatedSince": "3.2.0",
-    "firstVersion": "2.20.0",
-    "label": "security,transformation",
-    "javaType": "org.apache.camel.component.crypto.cms.CryptoCmsComponent",
-    "supportLevel": "Stable",
-    "groupId": "org.apache.camel",
-    "artifactId": "camel-crypto-cms",
-    "version": "3.10.0-SNAPSHOT",
-    "scheme": "crypto-cms",
-    "extendsScheme": "",
-    "syntax": "crypto-cms:cryptoOperation:name",
-    "async": false,
-    "api": false,
-    "consumerOnly": false,
-    "producerOnly": true,
-    "lenientProperties": false
-  },
-  "componentProperties": {
-    "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during star [...]
-    "autowiredEnabled": { "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which t [...]
-    "envelopedDataDecryptorConfiguration": { "kind": "property", "displayName": "Enveloped Data Decryptor Configuration", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.crypto.cms.crypt.EnvelopedDataDecryptorConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "To configure the shared EnvelopedDataDecryptorConfiguration, which determines the uri parameters for the decrypt operation." },
-    "signedDataVerifierConfiguration": { "kind": "property", "displayName": "Signed Data Verifier Configuration", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.crypto.cms.sig.SignedDataVerifierConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "To configure the shared SignedDataVerifierConfiguration, which determines the uri parameters for the verify operation." }
-  },
-  "properties": {
-    "cryptoOperation": { "kind": "path", "displayName": "Crypto Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.crypto.cms.CryptoOperation", "enum": [ "sign", "verify", "encrypt", "decrypt" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Set the Crypto operation from that supplied after the crypto scheme in the endpoint uri e.g. crypto-cms:sign sets sign as the op [...]
-    "name": { "kind": "path", "displayName": "Name", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name part in the URI can be chosen by the user to distinguish between different signer\/verifier\/encryptor\/decryptor endpoints within the camel context." },
-    "keyStore": { "kind": "parameter", "displayName": "Key Store", "group": "common", "label": "common", "required": false, "type": "object", "javaType": "java.security.KeyStore", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.crypto.cms.sig.DefaultSignedDataVerifierConfiguration", "configurationField": "verifyConfig", "description": "Keystore which contains signer private keys, verifier public keys, encryptor public keys, decr [...]
-    "keyStoreParameters": { "kind": "parameter", "displayName": "Key Store Parameters", "group": "common", "label": "common", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.KeyStoreParameters", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.crypto.cms.sig.DefaultSignedDataVerifierConfiguration", "configurationField": "verifyConfig", "description": "Keystore containing signer private keys, verifi [...]
-    "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during sta [...]
-    "password": { "kind": "parameter", "displayName": "Password", "group": "decrypt", "label": "decrypt", "required": false, "type": "object", "javaType": "char[]", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.crypto.cms.crypt.DefaultEnvelopedDataDecryptorConfiguration", "configurationField": "decryptConfig", "description": "Sets the password of the private keys. It is assumed that all private keys in the keystore have the sa [...]
-    "fromBase64": { "kind": "parameter", "displayName": "From Base64", "group": "decrypt_verify", "label": "decrypt_verify", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.crypto.cms.sig.DefaultSignedDataVerifierConfiguration", "configurationField": "verifyConfig", "description": "If true then the CMS message is base 64 encoded and must be decod [...]
-    "contentEncryptionAlgorithm": { "kind": "parameter", "displayName": "Content Encryption Algorithm", "group": "encrypt", "label": "encrypt", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "AES\/CBC\/PKCS5Padding", "DESede\/CBC\/PKCS5Padding", "Camellia\/CBC\/PKCS5Padding", "CAST5\/CBC\/PKCS5Padding" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.crypto.cms.crypt.EnvelopedDataEncryptorConfig [...]
-    "originatorInformationProvider": { "kind": "parameter", "displayName": "Originator Information Provider", "group": "encrypt", "label": "encrypt", "required": false, "type": "object", "javaType": "org.apache.camel.component.crypto.cms.common.OriginatorInformationProvider", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.crypto.cms.crypt.EnvelopedDataEncryptorConfiguration", "configurationField": "encryptConfig", "description" [...]
-    "recipient": { "kind": "parameter", "displayName": "Recipient", "group": "encrypt", "label": "encrypt", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.component.crypto.cms.crypt.RecipientInfo>", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.crypto.cms.crypt.EnvelopedDataEncryptorConfiguration", "configurationField": "encryptConfig", "description": "Recipient Info: reference to a bean which [...]
-    "secretKeyLength": { "kind": "parameter", "displayName": "Secret Key Length", "group": "encrypt", "label": "encrypt", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.crypto.cms.crypt.EnvelopedDataEncryptorConfiguration", "configurationField": "encryptConfig", "description": "Key length for the secret symmetric key used for the content encryption. Only used if the speci [...]
-    "unprotectedAttributesGeneratorProvider": { "kind": "parameter", "displayName": "Unprotected Attributes Generator Provider", "group": "encrypt", "label": "encrypt", "required": false, "type": "object", "javaType": "org.apache.camel.component.crypto.cms.common.AttributesGeneratorProvider", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.crypto.cms.crypt.EnvelopedDataEncryptorConfiguration", "configurationField": "encryptConfi [...]
-    "toBase64": { "kind": "parameter", "displayName": "To Base64", "group": "encrypt_sign", "label": "encrypt_sign", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "false", "configurationClass": "org.apache.camel.component.crypto.cms.sig.SignedDataCreatorConfiguration", "configurationField": "signConfig", "description": "Indicates whether the Signed Data or Enveloped Data instance shall be b [...]
-    "includeContent": { "kind": "parameter", "displayName": "Include Content", "group": "sign", "label": "sign", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "true", "configurationClass": "org.apache.camel.component.crypto.cms.sig.SignedDataCreatorConfiguration", "configurationField": "signConfig", "description": "Indicates whether the signed content should be included into the Signed Data [...]
-    "signer": { "kind": "parameter", "displayName": "Signer", "group": "sign", "label": "sign", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.crypto.cms.sig.SignedDataCreatorConfiguration", "configurationField": "signConfig", "description": "Signer information: reference to bean(s) which implements org.apache.camel.component.crypto.cms.api.SignerInfo. Multipl [...]
-    "signedDataHeaderBase64": { "kind": "parameter", "displayName": "Signed Data Header Base64", "group": "verify", "label": "verify", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.crypto.cms.sig.DefaultSignedDataVerifierConfiguration", "configurationField": "verifyConfig", "description": "Indicates whether the value in the header CamelCryptoCm [...]
-    "verifySignaturesOfAllSigners": { "kind": "parameter", "displayName": "Verify Signatures Of All Signers", "group": "verify", "label": "verify", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.crypto.cms.sig.DefaultSignedDataVerifierConfiguration", "configurationField": "verifyConfig", "description": "If true then the signatures of all signers  [...]
-  }
-}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs.properties b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs.properties
index 0249ddd..9fc6dde 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs.properties
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs.properties
@@ -97,7 +97,6 @@ couchbase-component
 couchdb-component
 cql-component
 cron-component
-crypto-cms-component
 crypto-component
 crypto-dataformat
 csimple-joor
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/crypto-cms-component.adoc b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/crypto-cms-component.adoc
deleted file mode 100644
index 328c1c4..0000000
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/crypto-cms-component.adoc
+++ /dev/null
@@ -1,411 +0,0 @@
-[[crypto-cms-component]]
-= Crypto CMS Component (deprecated)
-:docTitle: Crypto CMS
-:artifactId: camel-crypto-cms
-:description: Encrypt, decrypt, sign and verify data in CMS Enveloped Data format.
-:since: 2.20
-:supportLevel: Stable-deprecated
-:deprecated: *deprecated*
-:component-header: Only producer is supported
-include::{cq-version}@camel-quarkus:ROOT:partial$reference/components/crypto-cms.adoc[opts=optional]
-
-*Since Camel {since}*
-
-*Since Camel 2.20*
-
-
-*{component-header}*
-
-http://tools.ietf.org/html/rfc5652[Cryptographic Message Syntax (CMS)] is a well established standard for signing and encrypting messages. The Apache Crypto CMS component supports the following parts of this standard:
-* Content Type "Enveloped Data" with Key Transport (asymmetric key),
-* Content Type "Signed Data".
-You can create CMS Enveloped Data instances, decrypt CMS Enveloped Data instances, create CMS Signed Data instances, and validate CMS Signed Data instances.
-
-The component uses the https://www.bouncycastle.org/java.html[Bouncy Castle] libraries bcprov-jdk15on and bcpkix-jdk15on.
-
-Maven users will need to add the following dependency to their `pom.xml` for this component:
-
-[source,xml]
-----
-<dependency>
-    <groupId>org.apache.camel</groupId>
-    <artifactId>camel-crypto-cms</artifactId>
-    <version>x.x.x</version>
-    <!-- use the same version as your Camel core version -->
-</dependency>
-----
-
-We recommend to register the Bouncy Castle security provider in your application before you call an endpoint of this component:
-
-[source,java]
-----
-Security.addProvider(new BouncyCastleProvider());
-----
-
-If the Bouncy Castle security provider is not registered then the Crypto CMS component will register the provider.
-
-== Options
-
-// component options: START
-The Crypto CMS component supports 4 options, which are listed below.
-
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *autowiredEnabled* (advanced) | Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | boolean
-| *envelopedDataDecryptor{zwsp}Configuration* (advanced) | To configure the shared EnvelopedDataDecryptorConfiguration, which determines the uri parameters for the decrypt operation. |  | EnvelopedDataDecryptorConfiguration
-| *signedDataVerifier{zwsp}Configuration* (advanced) | To configure the shared SignedDataVerifierConfiguration, which determines the uri parameters for the verify operation. |  | SignedDataVerifierConfiguration
-|===
-// component options: END
-
-// endpoint options: START
-The Crypto CMS endpoint is configured using URI syntax:
-
-----
-crypto-cms:cryptoOperation:name
-----
-
-with the following path and query parameters:
-
-=== Path Parameters (2 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *cryptoOperation* | *Required* Set the Crypto operation from that supplied after the crypto scheme in the endpoint uri e.g. crypto-cms:sign sets sign as the operation. Possible values: sign, verify, encrypt, or decrypt. There are 4 enums and the value can be one of: sign, verify, encrypt, decrypt |  | CryptoOperation
-| *name* | *Required* The name part in the URI can be chosen by the user to distinguish between different signer/verifier/encryptor/decryptor endpoints within the camel context. |  | String
-|===
-
-
-=== Query Parameters (15 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *keyStore* (common) | Keystore which contains signer private keys, verifier public keys, encryptor public keys, decryptor private keys depending on the operation. Use either this parameter or the parameter 'keyStoreParameters'. |  | KeyStore
-| *keyStoreParameters* (common) | Keystore containing signer private keys, verifier public keys, encryptor public keys, decryptor private keys depending on the operation. Use either this parameter or the parameter 'keystore'. |  | KeyStoreParameters
-| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *password* (decrypt) | Sets the password of the private keys. It is assumed that all private keys in the keystore have the same password. If not set then it is assumed that the password of the private keys is given by the keystore password given in the KeyStoreParameters. |  | char[]
-| *fromBase64* (decrypt_verify) | If true then the CMS message is base 64 encoded and must be decoded during the processing. Default value is false. | false | boolean
-| *contentEncryptionAlgorithm* (encrypt) | Encryption algorithm, for example DESede/CBC/PKCS5Padding. Further possible values: DESede/CBC/PKCS5Padding, AES/CBC/PKCS5Padding, Camellia/CBC/PKCS5Padding, CAST5/CBC/PKCS5Padding. There are 4 enums and the value can be one of: AES/CBC/PKCS5Padding, DESede/CBC/PKCS5Padding, Camellia/CBC/PKCS5Padding, CAST5/CBC/PKCS5Padding |  | String
-| *originatorInformationProvider* (encrypt) | Provider for the originator info. See \https://tools.ietf.org/html/rfc5652#section-6.1. The default value is null. |  | OriginatorInformationProvider
-| *recipient* (encrypt) | Recipient Info: reference to a bean which implements the interface org.apache.camel.component.crypto.cms.api.TransRecipientInfo |  | List
-| *secretKeyLength* (encrypt) | Key length for the secret symmetric key used for the content encryption. Only used if the specified content-encryption algorithm allows keys of different sizes. If contentEncryptionAlgorithm=AES/CBC/PKCS5Padding or Camellia/CBC/PKCS5Padding then 128; if contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding then 192, 128; if strong encryption is enabled then for AES/CBC/PKCS5Padding and Camellia/CBC/PKCS5Padding also the key lengths 192 and 256 are possible. |  | int
-| *unprotectedAttributesGenerator{zwsp}Provider* (encrypt) | Provider of the generator for the unprotected attributes. The default value is null which means no unprotected attribute is added to the Enveloped Data object. See \https://tools.ietf.org/html/rfc5652#section-6.1. |  | AttributesGeneratorProvider
-| *toBase64* (encrypt_sign) | Indicates whether the Signed Data or Enveloped Data instance shall be base 64 encoded. Default value is false. | false | Boolean
-| *includeContent* (sign) | Indicates whether the signed content should be included into the Signed Data instance. If false then a detached Signed Data instance is created in the header CamelCryptoCmsSignedData. | true | Boolean
-| *signer* (sign) | Signer information: reference to bean(s) which implements org.apache.camel.component.crypto.cms.api.SignerInfo. Multiple values can be separated by comma |  | String
-| *signedDataHeaderBase64* (verify) | Indicates whether the value in the header CamelCryptoCmsSignedData is base64 encoded. Default value is false. Only relevant for detached signatures. In the detached signature case, the header contains the Signed Data object. | false | boolean
-| *verifySignaturesOfAllSigners* (verify) | If true then the signatures of all signers contained in the Signed Data object are verified. If false then only one signature whose signer info matches with one of the specified certificates is verified. Default value is true. | true | boolean
-|===
-// endpoint options: END
-
-
-== Enveloped Data
-
-Note, that a `crypto-cms:encypt` endpoint is typically defined in one route and the complimentary `crypto-cms:decrypt` in another, though for simplicity in the
-examples they appear one after the other.
-
-The following example shows how you can create an Enveloped Data message and how you can decrypt an Enveloped Data message.
-
-*Basic Example in Java DSL*
-
-[source,java]
-----
-import org.apache.camel.support.jsse.KeyStoreParameters;
-import org.apache.camel.component.crypto.cms.crypt.DefaultKeyTransRecipientInfo;
-...
-KeyStoreParameters keystore  = new KeyStoreParameters();
-keystore.setType("JCEKS");
-keystore.setResource("keystore/keystore.jceks);      
-keystore.setPassword("some_password"); // this password will also be used for accessing the private key if not specified in the crypto-cms:decrypt endpoint
-
-DefaultKeyTransRecipientInfo recipient1 = new DefaultKeyTransRecipientInfo();
-recipient1.setCertificateAlias("rsa"); // alias of the public key used for the encryption
-recipient1.setKeyStoreParameters(keystore);
-
-simpleReg.put("keyStoreParameters", keystore); // register keystore in the registry
-simpleReg.put("recipient1", recipient1); // register recipient info in the registry
-
-from("direct:start")
-    .to("crypto-cms:encrypt://testencrpyt?toBase64=true&recipient=#recipient1&contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding&secretKeyLength=128")
-    .to("crypto-cms:decrypt://testdecrypt?fromBase64=true&keyStoreParameters=#keyStoreParameters")
-    .to("mock:result");
-----
-
-*Basic Example in Spring XML*
-
-[source,xml]
-----
-   <keyStoreParameters xmlns="http://camel.apache.org/schema/spring"
-        id="keyStoreParameters1" resource="./keystore/keystore.jceks"
-        password="some_password" type="JCEKS" />
-    <bean id="recipient1"
-        class="org.apache.camel.component.crypto.cms.crypt.DefaultKeyTransRecipientInfo">
-        <property name="keyStoreParameters" ref="keyStoreParameters1" />
-        <property name="certificateAlias" value="rsa" />
-    </bean>
-...
-    <route>
-        <from uri="direct:start" />
-        <to uri="crypto-cms:encrypt://testencrpyt?toBase64=true&amp;recipient=#recipient1&amp;contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding&amp;secretKeyLength=128" />
-        <to uri="crypto-cms:decrypt://testdecrypt?fromBase64=true&amp;keyStoreParameters=#keyStoreParameters1" />
-         <to uri="mock:result" />
-    </route> 
-----
-
-*Two Recipients in Java DSL*
-
-[source,java]
-----
-import org.apache.camel.support.jsse.KeyStoreParameters;
-import org.apache.camel.component.crypto.cms.crypt.DefaultKeyTransRecipientInfo;
-...
-KeyStoreParameters keystore  = new KeyStoreParameters();
-keystore.setType("JCEKS");
-keystore.setResource("keystore/keystore.jceks);      
-keystore.setPassword("some_password"); // this password will also be used for accessing the private key if not specified in the crypto-cms:decrypt endpoint
-
-DefaultKeyTransRecipientInfo recipient1 = new DefaultKeyTransRecipientInfo();
-recipient1.setCertificateAlias("rsa"); // alias of the public key used for the encryption
-recipient1.setKeyStoreParameters(keystore);
-
-DefaultKeyTransRecipientInfo recipient2 = new DefaultKeyTransRecipientInfo();
-recipient2.setCertificateAlias("dsa");
-recipient2.setKeyStoreParameters(keystore);
-
-simpleReg.put("keyStoreParameters", keystore); // register keystore in the registry
-simpleReg.put("recipient1", recipient1); // register recipient info in the registry
-
-from("direct:start")
-    .to("crypto-cms:encrypt://testencrpyt?toBase64=true&recipient=#recipient1&recipient=#recipient2&contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding&secretKeyLength=128")
-    //the decryptor will automatically choose one of the two private keys depending which one is in the decryptor keystore
-    .to("crypto-cms:decrypt://testdecrypt?fromBase64=true&keyStoreParameters=#keyStoreParameters")
-    .to("mock:result");
-----
-
-*Two Recipients in Spring XML*
-
-[source,xml]
-----
-   <keyStoreParameters xmlns="http://camel.apache.org/schema/spring"
-        id="keyStoreParameters1" resource="./keystore/keystore.jceks"
-        password="some_password" type="JCEKS" />
-    <bean id="recipient1"
-        class="org.apache.camel.component.crypto.cms.crypt.DefaultKeyTransRecipientInfo">
-        <property name="keyStoreParameters" ref="keyStoreParameters1" />
-        <property name="certificateAlias" value="rsa" />
-    </bean>
-    <bean id="recipient2"
-        class="org.apache.camel.component.crypto.cms.crypt.DefaultKeyTransRecipientInfo">
-        <property name="keyStoreParameters" ref="keyStoreParameters1" />
-        <property name="certificateAlias" value="dsa" />
-    </bean>
-...
-    <route>
-        <from uri="direct:start" />
-        <to uri="crypto-cms:encrypt://testencrpyt?toBase64=true&amp;recipient=#recipient1&amp;recipient=#recipient2&amp;contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding&amp;secretKeyLength=128" />
-        <!-- the decryptor will automatically choose one of the two private keys depending which one is in the decryptor keystore -->
-        <to uri="crypto-cms:decrypt://testdecrypt?fromBase64=true&amp;keyStoreParameters=#keyStoreParameters1" />
-         <to uri="mock:result" />
-    </route> 
-----
-
-== Signed Data
-
-Note, that a `crypto-cms:sign` endpoint is typically defined in one route and the complimentary `crypto-cms:verify` in another, though for simplicity in the
-examples they appear one after the other.
-
-The following example shows how you can create a Signed Data message and how you can validate a Signed Data message.
-
-*Basic Example in Java DSL*
-
-[source,java]
-----
-import org.apache.camel.support.jsse.KeyStoreParameters;
-import org.apache.camel.component.crypto.cms.sig.DefaultSignerInfo;
-...
-KeyStoreParameters keystore  = new KeyStoreParameters();
-keystore.setType("JCEKS");
-keystore.setResource("keystore/keystore.jceks);      
-keystore.setPassword("some_password"); // this password will also be used for accessing the private key if not specified in the signerInfo1 bean
-
-//Signer Information, by default the following signed attributes are included: contentType, signingTime, messageDigest, and cmsAlgorithmProtect; by default no unsigned attribute is included.
-// If you want to add your own signed attributes or unsigned attributes, see methods DefaultSignerInfo.setSignedAttributeGenerator and DefaultSignerInfo.setUnsignedAttributeGenerator.
-DefaultSignerInfo signerInfo1 = new DefaultSignerInfo();
-signerInfo1.setIncludeCertificates(true); // if set to true then the certificate chain of the private key will be added to the Signed Data object
-signerInfo1.setSignatureAlgorithm("SHA256withRSA"); // signature algorithm; attention, the signature algorithm must fit to the signer private key.
-signerInfo1.setPrivateKeyAlias("rsa"); // alias of the private key used for the signing
-signerInfo1.setPassword("private_key_pw".toCharArray()); // optional parameter, if not set then the password of the KeyStoreParameters will be used for accessing the private key
-signerInfo1.setKeyStoreParameters(keystore);
-
-simpleReg.put("keyStoreParameters", keystore); //register keystore in the registry
-simpleReg.put("signer1", signerInfo1); //register signer info in the registry
-
-from("direct:start")
-    .to("crypto-cms:sign://testsign?signer=#signer1&includeContent=true&toBase64=true")
-    .to("crypto-cms:verify://testverify?keyStoreParameters=#keyStoreParameters&fromBase64=true"")
-    .to("mock:result");
-----
-
-*Basic Example in Spring XML*
-
-[source,xml]
-----
-   <keyStoreParameters xmlns="http://camel.apache.org/schema/spring"
-        id="keyStoreParameters1" resource="./keystore/keystore.jceks"
-        password="some_password" type="JCEKS" />
-    <bean id="signer1"
-        class="org.apache.camel.component.crypto.cms.sig.DefaultSignerInfo">
-        <property name="keyStoreParameters" ref="keyStoreParameters1" />
-        <property name="privateKeyAlias" value="rsa" />
-        <property name="signatureAlgorithm" value="SHA256withRSA" />
-        <property name="includeCertificates" value="true" />
-        <!-- optional parameter 'password', if not set then the password of the KeyStoreParameters will be used for accessing the private key -->
-        <property name="password" value="private_key_pw" />
-    </bean>
-...
-    <route>
-        <from uri="direct:start" />
-        <to uri="crypto-cms:sign://testsign?signer=#signer1&amp;includeContent=true&amp;toBase64=true" />
-        <to uri="crypto-cms:verify://testverify?keyStoreParameters=#keyStoreParameters1&amp;fromBase64=true" />
-        <to uri="mock:result" />
-    </route>    
-----
-
-*Example with two Signers in Java DSL*
-
-[source,java]
-----
-import org.apache.camel.support.jsse.KeyStoreParameters;
-import org.apache.camel.component.crypto.cms.sig.DefaultSignerInfo;
-...
-KeyStoreParameters keystore  = new KeyStoreParameters();
-keystore.setType("JCEKS");
-keystore.setResource("keystore/keystore.jceks);      
-keystore.setPassword("some_password"); // this password will also be used for accessing the private key if not specified in the signerInfo1 bean
-
-//Signer Information, by default the following signed attributes are included: contentType, signingTime, messageDigest, and cmsAlgorithmProtect; by default no unsigned attribute is included.
-// If you want to add your own signed attributes or unsigned attributes, see methods DefaultSignerInfo.setSignedAttributeGenerator and DefaultSignerInfo.setUnsignedAttributeGenerator.
-DefaultSignerInfo signerInfo1 = new DefaultSignerInfo();
-signerInfo1.setIncludeCertificates(true); // if set to true then the certificate chain of the private key will be added to the Signed Data object
-signerInfo1.setSignatureAlgorithm("SHA256withRSA"); // signature algorithm; attention, the signature algorithm must fit to the signer private key.
-signerInfo1.setPrivateKeyAlias("rsa"); // alias of the private key used for the signing
-signerInfo1.setPassword("private_key_pw".toCharArray()); // optional parameter, if not set then the password of the KeyStoreParameters will be used for accessing the private key
-signerInfo1.setKeyStoreParameters(keystore);
-
-DefaultSignerInfo signerInfo2 = new DefaultSignerInfo();
-signerInfo2.setIncludeCertificates(true);
-signerInfo2.setSignatureAlgorithm("SHA256withDSA");
-signerInfo2.setPrivateKeyAlias("dsa");
-signerInfo2.setKeyStoreParameters(keystore);
-
-
-simpleReg.put("keyStoreParameters", keystore); //register keystore in the registry
-simpleReg.put("signer1", signerInfo1); //register signer info in the registry
-simpleReg.put("signer2", signerInfo2); //register signer info in the registry
-
-from("direct:start")
-    .to("crypto-cms:sign://testsign?signer=#signer1,#signer2&includeContent=true")
-    .to("crypto-cms:verify://testverify?keyStoreParameters=#keyStoreParameters")
-    .to("mock:result");
-----
-
-*Example with two Signers in Spring XML*
-
-[source,xml]
-----
-   <keyStoreParameters xmlns="http://camel.apache.org/schema/spring"
-        id="keyStoreParameters1" resource="./keystore/keystore.jceks"
-        password="some_password" type="JCEKS" />
-    <bean id="signer1"
-        class="org.apache.camel.component.crypto.cms.sig.DefaultSignerInfo">
-        <property name="keyStoreParameters" ref="keyStoreParameters1" />
-        <property name="privateKeyAlias" value="rsa" />
-        <property name="signatureAlgorithm" value="SHA256withRSA" />
-        <property name="includeCertificates" value="true" />
-        <!-- optional parameter 'password', if not set then the password of the KeyStoreParameters will be used for accessing the private key -->
-        <property name="password" value="private_key_pw" />
-    </bean>
-    <bean id="signer2"
-        class="org.apache.camel.component.crypto.cms.sig.DefaultSignerInfo">
-        <property name="keyStoreParameters" ref="keyStoreParameters1" />
-        <property name="privateKeyAlias" value="dsa" />
-        <property name="signatureAlgorithm" value="SHA256withDSA" />
-        <!-- optional parameter 'password', if not set then the password of the KeyStoreParameters will be used for accessing the private key -->
-        <property name="password" value="private_key_pw2" />
-    </bean>
-...
-    <route>
-        <from uri="direct:start" />
-        <to uri="crypto-cms:sign://testsign?signer=#signer1,#signer2&amp;includeContent=true" />
-        <to uri="crypto-cms:verify://testverify?keyStoreParameters=#keyStoreParameters1" />
-        <to uri="mock:result" />
-    </route>    
-----
-
-*Detached Signature Example in Java DSL*
-
-[source,java]
-----
-import org.apache.camel.support.jsse.KeyStoreParameters;
-import org.apache.camel.component.crypto.cms.sig.DefaultSignerInfo;
-...
-KeyStoreParameters keystore  = new KeyStoreParameters();
-keystore.setType("JCEKS");
-keystore.setResource("keystore/keystore.jceks);      
-keystore.setPassword("some_password"); // this password will also be used for accessing the private key if not specified in the signerInfo1 bean
-
-//Signer Information, by default the following signed attributes are included: contentType, signingTime, messageDigest, and cmsAlgorithmProtect; by default no unsigned attribute is included.
-// If you want to add your own signed attributes or unsigned attributes, see methods DefaultSignerInfo.setSignedAttributeGenerator and DefaultSignerInfo.setUnsignedAttributeGenerator.
-DefaultSignerInfo signerInfo1 = new DefaultSignerInfo();
-signerInfo1.setIncludeCertificates(true); // if set to true then the certificate chain of the private key will be added to the Signed Data object
-signerInfo1.setSignatureAlgorithm("SHA256withRSA"); // signature algorithm; attention, the signature algorithm must fit to the signer private key.
-signerInfo1.setPrivateKeyAlias("rsa"); // alias of the private key used for the signing
-signerInfo1.setPassword("private_key_pw".toCharArray()); // optional parameter, if not set then the password of the KeyStoreParameters will be used for accessing the private key
-signerInfo1.setKeyStoreParameters(keystore);
-
-simpleReg.put("keyStoreParameters", keystore); //register keystore in the registry
-simpleReg.put("signer1", signerInfo1); //register signer info in the registry
-
-from("direct:start") 
-     //with the option includeContent=false the SignedData object without the signed text will be written into the header "CamelCryptoCmsSignedData"  
-    .to("crypto-cms:sign://testsign?signer=#signer1&includeContent=false&toBase64=true")
-    //the verifier reads the Signed Data object form the header CamelCryptoCmsSignedData and assumes that the signed content is in the message body
-    .to("crypto-cms:verify://testverify?keyStoreParameters=#keyStoreParameters&signedDataHeaderBase64=true")
-    .to("mock:result");
-----
-
-*Detached Signature Example in Spring XML*
-
-[source,xml]
-----
-   <keyStoreParameters xmlns="http://camel.apache.org/schema/spring"
-        id="keyStoreParameters1" resource="./keystore/keystore.jceks"
-        password="some_password" type="JCEKS" />
-    <bean id="signer1"
-        class="org.apache.camel.component.crypto.cms.sig.DefaultSignerInfo">
-        <property name="keyStoreParameters" ref="keyStoreParameters1" />
-        <property name="privateKeyAlias" value="rsa" />
-        <property name="signatureAlgorithm" value="SHA256withRSA" />
-        <property name="includeCertificates" value="true" />
-        <!-- optional parameter 'password', if not set then the password of the KeyStoreParameters will be used for accessing the private key -->
-        <property name="password" value="private_key_pw" />
-    </bean>
-...
-    <route>
-        <from uri="direct:start" />
-        <!-- with the option includeContent=false the SignedData object without the signed text will be written into the header "CamelCryptoCmsSignedData" -->
-        <to uri="crypto-cms:sign://testsign?signer=#signer1&amp;includeContent=false&amp;toBase64=true" />
-        <!-- the verifier reads the Signed Data object form the header CamelCryptoCmsSignedData and assumes that the signed content is in the message body -->
-        <to uri="crypto-cms:verify://testverify?keyStoreParameters=#keyStoreParameters1&amp;signedDataHeaderBase64=true" />
-        <to uri="mock:result" />
-    </route>    
-----
-
-include::{page-component-version}@camel-spring-boot::page$crypto-cms-starter.adoc[]
diff --git a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
index ceadf07..ffb722a 100644
--- a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
+++ b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
@@ -4650,4 +4650,4 @@ public interface ComponentsBuilderFactory {
     static org.apache.camel.builder.component.dsl.ZookeeperMasterComponentBuilderFactory.ZookeeperMasterComponentBuilder zookeeperMaster() {
         return org.apache.camel.builder.component.dsl.ZookeeperMasterComponentBuilderFactory.zookeeperMaster();
     }
-}
+}
\ No newline at end of file
diff --git a/core/camel-componentdsl/src/generated/resources/metadata.json b/core/camel-componentdsl/src/generated/resources/metadata.json
index 664744b..1fed9d5 100644
--- a/core/camel-componentdsl/src/generated/resources/metadata.json
+++ b/core/camel-componentdsl/src/generated/resources/metadata.json
@@ -1619,29 +1619,6 @@
     "producerOnly": false,
     "lenientProperties": false
   },
-  "CryptoCmsComponentBuilderFactory": {
-    "kind": "component",
-    "name": "crypto-cms",
-    "title": "Crypto CMS",
-    "description": "Encrypt, decrypt, sign and verify data in CMS Enveloped Data format.",
-    "deprecated": true,
-    "deprecatedSince": "3.2.0",
-    "firstVersion": "2.20.0",
-    "label": "security,transformation",
-    "javaType": "org.apache.camel.component.crypto.cms.CryptoCmsComponent",
-    "supportLevel": "Stable",
-    "groupId": "org.apache.camel",
-    "artifactId": "camel-crypto-cms",
-    "version": "3.10.0-SNAPSHOT",
-    "scheme": "crypto-cms",
-    "extendsScheme": "",
-    "syntax": "crypto-cms:cryptoOperation:name",
-    "async": false,
-    "api": false,
-    "consumerOnly": false,
-    "producerOnly": true,
-    "lenientProperties": false
-  },
   "CryptoComponentBuilderFactory": {
     "kind": "component",
     "name": "crypto",
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
index 142dacf..6082c9b 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
@@ -75,7 +75,6 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.CouchDbEndpointBuilderFactory.CouchDbBuilders,
             org.apache.camel.builder.endpoint.dsl.CouchbaseEndpointBuilderFactory.CouchbaseBuilders,
             org.apache.camel.builder.endpoint.dsl.CronEndpointBuilderFactory.CronBuilders,
-            org.apache.camel.builder.endpoint.dsl.CryptoCmsEndpointBuilderFactory.CryptoCmsBuilders,
             org.apache.camel.builder.endpoint.dsl.Cw2EndpointBuilderFactory.Cw2Builders,
             org.apache.camel.builder.endpoint.dsl.CxfEndpointBuilderFactory.CxfBuilders,
             org.apache.camel.builder.endpoint.dsl.CxfRsEndpointBuilderFactory.CxfRsBuilders,
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
index d93bc1e..370a207 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
@@ -72,7 +72,6 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.CouchDbEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CouchbaseEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CronEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.CryptoCmsEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.Cw2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CxfEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CxfRsEndpointBuilderFactory,
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
index 2202ce0..2455cc8 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
@@ -16348,4 +16348,4 @@ public class StaticEndpointBuilders {
         return org.apache.camel.builder.endpoint.dsl.ZooKeeperMasterEndpointBuilderFactory.endpointBuilder(componentName, path);
     }
 }
-//CHECKSTYLE:ON
+//CHECKSTYLE:ON
\ No newline at end of file
diff --git a/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties b/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
index a594e0a..6f18e3e 100644
--- a/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
+++ b/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
@@ -72,7 +72,6 @@ couchdb
 cql
 cron
 crypto
-crypto-cms
 cxf
 cxfrs
 dataformat
diff --git a/docs/components/modules/ROOT/nav.adoc b/docs/components/modules/ROOT/nav.adoc
index 4f74ffb..23b4b66 100644
--- a/docs/components/modules/ROOT/nav.adoc
+++ b/docs/components/modules/ROOT/nav.adoc
@@ -73,7 +73,6 @@
 ** xref:couchdb-component.adoc[CouchDB]
 ** xref:cron-component.adoc[Cron]
 ** xref:crypto-component.adoc[Crypto (JCE)]
-** xref:crypto-cms-component.adoc[Crypto CMS]
 ** xref:cxf-component.adoc[CXF]
 ** xref:cxfrs-component.adoc[CXF-RS]
 ** xref:dataformat-component.adoc[Data Format]
diff --git a/docs/components/modules/ROOT/pages/crypto-cms-component.adoc b/docs/components/modules/ROOT/pages/crypto-cms-component.adoc
deleted file mode 100644
index f3db4cb..0000000
--- a/docs/components/modules/ROOT/pages/crypto-cms-component.adoc
+++ /dev/null
@@ -1,413 +0,0 @@
-[[crypto-cms-component]]
-= Crypto CMS Component (deprecated)
-//THIS FILE IS COPIED: EDIT THE SOURCE FILE:
-:page-source: components/camel-crypto-cms/src/main/docs/crypto-cms-component.adoc
-:docTitle: Crypto CMS
-:artifactId: camel-crypto-cms
-:description: Encrypt, decrypt, sign and verify data in CMS Enveloped Data format.
-:since: 2.20
-:supportLevel: Stable-deprecated
-:deprecated: *deprecated*
-:component-header: Only producer is supported
-include::{cq-version}@camel-quarkus:ROOT:partial$reference/components/crypto-cms.adoc[opts=optional]
-
-*Since Camel {since}*
-
-*Since Camel 2.20*
-
-
-*{component-header}*
-
-http://tools.ietf.org/html/rfc5652[Cryptographic Message Syntax (CMS)] is a well established standard for signing and encrypting messages. The Apache Crypto CMS component supports the following parts of this standard:
-* Content Type "Enveloped Data" with Key Transport (asymmetric key),
-* Content Type "Signed Data".
-You can create CMS Enveloped Data instances, decrypt CMS Enveloped Data instances, create CMS Signed Data instances, and validate CMS Signed Data instances.
-
-The component uses the https://www.bouncycastle.org/java.html[Bouncy Castle] libraries bcprov-jdk15on and bcpkix-jdk15on.
-
-Maven users will need to add the following dependency to their `pom.xml` for this component:
-
-[source,xml]
-----
-<dependency>
-    <groupId>org.apache.camel</groupId>
-    <artifactId>camel-crypto-cms</artifactId>
-    <version>x.x.x</version>
-    <!-- use the same version as your Camel core version -->
-</dependency>
-----
-
-We recommend to register the Bouncy Castle security provider in your application before you call an endpoint of this component:
-
-[source,java]
-----
-Security.addProvider(new BouncyCastleProvider());
-----
-
-If the Bouncy Castle security provider is not registered then the Crypto CMS component will register the provider.
-
-== Options
-
-// component options: START
-The Crypto CMS component supports 4 options, which are listed below.
-
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *autowiredEnabled* (advanced) | Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | boolean
-| *envelopedDataDecryptor{zwsp}Configuration* (advanced) | To configure the shared EnvelopedDataDecryptorConfiguration, which determines the uri parameters for the decrypt operation. |  | EnvelopedDataDecryptorConfiguration
-| *signedDataVerifier{zwsp}Configuration* (advanced) | To configure the shared SignedDataVerifierConfiguration, which determines the uri parameters for the verify operation. |  | SignedDataVerifierConfiguration
-|===
-// component options: END
-
-// endpoint options: START
-The Crypto CMS endpoint is configured using URI syntax:
-
-----
-crypto-cms:cryptoOperation:name
-----
-
-with the following path and query parameters:
-
-=== Path Parameters (2 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *cryptoOperation* | *Required* Set the Crypto operation from that supplied after the crypto scheme in the endpoint uri e.g. crypto-cms:sign sets sign as the operation. Possible values: sign, verify, encrypt, or decrypt. There are 4 enums and the value can be one of: sign, verify, encrypt, decrypt |  | CryptoOperation
-| *name* | *Required* The name part in the URI can be chosen by the user to distinguish between different signer/verifier/encryptor/decryptor endpoints within the camel context. |  | String
-|===
-
-
-=== Query Parameters (15 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *keyStore* (common) | Keystore which contains signer private keys, verifier public keys, encryptor public keys, decryptor private keys depending on the operation. Use either this parameter or the parameter 'keyStoreParameters'. |  | KeyStore
-| *keyStoreParameters* (common) | Keystore containing signer private keys, verifier public keys, encryptor public keys, decryptor private keys depending on the operation. Use either this parameter or the parameter 'keystore'. |  | KeyStoreParameters
-| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *password* (decrypt) | Sets the password of the private keys. It is assumed that all private keys in the keystore have the same password. If not set then it is assumed that the password of the private keys is given by the keystore password given in the KeyStoreParameters. |  | char[]
-| *fromBase64* (decrypt_verify) | If true then the CMS message is base 64 encoded and must be decoded during the processing. Default value is false. | false | boolean
-| *contentEncryptionAlgorithm* (encrypt) | Encryption algorithm, for example DESede/CBC/PKCS5Padding. Further possible values: DESede/CBC/PKCS5Padding, AES/CBC/PKCS5Padding, Camellia/CBC/PKCS5Padding, CAST5/CBC/PKCS5Padding. There are 4 enums and the value can be one of: AES/CBC/PKCS5Padding, DESede/CBC/PKCS5Padding, Camellia/CBC/PKCS5Padding, CAST5/CBC/PKCS5Padding |  | String
-| *originatorInformationProvider* (encrypt) | Provider for the originator info. See \https://tools.ietf.org/html/rfc5652#section-6.1. The default value is null. |  | OriginatorInformationProvider
-| *recipient* (encrypt) | Recipient Info: reference to a bean which implements the interface org.apache.camel.component.crypto.cms.api.TransRecipientInfo |  | List
-| *secretKeyLength* (encrypt) | Key length for the secret symmetric key used for the content encryption. Only used if the specified content-encryption algorithm allows keys of different sizes. If contentEncryptionAlgorithm=AES/CBC/PKCS5Padding or Camellia/CBC/PKCS5Padding then 128; if contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding then 192, 128; if strong encryption is enabled then for AES/CBC/PKCS5Padding and Camellia/CBC/PKCS5Padding also the key lengths 192 and 256 are possible. |  | int
-| *unprotectedAttributesGenerator{zwsp}Provider* (encrypt) | Provider of the generator for the unprotected attributes. The default value is null which means no unprotected attribute is added to the Enveloped Data object. See \https://tools.ietf.org/html/rfc5652#section-6.1. |  | AttributesGeneratorProvider
-| *toBase64* (encrypt_sign) | Indicates whether the Signed Data or Enveloped Data instance shall be base 64 encoded. Default value is false. | false | Boolean
-| *includeContent* (sign) | Indicates whether the signed content should be included into the Signed Data instance. If false then a detached Signed Data instance is created in the header CamelCryptoCmsSignedData. | true | Boolean
-| *signer* (sign) | Signer information: reference to bean(s) which implements org.apache.camel.component.crypto.cms.api.SignerInfo. Multiple values can be separated by comma |  | String
-| *signedDataHeaderBase64* (verify) | Indicates whether the value in the header CamelCryptoCmsSignedData is base64 encoded. Default value is false. Only relevant for detached signatures. In the detached signature case, the header contains the Signed Data object. | false | boolean
-| *verifySignaturesOfAllSigners* (verify) | If true then the signatures of all signers contained in the Signed Data object are verified. If false then only one signature whose signer info matches with one of the specified certificates is verified. Default value is true. | true | boolean
-|===
-// endpoint options: END
-
-
-== Enveloped Data
-
-Note, that a `crypto-cms:encypt` endpoint is typically defined in one route and the complimentary `crypto-cms:decrypt` in another, though for simplicity in the
-examples they appear one after the other.
-
-The following example shows how you can create an Enveloped Data message and how you can decrypt an Enveloped Data message.
-
-*Basic Example in Java DSL*
-
-[source,java]
-----
-import org.apache.camel.support.jsse.KeyStoreParameters;
-import org.apache.camel.component.crypto.cms.crypt.DefaultKeyTransRecipientInfo;
-...
-KeyStoreParameters keystore  = new KeyStoreParameters();
-keystore.setType("JCEKS");
-keystore.setResource("keystore/keystore.jceks);      
-keystore.setPassword("some_password"); // this password will also be used for accessing the private key if not specified in the crypto-cms:decrypt endpoint
-
-DefaultKeyTransRecipientInfo recipient1 = new DefaultKeyTransRecipientInfo();
-recipient1.setCertificateAlias("rsa"); // alias of the public key used for the encryption
-recipient1.setKeyStoreParameters(keystore);
-
-simpleReg.put("keyStoreParameters", keystore); // register keystore in the registry
-simpleReg.put("recipient1", recipient1); // register recipient info in the registry
-
-from("direct:start")
-    .to("crypto-cms:encrypt://testencrpyt?toBase64=true&recipient=#recipient1&contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding&secretKeyLength=128")
-    .to("crypto-cms:decrypt://testdecrypt?fromBase64=true&keyStoreParameters=#keyStoreParameters")
-    .to("mock:result");
-----
-
-*Basic Example in Spring XML*
-
-[source,xml]
-----
-   <keyStoreParameters xmlns="http://camel.apache.org/schema/spring"
-        id="keyStoreParameters1" resource="./keystore/keystore.jceks"
-        password="some_password" type="JCEKS" />
-    <bean id="recipient1"
-        class="org.apache.camel.component.crypto.cms.crypt.DefaultKeyTransRecipientInfo">
-        <property name="keyStoreParameters" ref="keyStoreParameters1" />
-        <property name="certificateAlias" value="rsa" />
-    </bean>
-...
-    <route>
-        <from uri="direct:start" />
-        <to uri="crypto-cms:encrypt://testencrpyt?toBase64=true&amp;recipient=#recipient1&amp;contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding&amp;secretKeyLength=128" />
-        <to uri="crypto-cms:decrypt://testdecrypt?fromBase64=true&amp;keyStoreParameters=#keyStoreParameters1" />
-         <to uri="mock:result" />
-    </route> 
-----
-
-*Two Recipients in Java DSL*
-
-[source,java]
-----
-import org.apache.camel.support.jsse.KeyStoreParameters;
-import org.apache.camel.component.crypto.cms.crypt.DefaultKeyTransRecipientInfo;
-...
-KeyStoreParameters keystore  = new KeyStoreParameters();
-keystore.setType("JCEKS");
-keystore.setResource("keystore/keystore.jceks);      
-keystore.setPassword("some_password"); // this password will also be used for accessing the private key if not specified in the crypto-cms:decrypt endpoint
-
-DefaultKeyTransRecipientInfo recipient1 = new DefaultKeyTransRecipientInfo();
-recipient1.setCertificateAlias("rsa"); // alias of the public key used for the encryption
-recipient1.setKeyStoreParameters(keystore);
-
-DefaultKeyTransRecipientInfo recipient2 = new DefaultKeyTransRecipientInfo();
-recipient2.setCertificateAlias("dsa");
-recipient2.setKeyStoreParameters(keystore);
-
-simpleReg.put("keyStoreParameters", keystore); // register keystore in the registry
-simpleReg.put("recipient1", recipient1); // register recipient info in the registry
-
-from("direct:start")
-    .to("crypto-cms:encrypt://testencrpyt?toBase64=true&recipient=#recipient1&recipient=#recipient2&contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding&secretKeyLength=128")
-    //the decryptor will automatically choose one of the two private keys depending which one is in the decryptor keystore
-    .to("crypto-cms:decrypt://testdecrypt?fromBase64=true&keyStoreParameters=#keyStoreParameters")
-    .to("mock:result");
-----
-
-*Two Recipients in Spring XML*
-
-[source,xml]
-----
-   <keyStoreParameters xmlns="http://camel.apache.org/schema/spring"
-        id="keyStoreParameters1" resource="./keystore/keystore.jceks"
-        password="some_password" type="JCEKS" />
-    <bean id="recipient1"
-        class="org.apache.camel.component.crypto.cms.crypt.DefaultKeyTransRecipientInfo">
-        <property name="keyStoreParameters" ref="keyStoreParameters1" />
-        <property name="certificateAlias" value="rsa" />
-    </bean>
-    <bean id="recipient2"
-        class="org.apache.camel.component.crypto.cms.crypt.DefaultKeyTransRecipientInfo">
-        <property name="keyStoreParameters" ref="keyStoreParameters1" />
-        <property name="certificateAlias" value="dsa" />
-    </bean>
-...
-    <route>
-        <from uri="direct:start" />
-        <to uri="crypto-cms:encrypt://testencrpyt?toBase64=true&amp;recipient=#recipient1&amp;recipient=#recipient2&amp;contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding&amp;secretKeyLength=128" />
-        <!-- the decryptor will automatically choose one of the two private keys depending which one is in the decryptor keystore -->
-        <to uri="crypto-cms:decrypt://testdecrypt?fromBase64=true&amp;keyStoreParameters=#keyStoreParameters1" />
-         <to uri="mock:result" />
-    </route> 
-----
-
-== Signed Data
-
-Note, that a `crypto-cms:sign` endpoint is typically defined in one route and the complimentary `crypto-cms:verify` in another, though for simplicity in the
-examples they appear one after the other.
-
-The following example shows how you can create a Signed Data message and how you can validate a Signed Data message.
-
-*Basic Example in Java DSL*
-
-[source,java]
-----
-import org.apache.camel.support.jsse.KeyStoreParameters;
-import org.apache.camel.component.crypto.cms.sig.DefaultSignerInfo;
-...
-KeyStoreParameters keystore  = new KeyStoreParameters();
-keystore.setType("JCEKS");
-keystore.setResource("keystore/keystore.jceks);      
-keystore.setPassword("some_password"); // this password will also be used for accessing the private key if not specified in the signerInfo1 bean
-
-//Signer Information, by default the following signed attributes are included: contentType, signingTime, messageDigest, and cmsAlgorithmProtect; by default no unsigned attribute is included.
-// If you want to add your own signed attributes or unsigned attributes, see methods DefaultSignerInfo.setSignedAttributeGenerator and DefaultSignerInfo.setUnsignedAttributeGenerator.
-DefaultSignerInfo signerInfo1 = new DefaultSignerInfo();
-signerInfo1.setIncludeCertificates(true); // if set to true then the certificate chain of the private key will be added to the Signed Data object
-signerInfo1.setSignatureAlgorithm("SHA256withRSA"); // signature algorithm; attention, the signature algorithm must fit to the signer private key.
-signerInfo1.setPrivateKeyAlias("rsa"); // alias of the private key used for the signing
-signerInfo1.setPassword("private_key_pw".toCharArray()); // optional parameter, if not set then the password of the KeyStoreParameters will be used for accessing the private key
-signerInfo1.setKeyStoreParameters(keystore);
-
-simpleReg.put("keyStoreParameters", keystore); //register keystore in the registry
-simpleReg.put("signer1", signerInfo1); //register signer info in the registry
-
-from("direct:start")
-    .to("crypto-cms:sign://testsign?signer=#signer1&includeContent=true&toBase64=true")
-    .to("crypto-cms:verify://testverify?keyStoreParameters=#keyStoreParameters&fromBase64=true"")
-    .to("mock:result");
-----
-
-*Basic Example in Spring XML*
-
-[source,xml]
-----
-   <keyStoreParameters xmlns="http://camel.apache.org/schema/spring"
-        id="keyStoreParameters1" resource="./keystore/keystore.jceks"
-        password="some_password" type="JCEKS" />
-    <bean id="signer1"
-        class="org.apache.camel.component.crypto.cms.sig.DefaultSignerInfo">
-        <property name="keyStoreParameters" ref="keyStoreParameters1" />
-        <property name="privateKeyAlias" value="rsa" />
-        <property name="signatureAlgorithm" value="SHA256withRSA" />
-        <property name="includeCertificates" value="true" />
-        <!-- optional parameter 'password', if not set then the password of the KeyStoreParameters will be used for accessing the private key -->
-        <property name="password" value="private_key_pw" />
-    </bean>
-...
-    <route>
-        <from uri="direct:start" />
-        <to uri="crypto-cms:sign://testsign?signer=#signer1&amp;includeContent=true&amp;toBase64=true" />
-        <to uri="crypto-cms:verify://testverify?keyStoreParameters=#keyStoreParameters1&amp;fromBase64=true" />
-        <to uri="mock:result" />
-    </route>    
-----
-
-*Example with two Signers in Java DSL*
-
-[source,java]
-----
-import org.apache.camel.support.jsse.KeyStoreParameters;
-import org.apache.camel.component.crypto.cms.sig.DefaultSignerInfo;
-...
-KeyStoreParameters keystore  = new KeyStoreParameters();
-keystore.setType("JCEKS");
-keystore.setResource("keystore/keystore.jceks);      
-keystore.setPassword("some_password"); // this password will also be used for accessing the private key if not specified in the signerInfo1 bean
-
-//Signer Information, by default the following signed attributes are included: contentType, signingTime, messageDigest, and cmsAlgorithmProtect; by default no unsigned attribute is included.
-// If you want to add your own signed attributes or unsigned attributes, see methods DefaultSignerInfo.setSignedAttributeGenerator and DefaultSignerInfo.setUnsignedAttributeGenerator.
-DefaultSignerInfo signerInfo1 = new DefaultSignerInfo();
-signerInfo1.setIncludeCertificates(true); // if set to true then the certificate chain of the private key will be added to the Signed Data object
-signerInfo1.setSignatureAlgorithm("SHA256withRSA"); // signature algorithm; attention, the signature algorithm must fit to the signer private key.
-signerInfo1.setPrivateKeyAlias("rsa"); // alias of the private key used for the signing
-signerInfo1.setPassword("private_key_pw".toCharArray()); // optional parameter, if not set then the password of the KeyStoreParameters will be used for accessing the private key
-signerInfo1.setKeyStoreParameters(keystore);
-
-DefaultSignerInfo signerInfo2 = new DefaultSignerInfo();
-signerInfo2.setIncludeCertificates(true);
-signerInfo2.setSignatureAlgorithm("SHA256withDSA");
-signerInfo2.setPrivateKeyAlias("dsa");
-signerInfo2.setKeyStoreParameters(keystore);
-
-
-simpleReg.put("keyStoreParameters", keystore); //register keystore in the registry
-simpleReg.put("signer1", signerInfo1); //register signer info in the registry
-simpleReg.put("signer2", signerInfo2); //register signer info in the registry
-
-from("direct:start")
-    .to("crypto-cms:sign://testsign?signer=#signer1,#signer2&includeContent=true")
-    .to("crypto-cms:verify://testverify?keyStoreParameters=#keyStoreParameters")
-    .to("mock:result");
-----
-
-*Example with two Signers in Spring XML*
-
-[source,xml]
-----
-   <keyStoreParameters xmlns="http://camel.apache.org/schema/spring"
-        id="keyStoreParameters1" resource="./keystore/keystore.jceks"
-        password="some_password" type="JCEKS" />
-    <bean id="signer1"
-        class="org.apache.camel.component.crypto.cms.sig.DefaultSignerInfo">
-        <property name="keyStoreParameters" ref="keyStoreParameters1" />
-        <property name="privateKeyAlias" value="rsa" />
-        <property name="signatureAlgorithm" value="SHA256withRSA" />
-        <property name="includeCertificates" value="true" />
-        <!-- optional parameter 'password', if not set then the password of the KeyStoreParameters will be used for accessing the private key -->
-        <property name="password" value="private_key_pw" />
-    </bean>
-    <bean id="signer2"
-        class="org.apache.camel.component.crypto.cms.sig.DefaultSignerInfo">
-        <property name="keyStoreParameters" ref="keyStoreParameters1" />
-        <property name="privateKeyAlias" value="dsa" />
-        <property name="signatureAlgorithm" value="SHA256withDSA" />
-        <!-- optional parameter 'password', if not set then the password of the KeyStoreParameters will be used for accessing the private key -->
-        <property name="password" value="private_key_pw2" />
-    </bean>
-...
-    <route>
-        <from uri="direct:start" />
-        <to uri="crypto-cms:sign://testsign?signer=#signer1,#signer2&amp;includeContent=true" />
-        <to uri="crypto-cms:verify://testverify?keyStoreParameters=#keyStoreParameters1" />
-        <to uri="mock:result" />
-    </route>    
-----
-
-*Detached Signature Example in Java DSL*
-
-[source,java]
-----
-import org.apache.camel.support.jsse.KeyStoreParameters;
-import org.apache.camel.component.crypto.cms.sig.DefaultSignerInfo;
-...
-KeyStoreParameters keystore  = new KeyStoreParameters();
-keystore.setType("JCEKS");
-keystore.setResource("keystore/keystore.jceks);      
-keystore.setPassword("some_password"); // this password will also be used for accessing the private key if not specified in the signerInfo1 bean
-
-//Signer Information, by default the following signed attributes are included: contentType, signingTime, messageDigest, and cmsAlgorithmProtect; by default no unsigned attribute is included.
-// If you want to add your own signed attributes or unsigned attributes, see methods DefaultSignerInfo.setSignedAttributeGenerator and DefaultSignerInfo.setUnsignedAttributeGenerator.
-DefaultSignerInfo signerInfo1 = new DefaultSignerInfo();
-signerInfo1.setIncludeCertificates(true); // if set to true then the certificate chain of the private key will be added to the Signed Data object
-signerInfo1.setSignatureAlgorithm("SHA256withRSA"); // signature algorithm; attention, the signature algorithm must fit to the signer private key.
-signerInfo1.setPrivateKeyAlias("rsa"); // alias of the private key used for the signing
-signerInfo1.setPassword("private_key_pw".toCharArray()); // optional parameter, if not set then the password of the KeyStoreParameters will be used for accessing the private key
-signerInfo1.setKeyStoreParameters(keystore);
-
-simpleReg.put("keyStoreParameters", keystore); //register keystore in the registry
-simpleReg.put("signer1", signerInfo1); //register signer info in the registry
-
-from("direct:start") 
-     //with the option includeContent=false the SignedData object without the signed text will be written into the header "CamelCryptoCmsSignedData"  
-    .to("crypto-cms:sign://testsign?signer=#signer1&includeContent=false&toBase64=true")
-    //the verifier reads the Signed Data object form the header CamelCryptoCmsSignedData and assumes that the signed content is in the message body
-    .to("crypto-cms:verify://testverify?keyStoreParameters=#keyStoreParameters&signedDataHeaderBase64=true")
-    .to("mock:result");
-----
-
-*Detached Signature Example in Spring XML*
-
-[source,xml]
-----
-   <keyStoreParameters xmlns="http://camel.apache.org/schema/spring"
-        id="keyStoreParameters1" resource="./keystore/keystore.jceks"
-        password="some_password" type="JCEKS" />
-    <bean id="signer1"
-        class="org.apache.camel.component.crypto.cms.sig.DefaultSignerInfo">
-        <property name="keyStoreParameters" ref="keyStoreParameters1" />
-        <property name="privateKeyAlias" value="rsa" />
-        <property name="signatureAlgorithm" value="SHA256withRSA" />
-        <property name="includeCertificates" value="true" />
-        <!-- optional parameter 'password', if not set then the password of the KeyStoreParameters will be used for accessing the private key -->
-        <property name="password" value="private_key_pw" />
-    </bean>
-...
-    <route>
-        <from uri="direct:start" />
-        <!-- with the option includeContent=false the SignedData object without the signed text will be written into the header "CamelCryptoCmsSignedData" -->
-        <to uri="crypto-cms:sign://testsign?signer=#signer1&amp;includeContent=false&amp;toBase64=true" />
-        <!-- the verifier reads the Signed Data object form the header CamelCryptoCmsSignedData and assumes that the signed content is in the message body -->
-        <to uri="crypto-cms:verify://testverify?keyStoreParameters=#keyStoreParameters1&amp;signedDataHeaderBase64=true" />
-        <to uri="mock:result" />
-    </route>    
-----
-
-include::{page-component-version}@camel-spring-boot::page$crypto-cms-starter.adoc[]