When using media types (RFC 6838), interoperability can be achieved, *IF AND ONLY IF* the "*Interoperability considerations"*of the registration template line
is filled in with appropriate information.*
*
It should be noticed that some "old" media types registrations made a correct usage of RFC 6838, like the"*application/pdf*" media type, which includes a magic number:

*Magic number(s):
All PDF files start with the characters '%PDF-' using the PDF version number,
e.g., '%PDF-1.4'.These characters are in US-ASCII encoding.

File extension(s): .pdf
*
Are there suffixes append to "pdf" to know more; for example, to know if the document is conformant to PDF/A ? The answer is no, since every pdf document contains a pointer to locate the position of the PDF Dictionary and the PDF Dictionary will tell it.

The previous ETSI example about TS 102 231 (in the thread  [OAUTH-WG] Request to add a profile parameter to +jwt and +sd-jwt) see: https://mailarchive.ietf.org/arch/msg/oauth/s6rxX-aiNse3ToSUmSVr28LioaM/ is a good example,since the associated URI provides
a direct access to both an ASN.1 module and an XML Schema.

ISO has defined the mDL. While no media type has been defined for the ISO mDL, interoperability can nevertheless be achieved.

How to recognize that a document is a mDL ?

First, from the application context and then, because the decoded object (encoded using CBOR) starts with:

|*{
*||**|*"version"*|*: *|*"1.0"*|*,
*|*"documents"*|*: [
{
*|*"docType"*|*: *|*"org.iso.18013.5.1.mDL"*|*,
*|
The structure adopted for "*docType*" not only achieves uniqueness, but also allows to take into consideration future versions of ISO 18013 Part 5, if needed. This single reference is sufficient since all the data elements being described belong to a single nameSpace : “org.iso.18013.5.1”.

_Note_: If applied to RFC numbers, the same approach would not work, since an RFC number changes when there is a revision.

*Current practices to define**data structures*

In ISO 18013 Part 5, CDDL (Concise Data Definition Language) is used to define data structures that can then be translated into CBOR and JSON.

The W3C is using W3C URIs to define schemas using several name spaces, e.g., using JSON-LD schemas.

The IETF has been using OIDs to identify ASN.1 modules using several name spaces. As an example:

*{iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) id-mod-tsp(13)}
*
_Note_: The following OIDbranch *{iso(1) identified-organization(3) dod(6) internet(1)}*is an OID in the tree from the USDepartment of Defense, instead from the IETF, but this was the practice at that time. More information is available at: https://www.alvestrand.no/objectid/1.3.6.html

*The key question is how to achieve interoperability between independent implementations ?
*
The answer is: by using a language A able to describe data structures which indicates which data elements are mandatory, conditional, recommended or optional, how many instances of them are accepted; and by using another language B that tells how to serialize the data structure when populated with some values. More constrains may also apply when using the language A, like the syntax to be used for each data value and, in some cases, allowed set of values or allowed range values.

The language A can be, e.g., : ASN.1, XSD, JSON Schema (https://json-schema.org/specification), JSON-LD, CDDL ?
The language B can be, e.g., : DER, XML, JSON, CBOR.

CDDL is mentioned with a question mark, as it does not seem to be able to use external name spaces. See below.

Obviously, the use of only a language A would be insufficient, since the processing of the data elements described using that language need to be detailed in the specification.

Languages of type A allow to define templates or schemas that allow to make sure that a data structure is compliant with a definition based on that language, both for an automatic generation and for an automatic validation. Hence, the data structure definition must be uniquely identifiable.

A data structure definition may use internally names that are defined in a single name space (e.g., “org.iso.18013.5.1”) or in several name spaces (e.g., in W3C VCDM 2.0 using JSON-LD or when using ASN.1 modules).

Unless a document is only sectorial (e.g. a mobile Driving License), the use of several name spaces should be supported.


*A suggested way forward
*
Nowadays, in order to achieve interoperability between independent implementations, the use of machine processable data and or protocol descriptions, e.g., using templates, schemas or modules should be RECOMMENDED. This would be a way to speed up implementations and to prevent some errors.

At this time, a distinction needs to be done between technical specifications that are freely accessible (e.g. RFCs, W3C recommendations, ETSI documents) and documents that are only accessible after payment, e.g., ISO standards. In the case of the IETF, these templates or schemas should be freely accessible and *the IESG should consider how to make this possible using ISO URIs in a manner similar to what ETSI has done.**
*

See: *https://uri.etsi.org/02231/v3.1.2/ *as an example.

Then after, RFCs will be able to include into the specification these templates, schemas or modules, but also derive files from them that could be downloaded from a web sitemanaged by the IETF so that they can be easily used by implementers (i.e. without manually removing page headers and footers).

Denis

_______________________________________________
OAuth mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to