Re: [Cbor] [COSE] CBOR magic number, file format and tags

Michael Richardson <mcr+ietf@sandelman.ca> Thu, 21 January 2021 14:00 UTC

Return-Path: <mcr+ietf@sandelman.ca>
X-Original-To: cbor@ietfa.amsl.com
Delivered-To: cbor@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0E4163A0C6A for <cbor@ietfa.amsl.com>; Thu, 21 Jan 2021 06:00:25 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Level:
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wSsDIdEom7AK for <cbor@ietfa.amsl.com>; Thu, 21 Jan 2021 06:00:22 -0800 (PST)
Received: from tuna.sandelman.ca (tuna.sandelman.ca [209.87.249.19]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id ECFF83A0C5E for <cbor@ietf.org>; Thu, 21 Jan 2021 06:00:21 -0800 (PST)
Received: from localhost (localhost [127.0.0.1]) by tuna.sandelman.ca (Postfix) with ESMTP id 0E00F38BB0 for <cbor@ietf.org>; Thu, 21 Jan 2021 09:02:23 -0500 (EST)
Received: from tuna.sandelman.ca ([127.0.0.1]) by localhost (localhost [127.0.0.1]) (amavisd-new, port 10024) with LMTP id i-KipR7FrFYV for <cbor@ietf.org>; Thu, 21 Jan 2021 09:02:22 -0500 (EST)
Received: from sandelman.ca (obiwan.sandelman.ca [IPv6:2607:f0b0:f:2::247]) by tuna.sandelman.ca (Postfix) with ESMTP id 5EEB838BA9 for <cbor@ietf.org>; Thu, 21 Jan 2021 09:02:22 -0500 (EST)
Received: from localhost (localhost [IPv6:::1]) by sandelman.ca (Postfix) with ESMTP id B899922B for <cbor@ietf.org>; Thu, 21 Jan 2021 09:00:19 -0500 (EST)
From: Michael Richardson <mcr+ietf@sandelman.ca>
To: cbor@ietf.org
In-Reply-To: <4192413D-0D60-4AFB-8897-FE2A09780E83@tzi.org>
References: <3C77CB5D-6AEA-4D70-96A2-3826DB8DAB18@island-resort.com> <10306.1611186961@localhost> <YAjT3j4cwvnLR4AA@meili.valhalla.31bits.net> <14857.1611195109@localhost> <YAjkmwsdqw0P+gA1@meili.valhalla.31bits.net> <4192413D-0D60-4AFB-8897-FE2A09780E83@tzi.org>
X-Mailer: MH-E 8.6+git; nmh 1.7+dev; GNU Emacs 26.1
X-Face: $\n1pF)h^`}$H>Hk{L"x@)JS7<%Az}5RyS@k9X%29-lHB$Ti.V>2bi.~ehC0; <'$9xN5Ub# z!G,p`nR&p7Fz@^UXIn156S8.~^@MJ*mMsD7=QFeq%AL4m<nPbLgmtKK-5dC@#:k
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-="; micalg="pgp-sha512"; protocol="application/pgp-signature"
Date: Thu, 21 Jan 2021 09:00:19 -0500
Message-ID: <1641.1611237619@localhost>
Archived-At: <https://mailarchive.ietf.org/arch/msg/cbor/fGilMjGQedYl4PowhZS_ULzs9-w>
Subject: Re: [Cbor] [COSE] CBOR magic number, file format and tags
X-BeenThere: cbor@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Concise Binary Object Representation \(CBOR\)" <cbor.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/cbor>, <mailto:cbor-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/cbor/>
List-Post: <mailto:cbor@ietf.org>
List-Help: <mailto:cbor-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/cbor>, <mailto:cbor-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 21 Jan 2021 14:00:25 -0000

Carsten Bormann <cabo@tzi.org> wrote:
    > For CBOR data items, I prefer registering a tag and prefixing with that
    > head (*) over prefixing with an array head and a string.  See, we have
    > a magic number registry built right into CBOR...

BTW, in case you didn't read far enough, that was variation two:

## Use a CBOR Tag on the CBOR Integer

A two or three byte CBOR Tag could be used in proposal two, applied to the CBOR Integer.

Or, a two byte CBOR Tag could be used in proposal one, applied to the CBOR Integer,
and not applied to the array.
This would make the first four bytes of a CBOR encoded item recognizeably CBOR,
with the next four bytes being the specific CBOR content.

....

I didn't know if using the Tag registry was a welcome or unwelcome hack.

My take right now is that you:
1) prefer a CBOR Sequence
2) prefer a per-protocol CBOR Tag around something.
   * c"bor" or C"BOR" would seem to be the right strings here!
3) probably prefix it all with Tag number 55799.

Tag<55799>Tag<Protocol>C"BOR"
3-bytes   5-bytes      4-bytes   = 12 bytes, with the relevant magic number
                                   being the first 8-bytes


So in section 6, in the case where the CBOR Tag registry is used, then there are two options I
thought of:

1. allow requesters to select their own four (32-bit) or eight (64-bit) tags, from the First Come First Served Registry, using the existing instructions.

2. amend the IANA instructions for {{RFC8949}} and carve out a 30-bit chunk of the four byte registry,
or a 32-bit chunk of the eight byte registry.

While in many cases CBOR encodings strive to be as compact as possible, for the purposes of a magic number registry for objects stored on disk, the use of between eight and twelve bytes is acceptable.

--
Michael Richardson <mcr+IETF@sandelman.ca>   . o O ( IPv6 IøT consulting )
           Sandelman Software Works Inc, Ottawa and Worldwide