Received: from smtp.lax.icann.org (smtp.lax.icann.org [192.0.33.81])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange x25519 server-signature ECDSA (prime256v1) server-digest
 SHA256)
	(No client certificate requested)
	by mx.ietf.org (Postfix) with ESMTPS id B735E31
	for <media-types@ietf.org>; Thu, 24 Sep 2026 23:49:16 +0000 (UTC)
Authentication-Results: mx.ietf.org;
	dkim=pass header.d=iana.org header.s=202509s header.b=VNnMQPzl;
	dmarc=pass (policy=none) header.from=iana.org;
	spf=pass (mx.ietf.org: domain of iana-shared@iana.org designates 192.0.33.81
 as permitted sender) smtp.mailfrom=iana-shared@iana.org
Received: from request7.lax.icann.org (request1.lax.icann.org [10.32.11.221])
	by smtp.lax.icann.org (Postfix) with ESMTP id E8833E1C04;
	Thu, 24 Sep 2026 23:49:15 +0000 (UTC)
DKIM-Filter: OpenDKIM Filter v2.11.0 smtp.lax.icann.org E8833E1C04
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iana.org; s=202509s;
	t=1790293755; bh=LxOet5Q4qNT00SgBGN/gSO0+kE/kpUbQeX8EWKXnuAA=;
	h=Subject:From:Reply-To:In-Reply-To:References:To:CC:Date:From;
	b=VNnMQPzlOspVsLwDZMl1whU8hIjx4/c+7aGaZxR23RkOJ6lMprX0fEsSzGKYEsyPU
	 Br4Iw2YZsobHIq2Dw6xzqkHw0TlO+f5N+XFmByoicQj5QpX8a94bmhe0mZ0kRUBkh5
	 pDZT+TRRMi5zmGxOy/55hHSX790NHs/UX7DxJU5I=
Received: by request7.lax.icann.org (Postfix, from userid 48)
	id E749BC124EC3; Thu, 24 Sep 2026 23:49:15 +0000 (UTC)
RT-Owner: david.dong
From: "Amanda Baber via RT" <iana-mime@iana.org>
In-Reply-To: <rt-5.0.3-135028-1789259110-1134.1459410-37-0@icann.org>
References: <RT-Ticket-1459410@icann.org> <4ggy0cr6va-1@ppa4.dc.icann.org>
 <rt-5.0.3-560495-1788917114-1801.1459410-9-0@icann.org>
 <CAL0qLwYuxW2T_RFc1hiOvjmGRuM=Q5r+aL653Xry4-g0fJTN2A@mail.gmail.com>
 <rt-5.0.3-663177-1788983653-1928.1459410-37-0@icann.org>
 <rt-5.0.3-135028-1789259110-1134.1459410-37-0@icann.org>
