[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [lsd0001] 01/02: sectioning
From: |
gnunet |
Subject: |
[GNUnet-SVN] [lsd0001] 01/02: sectioning |
Date: |
Fri, 04 Oct 2019 11:25:05 +0200 |
This is an automated email from the git hooks/post-receive script.
martin-schanzenbach pushed a commit to branch master
in repository lsd0001.
commit 93cb14cd2bb1fe1999ddd589a35d288411c211b3
Author: Schanzenbach, Martin <address@hidden>
AuthorDate: Fri Oct 4 11:22:45 2019 +0200
sectioning
---
draft-schanzen-gns.html | 193 ++++++++++++++++++-------------------
draft-schanzen-gns.txt | 248 ++++++++++++++++++++++++------------------------
draft-schanzen-gns.xml | 5 +-
3 files changed, 215 insertions(+), 231 deletions(-)
diff --git a/draft-schanzen-gns.html b/draft-schanzen-gns.html
index 3d2232f..8f61d54 100644
--- a/draft-schanzen-gns.html
+++ b/draft-schanzen-gns.html
@@ -1081,19 +1081,16 @@ async function addMetadata(){try{const
e=document.styleSheets[0].cssRules;for(le
<p id="section-boilerplate.3-1.3.1"><a href="#section-3"
class="xref">3</a>. <a href="#name-resource-records" class="xref">Resource
records</a><a href="#section-boilerplate.3-1.3.1" class="pilcrow">¶</a></p>
<ul class="toc ulEmpty">
<li class="toc ulEmpty" id="section-boilerplate.3-1.3.2.1">
- <p id="section-boilerplate.3-1.3.2.1.1"><a href="#section-3.1"
class="xref">3.1</a>. <a href="#name-wire-format" class="xref">Wire
format</a><a href="#section-boilerplate.3-1.3.2.1.1" class="pilcrow">¶</a></p>
+ <p id="section-boilerplate.3-1.3.2.1.1"><a href="#section-3.1"
class="xref">3.1</a>. <a href="#name-pkey" class="xref">PKEY</a><a
href="#section-boilerplate.3-1.3.2.1.1" class="pilcrow">¶</a></p>
</li>
<li class="toc ulEmpty" id="section-boilerplate.3-1.3.2.2">
- <p id="section-boilerplate.3-1.3.2.2.1"><a href="#section-3.2"
class="xref">3.2</a>. <a href="#name-pkey" class="xref">PKEY</a><a
href="#section-boilerplate.3-1.3.2.2.1" class="pilcrow">¶</a></p>
+ <p id="section-boilerplate.3-1.3.2.2.1"><a href="#section-3.2"
class="xref">3.2</a>. <a href="#name-gns2dns" class="xref">GNS2DNS</a><a
href="#section-boilerplate.3-1.3.2.2.1" class="pilcrow">¶</a></p>
</li>
<li class="toc ulEmpty" id="section-boilerplate.3-1.3.2.3">
- <p id="section-boilerplate.3-1.3.2.3.1"><a href="#section-3.3"
class="xref">3.3</a>. <a href="#name-gns2dns" class="xref">GNS2DNS</a><a
href="#section-boilerplate.3-1.3.2.3.1" class="pilcrow">¶</a></p>
+ <p id="section-boilerplate.3-1.3.2.3.1"><a href="#section-3.3"
class="xref">3.3</a>. <a href="#name-leho" class="xref">LEHO</a><a
href="#section-boilerplate.3-1.3.2.3.1" class="pilcrow">¶</a></p>
</li>
<li class="toc ulEmpty" id="section-boilerplate.3-1.3.2.4">
- <p id="section-boilerplate.3-1.3.2.4.1"><a href="#section-3.4"
class="xref">3.4</a>. <a href="#name-leho" class="xref">LEHO</a><a
href="#section-boilerplate.3-1.3.2.4.1" class="pilcrow">¶</a></p>
-</li>
- <li class="toc ulEmpty" id="section-boilerplate.3-1.3.2.5">
- <p id="section-boilerplate.3-1.3.2.5.1"><a href="#section-3.5"
class="xref">3.5</a>. <a href="#name-box" class="xref">BOX</a><a
href="#section-boilerplate.3-1.3.2.5.1" class="pilcrow">¶</a></p>
+ <p id="section-boilerplate.3-1.3.2.4.1"><a href="#section-3.4"
class="xref">3.4</a>. <a href="#name-box" class="xref">BOX</a><a
href="#section-boilerplate.3-1.3.2.4.1" class="pilcrow">¶</a></p>
</li>
</ul>
</li>
@@ -1160,8 +1157,8 @@ async function addMetadata(){try{const
e=document.styleSheets[0].cssRules;for(le
</h2>
<p id="section-2-1">
A zone in GNS is defined by a public/private ECC key pair (d,zk),
- where B is the generator of a group or subgroup, d is the private key and
- zk the corresponding public key
+ where d is the private key and
+ zk the corresponding public key.
GNS uses the Ed25519 EC parameters as defined in <span>[<a href="#RFC8032"
class="xref">RFC8032</a>]</span>.
GNS combines the EC parameters of Ed25519 with the ECDSA scheme
defined in <span>[<a href="#RFC6979" class="xref">RFC6979</a>]</span> in
order to achieve zone privacy.
@@ -1176,17 +1173,12 @@ async function addMetadata(){try{const
e=document.styleSheets[0].cssRules;for(le
<h2 id="name-resource-records">
<a href="#section-3" class="section-number selfRef">3. </a><a
href="#name-resource-records" class="section-name selfRef">Resource records</a>
</h2>
-<div id="rrecords_wire">
-<section id="section-3.1">
- <h3 id="name-wire-format">
-<a href="#section-3.1" class="section-number selfRef">3.1. </a><a
href="#name-wire-format" class="section-name selfRef">Wire format</a>
- </h3>
-<p id="section-3.1-1">
+<p id="section-3-1">
A GNS resource record holds the data of a specific record in a zone.
- The resource record format is defined as follows:<a href="#section-3.1-1"
class="pilcrow">¶</a></p>
+ The resource record format is defined as follows:<a href="#section-3-1"
class="pilcrow">¶</a></p>
<div id="figure_gnsrecord">
<figure id="figure-1">
- <div class="artwork art-text alignLeft" id="section-3.1-2.1">
+ <div class="artwork art-text alignLeft" id="section-3-2.1">
<pre>
0 8 16 24 32 40 48 56
+-----+-----+-----+-----+-----+-----+-----+-----+
@@ -1197,62 +1189,50 @@ async function addMetadata(){try{const
e=document.styleSheets[0].cssRules;for(le
| FLAGS | DATA /
+-----+-----+-----+-----+ /
/ /
- / +-----+-----+-----+-----+
- / | PADDING /
- +-----+-----+-----+-----+ /
- | |
- +-----+-----+-----+-----+-----+-----+-----+-----+
+ / /
</pre>
</div>
<figcaption><a href="#figure-1" class="selfRef">Figure
1</a></figcaption></figure>
</div>
-<p id="section-3.1-3">where:<a href="#section-3.1-3" class="pilcrow">¶</a></p>
-<dl class="dlParallel" id="section-3.1-4">
- <dt id="section-3.1-4.1">EXPIRATION</dt>
- <dd id="section-3.1-4.2">
+<p id="section-3-3">where:<a href="#section-3-3" class="pilcrow">¶</a></p>
+<dl class="dlParallel" id="section-3-4">
+ <dt id="section-3-4.1">EXPIRATION</dt>
+ <dd id="section-3-4.2">
Denotes the absolute expiration date of the record.
In microseconds since midnight (0 hour), January 1, 1970 in network
- byte order.<a href="#section-3.1-4.2" class="pilcrow">¶</a>
+ byte order.<a href="#section-3-4.2" class="pilcrow">¶</a>
</dd>
- <dt id="section-3.1-4.3">DATA SIZE</dt>
- <dd id="section-3.1-4.4">
- The size of the DATA field in bytes and in network byte order including
- padding. The padding MUST ensure that the size of the resource record
- is a power of two. The only excption is the PKEY record type, which is
- never padded.<a href="#section-3.1-4.4" class="pilcrow">¶</a>
+ <dt id="section-3-4.3">DATA SIZE</dt>
+ <dd id="section-3-4.4">
+ The size of the DATA field in bytes and in network byte order.<a
href="#section-3-4.4" class="pilcrow">¶</a>
</dd>
- <dt id="section-3.1-4.5">TYPE</dt>
- <dd id="section-3.1-4.6">
+ <dt id="section-3-4.5">TYPE</dt>
+ <dd id="section-3-4.6">
The resource record type. This type can be one of the GNS resource
records as defined in <a href="#rrecords" class="xref">Section 3</a> or a
DNS record
type as defined in <span>[<a href="#RFC1035"
class="xref">RFC1035</a>]</span> or any of the
complementary standardized DNS resource record types. This value must be
stored in network byte order. Note that values
- below 2^16 are reserved for allocation via IANA (<span>[<a
href="#RFC6895" class="xref">RFC6895</a>]</span>).<a href="#section-3.1-4.6"
class="pilcrow">¶</a>
+ below 2^16 are reserved for allocation via IANA (<span>[<a
href="#RFC6895" class="xref">RFC6895</a>]</span>).<a href="#section-3-4.6"
class="pilcrow">¶</a>
</dd>
- <dt id="section-3.1-4.7">FLAGS</dt>
- <dd id="section-3.1-4.8">
- Resource record flags.<a href="#section-3.1-4.8" class="pilcrow">¶</a>
+ <dt id="section-3-4.7">FLAGS</dt>
+ <dd id="section-3-4.8">
+ Resource record flags.<a href="#section-3-4.8" class="pilcrow">¶</a>
</dd>
- <dt id="section-3.1-4.9">DATA</dt>
- <dd id="section-3.1-4.10">
+ <dt id="section-3-4.9">DATA</dt>
+ <dd id="section-3-4.10">
The resource record data payload. The contents are defined by the
- respective type of the resource record.<a href="#section-3.1-4.10"
class="pilcrow">¶</a>
-</dd>
- <dt id="section-3.1-4.11">PADDING</dt>
- <dd id="section-3.1-4.12">
- The padding MUST contain the 0 value in all octets. Not applicable for
- PKEY records.<a href="#section-3.1-4.12" class="pilcrow">¶</a>
+ respective type of the resource record.<a href="#section-3-4.10"
class="pilcrow">¶</a>
</dd>
- </dl>
-<p id="section-3.1-5">
+ </dl>
+<p id="section-3-5">
Flags indicate metadata surrounding the resource record. A flag
value of 0 indicates that all flags are unset. The following
illustrates the flag distribution in the 32-bit flag value of a
- resource record:<a href="#section-3.1-5" class="pilcrow">¶</a></p>
+ resource record:<a href="#section-3-5" class="pilcrow">¶</a></p>
<div id="figure_flag">
<figure id="figure-2">
- <div class="artwork art-text alignLeft" id="section-3.1-6.1">
+ <div class="artwork art-text alignLeft" id="section-3-6.1">
<pre>
... 5 4 3 2 1 0
------+--------+--------+--------+--------+--------+
@@ -1262,41 +1242,39 @@ async function addMetadata(){try{const
e=document.styleSheets[0].cssRules;for(le
</div>
<figcaption><a href="#figure-2" class="selfRef">Figure
2</a></figcaption></figure>
</div>
-<p id="section-3.1-7">
- where:<a href="#section-3.1-7" class="pilcrow">¶</a></p>
-<dl class="dlParallel" id="section-3.1-8">
- <dt id="section-3.1-8.1">SHADOW</dt>
- <dd id="section-3.1-8.2">
+<p id="section-3-7">
+ where:<a href="#section-3-7" class="pilcrow">¶</a></p>
+<dl class="dlParallel" id="section-3-8">
+ <dt id="section-3-8.1">SHADOW</dt>
+ <dd id="section-3-8.2">
If this flag is set, this record should not be used unless all (other)
- records with an absolute expiration time have expired.<a
href="#section-3.1-8.2" class="pilcrow">¶</a>
+ records with an absolute expiration time have expired.<a
href="#section-3-8.2" class="pilcrow">¶</a>
</dd>
- <dt id="section-3.1-8.3">EXPREL</dt>
- <dd id="section-3.1-8.4">
+ <dt id="section-3-8.3">EXPREL</dt>
+ <dd id="section-3-8.4">
The expiration time value of the record is a relative time and not
an absolute time. This flag should never be encountered by a resolver
- for records resolved from the DHT.<a href="#section-3.1-8.4"
class="pilcrow">¶</a>
+ for records resolved from the DHT.<a href="#section-3-8.4"
class="pilcrow">¶</a>
</dd>
- <dt id="section-3.1-8.5">PRIVATE</dt>
- <dd id="section-3.1-8.6">
+ <dt id="section-3-8.5">PRIVATE</dt>
+ <dd id="section-3-8.6">
This is a private record of this peer and it should thus not be
handed out to other peers. This flag should never be encountered by
- a resolver for records resolved from the DHT.<a href="#section-3.1-8.6"
class="pilcrow">¶</a>
+ a resolver for records resolved from the DHT.<a href="#section-3-8.6"
class="pilcrow">¶</a>
</dd>
- </dl>
-</section>
-</div>
+ </dl>
<div id="gnsrecords_pkey">
-<section id="section-3.2">
+<section id="section-3.1">
<h3 id="name-pkey">
-<a href="#section-3.2" class="section-number selfRef">3.2. </a><a
href="#name-pkey" class="section-name selfRef">PKEY</a>
+<a href="#section-3.1" class="section-number selfRef">3.1. </a><a
href="#name-pkey" class="section-name selfRef">PKEY</a>
</h3>
-<p id="section-3.2-1">In GNS, a delegation of a label to a zone is represented
througha PKEY
+<p id="section-3.1-1">In GNS, a delegation of a label to a zone is represented
through a PKEY
record. A PKEY resource record contains the public key of the zone to
delegate to. A PKEY record MUST be the only record under a label. No other
- labels are allows. The a PKEY DATA entry has the following format:<a
href="#section-3.2-1" class="pilcrow">¶</a></p>
+ records are allowed. The a PKEY DATA entry has the following format:<a
href="#section-3.1-1" class="pilcrow">¶</a></p>
<div id="figure_pkeyrecord">
<figure id="figure-3">
- <div class="artwork art-text alignLeft" id="section-3.2-2.1">
+ <div class="artwork art-text alignLeft" id="section-3.1-2.1">
<pre>
0 8 16 24 32 40 48 56
+-----+-----+-----+-----+-----+-----+-----+-----+
@@ -1312,21 +1290,21 @@ async function addMetadata(){try{const
e=document.styleSheets[0].cssRules;for(le
</section>
</div>
<div id="gnsrecords_gns2dns">
-<section id="section-3.3">
+<section id="section-3.2">
<h3 id="name-gns2dns">
-<a href="#section-3.3" class="section-number selfRef">3.3. </a><a
href="#name-gns2dns" class="section-name selfRef">GNS2DNS</a>
+<a href="#section-3.2" class="section-number selfRef">3.2. </a><a
href="#name-gns2dns" class="section-name selfRef">GNS2DNS</a>
</h3>
-<p id="section-3.3-1">It is possible to delegate a label back into DNS through
a GNS2DNS record.
+<p id="section-3.2-1">It is possible to delegate a label back into DNS through
a GNS2DNS record.
The resource record contains a DNS name for the resolver to continue with
in DNS followed by a DNS server. Both names are in the format defined in
<span>[<a href="#RFC1034" class="xref">RFC1034</a>]</span> for DNS names.
If a resolver encounters a GNS2DNS record it is expected that it first
resolves the IP(s) of the DNS servers using DNS. Then, the encountered DNS
name is resolved by querying the name server(s).
- The a GNS2DNS DATA entry has the following format:<a href="#section-3.3-1"
class="pilcrow">¶</a></p>
+ The a GNS2DNS DATA entry has the following format:<a href="#section-3.2-1"
class="pilcrow">¶</a></p>
<div id="figure_gns2dnsrecord">
<figure id="figure-4">
- <div class="artwork art-text alignLeft" id="section-3.3-2.1">
+ <div class="artwork art-text alignLeft" id="section-3.2-2.1">
<pre>
0 8 16 24 32 40 48 56
+-----+-----+-----+-----+-----+-----+-----+-----+
@@ -1347,21 +1325,21 @@ async function addMetadata(){try{const
e=document.styleSheets[0].cssRules;for(le
</section>
</div>
<div id="gnsrecords_leho">
-<section id="section-3.4">
+<section id="section-3.3">
<h3 id="name-leho">
-<a href="#section-3.4" class="section-number selfRef">3.4. </a><a
href="#name-leho" class="section-name selfRef">LEHO</a>
+<a href="#section-3.3" class="section-number selfRef">3.3. </a><a
href="#name-leho" class="section-name selfRef">LEHO</a>
</h3>
-<p id="section-3.4-1">As names in GNS are not globally unique, established
practices such as
+<p id="section-3.3-1">As names in GNS are not globally unique, established
practices such as
virtual hosting do not apply directly. In order to support such use cases,
GNS support a legacy hostname record which can be used by applications
(e.g. HTTP clients) in order to provide the necessary information.
The resource record contains a string which is not 0-terminated
representing
the legacy hostname to use. It is expected to be found together in a single
resource record with an IPv4 or IPv6 address.
- A LEHO DATA entry has the following format:<a href="#section-3.4-1"
class="pilcrow">¶</a></p>
+ A LEHO DATA entry has the following format:<a href="#section-3.3-1"
class="pilcrow">¶</a></p>
<div id="figure_lehorecord">
<figure id="figure-5">
- <div class="artwork art-text alignLeft" id="section-3.4-2.1">
+ <div class="artwork art-text alignLeft" id="section-3.3-2.1">
<pre>
0 8 16 24 32 40 48 56
+-----+-----+-----+-----+-----+-----+-----+-----+
@@ -1377,11 +1355,11 @@ async function addMetadata(){try{const
e=document.styleSheets[0].cssRules;for(le
</section>
</div>
<div id="gnsrecords_box">
-<section id="section-3.5">
+<section id="section-3.4">
<h3 id="name-box">
-<a href="#section-3.5" class="section-number selfRef">3.5. </a><a
href="#name-box" class="section-name selfRef">BOX</a>
+<a href="#section-3.4" class="section-number selfRef">3.4. </a><a
href="#name-box" class="section-name selfRef">BOX</a>
</h3>
-<p id="section-3.5-1">
+<p id="section-3.4-1">
Record type used to box up SRV and TLSA records. For example, a
TLSA record for "_https._tcp.foo.gnu" will be stored under
"foo.gnu" as a BOX record with service 443 (https) and protocol 6
@@ -1390,10 +1368,10 @@ async function addMetadata(){try{const
e=document.styleSheets[0].cssRules;for(le
left untouched. This is done to ensure that TLSA (and SRV)
records do not require a separate network request, thus making TLSA
records inseparable from the corresponding A/AAAA/VPN/etc. records.
- A BOX DATA entry has the following format:<a href="#section-3.5-1"
class="pilcrow">¶</a></p>
+ A BOX DATA entry has the following format:<a href="#section-3.4-1"
class="pilcrow">¶</a></p>
<div id="figure_boxrecord">
<figure id="figure-6">
- <div class="artwork art-text alignLeft" id="section-3.5-2.1">
+ <div class="artwork art-text alignLeft" id="section-3.4-2.1">
<pre>
0 8 16 24 32 40 48 56
+-----+-----+-----+-----+-----+-----+-----+-----+
@@ -1408,24 +1386,24 @@ async function addMetadata(){try{const
e=document.styleSheets[0].cssRules;for(le
</div>
<figcaption><a href="#figure-6" class="selfRef">Figure
6</a></figcaption></figure>
</div>
-<dl class="dlParallel" id="section-3.5-3">
- <dt id="section-3.5-3.1">PROTO</dt>
- <dd id="section-3.5-3.2">
- the protocol number, e.g. 6 for tcp. In network byte order.<a
href="#section-3.5-3.2" class="pilcrow">¶</a>
+<dl class="dlParallel" id="section-3.4-3">
+ <dt id="section-3.4-3.1">PROTO</dt>
+ <dd id="section-3.4-3.2">
+ the protocol number, e.g. 6 for tcp. In network byte order.<a
href="#section-3.4-3.2" class="pilcrow">¶</a>
</dd>
- <dt id="section-3.5-3.3">SVC</dt>
- <dd id="section-3.5-3.4">
+ <dt id="section-3.4-3.3">SVC</dt>
+ <dd id="section-3.4-3.4">
the service of the boxed record, i.e. the port number. In network
- byte order.<a href="#section-3.5-3.4" class="pilcrow">¶</a>
+ byte order.<a href="#section-3.4-3.4" class="pilcrow">¶</a>
</dd>
- <dt id="section-3.5-3.5">TYPE</dt>
- <dd id="section-3.5-3.6">
- Record type of the boxed record. In network byte order.<a
href="#section-3.5-3.6" class="pilcrow">¶</a>
+ <dt id="section-3.4-3.5">TYPE</dt>
+ <dd id="section-3.4-3.6">
+ Record type of the boxed record. In network byte order.<a
href="#section-3.4-3.6" class="pilcrow">¶</a>
</dd>
- <dt id="section-3.5-3.7">RECORD</dt>
- <dd id="section-3.5-3.8">
- The boxed record in a format as defined in
- <a href="#rrecords_wire" class="xref">Section 3.1</a>.<a
href="#section-3.5-3.8" class="pilcrow">¶</a>
+ <dt id="section-3.4-3.7">RECORD</dt>
+ <dd id="section-3.4-3.8">
+ The boxed record in a format as defined in
+ <a href="#rrecords" class="xref">Section 3</a>.<a
href="#section-3.4-3.8" class="pilcrow">¶</a>
</dd>
</dl>
</section>
@@ -1583,7 +1561,7 @@ async function addMetadata(){try{const
e=document.styleSheets[0].cssRules;for(le
<dd id="section-4.2-4.10">
The resource records block expiration time. This is the expiration
time of the resource record contained within this block with the
- smallest expiration time.
+ smallest expiration time.
If a records block includes shadow records, then the *maximum*
expiration time of all shadow records with matching type and the
expiration times of the non-shadow records is considered.
@@ -1718,8 +1696,10 @@ async function addMetadata(){try{const
e=document.styleSheets[0].cssRules;for(le
+-----+-----+-----+-----+-----+-----+-----+-----+
| FLAGS | DATA /
+-----+-----+-----+-----+ /
- / /
- / /
+ / +-----------------------/
+ / | /
+ +-----------------------+ /
+ / PADDING /
/ /
</pre>
</div>
@@ -1731,6 +1711,13 @@ async function addMetadata(){try{const
e=document.styleSheets[0].cssRules;for(le
<dd id="section-4.3-12.2">
A 32-bit value containing the number of resource records which are
following in network byte order.<a href="#section-4.3-12.2"
class="pilcrow">¶</a>
+</dd>
+ <dt id="section-4.3-12.3">PADDING</dt>
+ <dd id="section-4.3-12.4">
+ The padding MUST contain the 0 value in all octets. Not applicable
for
+ PKEY records.
+ The padding MUST ensure that the size of the RDATA is a power of two.
+ The only excption is the PKEY record type, which is never padded.<a
href="#section-4.3-12.4" class="pilcrow">¶</a>
</dd>
</dl>
<p id="section-4.3-13">
diff --git a/draft-schanzen-gns.txt b/draft-schanzen-gns.txt
index d9a50fe..c976501 100644
--- a/draft-schanzen-gns.txt
+++ b/draft-schanzen-gns.txt
@@ -63,22 +63,21 @@ Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Zones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3. Resource records . . . . . . . . . . . . . . . . . . . . . . 2
- 3.1. Wire format . . . . . . . . . . . . . . . . . . . . . . . 3
- 3.2. PKEY . . . . . . . . . . . . . . . . . . . . . . . . . . 4
- 3.3. GNS2DNS . . . . . . . . . . . . . . . . . . . . . . . . . 5
- 3.4. LEHO . . . . . . . . . . . . . . . . . . . . . . . . . . 5
- 3.5. BOX . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
+ 3.1. PKEY . . . . . . . . . . . . . . . . . . . . . . . . . . 4
+ 3.2. GNS2DNS . . . . . . . . . . . . . . . . . . . . . . . . . 4
+ 3.3. LEHO . . . . . . . . . . . . . . . . . . . . . . . . . . 5
+ 3.4. BOX . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4. Publishing records . . . . . . . . . . . . . . . . . . . . . 6
4.1. Key derivations . . . . . . . . . . . . . . . . . . . . . 6
4.2. Resource records block . . . . . . . . . . . . . . . . . 7
4.3. Block data encryption and decryption . . . . . . . . . . 9
5. Internationalization and Character Encoding . . . . . . . . . 11
- 6. Security Considerations . . . . . . . . . . . . . . . . . . . 11
- 7. Record Resolution . . . . . . . . . . . . . . . . . . . . . . 11
+ 6. Security Considerations . . . . . . . . . . . . . . . . . . . 12
+ 7. Record Resolution . . . . . . . . . . . . . . . . . . . . . . 12
8. Namespace Revocation . . . . . . . . . . . . . . . . . . . . 12
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12
10. Test Vectors . . . . . . . . . . . . . . . . . . . . . . . . 12
- 11. Normative References . . . . . . . . . . . . . . . . . . . . 14
+ 11. Normative References . . . . . . . . . . . . . . . . . . . . 15
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15
1. Introduction
@@ -95,17 +94,18 @@ Table of Contents
2. Zones
A zone in GNS is defined by a public/private ECC key pair (d,zk),
- where B is the generator of a group or subgroup, d is the private key
- and zk the corresponding public key GNS uses the Ed25519 EC
- parameters as defined in [RFC8032]. GNS combines the EC parameters
- of Ed25519 with the ECDSA scheme defined in [RFC6979] in order to
- achieve zone privacy. The public key "zk" is used to uniquely
- identify and refer to the zone and is thus called "zone key".
- Records published in the zone are signed using a private key derived
- from "d" as described in Section 4.
+ where d is the private key and zk the corresponding public key. GNS
+ uses the Ed25519 EC parameters as defined in [RFC8032]. GNS combines
+ the EC parameters of Ed25519 with the ECDSA scheme defined in
+ [RFC6979] in order to achieve zone privacy. The public key "zk" is
+ used to uniquely identify and refer to the zone and is thus called
+ "zone key". Records published in the zone are signed using a private
+ key derived from "d" as described in Section 4.
3. Resource records
+ A GNS resource record holds the data of a specific record in a zone.
+ The resource record format is defined as follows:
@@ -114,11 +114,6 @@ Schanzenbach, et al. Expires 24 January 2020
[Page 2]
Internet-Draft The GNU Name System July 2019
-3.1. Wire format
-
- A GNS resource record holds the data of a specific record in a zone.
- The resource record format is defined as follows:
-
0 8 16 24 32 40 48 56
+-----+-----+-----+-----+-----+-----+-----+-----+
| EXPIRATION |
@@ -128,11 +123,7 @@ Internet-Draft The GNU Name System
July 2019
| FLAGS | DATA /
+-----+-----+-----+-----+ /
/ /
- / +-----+-----+-----+-----+
- / | PADDING /
- +-----+-----+-----+-----+ /
- | |
- +-----+-----+-----+-----+-----+-----+-----+-----+
+ / /
Figure 1
@@ -143,9 +134,7 @@ Internet-Draft The GNU Name System
July 2019
byte order.
DATA SIZE The size of the DATA field in bytes and in network byte
- order including padding. The padding MUST ensure that the size of
- the resource record is a power of two. The only excption is the
- PKEY record type, which is never padded.
+ order.
TYPE The resource record type. This type can be one of the GNS
resource records as defined in Section 3 or a DNS record type as
@@ -159,17 +148,6 @@ Internet-Draft The GNU Name System
July 2019
DATA The resource record data payload. The contents are defined by
the respective type of the resource record.
- PADDING The padding MUST contain the 0 value in all octets. Not
- applicable for PKEY records.
-
-
-
-
-Schanzenbach, et al. Expires 24 January 2020 [Page 3]
-
-Internet-Draft The GNU Name System July 2019
-
-
Flags indicate metadata surrounding the resource record. A flag
value of 0 indicates that all flags are unset. The following
illustrates the flag distribution in the 32-bit flag value of a
@@ -184,6 +162,14 @@ Internet-Draft The GNU Name System
July 2019
where:
+
+
+
+Schanzenbach, et al. Expires 24 January 2020 [Page 3]
+
+Internet-Draft The GNU Name System July 2019
+
+
SHADOW If this flag is set, this record should not be used unless
all (other) records with an absolute expiration time have expired.
@@ -195,12 +181,12 @@ Internet-Draft The GNU Name System
July 2019
be handed out to other peers. This flag should never be
encountered by a resolver for records resolved from the DHT.
-3.2. PKEY
+3.1. PKEY
- In GNS, a delegation of a label to a zone is represented througha
+ In GNS, a delegation of a label to a zone is represented through a
PKEY record. A PKEY resource record contains the public key of the
zone to delegate to. A PKEY record MUST be the only record under a
- label. No other labels are allows. The a PKEY DATA entry has the
+ label. No other records are allowed. The a PKEY DATA entry has the
following format:
0 8 16 24 32 40 48 56
@@ -213,6 +199,20 @@ Internet-Draft The GNU Name System
July 2019
Figure 3
+3.2. GNS2DNS
+
+ It is possible to delegate a label back into DNS through a GNS2DNS
+ record. The resource record contains a DNS name for the resolver to
+ continue with in DNS followed by a DNS server. Both names are in the
+ format defined in [RFC1034] for DNS names. If a resolver encounters
+ a GNS2DNS record it is expected that it first resolves the IP(s) of
+ the DNS servers using DNS. Then, the encountered DNS name is
+ resolved by querying the name server(s). The a GNS2DNS DATA entry
+ has the following format:
+
+
+
+
@@ -226,17 +226,6 @@ Schanzenbach, et al. Expires 24 January 2020
[Page 4]
Internet-Draft The GNU Name System July 2019
-3.3. GNS2DNS
-
- It is possible to delegate a label back into DNS through a GNS2DNS
- record. The resource record contains a DNS name for the resolver to
- continue with in DNS followed by a DNS server. Both names are in the
- format defined in [RFC1034] for DNS names. If a resolver encounters
- a GNS2DNS record it is expected that it first resolves the IP(s) of
- the DNS servers using DNS. Then, the encountered DNS name is
- resolved by querying the name server(s). The a GNS2DNS DATA entry
- has the following format:
-
0 8 16 24 32 40 48 56
+-----+-----+-----+-----+-----+-----+-----+-----+
| DNS NAME |
@@ -252,7 +241,7 @@ Internet-Draft The GNU Name System
July 2019
Figure 4
-3.4. LEHO
+3.3. LEHO
As names in GNS are not globally unique, established practices such
as virtual hosting do not apply directly. In order to support such
@@ -273,16 +262,7 @@ Internet-Draft The GNU Name System
July 2019
Figure 5
-
-
-
-
-Schanzenbach, et al. Expires 24 January 2020 [Page 5]
-
-Internet-Draft The GNU Name System July 2019
-
-
-3.5. BOX
+3.4. BOX
Record type used to box up SRV and TLSA records. For example, a TLSA
record for "_https._tcp.foo.gnu" will be stored under "foo.gnu" as a
@@ -294,6 +274,14 @@ Internet-Draft The GNU Name System
July 2019
records inseparable from the corresponding A/AAAA/VPN/etc. records.
A BOX DATA entry has the following format:
+
+
+
+Schanzenbach, et al. Expires 24 January 2020 [Page 5]
+
+Internet-Draft The GNU Name System July 2019
+
+
0 8 16 24 32 40 48 56
+-----+-----+-----+-----+-----+-----+-----+-----+
| PROTO | SVC | TYPE |
@@ -313,7 +301,7 @@ Internet-Draft The GNU Name System
July 2019
TYPE Record type of the boxed record. In network byte order.
- RECORD The boxed record in a format as defined in Section 3.1.
+ RECORD The boxed record in a format as defined in Section 3.
4. Publishing records
@@ -326,18 +314,6 @@ Internet-Draft The GNU Name System
July 2019
4.1. Key derivations
-
-
-
-
-
-
-
-Schanzenbach, et al. Expires 24 January 2020 [Page 6]
-
-Internet-Draft The GNU Name System July 2019
-
-
PRK_h := HKDF-Extract ("key-derivation", zk)
h := HKDF-Expand (PRK_h, label | "gns", 512 / 8)
d_h := h*d mod p
@@ -355,6 +331,13 @@ Internet-Draft The GNU Name System
July 2019
h is the HKDF expansion result. The expansion info is a
concatenation of the label and string "gns".
+
+
+Schanzenbach, et al. Expires 24 January 2020 [Page 6]
+
+Internet-Draft The GNU Name System July 2019
+
+
d is the private zone key as defined in [RFC8032].
P is the base point of the curve Ed25519 as defined in [RFC8032].
@@ -385,6 +368,23 @@ Internet-Draft The GNU Name System
July 2019
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -580,8 +580,10 @@ Internet-Draft The GNU Name System
July 2019
+-----+-----+-----+-----+-----+-----+-----+-----+
| FLAGS | DATA /
+-----+-----+-----+-----+ /
- / /
- / /
+ / +-----------------------/
+ / | /
+ +-----------------------+ /
+ / PADDING /
/ /
Figure 10
@@ -591,6 +593,11 @@ Internet-Draft The GNU Name System
July 2019
RR COUNT A 32-bit value containing the number of resource records
which are following in network byte order.
+ PADDING The padding MUST contain the 0 value in all octets. Not
+ applicable for PKEY records. The padding MUST ensure that the
+ size of the RDATA is a power of two. The only excption is the
+ PKEY record type, which is never padded.
+
is followed by a set of resource records with the respective formats
defined in Section 3.
@@ -601,13 +608,6 @@ Internet-Draft The GNU Name System
July 2019
which are internationalized through the IDNA specifications
[RFC5890].
-6. Security Considerations
-
- TODO
-
-7. Record Resolution
-
- TODO
@@ -618,6 +618,14 @@ Schanzenbach, et al. Expires 24 January 2020
[Page 11]
Internet-Draft The GNU Name System July 2019
+6. Security Considerations
+
+ TODO
+
+7. Record Resolution
+
+ TODO
+
8. Namespace Revocation
TODO
@@ -658,6 +666,14 @@ Internet-Draft The GNU Name System
July 2019
d_h :=
3376c182f461fb01
f3e009254c1c6177
+
+
+
+Schanzenbach, et al. Expires 24 January 2020 [Page 12]
+
+Internet-Draft The GNU Name System July 2019
+
+
bd105c40e4e7b081
182ed3f702c81700
@@ -667,13 +683,6 @@ Internet-Draft The GNU Name System
July 2019
6e325e54b93c8576
9182810f92fad776
-
-
-Schanzenbach, et al. Expires 24 January 2020 [Page 12]
-
-Internet-Draft The GNU Name System July 2019
-
-
q (query key) :=
81d65adced4dce6f
3b7e7610339ae2f4
@@ -713,6 +722,14 @@ Internet-Draft The GNU Name System
July 2019
636f6d0000000000 com | \0 | Followed by
0000000000000000 24 bytes of padding to 2^6
0000000000000000
+
+
+
+Schanzenbach, et al. Expires 24 January 2020 [Page 13]
+
+Internet-Draft The GNU Name System July 2019
+
+
00000000
@@ -722,14 +739,6 @@ Internet-Draft The GNU Name System
July 2019
e80818d0a84059a8
5eee901a66459e5e
3d1a10b29a5b8354
-
-
-
-Schanzenbach, et al. Expires 24 January 2020 [Page 13]
-
-Internet-Draft The GNU Name System July 2019
-
-
1b58636781166b9a
642920eee8e7a65a
001fd19a6406a721
@@ -770,15 +779,6 @@ Internet-Draft The GNU Name System
July 2019
001fd19a6406a721
713f0a0d
-11. Normative References
-
- [RFC1034] Mockapetris, P., "Domain names - concepts and facilities",
- STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987,
- <https://www.rfc-editor.org/info/rfc1034>.
-
- [RFC1035] Mockapetris, P., "Domain names - implementation and
-
-
Schanzenbach, et al. Expires 24 January 2020 [Page 14]
@@ -786,6 +786,13 @@ Schanzenbach, et al. Expires 24 January 2020
[Page 14]
Internet-Draft The GNU Name System July 2019
+11. Normative References
+
+ [RFC1034] Mockapetris, P., "Domain names - concepts and facilities",
+ STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987,
+ <https://www.rfc-editor.org/info/rfc1034>.
+
+ [RFC1035] Mockapetris, P., "Domain names - implementation and
specification", STD 13, RFC 1035, DOI 10.17487/RFC1035,
November 1987, <https://www.rfc-editor.org/info/rfc1035>.
@@ -828,13 +835,6 @@ Authors' Addresses
Email: address@hidden
- Christian Grothoff
- GNUnet e.V.
- Boltzmannstrasse 3
- 85748 Garching
- Germany
-
-
Schanzenbach, et al. Expires 24 January 2020 [Page 15]
@@ -842,6 +842,12 @@ Schanzenbach, et al. Expires 24 January 2020
[Page 15]
Internet-Draft The GNU Name System July 2019
+ Christian Grothoff
+ GNUnet e.V.
+ Boltzmannstrasse 3
+ 85748 Garching
+ Germany
+
Email: address@hidden
@@ -880,12 +886,6 @@ Internet-Draft The GNU Name System
July 2019
-
-
-
-
-
-
diff --git a/draft-schanzen-gns.xml b/draft-schanzen-gns.xml
index 0a384a7..e93125c 100644
--- a/draft-schanzen-gns.xml
+++ b/draft-schanzen-gns.xml
@@ -95,8 +95,6 @@
</section>
<section anchor="rrecords" numbered="true" toc="default">
<name>Resource records</name>
- <section anchor="rrecords_wire" numbered="true" toc="default">
- <name>Wire format</name>
<t>
A GNS resource record holds the data of a specific record in a zone.
The resource record format is defined as follows:
@@ -183,7 +181,6 @@
a resolver for records resolved from the DHT.
</dd>
</dl>
-</section>
<section anchor="gnsrecords_pkey" numbered="true" toc="default">
<name>PKEY</name>
<t>In GNS, a delegation of a label to a zone is represented through a PKEY
@@ -298,7 +295,7 @@
<dt>RECORD</dt>
<dd>
The boxed record in a format as defined in
- <xref target="rrecords_wire" />.
+ <xref target="rrecords" />.
</dd>
</dl>
</section>
--
To stop receiving notification emails like this one, please contact
address@hidden.