Andrea Cosentino created CAMEL-25624:
----------------------------------------

             Summary: camel-pqc - do not wire component-created Signature, 
KeyGenerator and KeyAgreement instances into the endpoint configuration
                 Key: CAMEL-25624
                 URL: https://issues.apache.org/jira/browse/CAMEL-25624
             Project: Camel
          Issue Type: Improvement
          Components: camel-pqc
            Reporter: Andrea Cosentino
            Assignee: Andrea Cosentino
             Fix For: 4.24.0


Since CAMEL-24445 and CAMEL-25603, {{PQCProducer}} creates a new {{Signature}}, 
{{KeyGenerator}} or {{KeyAgreement}} for every exchange when it creates the 
instance itself, and runs the operations one at a time on an instance it finds 
in the configuration, because a configured instance may be shared.

{{PQCComponent}} also puts instances into the configuration itself, and the 
producer then treats them as configured:
* {{configureParameterSpecMaterial()}}, when {{parameterSpec}} is set and no 
key material is configured, sets a new {{Signature}} or {{KeyGenerator}} that 
only that endpoint uses. Its operations now run one at a time although nobody 
configured that instance.
* {{createEndpoint()}}, {{configureHybridSignatureMaterial()}} and 
{{configureHybridKEMMaterial()}}, when no key material is configured, set the 
static {{PQCDefault*Material}} signers, key generators and key agreements. 
These are shared JVM-wide, so every endpoint that uses the default material 
runs its operations one at a time on them.

A {{Signature}}, {{KeyGenerator}} or {{KeyAgreement}} holds no key material, so 
the component could set only the key pairs in these places and let the producer 
create its own instances from {{signatureAlgorithm}}, 
{{keyEncapsulationAlgorithm}} and the classical algorithm options. Points to 
check:
* the hybrid default materials create the classical {{KeyAgreement}} and 
{{Signature}} with the {{BC}} provider, while the producer creates them without 
naming a provider;
* the static {{PQCDefault*Material}} fields stay public for compatibility.

Raised in the review of the CAMEL-25603 pull request. This is a throughput 
improvement, not a correctness fix, so it is not needed on the maintenance 
branches.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to