[ 
https://issues.apache.org/jira/browse/CAMEL-25824?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen updated CAMEL-25824:
--------------------------------
    Fix Version/s: 4.24.0

> camel-pqc - the hybrid KEM operations stamp the enum name on the secret key 
> instead of the JCE name
> ---------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-25824
>                 URL: https://issues.apache.org/jira/browse/CAMEL-25824
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-pqc
>            Reporter: Andrea Cosentino
>            Assignee: Andrea Cosentino
>            Priority: Major
>             Fix For: 4.24.0
>
>
> The hybrid key encapsulation operations stamp the raw enum name on the 
> derived secret key, while {{hybridExtractSecretKeyFromEncapsulation}} maps it 
> through the enum. The two ends of a hybrid exchange therefore disagree for 
> the two algorithms whose enum name differs from the JCE name, in the same way 
> CAMEL-25798 fixed for the non-hybrid operations.
> {{PQCProducer}} (around lines 846 and 890):
> {code:java}
> String symmetricAlgorithm = getConfiguration().getSymmetricKeyAlgorithm();
> {code}
> is handed straight to {{HybridKEM.encapsulate}} / {{HybridKEM.extract}}, so 
> {{DESEDE}} and {{GOST3412_2015}} reach the {{SecretKeySpec}} as the enum 
> name, which is not a resolvable cipher algorithm.
> h3. Care needed
> This is *not* the same one-line change as CAMEL-25798. {{HybridKEM}} uses 
> that same string twice:
> # as the algorithm of the returned {{SecretKeySpec}} - this is the label that 
> should be mapped;
> # as the HKDF {{info}} input of {{combineSecrets}} - changing this changes 
> the derived key, and would break interoperability with every previously 
> produced encapsulation.
> So only the label may be mapped. The HKDF info must keep whatever value it 
> has today, or the change becomes a wire-format break.
> h3. Suggested approach
> Map the name at the point the {{SecretKeySpec}} is constructed inside 
> {{HybridKEM}}, leaving the value passed to {{combineSecrets}} untouched, and 
> add a round-trip test with {{symmetricKeyAlgorithm=DESEDE}} asserting that 
> the generate and extract ends agree and that the stamped name resolves 
> through {{Cipher.getInstance}}.
> Reported by [~davsclaus] while reviewing the CAMEL-25798 pull request 
> (https://github.com/apache/camel/pull/28093).
> ----
> _Reported by Claude Code (AI agent) on behalf of [~oscerd]._



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to