<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.27 (Ruby 3.2.1) -->
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-cbor-time-tag-05" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title abbrev="CBOR tag for extended time">Concise Binary Object Representation (CBOR) Tags for Time, Duration, and Period</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-time-tag-05"/>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization>Universität Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>Bremen</city>
          <code>D-28359</code>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <author initials="B." surname="Gamari" fullname="Ben Gamari">
      <organization>Well-Typed</organization>
      <address>
        <postal>
          <street>117 Middle Rd.</street>
          <city>Portsmouth</city>
          <region>NH</region>
          <code>03801</code>
          <country>United States</country>
        </postal>
        <email>ben@well-typed.com</email>
      </address>
    </author>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer Institute for Secure Information Technology</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>
    <date year="2023"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>The Concise Binary Object Representation (CBOR, RFC 8949) is a data
format whose design goals include the possibility of extremely small
code size, fairly small message size, and extensibility without the
need for version negotiation.</t>
      <t>In CBOR, one point of extensibility is the definition of CBOR tags.
RFC 8949 defines two tags for time: CBOR tag 0 (RFC3339 time as a string) and tag
1 (Posix time as int or float).  Since then, additional requirements have
become known.  The present document defines a CBOR tag for time that
allows a more elaborate representation of time, as well as related
CBOR tags for duration and time period.  It is
intended as the reference document for the IANA registration of the
CBOR tags defined.</t>
      <t><cref anchor="status">The present version (-05) adds CDDL definitions; this should now
