diff options
Diffstat (limited to 'draft-schanzen-r5n.xml')
-rw-r--r-- | draft-schanzen-r5n.xml | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/draft-schanzen-r5n.xml b/draft-schanzen-r5n.xml index 6096c24..cc59f22 100644 --- a/draft-schanzen-r5n.xml +++ b/draft-schanzen-r5n.xml | |||
@@ -408,7 +408,7 @@ Connectivity | |Underlay| |Underlay| | |||
408 | <dd> | 408 | <dd> |
409 | is a signed path of the IDs of peers which the query | 409 | is a signed path of the IDs of peers which the query |
410 | traversed through the network. The DHT will try to make | 410 | traversed through the network. The DHT will try to make |
411 | the path available if the RecordRoute flag was set by | 411 | the path available if the <tt>RecordRoute</tt> flag was set by |
412 | the application calling the PUT procedure. The reported | 412 | the application calling the PUT procedure. The reported |
413 | path may have been silently truncated from the beginning. | 413 | path may have been silently truncated from the beginning. |
414 | </dd> | 414 | </dd> |
@@ -416,7 +416,7 @@ Connectivity | |Underlay| |Underlay| | |||
416 | <dd> | 416 | <dd> |
417 | is a signed path of the IDs of peers which the | 417 | is a signed path of the IDs of peers which the |
418 | result message traversed. The DHT will try to make the | 418 | result message traversed. The DHT will try to make the |
419 | path available if the RecordRoute flag was set for the GET procedure. | 419 | path available if the <tt>RecordRoute</tt> flag was set for the GET procedure. |
420 | The reported path may have been silently truncated from the beginning. | 420 | The reported path may have been silently truncated from the beginning. |
421 | As the block was cached by the node at the end of this | 421 | As the block was cached by the node at the end of this |
422 | path, this path is more likely to be stale compared to the | 422 | path, this path is more likely to be stale compared to the |
@@ -1420,7 +1420,18 @@ bchar = *(ALPHA / DIGIT) | |||
1420 | <li> | 1420 | <li> |
1421 | If the <tt>RecordRoute</tt> flag is set in FLAGS, | 1421 | If the <tt>RecordRoute</tt> flag is set in FLAGS, |
1422 | the local peer address <bcp14>MUST</bcp14> be appended to the <tt>PUTPATH</tt> | 1422 | the local peer address <bcp14>MUST</bcp14> be appended to the <tt>PUTPATH</tt> |
1423 | of the message. | 1423 | of the message. If the flag is not set, the <tt>PATH_LEN</tt> |
1424 | <bcp14>MUST</bcp14> be set to zero. | ||
1425 | </li> | ||
1426 | <li> | ||
1427 | If the <tt>PATH_LEN</tt> is non-zero, | ||
1428 | the local peer <bcp14>SHOULD</bcp14> verify the signatures from the <tt>PUTPATH</tt>. | ||
1429 | Verification <bcp14>MAY</bcp14> involve checking all signatures or any random | ||
1430 | subset of the signatures. It is <bcp14>RECOMMENDED</bcp14> that peers adapt | ||
1431 | their behavior to available computational resources so as to not make signature | ||
1432 | verification a bottleneck. If an invalid signature is found, the | ||
1433 | <tt>PUTPATH</tt> <bcp14>MUST</bcp14> be truncated to only include the elements | ||
1434 | following the invalid signature. | ||
1424 | </li> | 1435 | </li> |
1425 | <li> | 1436 | <li> |
1426 | If the local peer is the closest peer | 1437 | If the local peer is the closest peer |
@@ -1737,7 +1748,7 @@ bchar = *(ALPHA / DIGIT) | |||
1737 | is a 32-bit block type field. The block type indicates the content | 1748 | is a 32-bit block type field. The block type indicates the content |
1738 | type of the payload. In network byte order. | 1749 | type of the payload. In network byte order. |
1739 | </dd> | 1750 | </dd> |
1740 | <dt>PUTPATH_L</dt> | 1751 | <dt>PUTPATH_LEN</dt> |
1741 | <dd> | 1752 | <dd> |
1742 | is a 16-bit number indicating the length of the PUT path recorded | 1753 | is a 16-bit number indicating the length of the PUT path recorded |
1743 | in <tt>PUTPATH</tt>. As <tt>PUTPATH</tt> is optional, this value may be zero | 1754 | in <tt>PUTPATH</tt>. As <tt>PUTPATH</tt> is optional, this value may be zero |
@@ -1798,6 +1809,18 @@ bchar = *(ALPHA / DIGIT) | |||
1798 | If the result is <tt>BLOCK_INVALID</tt>, the message <bcp14>MUST</bcp14> be | 1809 | If the result is <tt>BLOCK_INVALID</tt>, the message <bcp14>MUST</bcp14> be |
1799 | discarded. | 1810 | discarded. |
1800 | </li> | 1811 | </li> |
1812 | <li> | ||
1813 | If the <tt>PUT_PATH_LEN</tt> or the <tt>GET_PATH_LEN</tt> are non-zero, | ||
1814 | the local peer <bcp14>SHOULD</bcp14> verify the signatures from the <tt>PUTPATH</tt> | ||
1815 | and the <tt>GETPATH</tt>. | ||
1816 | Verification <bcp14>MAY</bcp14> involve checking all signatures or any random | ||
1817 | subset of the signatures. It is <bcp14>RECOMMENDED</bcp14> that peers adapt | ||
1818 | their behavior to available computational resources so as to not make signature | ||
1819 | verification a bottleneck. If an invalid signature is found, the | ||
1820 | path <bcp14>MUST</bcp14> be truncated to only include the elements | ||
1821 | following the invalid signature. In particular, any invalid signature | ||
1822 | on the <tt>GETPATH</tt> will cause <tt>PUT_PATH_LEN</tt> to be set to 0. | ||
1823 | </li> | ||
1801 | <li> | 1824 | <li> |
1802 | The peer also attempts to compute the | 1825 | The peer also attempts to compute the |
1803 | key using <tt>DeriveBlockKey</tt>. This may result in <tt>NONE</tt>. | 1826 | key using <tt>DeriveBlockKey</tt>. This may result in <tt>NONE</tt>. |
@@ -1823,7 +1846,7 @@ bchar = *(ALPHA / DIGIT) | |||
1823 | </t> | 1846 | </t> |
1824 | <ol type="%c)"> | 1847 | <ol type="%c)"> |
1825 | <li> | 1848 | <li> |
1826 | If the approximate flag was not set in the query and the <tt>BTYPE</tt> allowed the | 1849 | If the <tt>FindApproximate</tt> flag was not set in the query and the <tt>BTYPE</tt> allowed the |
1827 | implementation to compute the key from the block, the computed key must | 1850 | implementation to compute the key from the block, the computed key must |
1828 | exactly match the <tt>QUERY_HASH</tt>, otherwise the result does | 1851 | exactly match the <tt>QUERY_HASH</tt>, otherwise the result does |
1829 | not match the pending query and processing continues with the next pending query. | 1852 | not match the pending query and processing continues with the next pending query. |
@@ -1845,6 +1868,15 @@ bchar = *(ALPHA / DIGIT) | |||
1845 | The result of this duplicate filtering is always either | 1868 | The result of this duplicate filtering is always either |
1846 | <tt>FILTER_MORE</tt> or <tt>FILTER_DUPLICATE</tt>. | 1869 | <tt>FILTER_MORE</tt> or <tt>FILTER_DUPLICATE</tt>. |
1847 | </li> | 1870 | </li> |
1871 | <li> | ||
1872 | If the <tt>RecordRoute</tt> flag is set in FLAGS, | ||
1873 | the local peer address <bcp14>MUST</bcp14> be appended to the <tt>GETPATH</tt> | ||
1874 | of the message and the respective signature <bcp14>MUST</bcp14> be | ||
1875 | set using the query origin as the <tt>PEER SUCCESSOR</tt> and the | ||
1876 | response origin as the <tt>PEER PREDECESSOR</tt>. If the flag is not set, | ||
1877 | the <tt>GET_PATH_LEN</tt> and <tt>PUT_PATH_LEN</tt> | ||
1878 | <bcp14>MUST</bcp14> be set to zero when forwarding the result. | ||
1879 | </li> | ||
1848 | </ol> | 1880 | </ol> |
1849 | <t> | 1881 | <t> |
1850 | If the result is either <tt>FILTER_MORE</tt> or <tt>FILTER_LAST</tt>, | 1882 | If the result is either <tt>FILTER_MORE</tt> or <tt>FILTER_LAST</tt>, |