<div dir="ltr"><div>Filename: ExtraRelayDescriptorFields.txt</div><div>Title: Adding x-namespace to relay descriptor for key:value pairs</div><div>Author: Virgil Griffith</div><div>Created: 2015-09-30</div><div>Status: Open</div><div><br></div><div><br></div><div>1. Motivation</div><div>We wish to allow developers to build new applications atop relays. Towards this end, we wish to add the ability for users to specify arbitrary new key-value entries under the "X-" namespace to the router descriptor [1].  The canonical applications for this are adding a bitcoin donation address and networking of tor2web nodes.</div><div><br></div><div><br></div><div>2. Proposal</div><div>Allow optional key-value lines in the relay's torrc file.  These lines will be mirrored in the relay's descriptor which is then published in the directory consensus.</div><div><br></div><div><br></div><div>The following would be added to section 2.1.2 of the dir-spec</div><div>(Extra-info document format):</div><div><br></div><div>========================================================</div><div>"X-" CustomKey SP CustomValue NL</div><div><br></div><div>CustomKeyChar = "a"-"z" / "0" - "9" / "-" / "_"</div><div>CustomKey = 1*32 CustomKeyChar</div><div><br></div><div>CustomValueChar = atext / specials </div><div>CustomValue = 1*1024 CustomValueChar</div><div><br></div><div>Custom fields can appear multiple times, for example...</div><div><br></div><div>X-bitcoin 19mP9FKrXqL46Si58pHdhGKow88SUPy1V8</div><div>X-gravatar <a href="https://s.gravatar.com/avatar/d27fce46c9ac41a41bb52455ae75701d">https://s.gravatar.com/avatar/d27fce46c9ac41a41bb52455ae75701d</a></div><div>X-favoritequote Be excellent to each other.  Party on dudes!</div><div>X-foo bar</div><div><br></div><div>If the same CustomKey appearing more than once is disallowed.</div><div>Possible values for CustomValueChar as specified per RFC 2822.</div><div><br></div><div>The sum size accounting for all such custom fields is truncated to 5 kilobytes.</div><div>========================================================</div><div><br></div><div>To mitigate the chance of a malformed torrc file, I additionally propose that the relay descriptor be scanned and if it does not match the specification, that it exit with error telling her torrc file is a likely culprit.</div><div><br></div><div>-V</div></div>