address all WGLC comments.</cref></t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-cbor-time-tag/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        CBOR Working Group mailing list (<eref target="mailto:cbor@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/cbor/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/cbor/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/cbor-wg/time-tag"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>The Concise Binary Object Representation (CBOR, <xref target="RFC8949"/>) provides
for the interchange of structured data without a requirement for a
pre-agreed schema.
RFC 8949 defines a basic set of data types, as well as a tagging
mechanism that enables extending the set of data types supported via
an IANA registry.</t>
      <t>In CBOR, one point of extensibility is the definition of CBOR tags.
RFC 8949 defines two tags for time: CBOR tag 0 (RFC3339 time as a string) and tag
1 (Posix time as int or float).  Since then, additional requirements have
become known.  The present document defines a CBOR tag for time that
allows a more elaborate representation of time, as well as related
CBOR tags for duration and time period.  It is
intended as the reference document for the IANA registration of the
CBOR tags defined.</t>
      <section anchor="terms">
        <name>Terminology</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <t>The term "byte" is used in its now customary sense as a synonym for
"octet".
Where bit arithmetic is explained, this document uses the notation
familiar from the programming language C (including C++14's 0bnnn
binary literals), except that the operator "**" stands for
exponentiation.</t>
        <t>CBOR diagnostic notation is defined in <xref section="8" sectionFormat="of" target="RFC8949"/> and
<xref section="G" sectionFormat="of" target="RFC8610"/>.
A machine-processable model of the data structures defined in this
specification is provided throughout the text using the Concise Data
Definition Language, CDDL <xref target="RFC8610"/>; <xref target="collected-cddl"/> provides the
collected model information.</t>
      </section>
    </section>
    <section anchor="objectives">
      <name>Objectives</name>
      <t>For the time tag,
the present specification addresses the following objectives that go
beyond the original tags 0 and 1:</t>
      <ul spacing="normal">
        <li>Additional resolution for epoch-based time (as in tag 1).  CBOR tag
1 only provides for integer and up to binary64 floating point
representation of times, limiting resolution to approximately
microseconds at the time of writing (and progressively becoming
worse over time).</li>
        <li>Indication of timescale.  Tags 0 and 1 are for UTC; however, some
interchanges are better performed on TAI.  Other timescales may be
registered once they become relevant (e.g., one of the proposed
successors to UTC that might no longer use leap seconds, or a
scale based on smeared leap seconds).</li>
      </ul>
      <t>By incorporating a way to transport <xref target="IXDTF"/> suffix information (<xref target="tzh"/>,
<xref target="suff"/>), additional indications can be provided of intents about the
interpretation of the time given, in particular for future times.
Intents might include information about time zones, daylight savings
times, preferred calendar representations, etc.</t>
      <t>Semantics not covered by this document can be added by registering
additional map keys for the map inside the tag, the specification for
which is referenced by the registry entry (<xref target="map-key-registry"/>, <xref target="time-format"/>).
For example, map keys could be registered for:</t>
      <ul spacing="normal">
        <li>Direct representation of natural platform time formats.  Some
platforms use epoch-based time formats that require some computation
to convert them into the representations allowed by tag 1; these
computations can also lose precision and cause ambiguities.
(The present specification does not take a position on whether tag 1
can be "fixed" to include, e.g., Decimal or BigFloat representations.
It does define how to use these representations with the extended
time format.)</li>
      </ul>
      <t>Additional tags are defined for durations and periods.</t>
    </section>
    <section anchor="time-format">
      <name>Time Format</name>
      <t>An extended time is indicated by CBOR tag 1001, the content of which is a map data
item (CBOR major type 5).  The map may contain integer (major types 0
and 1) or text string (major type 3) keys, with the value type
determined by each specific key.
For negative integer keys and text string values of the key,
implementations <bcp14>MUST</bcp14> ignore key/value pairs they do not understand.
Conversely, for unsigned integer keys, implementations <bcp14>MUST</bcp14> signal as
an error key/value pairs they do not understand or implement
(these are either "base time" or "critical", see below).</t>
      <t>The map must contain exactly one unsigned integer key that specifies
the "base time", and may also contain one or more negative integer or
text-string keys, which may encode supplementary information.</t>
      <t>Supplementary information may also be provided by additional unsigned
integer keys that are explicitly defined to provide supplementary
information ("critical"; as these are required to be understood, there
can be no confusion with Base Time keys).</t>
      <t>Negative integer and text string keys always supply supplementary
information ("elective", and this will not be explicitly stated
below).</t>
      <t>Supplementary information may include:</t>
      <ul spacing="normal">
        <li>a higher precision time offset to be added to the Base Time,</li>
        <li>a reference timescale and epoch different from the default UTC and 1970-01-01</li>
        <li>information about clock quality parameters, such as source,
accuracy, and uncertainty
<!-- precision, and resolution -->
        </li>
      </ul>
      <t>Additional keys can be defined by registering them in the Map Key
Registry (<xref target="map-key-registry"/>).
Future keys may add:</t>
      <ul spacing="normal">
        <li>intent information such as timezone and daylight savings time,
and/or possibly positioning coordinates, to express information that
would indicate a local time.</li>
      </ul>
      <t>This document does not define supplementary text keys.
A number of both unsigned and negative-integer keys are defined in
the following subsections.</t>
      <t>A formal definition of Tag 1001 in CDDL is:</t>
      <sourcecode type="cddl"><![CDATA[
Etime = #6.1001(etime-detailed)

etime-framework = {
  uint => any ; at least one base time
  * (nint/text) => any ; elective supplementary information
  * uint => any ; critical supplementary information
}

etime-detailed = ({
  $$ETIME-BASETIME
  ClockQuality-group
  * $$ETIME-ELECTIVE
  * $$ETIME-CRITICAL
  * ((nint/text) .feature "etime-elective-extension") => any
  * (uint .feature "etime-critical-extension") => any
}) .within etime-framework
]]></sourcecode>
      <section anchor="key-1">
        <name>Key 1</name>
        <t>Key 1 indicates a Base Time value that is exactly like the data item that would
be tagged by CBOR tag 1 (Posix time <xref target="TIME_T"/> as int or float).
The time value indicated by the value under this key can be further
modified by other keys.</t>
        <sourcecode type="cddl"><![CDATA[
$$ETIME-BASETIME //= (1: ~time)
]]></sourcecode>
      </section>
      <section anchor="keys-4-and-5">
        <name>Keys 4 and 5</name>
        <t>Keys 4 and 5 indicate a Base Time value and are like key 1, except that the data item is an array as
defined for CBOR tag 4 or 5, respectively.  This can be used to include
a Decimal or Bigfloat epoch-based float <xref target="TIME_T"/> in an extended time.</t>
        <sourcecode type="cddl"><![CDATA[
$$ETIME-BASETIME //= (4: ~decfrac)
$$ETIME-BASETIME //= (5: ~bigfloat)
]]></sourcecode>
      </section>
      <section anchor="keys-3-6-9-12-15-18">
        <name>Keys -3, -6, -9, -12, -15, -18</name>
        <t>The keys -3, -6, -9, -12, -15 and -18 indicate additional decimal fractions by
giving an unsigned integer (major type 0) and scaling this with the
scale factor 1e-3, 1e-6, 1e-9, 1e-12, 1e-15, and 1e-18, respectively (see <xref target="decfract"/>).  More than one
of these keys <bcp14>MUST NOT</bcp14> be present in one extended time data item.
These additional fractions are added to a Base Time in seconds <xref target="SI-SECOND"/>
indicated by a Key 1, which then <bcp14>MUST</bcp14> also be present and <bcp14>MUST</bcp14> have an
integer value.</t>
        <table anchor="decfract">
          <name>Key for decimally scaled Fractions</name>
          <thead>
            <tr>
              <th align="left">Key</th>
              <th align="left">meaning</th>
              <th align="left">example usage</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">-3</td>
              <td align="left">milliseconds</td>
              <td align="left">Java time</td>
            </tr>
            <tr>
              <td align="left">-6</td>
              <td align="left">microseconds</td>
              <td align="left">(old) UNIX time</td>
            </tr>
            <tr>
              <td align="left">-9</td>
              <td align="left">nanoseconds</td>
              <td align="left">(new) UNIX time</td>
            </tr>
            <tr>
              <td align="left">-12</td>
              <td align="left">picoseconds</td>
              <td align="left">Haskell time</td>
            </tr>
            <tr>
              <td align="left">-15</td>
              <td align="left">femtoseconds</td>
              <td align="left">(future)</td>
            </tr>
            <tr>
              <td align="left">-18</td>
              <td align="left">attoseconds</td>
              <td align="left">(future)</td>
            </tr>
          </tbody>
        </table>
        <sourcecode type="cddl"><![CDATA[
$$ETIME-ELECTIVE //= (-3: uint)
$$ETIME-ELECTIVE //= (-6: uint)
$$ETIME-ELECTIVE //= (-9: uint)
$$ETIME-ELECTIVE //= (-12: uint)
$$ETIME-ELECTIVE //= (-15: uint)
$$ETIME-ELECTIVE //= (-18: uint)
]]></sourcecode>
      </section>
      <section anchor="key-timescale">
        <name>Key -1: Timescale</name>
        <t>Key -1 is used to indicate a timescale.  The value 0 indicates UTC,
with the POSIX epoch <xref target="TIME_T"/>; the value 1 indicates TAI, with the
PTP (Precision Time Protocol) epoch <xref target="IEEE1588-2008"/>.</t>
        <sourcecode type="cddl"><![CDATA[
$$ETIME-ELECTIVE //= (-1 => $ETIME-TIMESCALE)

$ETIME-TIMESCALE /= &(etime-utc: 0)
$ETIME-TIMESCALE /= &(etime-tai: 1)
]]></sourcecode>
        <t>If key -1 is not present, timescale value 0 is implied.</t>
        <t>Additional values can be registered in the Timescale Registry
(<xref target="timescale-registry"/>); values <bcp14>MUST</bcp14> be integers or text strings.</t>
        <t>(Note that there should be no timescales "GPS" or "NTP" — instead,
the time should be converted to TAI or UTC using a single addition or subtraction.)</t>
        <figure anchor="offset">
          <name>Converting Common Offset Timescales</name>
          <artset>
            <artwork type="svg"><svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" height="6.009ex" role="img" viewBox="0 -791.3 43055.4 2587.3" width="100ex">
                <defs>
                  <path d="M283 438l-10 -38h-70l-78 -320c-1 -3 -2 -8 -2 -11c0 -6 3 -12 16 -12c0 0 23 2 60 52l13 -11c-24 -31 -74 -107 -133 -107c-31 0 -39 25 -39 52c0 13 2 26 5 37l81 320h-77l5 29c75 14 136 51 177 138h13l-31 -129h70Z" id="E1-STIXWEBNORMALI-1D461" stroke-width="1"/>
                  <path d="M444 428l-89 -348c-1 -4 -1 -6 -1 -9c0 -8 4 -14 14 -14c21 0 40 26 57 46l5 6l13 -11c-23 -33 -74 -107 -132 -107c-29 0 -40 19 -40 52c0 9 1 25 4 37l26 95h-1c-7 -5 -97 -126 -137 -156c-23 -17 -49 -28 -72 -28c-47 0 -61 36 -61 74c0 21 3 40 8 59l59 231 c4 15 6 21 6 25c0 12 -11 23 -33 23c-7 0 -19 -1 -26 -3l-3 15l157 26l-84 -326c-2 -9 -3 -16 -3 -24c0 -21 8 -34 26 -34c25 0 65 31 100 77c43 57 89 146 109 219l21 75h77Z" id="E1-STIXWEBNORMALI-1D462" stroke-width="1"/>
                  <path d="M363 111l12 -13c-51 -60 -113 -109 -198 -109c-97 0 -137 78 -137 155c0 140 121 297 263 297c50 0 97 -27 97 -76c0 -38 -16 -70 -54 -70c-26 0 -38 21 -38 38c0 24 29 36 29 58c0 12 -10 21 -34 21c-119 0 -176 -179 -176 -259c0 -87 49 -109 94 -109 c61 0 107 33 142 67Z" id="E1-STIXWEBNORMALI-1D450" stroke-width="1"/>
                  <path d="M637 320h-589v66h589v-66zM637 120h-589v66h589v-66Z" id="E1-STIXWEBMAIN-3D" stroke-width="1"/>
                  <path d="M467 96l-5 -6c-28 -34 -76 -98 -128 -98c-32 0 -41 23 -41 46c0 13 4 29 7 40l57 221c2 8 7 28 7 42c0 19 -6 38 -24 38c-38 0 -101 -86 -132 -133c-36 -54 -62 -101 -68 -122l-33 -124h-77l95 374c0 18 -3 32 -30 32c-10 0 -21 -2 -28 -3l-2 15l159 23l-51 -189h3 c5 0 54 70 56 73c40 50 100 116 160 116c44 0 56 -29 56 -62c0 -25 -6 -50 -11 -70l-59 -231c-1 -2 -1 -5 -1 -10c1 -6 4 -14 15 -14c24 0 48 36 62 53Z" id="E1-STIXWEBNORMALI-1D45B" stroke-width="1"/>
                  <path d="M253 370l14 13c39 37 78 58 113 58c61 0 94 -54 94 -155c0 -129 -110 -298 -254 -298c-24 0 -42 4 -61 19l-24 -100c-3 -13 -5 -24 -5 -35c0 -22 11 -43 61 -43h16l-3 -12h-234l3 12c62 3 69 33 81 79l117 464c0 19 -1 33 -31 33c-8 0 -20 -2 -28 -4l-2 16l158 24 l-18 -69zM214 238l-46 -200c14 -16 34 -21 46 -21c101 0 176 173 176 285c0 63 -28 83 -51 83c-53 0 -105 -61 -125 -147Z" id="E1-STIXWEBNORMALI-1D45D" stroke-width="1"/>
                  <path d="M621 220h-557v66h557v-66Z" id="E1-STIXWEBMAIN-2212" stroke-width="1"/>
                  <path d="M474 137l-54 -137h-391v12l178 189c94 99 130 175 130 260c0 91 -54 141 -139 141c-72 0 -107 -32 -147 -130l-21 5c21 117 85 199 208 199c113 0 185 -77 185 -176c0 -79 -39 -154 -128 -248l-165 -176h234c42 0 63 11 96 67Z" id="E1-STIXWEBMAIN-32" stroke-width="1"/>
                  <path d="M476 330c0 -172 -63 -344 -226 -344c-171 0 -226 186 -226 350c0 177 69 340 230 340c131 0 222 -141 222 -346zM380 325c0 208 -44 325 -132 325c-83 0 -128 -118 -128 -321s44 -317 130 -317c85 0 130 115 130 313Z" id="E1-STIXWEBMAIN-30" stroke-width="1"/>
                  <path d="M445 155c0 -103 -77 -169 -197 -169c-113 0 -192 69 -192 163c0 69 23 108 130 183c-103 85 -124 123 -124 188c0 96 83 156 194 156c99 0 168 -65 168 -143c0 -75 -35 -109 -134 -162c123 -82 155 -136 155 -216zM355 533c0 69 -41 115 -109 115 c-67 0 -110 -37 -110 -99s37 -108 125 -160c68 40 94 82 94 144zM271 272l-59 40c-59 -48 -80 -89 -80 -154c0 -92 51 -144 127 -144c65 0 110 45 110 110c0 62 -30 102 -98 148Z" id="E1-STIXWEBMAIN-38" stroke-width="1"/>
                  <path d="M59 -22l-3 20c152 27 264 132 304 296c-43 -42 -91 -57 -150 -57c-108 0 -180 81 -180 203c0 135 89 236 208 236c64 0 118 -28 157 -76c40 -50 64 -122 64 -206c0 -115 -40 -224 -120 -297c-85 -77 -150 -101 -280 -119zM362 355v39c0 168 -45 254 -132 254 c-30 0 -56 -12 -73 -34c-20 -27 -35 -86 -35 -140c0 -119 48 -194 123 -194c44 0 117 22 117 75Z" id="E1-STIXWEBMAIN-39" stroke-width="1"/>
                  <path d="M472 428l-91 -345s-1 -2 -1 -11c0 -11 6 -17 14 -17c10 0 25 2 64 54l12 -12c-31 -47 -85 -107 -133 -107c-33 0 -42 23 -42 55c0 13 6 34 11 50h-4c-72 -92 -134 -105 -173 -105c-63 0 -89 55 -89 119c0 132 132 332 276 332c43 0 64 -24 66 -46h1l9 33h80zM367 341 c0 41 -12 71 -50 71c-68 0 -128 -87 -162 -171c-18 -45 -28 -89 -28 -124c0 -53 31 -66 58 -66c69 0 139 95 167 190c8 26 15 66 15 100Z" id="E1-STIXWEBNORMALI-1D44E" stroke-width="1"/>
                  <path d="M257 566c0 -26 -22 -46 -48 -46c-29 0 -48 20 -48 46c0 25 19 50 48 50c26 0 48 -25 48 -50zM227 441l-92 -364c-1 -6 -1 -10 -1 -14c0 -7 6 -10 13 -10c22 0 28 12 64 51l13 -10c-35 -45 -85 -105 -134 -105c-28 0 -40 19 -40 46c0 12 0 31 79 338c1 2 2 9 2 12 c0 17 -8 22 -31 22c-9 0 -21 -2 -28 -4l-3 16Z" id="E1-STIXWEBNORMALI-1D456" stroke-width="1"/>
                  <path d="M492 413l-13 -45h-81c13 -15 17 -28 17 -50c0 -75 -53 -137 -141 -148c-59 -8 -88 -33 -88 -58c0 -63 233 -23 233 -148c0 -71 -66 -151 -215 -151c-134 0 -184 57 -184 115s55 88 117 108c-17 11 -24 30 -24 47c0 38 37 87 85 87v4c-67 15 -94 62 -94 109 c0 79 68 158 174 158c42 0 73 -13 88 -28h126zM336 349c0 37 -10 62 -54 62c-54 0 -98 -71 -98 -139c0 -46 12 -81 56 -81c71 0 96 102 96 158zM349 -69c0 78 -132 73 -192 95c-8 -5 -18 -10 -26 -16c-26 -19 -48 -45 -48 -72c0 -47 44 -97 139 -97c91 0 127 46 127 90Z" id="E1-STIXWEBNORMALI-1D454" stroke-width="1"/>
                  <path d="M390 441l-24 -146h-15c0 64 -36 120 -92 120c-25 0 -51 -17 -51 -58c0 -55 134 -147 134 -242c0 -62 -48 -125 -135 -125c-34 0 -98 20 -110 20c-9 0 -18 -4 -30 -21h-17l25 156h16c0 -63 41 -130 104 -130c59 0 73 50 73 89c0 82 -130 132 -130 230c0 79 59 107 114 107 c43 0 63 -20 92 -20c11 0 22 10 30 20h16Z" id="E1-STIXWEBNORMALI-1D460" stroke-width="1"/>
                  <path d="M636 220h-261v-261h-66v261h-261v66h261v261h66v-261h261v-66Z" id="E1-STIXWEBMAIN-2B" stroke-width="1"/>
                  <path d="M61 510l-16 4c29 95 92 162 196 162c93 0 156 -55 156 -137c0 -48 -26 -98 -93 -138c44 -19 62 -31 83 -53c28 -31 44 -77 44 -129c0 -53 -17 -102 -46 -140c-48 -64 -143 -93 -232 -93c-73 0 -112 21 -112 57c0 21 18 36 41 36c17 0 33 -6 61 -26c37 -26 58 -31 86 -31 c74 0 130 68 130 153c0 76 -35 125 -104 145c-22 7 -45 10 -102 10v14c38 13 64 24 84 36c49 28 81 73 81 134c0 68 -42 102 -108 102c-62 0 -108 -32 -149 -106Z" id="E1-STIXWEBMAIN-33" stroke-width="1"/>
                  <path d="M394 0h-276v15c74 4 95 25 95 80v449c0 34 -9 49 -30 49c-10 0 -27 -5 -45 -12l-27 -10v14l179 91l9 -3v-597c0 -43 20 -61 95 -61v-15Z" id="E1-STIXWEBMAIN-31" stroke-width="1"/>
                  <path d="M438 681l-36 -85c-3 -7 -11 -13 -27 -13h-194l-40 -85c143 -27 193 -49 250 -128c26 -36 35 -74 35 -127c0 -96 -30 -158 -98 -208c-47 -34 -102 -49 -170 -49c-75 0 -127 24 -127 62c0 25 17 38 45 38c23 0 42 -5 74 -31c28 -23 51 -32 71 -32c70 0 135 83 135 169 c0 64 -22 114 -67 150c-47 38 -117 70 -213 70c-9 0 -12 2 -12 8c0 2 1 5 1 5l109 237h207c23 0 32 5 48 26Z" id="E1-STIXWEBMAIN-35" stroke-width="1"/>
                  <path d="M446 684l2 -16c-157 -26 -269 -134 -296 -285c49 38 83 45 127 45c117 0 189 -80 189 -209c0 -64 -18 -120 -51 -160c-37 -46 -93 -73 -159 -73c-79 0 -142 37 -177 101c-28 51 -47 122 -47 192c0 108 38 203 109 276c86 90 165 114 303 129zM378 188 c0 128 -42 194 -135 194c-57 0 -116 -24 -116 -116c0 -152 48 -252 142 -252c72 0 109 72 109 174Z" id="E1-STIXWEBMAIN-36" stroke-width="1"/>
                  <path d="M473 167h-103v-167h-78v167h-280v64l314 445h44v-445h103v-64zM292 231v343l-240 -343h240Z" id="E1-STIXWEBMAIN-34" stroke-width="1"/>
                </defs>
                <g fill="black" stroke="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)">
                  <g transform="translate(16540,0)">
                    <use xlink:href="#E1-STIXWEBNORMALI-1D461" x="0" y="0"/>
                    <g transform="translate(313,-150)">
                      <use xlink:href="#E1-STIXWEBNORMALI-1D462" transform="scale(0.707)" x="0" y="0"/>
                      <use xlink:href="#E1-STIXWEBNORMALI-1D461" transform="scale(0.707)" x="474" y="0"/>
                      <use xlink:href="#E1-STIXWEBNORMALI-1D450" transform="scale(0.707)" x="788" y="0"/>
                    </g>
                    <use xlink:href="#E1-STIXWEBMAIN-3D" x="1542" y="0"/>
                    <g transform="translate(2505,0)">
                      <use xlink:href="#E1-STIXWEBNORMALI-1D461" x="0" y="0"/>
                      <g transform="translate(313,-150)">
                        <use xlink:href="#E1-STIXWEBNORMALI-1D45B" transform="scale(0.707)" x="0" y="0"/>
                        <use xlink:href="#E1-STIXWEBNORMALI-1D461" transform="scale(0.707)" x="497" y="0"/>
                        <use xlink:href="#E1-STIXWEBNORMALI-1D45D" transform="scale(0.707)" x="810" y="0"/>
                      </g>
                    </g>
                    <use xlink:href="#E1-STIXWEBMAIN-2212" x="4060" y="0"/>
                    <g transform="translate(4968,0)">
                      <use xlink:href="#E1-STIXWEBMAIN-32"/>
                      <use xlink:href="#E1-STIXWEBMAIN-32" x="500" y="0"/>
                      <use xlink:href="#E1-STIXWEBMAIN-30" x="1001" y="0"/>
                      <use xlink:href="#E1-STIXWEBMAIN-38" x="1501" y="0"/>
                      <use xlink:href="#E1-STIXWEBMAIN-39" x="2002" y="0"/>
                      <use xlink:href="#E1-STIXWEBMAIN-38" x="2502" y="0"/>
                      <use xlink:href="#E1-STIXWEBMAIN-38" x="3003" y="0"/>
                      <use xlink:href="#E1-STIXWEBMAIN-38" x="3503" y="0"/>
                      <use xlink:href="#E1-STIXWEBMAIN-30" x="4004" y="0"/>
                      <use xlink:href="#E1-STIXWEBMAIN-30" x="4504" y="0"/>
                    </g>
                  </g>
                  <g transform="translate(16774,-1400)">
                    <use xlink:href="#E1-STIXWEBNORMALI-1D461" x="0" y="0"/>
                    <g transform="translate(313,-150)">
                      <use xlink:href="#E1-STIXWEBNORMALI-1D461" transform="scale(0.707)" x="0" y="0"/>
                      <use xlink:href="#E1-STIXWEBNORMALI-1D44E" transform="scale(0.707)" x="313" y="0"/>
                      <use xlink:href="#E1-STIXWEBNORMALI-1D456" transform="scale(0.707)" x="816" y="0"/>
                    </g>
                    <use xlink:href="#E1-STIXWEBMAIN-3D" x="1488" y="0"/>
                    <g transform="translate(2451,0)">
                      <use xlink:href="#E1-STIXWEBNORMALI-1D461" x="0" y="0"/>
                      <g transform="translate(313,-150)">
                        <use xlink:href="#E1-STIXWEBNORMALI-1D454" transform="scale(0.707)" x="0" y="0"/>
                        <use xlink:href="#E1-STIXWEBNORMALI-1D45D" transform="scale(0.707)" x="492" y="0"/>
                        <use xlink:href="#E1-STIXWEBNORMALI-1D460" transform="scale(0.707)" x="982" y="0"/>
                      </g>
                    </g>
                    <use xlink:href="#E1-STIXWEBMAIN-2B" x="4093" y="0"/>
                    <g transform="translate(5001,0)">
                      <use xlink:href="#E1-STIXWEBMAIN-33"/>
                      <use xlink:href="#E1-STIXWEBMAIN-31" x="500" y="0"/>
                      <use xlink:href="#E1-STIXWEBMAIN-35" x="1001" y="0"/>
                      <use xlink:href="#E1-STIXWEBMAIN-39" x="1501" y="0"/>
                      <use xlink:href="#E1-STIXWEBMAIN-36" x="2002" y="0"/>
                      <use xlink:href="#E1-STIXWEBMAIN-34" x="2502" y="0"/>
                      <use xlink:href="#E1-STIXWEBMAIN-38" x="3003" y="0"/>
                      <use xlink:href="#E1-STIXWEBMAIN-31" x="3503" y="0"/>
                      <use xlink:href="#E1-STIXWEBMAIN-39" x="4004" y="0"/>
                    </g>
                  </g>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[t    = t    - 2208988800
 utc    ntp
t    = t    + 315964819
 tai    gps
]]></artwork>
          </artset>
        </figure>
        <aside>
          <t>Editor's note:
