On Mon, Mar 21, 2022 at 07:01:39PM +0100, Laurence Lundblade wrote:
> Let me try to be more clear.
> 
> The COSE standard now is:
> 
>    kid => bstr
> 
> If we make this change:
> 
>    kid => int / bstr
> 
> then we break backwards compatibility for COSE as Mike pointed out today. So 
> we need a separate parameter called kid2, ckid, intkid or such. 
> 
> To not break backwards compatibility we need:
> 
>    intkid = int
> 
> or:
> 
>    intkid = int / bstr
> 
> (I don’t remember why an int kid was needed, but do remember I was convinced 
> that it was)

So, if you make it required that you have exactly one of 'kid' or 'intkid',
you need signaling to know which one to use.  If you have that signaling,
it's not a huge stretch to instead use the signaling for "okay, 'kid' can
be int now".  There may be gaps, like group communication scenarios (but
then you have to weaken "exactly one"), but it seems more interesting to
explore those gaps than to just say there is breakage if you switch 'kid'
to int.  There is breakage if you just start sending something new and
expecting people to understand it, too!

To reiterate: if you want to roll out *anything* new, you need to have a
deployment plan.  So let's compare what the deployment plans look like for
int 'kid' and 'intkid', rather than comparing apples to oranges.

(It is probably also worth thinking about "you have at most one of 'kid' or
'intkid' and how things degrade if something would have benefited from
'kid' but actually got an 'intkid' that it doesn't understand.)

-Ben

_______________________________________________
COSE mailing list
COSE@ietf.org
https://www.ietf.org/mailman/listinfo/cose

Reply via email to