Thanks for the message, Songbo.

Yesterday, I also read several related parts ib RFC 9370. It indedd means:

"overlapping candidate lists are valid input;
duplicate selected non-NONE ADDKE methods are not valid output; "

as you summarzied.

So, the expressability seems no problem at all.

Guilin


发件人:Songbo Bu <[email protected]<mailto:[email protected]>>
收件人:[email protected] <[email protected]<mailto:[email protected]>>
时 间:2026-07-04 03:43:59
主 题:[IPsec] Re: New I-D: draft-li-ipsecme-extensions-for-robust-negotiation


Hi Christian, Guilin, Andrew, all,

Thanks, Christian. I checked RFC 9370 again and I agree with your reading.

The no-duplicate requirement is on the responder’s choice, not on the 
initiator’s candidate lists. The example in Section 2.2.1 also uses overlapping 
candidates across ADDKE2/ADDKE3, which makes that fairly clear.

So I would refine my earlier note as follows: ADDKE1={PQ_KEM_1,PQ_KEM_2}, 
ADDKE2={PQ_KEM_1,PQ_KEM_2,NONE} is a valid way to express “one mandatory from 
this set, plus optionally one more from the same set”, assuming the responder 
selects no duplicate non-NONE methods. The implementation boundary is on the 
selected result and error handling, not on the proposal merely containing 
overlapping candidate sets.

For the robustness draft, I think that leaves a useful but narrower point:

  *   overlapping candidate lists are valid input;
  *   duplicate selected non-NONE ADDKE methods are not valid output;
  *   explicit NONE and omitted ADDKE transform slots should be handled exactly 
as RFC 9370 specifies, not with extra local interpretation;
  *   diagnostics/test cases should distinguish “overlap in proposal” from 
“duplicate selected algorithms”.

Best,
Songbo

On Wed, 24 Jun 2026 07:53:45 +0000, “Christian Vögl” 
[email protected]<mailto:[email protected]>
 wrote:

Hi,

I don’t think there is a problem with that proposal. In RFC9370 I could only 
find that requirement for the responder’s choice. Additionally section 2.2.1 
has an example exchange with

ADDKE2=PQ_KEM1, PQ_KEM_2

ADDKE3= PQ_KEM1, PQ_KEM_2

Christian

From: Wang Guilin 
[email protected]<mailto:[email protected]>

Sent: Wednesday, 24 June 2026 03:40

To: Songbo Bu [email protected]<mailto:[email protected]>; Andrew Cagney 
[email protected]<mailto:[email protected]>

Cc: [email protected]<mailto:[email protected]>; lilun (F) 
[email protected]<mailto:[email protected]>; 
[email protected]<mailto:[email protected]>; 
[email protected]<mailto:[email protected]>; Wang Guilin 
[email protected]<mailto:[email protected]>

Subject: [IPsec] Re: New I-D: draft-li-ipsecme-extensions-for-robust-negotiation

Got a little confused.

What I know is, according to RFC 9370, the initiator is not allowed to prepare 
the following ADDKEs, as beside NONE, any other KEM cannot be duplicated in two 
or multiple ADDKEs.

addke1=kem1,kem2

addke2=kem1,kem2,none

Guilin

From: Songbo Bu [email protected]<mailto:[email protected]>

Sent: Tuesday, 23 June 2026 10:01 pm

To: Andrew Cagney [email protected]<mailto:[email protected]>

Cc: Wang Guilin [email protected]<mailto:[email protected]>;
[email protected]<mailto:[email protected]>; lilun (F) 
[email protected]<mailto:[email protected]>;
[email protected]<mailto:[email protected]>; 
[email protected]<mailto:[email protected]>

Subject: Re: [IPsec] Re: New I-D: 
draft-li-ipsecme-extensions-for-robust-negotiation

Hi Andrew,

Yes, I think you are right. I was reading that case too narrowly.

With:

ADDKE1 = { PQ_KEM_1, PQ_KEM_2 } ADDKE2 = { PQ_KEM_1, PQ_KEM_2, NONE }

the responder can express the outcomes I had in mind, assuming the normal RFC 
9370 rule that the selected non-NONE algorithms are not duplicated:

  *

both: select PQ_KEM_1 in one ADDKE slot and PQ_KEM_2 in the other;

  *

only PQ_KEM_1: select PQ_KEM_1 and NONE;

  *

only PQ_KEM_2: select PQ_KEM_2 and NONE.

So I would retract my “not directly expressible” phrasing for that row.

The remaining implementation-facing point still seems useful: if the 
initiator’s intent is “one mandatory from this set, plus at most one optional 
additional method from the same set”, it should encode that with an explicit 
NONE in the
optional ADDKE slot, not by sending repeated mandatory ADDKE lists and 
expecting the responder to repair them. A responder should still reject 
outcomes that require duplicated non-NONE algorithms or an implicit NONE that 
was not proposed.

Best,

Songbo

On Tue, 23 Jun 2026 09:40:09 -0400, Andrew Cagney 
[email protected]<mailto:[email protected]> wrote:

  *

both-or-one, meaning (PQ_KEM_1 AND PQ_KEM_2) OR PQ_KEM_1 OR PQ_KEM_2: not 
directly expressible as one RFC 9370 proposal, as far

as I can tell.

addke1=kem1,kem2

addke2=kem1,kem2,none

?
_______________________________________________
IPsec mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to