This initial set of timescales was deliberately chosen to be frugal, as
the specification of the tag provides an extension point where
additional timescales can be registered at any time.
Registrations are clearly needed for earth-referenced timescales (such
as UT1 and TT), as well as possibly for specific realizations of
abstract time scales (such as TAI(USNO) which is more accurate as a
constant offset basis for GPS times).
While the registration process itself is trivial, these registrations
need to be made based on a solid specification of their actual
definition.
Draft text for a specification of the UT1 time scale can be found at <eref target="https://github.com/cbor-wg/time-tag/pull/9">https://github.com/cbor-wg/time-tag/pull/9</eref>.</t>
        </aside>
      </section>
      <section anchor="clock-quality">
        <name>Clock Quality</name>
        <t>A number of keys are defined to indicate the quality of clock that was
used to determine the point in time.</t>
        <t>The first three are analogous to <tt>clock-quality-grouping</tt> in
<xref target="RFC8575"/>, which is in turn based on the definitions in
<xref target="IEEE1588-2008"/>; two more are specific to this document.</t>
        <sourcecode type="cddl"><![CDATA[
ClockQuality-group = (
  ? &(ClockClass: -2) => uint .size 1 ; PTP/RFC8575
  ? &(ClockAccuracy: -4) => uint .size 1 ; PTP/RFC8575
  ? &(OffsetScaledLogVariance: -5) => uint .size 2 ; PTP/RFC8575
  ? &(Uncertainty: -7) => ~time/~duration
  ? &(Guarantee: -8) => ~time/~duration
)
]]></sourcecode>
        <section anchor="clockclass-key-2">
          <name>ClockClass (Key -2)</name>
          <t>Key -2 (ClockClass) can be used to indicate the clock class as per