Message-ID: <rt-5.0.3-801120-1790293755-741.1459410-37-0@icann.org>
X-RT-Loop-Prevention: IANA
X-RT-Ticket: IANA #1459410
X-Managed-BY: RT 5.0.3 (http://www.bestpractical.com/rt/)
To: info@dynamicapplicationinterface.io
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
X-RT-Original-Encoding: utf-8
Precedence: bulk
Date: Thu, 24 Sep 2026 23:49:15 +0000
MIME-Version: 1.0
X-Spamd-Bar: -
Message-ID-Hash: EWCN7HYI5AGHYM5JWHVXMUQLZJ36T6G7
X-Message-ID-Hash: EWCN7HYI5AGHYM5JWHVXMUQLZJ36T6G7
X-MailFrom: iana-shared@iana.org
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop;
 banned-address; header-match-media-types.ietf.org-0;
 header-match-media-types.ietf.org-1; emergency; member-moderation;
 nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size;
 news-moderation; no-subject; digests; suspicious-header
CC: media-types@ietf.org, superuser@gmail.com
X-Mailman-Version: 3.3.10
Reply-To: iana-mime@iana.org
Subject: [media-types] [IANA #1459410] application/vnd.dai registration request
List-Id: "IANA mailing list for reviewing Media Type (MIME Type,
 Content Type) registration requests." <media-types.ietf.org>
Archived-At: 
 <https://mailarchive.ietf.org/arch/msg/media-types/mZVMPnp5Yc5SRZYIpgOQo_0r_Rc>
List-Archive: <https://mailarchive.ietf.org/arch/browse/media-types>
List-Help: <mailto:media-types-request@ietf.org?subject=help>
List-Owner: <mailto:media-types-owner@ietf.org>
List-Post: <mailto:media-types@ietf.org>
List-Subscribe: <mailto:media-types-join@ietf.org>
List-Unsubscribe: <mailto:media-types-leave@ietf.org>

Hi Murray,

Resending this request from September 12th.

thanks,
Amanda

On Sun Sep 13 00:25:10 2026, david.dong wrote:
> Hi Murray,
>=20
> Please see below for the response and updated template from the
> requester:
>=20
> =3D=3D=3D
>=20
> Thank you for sending the review. My revised application is below.
> Changes to note: the BCP 14 language has been removed from Security
> and Interoperability, which now describe the format and cites the
> specification sections where the normative requirements live; the "by
> name" phrasing in Interoperability has been replaced with plain
> wording; and the "N/A" that appeared to dangle is the answer to the
> "Other Information & Comments" field, whose heading is restored below.
>=20
> One substantive change to the specification followed from their first
> comment: the decompression bound was a requirement the implementations
> honored but the specification never stated. It is now a normative
> clause in =C2=A77 with a refusal code and a conformance vector, and the
> Security section cites it rather than asserting it.
>=20
>=20
> Application Revision:
>=20
> Name: Christopher Whitlow
> Email: info@dynamicapplicationinterface.io
>=20
> Media type name: application
> Media subtype name: vnd.dai
>=20
> Required parameters: N/A
> Optional parameters: N/A
>=20
> Encoding considerations: binary
>=20
> The file is a sectioned container: a header, a section table, page-
> aligned sections holding a JSON manifest, a zip archive of the
> application, and a SQLite database, and a 64-byte footer. The footer
> carries a generation counter and the SHA-256 of the database section.
>=20
> Security considerations:
>=20
> A DAI container carries executable content: an HTML application
> intended to run only inside a host that applies the isolation defined
> in =C2=A74 of the specification (an opaque-origin sandboxed frame under a
> Content Security Policy permitting no network connection). The
> specification requires that a host not applying that isolation does
> not execute the content.
>=20
> The container is a sectioned binary file holding a JSON manifest, a
> zip archive of the application, and a SQLite database. The manifest
> carries SHA-256 digests of every archive entry and may carry an ECDSA
> P-256 signature over them in a COSE_Sign1 envelope. The specification
> requires a host to verify every digest before running anything and to
> verify the signature when a key is present (=C2=A77). The signature covers
> the manifest and the application, not the database; the database
> section is verified separately against a SHA-256 digest held in the
> file's footer (=C2=A72). Verification establishes that the file is
> unchanged since it was signed, not the identity of the signer; =C2=A78 and
> =C2=A79.6 describe what a host may claim about a publisher.
>=20
> Because the archive is inflated before its manifest can be checked,
> the specification requires a reader to bound decompression in advance
> =E2=80=94 a limit on the bytes produced for any one entry, on the total a=
cross
> entries, and on the number of entries =E2=80=94 refusing rather than
> allocating when a declared size, the declared total, or the entry
> count exceeds that limit, and stopping if an entry inflates past the
> size it declares (=C2=A77). The manifest contains no active content.
>=20
> The application may read and write the SQLite database. The format
> grants it no capability to reach the network, the filesystem beyond
> the file itself, or other origins.
>=20
> Privacy: the file may contain personal data the application stored. It
> contains no tracking, and the specification requires that a host send
> nothing when opening a file.
>=20
> Interoperability considerations:
>=20
> The format is versioned by the manifestVersion field in the manifest.
> A reader accepts the versions it implements and refuses others,
> reporting a refusal that tells the person to update the host (=C2=A79.1).
> The specification defines versions 2 and 3. A conformance suite and an
> independent reference reader in Python are published with the
> specification.
>=20
> Published specification: DAI Container Format v0.2, =C2=A72 (the sectioned
> form), =C2=A77 (verification), and =C2=A79 (manifestVersion 3):
> https://github.com/dynamicapplicationinterface/dai-
> core/blob/main/docs/spec-v0.2.md
>=20
> Applications which use this media: The DAI opener
> (https://opendai.app), the DAI desktop application, and the dai
> command line tool; any host implementing the specification.
>=20
> Fragment identifier considerations: N/A
> Restrictions on usage: N/A
> Provisional registration? (standards tree only): No
>=20
> Additional information:
>=20
> Deprecated alias names for this type: N/A
> Magic number(s): the first four bytes are DAI (0x44 0x41 0x49 0x00)
> File extension(s): '.dai'
> Macintosh file type code: N/A
> Object Identifiers: N/A
>=20
> Other Information & Comments: N/A
>=20
> Person to contact for further information:
>=20
> Name: Christopher Whitlow
> Email: info@dynamicapplicationinterface.io
>=20
> Intended usage: COMMON
>=20
> Author/Change controller: Christopher Whitlow / Dynamic Application
> Interface Opensource Project
>=20
> =3D=3D=3D
>=20
> Best regards,
>=20
> David Dong
> IANA Services Sr. Specialist
>=20
> On Wed Sep 09 19:54:13 2026, superuser@gmail.com wrote:
> > A couple of minor things.
> >
> > -MSK
> >
> > On Tue, Sep 8, 2026 at 6:25=E2=80=AFPM David Dong via RT
> > <iana-mime-comment@iana.org> wrote:
> > > Name: Christopher Whitlow
> > >
> > > Email: info@dynamicapplicationinterface.io
> > >
> > > Media type name: application
> > >
> > > Media subtype name: vnd.dai
> > >
> > > Required parameters: N/A
> > >
> > > Optional parameters: N/A
> > >
> > > Encoding considerations: binary
> > >
> > > The file is a sectioned container: a header, a section table, page-
> > > aligned sections holding a JSON manifest, a zip archive of the
> > > application, and a SQLite database, and a 64-byte footer. The
> > > footer
> > > carries a generation counter and the SHA-256 of the database
> > > section.
> > >
> > > Security considerations: A DAI container carries executable
> > > content:
> > > an HTML application intended to run only inside a host that applies
> > > the isolation defined in =C2=A74 of the specification, namely an opaq=
ue-
> > > origin sandboxed frame under a Content Security Policy that permits
> > > no network connection of any kind. A host that does not apply that
> > > isolation MUST NOT execute the content.
> > >
> > > The container is a sectioned binary file holding a JSON manifest, a
> > > zip archive of the application, and a SQLite database. The manifest
> > > carries SHA-256 digests of every archive entry and MAY carry an
> > > ECDSA
> > > P-256 signature over them in a COSE_Sign1 envelope. A host MUST
> > > verify every digest before running anything and MUST verify the
> > > signature when a key is present. The signature covers the manifest
> > > and the application, not the database; the database section is
> > > verified separately against a SHA-256 digest held in the file's
> > > footer, and a host MUST check it. Verification proves the file is
> > > unchanged since it was signed, not who signed it. =C2=A78 and =C2=A79=
.6 of
> > > the
> > > specification describe what a host may and may not claim about a
> > > publisher.
> >
> > BCP 14 language isn't appropriate in the registration template.
> > Normative stuff (security or otherwise) should be in the
> > specification.
> >
> > > Because the archive must be inflated before its manifest can be
> > > checked, a reader MUST bound decompression by the declared size of
> > > each entry, the declared total, and the entry count, and MUST
> > > refuse
> > > a file that exceeds those bounds rather than allocate for it. The
> > > manifest contains no active content.
> > >
> > > The application may read and write the SQLite database. The format
> > > grants it no capability to reach the network, the filesystem beyond
> > > the file itself, or other origins.
> > >
> > > Privacy: the file may contain personal data the application stored.
> > > It contains no tracking, and the specification requires that a host
> > > send nothing on open.
> > >
> > > Interoperability considerations: The format is versioned by
> > > `manifestVersion` in the manifest. Readers accept versions 2 and 3
> > > and refuse others by name. A conformance suite and an independent
> > > reference reader in Python are published with the specification.
> >
> > What does "by name" mean here?
> >
> > > Published specification: DAI Container Format v0.2, =C2=A72 (the
> > > sectioned
> > > form) and =C2=A79 (manifestVersion 3):
> > > <https://github.com/dynamicapplicationinterface/dai-
> > > core/blob/main/docs/spec-v0.2.md>
> > >
> > > Applications which use this media: The DAI opener
> > > (<https://opendai.app>), the DAI desktop application, and the `dai`
> > > command line tool; any host implementing the specification.
> > >
> > > Fragment identifier considerations: N/A
> > >
> > > Restrictions on usage: N/A
> > >
> > > Provisional registration? (standards tree only): No
> > >
> > > Additional information:
> > >
> > > 1. Deprecated alias names for this type: N/A
> > > 2. Magic number(s): the first four bytes are `DAI` (0x44 0x41 0x49
> > > 0x00)
> > > 3. File extension(s): '.dai'
> > > 4. Macintosh file type code: N/A
> > > 5. Object Identifiers: N/A
> > >
> > > General Comments: N/A
> > >
> > > Person to contact for further information:
> > >
> > > 1. Name: Christopher Whitlow
> > > 2. Email: info@dynamicapplicationinterface.io
> > >
> > > Intended usage: COMMON
> > >
> > > N/A
> >
> > What's this dangling "N/A" for?
> >
> > > Author/Change controller: Christopher Whitlow / Dynamic Application
> > > Interface Opensource Project

