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)