Table 5 of <xref target="IEEE1588-2008"/>.
It is defined as a one-byte unsigned integer as that is the range defined there.</t>
        </section>
        <section anchor="clockaccuracy-key-4">
          <name>ClockAccuracy (Key -4)</name>
          <t>Key -4 (ClockAccuracy) can be used to indicate the clock accuracy as per
Table 6 of <xref target="IEEE1588-2008"/>.
It is defined as a one-byte unsigned integer as that is the range defined there.
The range between 32 and 47 is a slightly distorted logarithmic scale from
25 ns to 1 s (see <xref target="formula-accuracy-enum"/>); the number 254 is the
value to be used if an unknown accuracy needs to be expressed.</t>
          <figure anchor="formula-accuracy-enum">
            <name>Approximate conversion from accuracy to accuracy enumeration value</name>
            <artset>
              <artwork type="svg"><svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" height="4.676ex" role="img" viewBox="0 -1221.9 14044.6 2013.3" width="32.62ex">
                  <defs>
                    <path d="M363 112l14 -13c-70 -86 -138 -110 -200 -110c-98 0 -137 84 -137 156c0 23 1 37 6 60c25 111 135 236 262 236c42 0 102 -14 102 -76c0 -127 -167 -176 -286 -182v-28c0 -64 52 -107 113 -107c42 0 90 18 126 64zM124 211h9c104 0 198 69 198 157c0 25 -19 43 -44 43 c-74 0 -134 -115 -163 -200Z" id="E1-STIXWEBNORMALI-1D452" stroke-width="1"/>
                    <path d="M467 96l-5 -6c-28 -34 -76 -98 -128 -98c-32 0 -41 23 -41 46c0 13 4 29 7 40l57 221c2 8 7 28 7 42c0 19 -6 38 -24 38c-38 0 -101 -86 -132 -133c-36 -54 -62 -101 -68 -122l-33 -124h-77l95 374c0 18 -3 32 -30 32c-10 0 -21 -2 -28 -3l-2 15l159 23l-51 -189h3 c5 0 54 70 56 73c40 50 100 116 160 116c44 0 56 -29 56 -62c0 -25 -6 -50 -11 -70l-59 -231c-1 -2 -1 -5 -1 -10c1 -6 4 -14 15 -14c24 0 48 36 62 53Z" id="E1-STIXWEBNORMALI-1D45B" stroke-width="1"/>
                    <path d="M444 428l-89 -348c-1 -4 -1 -6 -1 -9c0 -8 4 -14 14 -14c21 0 40 26 57 46l5 6l13 -11c-23 -33 -74 -107 -132 -107c-29 0 -40 19 -40 52c0 9 1 25 4 37l26 95h-1c-7 -5 -97 -126 -137 -156c-23 -17 -49 -28 -72 -28c-47 0 -61 36 -61 74c0 21 3 40 8 59l59 231 c4 15 6 21 6 25c0 12 -11 23 -33 23c-7 0 -19 -1 -26 -3l-3 15l157 26l-84 -326c-2 -9 -3 -16 -3 -24c0 -21 8 -34 26 -34c25 0 65 31 100 77c43 57 89 146 109 219l21 75h77Z" id="E1-STIXWEBNORMALI-1D462" stroke-width="1"/>
                    <path d="M667 107l13 -11c-32 -54 -84 -104 -131 -104c-22 0 -39 10 -39 49c0 7 1 17 6 37l56 221c4 14 6 23 6 40c0 20 -6 38 -24 38c-54 0 -164 -181 -179 -242l-34 -135h-79l77 299c2 9 5 25 5 40c0 20 -5 38 -23 38c-52 0 -162 -181 -178 -242l-35 -135h-78l95 374 c0 18 -6 31 -33 31c-8 0 -19 -1 -27 -2l-2 14l157 24l-44 -169h6c94 143 154 169 192 169c37 0 55 -37 55 -81c0 -17 -3 -32 -9 -52l-10 -36h5c29 52 81 114 130 147c22 15 41 22 61 22c36 0 54 -26 54 -71c0 -18 -1 -37 -7 -61l-61 -231c-1 -3 -2 -9 -2 -12 c0 -8 6 -12 15 -12c17 0 43 16 62 53Z" id="E1-STIXWEBNORMALI-1D45A" stroke-width="1"/>
                    <path d="M472 428l-91 -345s-1 -2 -1 -11c0 -11 6 -17 14 -17c10 0 25 2 64 54l12 -12c-31 -47 -85 -107 -133 -107c-33 0 -42 23 -42 55c0 13 6 34 11 50h-4c-72 -92 -134 -105 -173 -105c-63 0 -89 55 -89 119c0 132 132 332 276 332c43 0 64 -24 66 -46h1l9 33h80zM367 341 c0 41 -12 71 -50 71c-68 0 -128 -87 -162 -171c-18 -45 -28 -89 -28 -124c0 -53 31 -66 58 -66c69 0 139 95 167 190c8 26 15 66 15 100Z" id="E1-STIXWEBNORMALI-1D44E" stroke-width="1"/>
                    <path d="M363 111l12 -13c-51 -60 -113 -109 -198 -109c-97 0 -137 78 -137 155c0 140 121 297 263 297c50 0 97 -27 97 -76c0 -38 -16 -70 -54 -70c-26 0 -38 21 -38 38c0 24 29 36 29 58c0 12 -10 21 -34 21c-119 0 -176 -179 -176 -259c0 -87 49 -109 94 -109 c61 0 107 33 142 67Z" id="E1-STIXWEBNORMALI-1D450" stroke-width="1"/>
                    <path d="M604 475h33c-6 -85 -60 -204 -158 -204c-96 0 -203 128 -275 128c-70 0 -107 -67 -123 -138h-33c5 100 65 204 163 204c96 0 203 -128 276 -128c69 0 102 67 117 138zM604 239h33c-6 -85 -60 -204 -158 -204c-96 0 -203 128 -275 128c-70 0 -107 -67 -123 -138h-33 c5 100 65 204 163 204c96 0 203 -128 276 -128c69 0 102 67 117 138Z" id="E1-STIXWEBMAIN-2248" stroke-width="1"/>
                    <path d="M473 167h-103v-167h-78v167h-280v64l314 445h44v-445h103v-64zM292 231v343l-240 -343h240Z" id="E1-STIXWEBMAIN-34" stroke-width="1"/>
                    <path d="M445 155c0 -103 -77 -169 -197 -169c-113 0 -192 69 -192 163c0 69 23 108 130 183c-103 85 -124 123 -124 188c0 96 83 156 194 156c99 0 168 -65 168 -143c0 -75 -35 -109 -134 -162c123 -82 155 -136 155 -216zM355 533c0 69 -41 115 -109 115 c-67 0 -110 -37 -110 -99s37 -108 125 -160c68 40 94 82 94 144zM271 272l-59 40c-59 -48 -80 -89 -80 -154c0 -92 51 -144 127 -144c65 0 110 45 110 110c0 62 -30 102 -98 148Z" id="E1-STIXWEBMAIN-38" stroke-width="1"/>
                    <path d="M636 220h-261v-261h-66v261h-261v66h261v261h66v-261h261v-66Z" id="E1-STIXWEBMAIN-2B" stroke-width="1"/>
                    <path d="M447 -213h-259v926h66v-798c0 -64 19 -95 84 -95h109v-33Z" id="E1-STIXWEBMAIN-230A" stroke-width="1"/>
                    <path d="M474 137l-54 -137h-391v12l178 189c94 99 130 175 130 260c0 91 -54 141 -139 141c-72 0 -107 -32 -147 -130l-21 5c21 117 85 199 208 199c113 0 185 -77 185 -176c0 -79 -39 -154 -128 -248l-165 -176h234c42 0 63 11 96 67Z" id="E1-STIXWEBMAIN-32" stroke-width="1"/>
                    <path d="M203 253c0 -32 -27 -60 -59 -60c-33 0 -61 30 -61 60s28 60 61 60c32 0 59 -28 59 -60Z" id="E1-STIXWEBMAIN-22C5" stroke-width="1"/>
                    <path d="M278 668l-148 -591s-1 -4 -1 -11s4 -13 12 -13c23 0 53 39 62 55l16 -12c-34 -40 -77 -106 -135 -106c-30 0 -39 26 -39 51c0 12 3 26 6 36l128 510c3 13 3 21 3 24c0 12 -8 22 -31 22c-7 0 -19 -2 -27 -3l-3 15Z" id="E1-STIXWEBNORMALI-1D459" stroke-width="1"/>
                    <path d="M438 287c0 -139 -110 -298 -263 -298c-101 0 -135 90 -135 163c0 128 103 289 251 289c80 0 147 -46 147 -154zM357 318c0 38 -14 93 -67 93c-82 0 -169 -149 -169 -285c0 -33 3 -107 59 -107c106 0 177 223 177 299Z" id="E1-STIXWEBNORMALI-1D45C" stroke-width="1"/>
                    <path d="M492 413l-13 -45h-81c13 -15 17 -28 17 -50c0 -75 -53 -137 -141 -148c-59 -8 -88 -33 -88 -58c0 -63 233 -23 233 -148c0 -71 -66 -151 -215 -151c-134 0 -184 57 -184 115s55 88 117 108c-17 11 -24 30 -24 47c0 38 37 87 85 87v4c-67 15 -94 62 -94 109 c0 79 68 158 174 158c42 0 73 -13 88 -28h126zM336 349c0 37 -10 62 -54 62c-54 0 -98 -71 -98 -139c0 -46 12 -81 56 -81c71 0 96 102 96 158zM349 -69c0 78 -132 73 -192 95c-8 -5 -18 -10 -26 -16c-26 -19 -48 -45 -48 -72c0 -47 44 -97 139 -97c91 0 127 46 127 90Z" id="E1-STIXWEBNORMALI-1D454" stroke-width="1"/>
                    <path d="M394 0h-276v15c74 4 95 25 95 80v449c0 34 -9 49 -30 49c-10 0 -27 -5 -45 -12l-27 -10v14l179 91l9 -3v-597c0 -43 20 -61 95 -61v-15Z" id="E1-STIXWEBMAIN-31" stroke-width="1"/>
                    <path d="M476 330c0 -172 -63 -344 -226 -344c-171 0 -226 186 -226 350c0 177 69 340 230 340c131 0 222 -141 222 -346zM380 325c0 208 -44 325 -132 325c-83 0 -128 -118 -128 -321s44 -317 130 -317c85 0 130 115 130 313Z" id="E1-STIXWEBMAIN-30" stroke-width="1"/>
                    <path d="M156 301l104 -63c64 -39 88 -66 88 -123c0 -67 -64 -125 -140 -125c-21 0 -50 1 -73 9c-24 8 -35 9 -46 9c-12 0 -18 -2 -24 -12h-13v157h16c21 -97 58 -141 127 -141c51 0 83 33 83 74c0 31 -20 57 -53 75l-54 30c-83 46 -120 94 -120 145c0 79 56 123 138 123 c24 0 46 -1 67 -11c11 -5 21 -8 28 -8c4 0 8 1 16 10h11l5 -136h-15c-23 90 -53 123 -113 123c-43 0 -75 -21 -75 -68c0 -22 15 -51 43 -68Z" id="E1-STIXWEBMAIN-73" stroke-width="1"/>
                    <path d="M621 220h-557v66h557v-66Z" id="E1-STIXWEBMAIN-2212" stroke-width="1"/>
                    <path d="M430 441l-19 -132h-15c-7 46 -24 105 -93 105c-82 0 -139 -97 -161 -167h181l-5 -36h-185c-7 -20 -7 -41 -7 -66c0 -64 37 -101 92 -101c58 0 109 34 144 68l12 -14c-53 -60 -111 -109 -194 -109c-94 0 -140 69 -140 152c0 142 114 300 269 300c49 0 55 -20 83 -20 c12 0 19 11 23 20h15Z" id="E1-STIXWEBNORMALI-1D716" stroke-width="1"/>
                    <path d="M286 -213h-259v33h109c65 0 84 31 84 95v798h66v-926Z" id="E1-STIXWEBMAIN-230B" stroke-width="1"/>
                  </defs>
                  <g fill="black" stroke="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)">
                    <use xlink:href="#E1-STIXWEBNORMALI-1D452" x="0" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D45B" x="445" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D462" x="943" y="0"/>
                    <g transform="translate(1417,0)">
                      <use xlink:href="#E1-STIXWEBNORMALI-1D45A" x="0" y="0"/>
                      <g transform="translate(710,-150)">
                        <use xlink:href="#E1-STIXWEBNORMALI-1D44E" transform="scale(0.707)" x="0" y="0"/>
                        <use xlink:href="#E1-STIXWEBNORMALI-1D450" transform="scale(0.707)" x="502" y="0"/>
                        <use xlink:href="#E1-STIXWEBNORMALI-1D450" transform="scale(0.707)" x="918" y="0"/>
                      </g>
                    </g>
                    <use xlink:href="#E1-STIXWEBMAIN-2248" x="3448" y="0"/>
                    <g transform="translate(4411,0)">
                      <use xlink:href="#E1-STIXWEBMAIN-34"/>
                      <use xlink:href="#E1-STIXWEBMAIN-38" x="500" y="0"/>
                    </g>
                    <use xlink:href="#E1-STIXWEBMAIN-2B" x="5635" y="0"/>
                    <use xlink:href="#E1-STIXWEBMAIN-230A" x="6542" y="0"/>
                    <use xlink:href="#E1-STIXWEBMAIN-32" x="7012" y="0"/>
                    <use xlink:href="#E1-STIXWEBMAIN-22C5" x="7735" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D459" x="8243" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D45C" x="8562" y="0"/>
                    <g transform="translate(9020,0)">
                      <use xlink:href="#E1-STIXWEBNORMALI-1D454" x="0" y="0"/>
                      <g transform="translate(492,-150)">
                        <use xlink:href="#E1-STIXWEBMAIN-31" transform="scale(0.707)"/>
                        <use xlink:href="#E1-STIXWEBMAIN-30" transform="scale(0.707)" x="500" y="0"/>
                      </g>
                    </g>
                    <g transform="translate(10321,0)">
                      <g transform="translate(120,0)">
                        <rect height="60" width="1453" x="0" y="220"/>
                        <g transform="translate(60,676)">
                          <use xlink:href="#E1-STIXWEBNORMALI-1D44E" x="0" y="0"/>
                          <use xlink:href="#E1-STIXWEBNORMALI-1D450" x="502" y="0"/>
                          <use xlink:href="#E1-STIXWEBNORMALI-1D450" x="918" y="0"/>
                        </g>
                        <use xlink:href="#E1-STIXWEBMAIN-73" x="532" y="-686"/>
                      </g>
                    </g>
                    <use xlink:href="#E1-STIXWEBMAIN-2212" x="12236" y="0"/>
                    <use xlink:href="#E1-STIXWEBNORMALI-1D716" x="13144" y="0"/>
                    <use xlink:href="#E1-STIXWEBMAIN-230B" x="13575" y="0"/>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[enum   approx48 + |_2cdotlog  {accovers} - epsilon_|
    acc                     10
]]></artwork>
            </artset>
          </figure>
        </section>
        <section anchor="offsetscaledlogvariance-key-5">
          <name>OffsetScaledLogVariance (Key -5)</name>
          <t>Key -5 (OffsetScaledLogVariance) can be used to represent the variance
exhibited by the clock when it has lost its synchronization with an
external reference clock.  The details for the computation of this
characteristic are defined in Section 7.6.3 of <xref target="IEEE1588-2008"/>.</t>
        </section>
        <section anchor="uncertainty-key-7">
          <name>Uncertainty (Key -7)</name>
          <t>Key -7 (Uncertainty) can be used to represent a known measurement
uncertainty for the clock, as a numeric value in seconds or as a
duration (<xref target="duration"/>).</t>
          <t>For this document, uncertainty is defined as in Section 2.2.3 of
<xref target="GUM"/>: "parameter, associated with the result of a measurement, that
characterizes the dispersion of the values that could reasonably be
attributed to the measurand".  More specifically, the value for this
key represents the extended uncertainty for k = 2, in seconds.</t>
        </section>
        <section anchor="guarantee-key-8">
          <name>Guarantee (Key -8)</name>
          <t>Key -8 (Guarantee) can be used to represent a stated guarantee for the
accuracy of the point in time, as a numeric value in seconds or as a
duration (<xref target="duration"/>)
representing the maximum allowed deviation from the true value.</t>
          <t>While such a guarantee is unattainable in theory, existing standards
such as <xref target="RFC3161"/> stipulate the representation of such guarantees,
and therefore this format provides a way to represent them as well;
the time value given is nominally guaranteed to not deviate from the
actual time by more than the value of the guarantee, in seconds.</t>
        </section>
      </section>
      <section anchor="tzh">
        <name>Keys -10, 10: Time Zone Hint</name>
        <t>Keys -10 and 10 supply supplementary information, where key 10 is critical.</t>
        <t>They can be used to provide a hint about the time zone that
would best fit for displaying the time given to humans, using a text
string in the format defined for <tt>time-zone-name</tt> or <tt>time-numoffset</tt>
in <xref target="IXDTF"/>.
Key -10 is equivalent to providing this information as an elective
hint, while key 10 provides this information as critical (i.e., it
<bcp14>MUST</bcp14> be used when interpreting the entry with this key).</t>
        <t>Keys -10 and 10 <bcp14>MUST NOT</bcp14> both be present.</t>
        <sourcecode type="cddl"><![CDATA[
$$ETIME-ELECTIVE //= (-10: time-zone-info)
$$ETIME-CRITICAL //= (10: time-zone-info)

time-zone-info = tstr .abnf
                 ("time-zone-name / time-numoffset" .det IXDTFtz)
IXDTFtz = '
   time-hour       = 2DIGIT  ; 00-23
   time-minute     = 2DIGIT  ; 00-59
   time-numoffset  = ("+" / "-") time-hour ":" time-minute



   time-zone-initial = ALPHA / "." / "_"
   time-zone-char    = time-zone-initial / DIGIT / "-" / "+"
   time-zone-part    = time-zone-initial *13(time-zone-char)
                       ; but not "." or ".."
   time-zone-name    = time-zone-part *("/" time-zone-part)
   ALPHA             =  %x41-5A / %x61-7A   ; A-Z / a-z
   DIGIT             =  %x30-39 ; 0-9
' ; extracted from [IXDTF] and [RFC3339]; update as needed
]]></sourcecode>
      </section>
      <section anchor="suff">
        <name>Keys -11, 11: IXDTF Suffix Information</name>
        <t>Keys -11 and 11 supply supplementary information, where key 11 is critical.</t>
        <t>Similar to keys -10 and 10, keys -11 (elective) and 11 (critical) can
be used to provide additional information in the style of IXDTF
suffixes, such as the calendar that would best fit for displaying the
time given to humans.
The key's value is a map that has IXDTF <tt>suffix-key</tt> names as keys and
corresponding suffix values as values, specifically:</t>
        <sourcecode type="cddl"><![CDATA[
$$ETIME-ELECTIVE //= (-11: suffix-info-map)
$$ETIME-CRITICAL //= (11: suffix-info-map)

suffix-info-map = { * suffix-key => suffix-values }
suffix-key = tstr .abnf ("suffix-key" .det IXDTF)
suffix-values = one-or-more<suffix-value>
one-or-more<T> = T / [ 2* T ]
suffix-value = tstr .abnf ("suffix-value" .det IXDTF)

IXDTF = '
   key-initial       = lcalpha / "_"
   key-char          = key-initial / DIGIT / "-"
   suffix-key        = key-initial *key-char

   suffix-value      = 1*alphanum
   alphanum          = ALPHA / DIGIT
   lcalpha           =  %x61-7A
   ALPHA             =  %x41-5A / %x61-7A   ; A-Z / a-z
   DIGIT             =  %x30-39 ; 0-9
' ; extracted from [IXDTF]; update as needed!
]]></sourcecode>
        <t>When keys -11 and 11 both are present, the two maps <bcp14>MUST NOT</bcp14> have
entries with the same map keys.</t>
        <t>Figure 4 of <xref target="IXDTF"/> gives an example for an extended date-time with both time zone
and suffix information:</t>
        <artwork><![CDATA[
1996-12-19T16:39:57-08:00[America/Los_Angeles][u-ca=hebrew]
]]></artwork>
        <t>A time tag that is approximating this example, in CBOR diagnostic
notation, would be:</t>
        <sourcecode type="cbor-diag"><![CDATA[
/ 1996-12-19T16:39:57-08:00[America//Los_Angeles][u-ca=hebrew] /
1001({ 1: 851042397,
     -10: "America/Los_Angeles",
     -11: { "u-ca": "hebrew" }
})
]]></sourcecode>
        <t>Note that both -10 and -11 are using negative keys and therefore
provide elective information, as in the IXDTF form.
Note also that in this example the time numeric offset (<tt>-08:00</tt>) is
lost in translating from the <xref target="RFC3339"/> information in the IXDTF into a
Posix time that can be included under Key 1 in a time tag.</t>
      </section>
    </section>
    <section anchor="duration">
      <name>Duration Format</name>
      <t>A duration is the length of an interval of time.
Durations in this format are given in SI seconds, possibly adjusted
for conventional corrections of the timescale given (e.g., leap
seconds).</t>
      <t>Except for using Tag 1002 instead of 1001,
durations are structurally identical to time values.</t>
      <sourcecode type="cddl"><![CDATA[
Duration = #6.1001(etime-detailed)
]]></sourcecode>
      <t>Semantically, they do not measure the time elapsed from a given epoch,
but from the start to the end of (an otherwise unspecified) interval
of time.</t>
      <t>In combination with an epoch identified in the context, a duration can
also be used to express an absolute time.</t>
      <t>Without such context, durations are subject to some uncertainties
underlying the timescale used.
E.g., for durations intended as a determinant of future time periods,
there is some uncertainty of what irregularities (such as leap
seconds, timescale corrections) will be exhibited by the timescale in
that period.
For durations as measurements of past periods, abstracting the period
to a duration loses some detail about timescale irregularities.
For many applications, these uncertainties are acceptable and thus
the use of durations is appropriate.</t>
      <aside>
        <t>Note that <xref target="ISO8601"/> durations are rather different from the ones defined
in the present specification; there is no intention to support ISO 8601
durations here.</t>
      </aside>
    </section>
    <section anchor="period">
      <name>Period Format</name>
      <t>A period is a specific interval of time, specified as either two times
giving the start and the end of that interval, or as one of these two
plus a duration.</t>
      <t>They are given as an array of unwrapped time and duration elements,
tagged with Tag 1003:</t>
      <sourcecode type="cddl"><![CDATA[
Period = #6.1003([
  start: ~Time / null
  end: ~Time / null
  ? duration: ~Duration / null
])
]]></sourcecode>
      <t>If the third array element is not given, the duration element is null.
Exactly two out of the three elements must be non-null, this can be
clumsily expressed in CDDL as:</t>
      <sourcecode type="cddl"><![CDATA[
clumsy-Period = #6.1003([
  (start: ~Time,
   ((end: ~Time,
     ? duration: null) //
    (end: null,
     duration: ~Duration))) //
  (start: null,
   end: ~Time,
   duration: ~Duration)
])
]]></sourcecode>
      <!--
(Issue: should start/end be given the two-element treatment, or start/duration?)
 -->

</section>
    <section anchor="cddl-typenames">
      <name>CDDL typenames</name>
      <t>When detailed validation is not needed, the
type names defined in <xref target="tag-cddl"/> are recommended:</t>
      <figure anchor="tag-cddl">
        <name>Recommended type names for CDDL</name>
        <sourcecode type="cddl"><![CDATA[
etime = #6.1001({* (int/tstr) => any})
duration = #6.1002({* (int/tstr) => any})
period = #6.1003([~etime/null, ~etime/null, ~duration/null])
]]></sourcecode>
      </figure>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="cbor-tags">
        <name>CBOR tags</name>
        <t>In the registry <xref target="IANA.cbor-tags"/>,
IANA has allocated the tags in <xref target="tab-tag-values"/> from what was at the
time the
FCFS space, with the present document as the specification reference.</t>
        <table anchor="tab-tag-values">
          <name>Values for Tags</name>
          <thead>
            <tr>
              <th align="right">Tag</th>
              <th align="left">Data Item</th>
              <th align="left">Semantics</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">1001</td>
              <td align="left">map</td>
              <td align="left">[RFCthis] extended time</td>
            </tr>
            <tr>
              <td align="right">1002</td>
              <td align="left">map</td>
              <td align="left">[RFCthis] duration</td>
            </tr>
            <tr>
              <td align="right">1003</td>
              <td align="left">array</td>
              <td align="left">[RFCthis] period</td>
            </tr>
          </tbody>
        </table>
        <t>IANA is requested to change the "Data Item" column for Tag 1003 from
"map" to "array".</t>
      </section>
      <section anchor="timescale-registry">
        <name>Timescale Registry</name>
        <t>This specification defines a new subregistry titled "Timescale
Registry" in the "CBOR Time Tag Parameters" registry
[IANA.cbor-time-tag-parameters], with a combination of "Expert Review"
and "RFC Required" as the Registration Procedure (Sections <xref target="BCP26" section="4.5" sectionFormat="bare"/> and <xref target="BCP26" section="4.7" sectionFormat="bare"/> of <xref target="BCP26"/>).</t>
        <t>Each entry needs to provide a timescale name (a sequence of uppercase
ASCII characters and digits, where a digit may not occur at the start:
<tt>[A-Z][A-Z0-9]*</tt>), a value (unsigned integer), and brief description
of the semantics, and a specification reference (RFC).
The initial contents are shown in <xref target="tab-timescales"/>.</t>
        <table anchor="tab-timescales">
          <name>Initial Content of Timescale Registry</name>
          <thead>
            <tr>
              <th align="left">Timescale</th>
              <th align="right">Value</th>
              <th align="left">Semantics</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">UTC</td>
              <td align="right">0</td>
              <td align="left">UTC with POSIX Epoch</td>
              <td align="left">[RFCthis]</td>
            </tr>
            <tr>
              <td align="left">TAI</td>
              <td align="right">1</td>
              <td align="left">TAI with PTP Epoch</td>
              <td align="left">[RFCthis]</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="map-key-registry">
        <name>Map Key Registry</name>
        <t>This specification defines a new subregistry titled "Map Key Registry"
in the "CBOR Time Tag Parameters" registry
[IANA.cbor-time-tag-parameters], with "Specification Required" as the
Registration Procedure (<xref section="4.6" sectionFormat="of" target="BCP26"/>).</t>
        <t>The designated expert is requested to assign the key values with the
shortest encodings (1+0 and 1+1 encoding) to registrations that are
likely to enjoy wide use and can benefit from short encodings.</t>
        <t>Each entry needs to provide a map key value (integer), a brief description
of the semantics, and a specification reference (RFC).
The initial contents are shown in <xref target="tab-timescales"/>.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Semantics</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">-18</td>
              <td align="left">attoseconds</td>
              <td align="left">[RFCthis]</td>
            </tr>
            <tr>
              <td align="left">-15</td>
              <td align="left">femtoseconds</td>
              <td align="left">[RFCthis]</td>
            </tr>
            <tr>
              <td align="left">-12</td>
              <td align="left">picoseconds</td>
              <td align="left">[RFCthis]</td>
            </tr>
            <tr>
              <td align="left">-11</td>
              <td align="left">IXDTF Suffix Information (elective)</td>
              <td align="left">[RFCthis], <xref target="IXDTF"/></td>
            </tr>
            <tr>
              <td align="left">-10</td>
              <td align="left">IXDTF Time Zone Hint (elective)</td>
              <td align="left">[RFCthis], <xref target="IXDTF"/></td>
            </tr>
            <tr>
              <td align="left">-9</td>
              <td align="left">nanoseconds</td>
              <td align="left">[RFCthis]</td>
            </tr>
            <tr>
              <td align="left">-8</td>
              <td align="left">Guarantee</td>
              <td align="left">[RFCthis]</td>
            </tr>
            <tr>
              <td align="left">-7</td>
              <td align="left">Uncertainty</td>
              <td align="left">[RFCthis]</td>
            </tr>
            <tr>
              <td align="left">-6</td>
              <td align="left">microseconds</td>
              <td align="left">[RFCthis]</td>
            </tr>
            <tr>
              <td align="left">-5</td>
              <td align="left">Offset-Scaled Log Variance</td>
              <td align="left">[RFCthis]</td>
            </tr>
            <tr>
              <td align="left">-4</td>
              <td align="left">Clock Accuracy</td>
              <td align="left">[RFCthis]</td>
            </tr>
            <tr>
              <td align="left">-3</td>
              <td align="left">milliseconds</td>
              <td align="left">[RFCthis]</td>
            </tr>
            <tr>
              <td align="left">-2</td>
              <td align="left">Clock Class</td>
              <td align="left">[RFCthis]</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">Base Time value (as in CBOR Tag 1)</td>
              <td align="left">[RFCthis]</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">Base Time value as in CBOR Tag 4</td>
              <td align="left">[RFCthis]</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">Base Time value as in CBOR Tag 5</td>
              <td align="left">[RFCthis]</td>
            </tr>
            <tr>
              <td align="left">10</td>
              <td align="left">IXDTF Time Zone Hint (critical)</td>
              <td align="left">[RFCthis], <xref target="IXDTF"/></td>
            </tr>
            <tr>
              <td align="left">11</td>
              <td align="left">IXDTF Suffix Information (critical)</td>
              <td align="left">[RFCthis], <xref target="IXDTF"/></td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of RFC 8949 apply; the tags introduced
here are not expected to raise security considerations beyond those.</t>
      <t>Time, of course, has significant security considerations; these
include the exploitation of ambiguities where time is security
relevant (e.g., for freshness or in a validity span) or the disclosure
of characteristics of the emitting system (e.g., time zone, or clock
resolution and wall clock offset).</t>
    </section>
  </middle>
  <back>
    <displayreference target="ISO8601" to="ISO8601:1988"/>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049.  It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="BCP26">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton">
              <organization/>
            </author>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <author fullname="T. Narten" initials="T." surname="Narten">
              <organization/>
            </author>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters.  To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper.  For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed.  This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="TIME_T" target="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_16">
          <front>
            <title>Vol. 1: Base Definitions, Issue 7</title>
            <author>
              <organization>The Open Group Base Specifications</organization>
            </author>
            <date year="2016"/>
          </front>
          <seriesInfo name="Section 4.15" value="'Seconds Since the Epoch'"/>
          <seriesInfo name="IEEE Std" value="1003.1-2008"/>
          <seriesInfo name="2016" value="Edition"/>
        </reference>
        <reference anchor="SI-SECOND">
          <front>
            <title>Quantities and units — Part 3: Space and time</title>
            <author>
              <organization>International Organization for Standardization (ISO)</organization>
            </author>
            <date year="2006" month="March" day="01"/>
          </front>
          <seriesInfo name="ISO" value="80000-3"/>
        </reference>
        <reference anchor="IEEE1588-2008" target="http://standards.ieee.org/findstds/standard/1588-2008.html">
          <front>
            <title>1588-2008 - IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems</title>
            <author>
              <organization>IEEE</organization>
            </author>
            <date year="2008" month="July"/>
          </front>
        </reference>
        <reference anchor="GUM" target="https://www.bipm.org/en/publications/guides/gum.html">
          <front>
            <title>Evaluation of measurement data — Guide to the expression of uncertainty in measurement</title>
            <author>
              <organization>Joint Committee for Guides in Metrology</organization>
            </author>
            <date year="2008" month="September"/>
          </front>
          <seriesInfo name="JCGM" value="100:2008"/>
        </reference>
        <reference anchor="IANA.cbor-tags" target="https://www.iana.org/assignments/cbor-tags">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz">
              <organization/>
            </author>
            <author fullname="C. Vigano" initials="C." surname="Vigano">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049).  Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="IXDTF">
          <front>
            <title>Date and Time on the Internet: Timestamps with additional information</title>
            <author fullname="Ujjwal Sharma" initials="U." surname="Sharma">
              <organization>Igalia, S.L.</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="19" month="January" year="2023"/>
            <abstract>
              <t>   This document defines an extension to the timestamp format defined in
   RFC3339 for representing additional information including a time
   zone.

   It updates RFC3339 in the specific interpretation of the local offset
   Z, which is no longer understood to "imply that UTC is the preferred
   reference point for the specified time"; see Section 2.


   // The present version (-07) reflects the WGLC comments.  In
   // particular, information has been added to the Security
   // Considerations section.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-sedate-datetime-extended-07"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC8575">
          <front>
            <title>YANG Data Model for the Precision Time Protocol (PTP)</title>
            <author fullname="Y. Jiang" initials="Y." role="editor" surname="Jiang">
              <organization/>
            </author>
            <author fullname="X. Liu" initials="X." surname="Liu">
              <organization/>
            </author>
            <author fullname="J. Xu" initials="J." surname="Xu">
              <organization/>
            </author>
            <author fullname="R. Cummings" initials="R." role="editor" surname="Cummings">
              <organization/>
            </author>
            <date month="May" year="2019"/>
            <abstract>
              <t>This document defines a YANG data model for the configuration of devices and clocks using the Precision Time Protocol (PTP) as specified in IEEE Std 1588-2008.  It also defines the retrieval of the configuration information, the data sets and the running states of PTP clocks.  The YANG module in this document conforms to the Network Management Datastore Architecture (NMDA).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8575"/>
          <seriesInfo name="DOI" value="10.17487/RFC8575"/>
        </reference>
        <reference anchor="RFC3161">
          <front>
            <title>Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP)</title>
            <author fullname="C. Adams" initials="C." surname="Adams">
              <organization/>
            </author>
            <author fullname="P. Cain" initials="P." surname="Cain">
              <organization/>
            </author>
            <author fullname="D. Pinkas" initials="D." surname="Pinkas">
              <organization/>
            </author>
            <author fullname="R. Zuccherato" initials="R." surname="Zuccherato">
              <organization/>
            </author>
            <date month="August" year="2001"/>
            <abstract>
              <t>This document describes the format of a request sent to a Time Stamping Authority (TSA) and of the response that is returned.  It also establishes several security-relevant requirements for TSA operation, with regards to processing requests to generate responses.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3161"/>
          <seriesInfo name="DOI" value="10.17487/RFC3161"/>
        </reference>
        <reference anchor="RFC3339">
          <front>
            <title>Date and Time on the Internet: Timestamps</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne">
              <organization/>
            </author>
            <author fullname="C. Newman" initials="C." surname="Newman">
              <organization/>
            </author>
            <date month="July" year="2002"/>
            <abstract>
              <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3339"/>
          <seriesInfo name="DOI" value="10.17487/RFC3339"/>
        </reference>
        <reference anchor="ISO8601" target="https://www.iso.org/standard/15903.html">
          <front>
            <title>Data elements and interchange formats — Information interchange — Representation of dates and times</title>
            <author>
              <organization abbrev="ISO">International Organization for Standardization</organization>
            </author>
            <date year="1988" month="June"/>
          </front>
          <seriesInfo name="ISO" value="8601:1988"/>
        </reference>
      </references>
    </references>
    <section anchor="collected-cddl">
      <name>Collected CDDL</name>
      <t>This appendix collects the CDDL rules spread over the document into
one convenient place.</t>
      <figure anchor="fig-collected-cddl">
        <name>Collected CDDL rules from this specification</name>
        <sourcecode type="cddl" name="time-tag-collected-cddl.cddl"><![CDATA[
Etime = #6.1001(etime-detailed)

etime-framework = {
  uint => any ; at least one base time
  * (nint/text) => any ; elective supplementary information
  * uint => any ; critical supplementary information
}

etime-detailed = ({
  $$ETIME-BASETIME
  ClockQuality-group
  * $$ETIME-ELECTIVE
  * $$ETIME-CRITICAL
  * ((nint/text) .feature "etime-elective-extension") => any
  * (uint .feature "etime-critical-extension") => any
}) .within etime-framework


$$ETIME-BASETIME //= (1: ~time)


$$ETIME-BASETIME //= (4: ~decfrac)
$$ETIME-BASETIME //= (5: ~bigfloat)


$$ETIME-ELECTIVE //= (-3: uint)
$$ETIME-ELECTIVE //= (-6: uint)
$$ETIME-ELECTIVE //= (-9: uint)
$$ETIME-ELECTIVE //= (-12: uint)
$$ETIME-ELECTIVE //= (-15: uint)
$$ETIME-ELECTIVE //= (-18: uint)


$$ETIME-ELECTIVE //= (-1 => $ETIME-TIMESCALE)

$ETIME-TIMESCALE /= &(etime-utc: 0)
$ETIME-TIMESCALE /= &(etime-tai: 1)


ClockQuality-group = (
  ? &(ClockClass: -2) => uint .size 1 ; PTP/RFC8575
  ? &(ClockAccuracy: -4) => uint .size 1 ; PTP/RFC8575
  ? &(OffsetScaledLogVariance: -5) => uint .size 2 ; PTP/RFC8575
  ? &(Uncertainty: -7) => ~time/~duration
  ? &(Guarantee: -8) => ~time/~duration
)


$$ETIME-ELECTIVE //= (-10: time-zone-info)
$$ETIME-CRITICAL //= (10: time-zone-info)

time-zone-info = tstr .abnf
                 ("time-zone-name / time-numoffset" .det IXDTFtz)
IXDTFtz = '
   time-hour       = 2DIGIT  ; 00-23
   time-minute     = 2DIGIT  ; 00-59
   time-numoffset  = ("+" / "-") time-hour ":" time-minute



   time-zone-initial = ALPHA / "." / "_"
   time-zone-char    = time-zone-initial / DIGIT / "-" / "+"
   time-zone-part    = time-zone-initial *13(time-zone-char)
                       ; but not "." or ".."
   time-zone-name    = time-zone-part *("/" time-zone-part)
   ALPHA             =  %x41-5A / %x61-7A   ; A-Z / a-z
   DIGIT             =  %x30-39 ; 0-9
' ; extracted from [IXDTF] and [RFC3339]; update as needed


$$ETIME-ELECTIVE //= (-11: suffix-info-map)
$$ETIME-CRITICAL //= (11: suffix-info-map)

suffix-info-map = { * suffix-key => suffix-values }
suffix-key = tstr .abnf ("suffix-key" .det IXDTF)
suffix-values = one-or-more<suffix-value>
one-or-more<T> = T / [ 2* T ]
suffix-value = tstr .abnf ("suffix-value" .det IXDTF)

IXDTF = '
   key-initial       = lcalpha / "_"
   key-char          = key-initial / DIGIT / "-"
   suffix-key        = key-initial *key-char

   suffix-value      = 1*alphanum
   alphanum          = ALPHA / DIGIT
   lcalpha           =  %x61-7A
   ALPHA             =  %x41-5A / %x61-7A   ; A-Z / a-z
   DIGIT             =  %x30-39 ; 0-9
' ; extracted from [IXDTF]; update as needed!


Duration = #6.1001(etime-detailed)


Period = #6.1003([
  start: ~Time / null
  end: ~Time / null
  ? duration: ~Duration / null
])


clumsy-Period = #6.1003([
  (start: ~Time,
   ((end: ~Time,
     ? duration: null) //
    (end: null,
     duration: ~Duration))) //
  (start: null,
   end: ~Time,
   duration: ~Duration)
])


etime = #6.1001({* (int/tstr) => any})
duration = #6.1002({* (int/tstr) => any})
period = #6.1003([~etime/null, ~etime/null, ~duration/null])
]]></sourcecode>
      </figure>
      <!--
Contributors
============
{: numbered="no"}

Add reference to [TIME] once available.

Ben Gamari suggested being able to use decimally scaled fractional
seconds in CBOR time.
 -->

</section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <!--  LocalWords:  CBOR extensibility IANA uint sint IEEE endian TAI
 -->
<!--  LocalWords:  signedness endianness NTP IXDTF
 -->

</section>
  </back>
  <!-- ##markdown-source:
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
OZmbY8x7AAA=

-->

</rfc>
