From: <ul...@us...> - 2010-09-10 16:49:46
|
Revision: 28 http://adc.svn.sourceforge.net/adc/?rev=28&view=rev Author: ullner Date: 2010-09-10 16:49:40 +0000 (Fri, 10 Sep 2010) Log Message: ----------- Added hidden in CT types for INF Added Invalid feature error code in STA Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2010-09-05 14:34:35 UTC (rev 27) +++ trunk/ADC-EXT.txt 2010-09-10 16:49:40 UTC (rev 28) @@ -39,6 +39,8 @@ === Version 1.0.5 UNRELEASED * Added locale field to INF * Modified user parameter 'line' in 'UCMD' to handle multiple inputs. +* Added hidden in enumeration of CT field in INF. +* Added error code Invalid feature in STA. == Extensions @@ -467,4 +469,26 @@ Note that the standard suggest that the language should be in lowercase and the country in upper case. Note that the country code may be more than two characters. Additionally, dash ('-') and underscore ('_') are acceptable seperators. +=== Hidden status for client type +This extension will add to the CT field enumeration in the INF to denote a user as "hidden". Other clients shall as appropriate not display the user in user lists etc. + +[options="autowidth"] +|===== +|CT |64=Hidden +|===== + +Full updated and comparable text; +[options="autowidth"] +|===== +|CT |Client (user) type, 1=bot, 2=registered user, 4=operator, 8=super user, 16=hub owner, 32=hub (used when the hub sends an INF about itself), 64=Hidden. Multiple types are specified by adding the numbers together. +|===== + +=== "Invalid feature" error code +This extension will add "Invalid feature" as error code in STA. Invalid features are features the hub or client deem inappropriate or simply not welcome. The error code should not be used for features the hub or client does not know of. + +[options="autowidth"] +|===== +|48 |Invalid feature. Flag "FC" is the FOURCC of the invalid feature(s). If multiple features are invalid, use comma between the features (i.e. FCQWER,ASDF,ZXCV). +|===== + // vim: set syntax=asciidoc: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2010-09-16 19:11:41
|
Revision: 29 http://adc.svn.sourceforge.net/adc/?rev=29&view=rev Author: ullner Date: 2010-09-16 19:11:35 +0000 (Thu, 16 Sep 2010) Log Message: ----------- Release of ADC-Ext 1.0.5; * Added locale field to INF * Modified user parameter 'line' in 'UCMD' to handle multiple inputs. * Added hidden in enumeration of CT field in INF. * Added error code Invalid feature in STA. Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2010-09-10 16:49:40 UTC (rev 28) +++ trunk/ADC-EXT.txt 2010-09-16 19:11:35 UTC (rev 29) @@ -36,7 +36,7 @@ * Added upload queue field to STA * Added partial file sharing extension 'PFSR' -=== Version 1.0.5 UNRELEASED +=== Version 1.0.5 * Added locale field to INF * Modified user parameter 'line' in 'UCMD' to handle multiple inputs. * Added hidden in enumeration of CT field in INF. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2010-09-26 17:43:56
|
Revision: 30 http://adc.svn.sourceforge.net/adc/?rev=30&view=rev Author: ullner Date: 2010-09-26 17:43:50 +0000 (Sun, 26 Sep 2010) Log Message: ----------- Starting 1.0.6; Added KEYP extension; note that the URI is slightly changed from the 'original' KEYP wiki entry; some wording changed to be more simple to grasp. Note that ADCS is not added at this point in time, just yet. ADCS is not needed at this point particularly, since the KEYP spec only relies on a) the URI (which is simply the same as the standard URI with an 's' appended) and b) the general use of "certificates". Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2010-09-16 19:11:35 UTC (rev 29) +++ trunk/ADC-EXT.txt 2010-09-26 17:43:50 UTC (rev 30) @@ -1,6 +1,6 @@ = ADC Extensions Fredrik Ullner <ul...@gm...> -1.0.5, September 2010 +1.0.6, September 2010 == Abstract These are the official extensions to ADC. This document is based on the @@ -42,6 +42,9 @@ * Added hidden in enumeration of CT field in INF. * Added error code Invalid feature in STA. +=== Version 1.0.6 UNRELEASED +* Added KEYP extension for providing certificate substitution protection in ADCS. + == Extensions === TIGR - Tiger tree hash support @@ -491,4 +494,64 @@ |48 |Invalid feature. Flag "FC" is the FOURCC of the invalid feature(s). If multiple features are invalid, use comma between the features (i.e. FCQWER,ASDF,ZXCV). |===== +=== KEYP - Certificate substitution protection in ADCS (Secure ADC) +This extension adds a simple, but secure way to protect against man-in-the-middle attacks against ADC when wrapped with TLS (1.0 or later). It does not require setting up a CA or signing keys, but possible if desired. + +The extension introduce a keyprint parameter to the ADCS URI. The keyprint parameter is a hash of either the certificate signing the server certificate (in a CA-style key-signing configuration) or, simply, the server certificate itself (in a self-signed configuration). + +The extension also require that clients should publish their own certificates' keyprint in the KP field in the INF. Assuming one trusts the hub enough not to maliciously change the keyprints en route (a reasonable assumption given the hub's existing position of trust), and given that the connection to the hub has been similarly authenticated (either as above or via a directly downloaded trusted certificate), client-client connections are also protected against attempted man-in-the-middle attacks - without messing around having to get everyone's certificates signed in advance. + +The keyprint parameter consist of a hash name, followed by a forward slash ('/'), followed by the Base32-encoded cyrptographic hash of either the certificate directly (which is appropriate in the case of a self-signed certificate), or a certificate providing the base of a valid signature chain (which may be more appropriate a CA-signed certificate). + +The hash used shall be SHA256. Other extensions may add other hashes, given sufficient security contemplation. + +INF field; +[options="autowidth"] +|===== +|KP |The client's own certificate keyprint. +|===== + +==== Keyprint replacement behaviour +If a client receives a KP field in an FINF broadcast via a hub to it is connected using ADCS and a trusted key as above (or otherwise), it should be regarded as the valid and correct keyprint for that client's IP/port/hub combination, replacing any earlier keyprint for that IP/port/hub combination. + +==== Keyprint verification +When initiating a TLS handshake with a remote host where the keyprint is known, the client can verify that a man-in-the-middle attack is not occurring by checking if the hash given in the keyprint matches exactly: + +* a root certificate presented in a valid signature chain which covers the certificate presented during the handshake by the remote host; or +* the entire certificate presented during the handshake by the remote host. + +Suppose the client is aware of a remote host's keyprint and is in the process of connecting to that host. A certificate substitution attack is in place if the hub presents itself with a certificate that does not match and where the certificate is not the root of the valid signature chain covering the certificate. +If the client detect such an attack, the client MUST abort the connection with a user-visible, non-modal error stating, for example, "Crypto error: Detected attempted man-in-the-middle attack, aborting". (This error quite possibly represents a real attempted attack that has been foiled; we may try auto-reconnecting but we should NEVER ignore it, or it will succeed. We may wish to avoid stating the keyprint of the certificate that was actually received.) + +Optionally, when receiving a TLS handshake, if the client know what the remote host's keyprint ought to be, the client could also verify this. However, note that only the initiating side needs to check this for the man-in-the-middle protection to be valid; specifically the hub doesn't need to remember, or even understand, clients' keyprints. + +==== Security Considerations +===== General +The certificates, including the name fields, are sent in the clear during the initial handshake. Therefore it is recommended to avoid identifying marks in the certificates CommonName fields (for example) that would clearly single them out as being TLS keys used by ADCS:, and the CID field most definitely should not appear. Quite possibly no name fields should appear, or they should be blank. + +===== Client-Hub +The keyprint in the ADCS URI prevents a clandestine man-in-the-middle (certificate substitution) attack on the TLS session with the hub, if and only if the kp parameter hasn't been modified by an attacker. + +Suggested countermeasures against this include the following; + +* Even if otherwise unprotected, an attacker would likely only have a maximum of one opportunity to make the substitution (by changing the kp parameter when the URL is first sent to the user); if it's changed later, it will be detected. ("Casual first-use" security, as often used in SSH.) + +* Checking the fingerprint or transferring the hub URL out-of-band (for example by telephone, or in person) could reveal or thwart man-in-the-middle attacks; something's wrong if you don't have the same URL as the hub operator gives out. (PGP-style "sneakernet" security.) + +* We would be protected if the URL were in a file signed by some secure means by a party we have already decided we trust not to change the URLs maliciously. Encryption would not be necessary, only a signature to ensure no untrusted party has modified the KP fields. (A signed hublist, possibly.) + +Finally, we would be protected were the hublist/URL retrieved from an https: site signed by a CA we trust not to issue signatures for any domain to someone who doesn't own that domain, and the owner of that domain trusted not to modify the KP fields. (SSL-style security.) + +===== Client-Client +We are, in particular, trusting the hub not to maliciously modify the KP fields sent by the clients through their INF broadcasts. However; + +* The hub would gain nothing from swapping the keyprints of its users, as it would not gain anything from mounting a man-in-the-middle attack on its own users that it does not already have the ability to do, as it's the hub; and +* If the client do not trust the hub enough not to maliciously modify the data, why is the client choosing to connect to the hub and transmit the client's IP address through the hub? +* It could be detected by cross-checking with other clients/hubs, as connecting through a malicious hub would clearly show to have a different keyprint to any other hub; therefore any hub doing this would obviously be quickly removed from hublists. + +==== Example +==== +adcs://example.com:1234/kp?SHA256/G3PJC4F4MQ5KOXGE2MPYJW5EW63IC6M7RN7OS663JLLWN2M5I6FQ +==== + // vim: set syntax=asciidoc: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2010-09-26 17:51:29
|
Revision: 31 http://adc.svn.sourceforge.net/adc/?rev=31&view=rev Author: ullner Date: 2010-09-26 17:51:23 +0000 (Sun, 26 Sep 2010) Log Message: ----------- "Better" URI specification Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2010-09-26 17:43:50 UTC (rev 30) +++ trunk/ADC-EXT.txt 2010-09-26 17:51:23 UTC (rev 31) @@ -44,6 +44,7 @@ === Version 1.0.6 UNRELEASED * Added KEYP extension for providing certificate substitution protection in ADCS. +* Added URI specification for ADC == Extensions @@ -554,4 +555,14 @@ adcs://example.com:1234/kp?SHA256/G3PJC4F4MQ5KOXGE2MPYJW5EW63IC6M7RN7OS663JLLWN2M5I6FQ ==== +=== URI specification +ADC URIs shall be specified in the following (extended) form; + +==== +adc://example.com:1234/foo?bar +==== +Where 'foo' is the identifyable or parsable string for the URI and where 'bar' is the content or value. + +Extensions creating a new URI (say, the adcs:// URI), should also adopt this general structure. + // vim: set syntax=asciidoc: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2010-09-27 19:52:36
|
Revision: 34 http://adc.svn.sourceforge.net/adc/?rev=34&view=rev Author: ullner Date: 2010-09-27 19:52:30 +0000 (Mon, 27 Sep 2010) Log Message: ----------- Updated KEYP text to be more simple. Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2010-09-27 19:26:08 UTC (rev 33) +++ trunk/ADC-EXT.txt 2010-09-27 19:52:30 UTC (rev 34) @@ -495,13 +495,13 @@ |===== === KEYP - Certificate substitution protection in ADCS (Secure ADC) -This extension adds a simple, but secure way to protect against man-in-the-middle attacks against ADC when wrapped with TLS (1.0 or later). It does not require setting up a CA or signing keys, but possible if desired. +This extension adds a simple, but secure way to protect against man-in-the-middle attacks against ADC when wrapped with TLS (1.0 or later). It does not require setting up a CA or signing keys, but that is still possible if desired. -The extension introduce a keyprint parameter to the ADCS URI. The keyprint parameter is a hash of either the certificate signing the server certificate (in a CA-style key-signing configuration) or, simply, the server certificate itself (in a self-signed configuration). +The extension introduces a keyprint parameter to the ADCS URI. The keyprint parameter is a hash of the server certificate. -The extension also require that clients should publish their own certificates' keyprint in the KP field in the INF. Assuming one trusts the hub enough not to maliciously change the keyprints en route (a reasonable assumption given the hub's existing position of trust), and given that the connection to the hub has been similarly authenticated (either as above or via a directly downloaded trusted certificate), client-client connections are also protected against attempted man-in-the-middle attacks - without messing around having to get everyone's certificates signed in advance. +The extension also requires clients to publish their own certificates' keyprint in the KP field in the INF. Assuming one trusts the hub enough not to maliciously change the keyprints en route (a reasonable assumption given the hub's existing position of trust), and given that the connection to the hub has been similarly authenticated (either as above or via a directly downloaded trusted certificate), client-client connections are also protected against attempted man-in-the-middle attacks - without messing around with having to get everyone's certificates signed in advance. -The keyprint parameter consist of a hash name, followed by a forward slash ('/'), followed by the Base32-encoded cyrptographic hash of either the certificate directly (which is appropriate in the case of a self-signed certificate), or a certificate providing the base of a valid signature chain (which may be more appropriate a CA-signed certificate). +The keyprint parameter consists of a hash name, followed by a forward slash ('/'), followed by the Base32-encoded cyrptographic hash of the certificate. The hash used shall be SHA256. Other extensions may add other hashes, given sufficient security contemplation. @@ -512,18 +512,15 @@ |===== ==== Keyprint replacement behaviour -If a client receives a KP field in an FINF broadcast via a hub to it is connected using ADCS and a trusted key as above (or otherwise), it should be regarded as the valid and correct keyprint for that client's IP/port/hub combination, replacing any earlier keyprint for that IP/port/hub combination. +If a client receives a KP field in an FINF broadcast via a hub it is connected to using ADCS and a trusted key as above (or otherwise), it should be regarded as the valid and correct keyprint for that client's IP/port/hub combination, replacing any earlier keyprint for that IP/port/hub combination. ==== Keyprint verification -When initiating a TLS handshake with a remote host where the keyprint is known, the client can verify that a man-in-the-middle attack is not occurring by checking if the hash given in the keyprint matches exactly: +When initiating a TLS handshake with a remote host where the keyprint is known, the client can verify that a man-in-the-middle attack is not occurring by checking if the hash given in the keyprint exactly matches that of the certificate presented during the handshake by the remote host. -* a root certificate presented in a valid signature chain which covers the certificate presented during the handshake by the remote host; or -* the entire certificate presented during the handshake by the remote host. - Suppose the client is aware of a remote host's keyprint and is in the process of connecting to that host. A certificate substitution attack is in place if the hub presents itself with a certificate that does not match and where the certificate is not the root of the valid signature chain covering the certificate. -If the client detect such an attack, the client MUST abort the connection with a user-visible, non-modal error stating, for example, "Crypto error: Detected attempted man-in-the-middle attack, aborting". (This error quite possibly represents a real attempted attack that has been foiled; we may try auto-reconnecting but we should NEVER ignore it, or it will succeed. We may wish to avoid stating the keyprint of the certificate that was actually received.) +If the client detects such an attack, the client should abort the connection and notify the user with a message stating, for example, "Crypto error: Detected attempted man-in-the-middle attack, aborting". (This error quite possibly represents a real attempted attack that has been foiled; we may try auto-reconnecting but we should NEVER ignore it, or it will succeed. We may wish to avoid stating the keyprint of the certificate that was actually received.) -Optionally, when receiving a TLS handshake, if the client know what the remote host's keyprint ought to be, the client could also verify this. However, note that only the initiating side needs to check this for the man-in-the-middle protection to be valid; specifically the hub doesn't need to remember, or even understand, clients' keyprints. +Optionally, when receiving a TLS handshake, if the client knows what the remote host's keyprint ought to be, the client could also verify this. However, note that only the initiating side needs to check this for the man-in-the-middle protection to be valid; specifically the hub doesn't need to remember, or even understand, clients' keyprints. ==== Security Considerations ===== General This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2010-10-15 21:33:51
|
Revision: 55 http://adc.svn.sourceforge.net/adc/?rev=55&view=rev Author: ullner Date: 2010-10-15 21:33:45 +0000 (Fri, 15 Oct 2010) Log Message: ----------- Added note to signal DFAV in SUP. Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2010-10-11 20:56:55 UTC (rev 54) +++ trunk/ADC-EXT.txt 2010-10-15 21:33:45 UTC (rev 55) @@ -44,6 +44,7 @@ === Version 1.0.6 UNRELEASED * Added KEYP extension for providing certificate substitution protection in ADCS. +* Added note to signal DFAV in SUP. == Extensions @@ -204,6 +205,8 @@ === DFAV - Distributed Favorites The idea behind this extension is to generate a public hublist from the users favorite hublist. Implementations should separate between public and private hubs in the favorite hublist of an user, in order not to distribute private hubs where one can not connect to anyway. +Signal DFAV in SUP. + ==== GFA GFA This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2010-10-15 23:10:24
|
Revision: 56 http://adc.svn.sourceforge.net/adc/?rev=56&view=rev Author: ullner Date: 2010-10-15 23:10:18 +0000 (Fri, 15 Oct 2010) Log Message: ----------- Added SUDP extension for encryption of UDP traffic. Updated the version information to be more uniform. Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2010-10-15 21:33:45 UTC (rev 55) +++ trunk/ADC-EXT.txt 2010-10-15 23:10:18 UTC (rev 56) @@ -1,6 +1,6 @@ = ADC Extensions Fredrik Ullner <ul...@gm...> -1.0.6, September 2010 +1.0.6, October 2010 == Abstract These are the official extensions to ADC. This document is based on the @@ -15,36 +15,37 @@ This version corresponds to $Revision$. === Version 1.0 -* Initial release created from original ADC 1.0 text -* Added PING extension +* Initial release created from original ADC 1.0 text. +* Added 'PING' extension for hub pingers. === Version 1.0.1 -* Added TS as additional MSG parameter -* Added DFAV +* Added timestamp field to MSG. +* Added 'DFAV' extension for distributing hub addresses. === Version 1.0.2 -* Added UCMD extension +* Added 'UCMD' extension for user commands. === Version 1.0.3 -* Removed optional keywords from UCMD -* Added BLOM extension +* Removed optional keywords from UCMD. +* Added 'BLOM' extension for bloom filters. === Version 1.0.4 -* Added magnet link extension to 'UCMD' -* Added NAT traversal extension 'NATT' -* Added referral field to STA -* Added upload queue field to STA -* Added partial file sharing extension 'PFSR' +* Added magnet link extension to UCMD. +* Added NAT traversal extension 'NATT'. +* Added referral field to STA. +* Added upload queue field to STA. +* Added partial file sharing extension 'PFSR'. === Version 1.0.5 * Added locale field to INF -* Modified user parameter 'line' in 'UCMD' to handle multiple inputs. +* Modified user parameter 'line' in UCMD to handle multiple inputs. * Added hidden in enumeration of CT field in INF. * Added error code Invalid feature in STA. === Version 1.0.6 UNRELEASED -* Added KEYP extension for providing certificate substitution protection in ADCS. +* Added 'KEYP' extension for providing certificate substitution protection in ADCS. * Added note to signal DFAV in SUP. +* Added 'SUDP' extension for encryption of UDP traffic. == Extensions @@ -554,4 +555,34 @@ adcs://example.com:1234/?kp=SHA256/G3PJC4F4MQ5KOXGE2MPYJW5EW63IC6M7RN7OS663JLLWN2M5I6FQ ==== +=== SUDP - Encrypting UDP traffic + +This is an extension that allows UDP traffic to be encrypted. + +While assymetric encryption may be optimal in sense of security, a symmetric cipher will protect perfectly against outside adversaries given the hub-client connections is also running ADCS. New is that senders now create a random IV for their "request command" (e.g. searches) and send it along the "response command" (e.g. search result). + +Signal SUDP in SUP and in the INF's SU field. + +If a client signal support for SUDP in an ADCS hub, it may extend commands that will generate a response (e.g. SCH) with a KY-field as the encryption key. Clients shall only include the flag in ADCS hubs. + +[options="autowidth"] +|===== +|KY | 16 byte encryption key in BASE32. 128 bit AES encryption shall be used. +|===== + +For example, a SCH command will result in 29 Bytes of overhead ("<space>KY"+26 Bytes Base32 encoded key). + +A client that has a response for the command can now encrypt the response message by prepending 16 bytes of random data and afterwards encrypting it with AES/CBC/PKCS5Padding (Cipher/Blockmode/Padding) using 16 zero bytes as IV for CBC. + +In above scenario, the response would be a RES command. + +==== Decryption notes +In the case of searching, the searching client in return for decryption first has to guess which commands it receives are encrypted and which are not. It can do so for example by simply trying decryption with all currently active keys. If a key is wrong or the message was not encrypted, padding will fail and decryption is unsuccessful! + +Client may otherwise verify if the message is a U-type message, followed by a known command (and a space). If that is not the case, the client takes the most recent key and decrypts. If that succeed, the message is valid. + +There is a potential chance that decryption succeed with what is bad key. If that is the case, the client should verify that the data is not garbled. + +Note that in a normal circumstance, the client will most likely be using relatively few active keys. + // vim: set syntax=asciidoc: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2010-10-15 23:23:54
|
Revision: 57 http://adc.svn.sourceforge.net/adc/?rev=57&view=rev Author: ullner Date: 2010-10-15 23:23:48 +0000 (Fri, 15 Oct 2010) Log Message: ----------- Added TYPE for chat state notifications. Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2010-10-15 23:10:18 UTC (rev 56) +++ trunk/ADC-EXT.txt 2010-10-15 23:23:48 UTC (rev 57) @@ -46,6 +46,7 @@ * Added 'KEYP' extension for providing certificate substitution protection in ADCS. * Added note to signal DFAV in SUP. * Added 'SUDP' extension for encryption of UDP traffic. +* Added 'TYPE' extension for chat state notifications. == Extensions @@ -179,7 +180,7 @@ -pinger- HSUP ADBASE ADPING AD.. -hub- ISUP ADBASE ADPING AD.. -hub- ISID .. - -hub- IINF NIhubname DEcurrent\stopic VE.. HHmyhub.no-ip.org:555 WShttp://myhub.no-ip.org/ OWmyname UC2231 SS.. SF.. MS0 ML0 MC5000 + -hub- IINF NIhubname DEcurrent\stopic VE.. HHexample.org:555 WShttp://example.org/ OWmyname UC2231 SS.. SF.. MS0 ML0 MC5000 - (pinger may disconnect) ==== @@ -196,7 +197,7 @@ -hub- HSUP ADBASE ADPING AD.. -hublist- ISUP ADBASE ADPING AD.. -hublist- IINF NIhublist_name WShublist_address - -hub- HINF NIhubname DEcurrent\stopic VE.. HHmyhub.no-ip.org:555 WShttp://myhub.no-ip.org/ OWmyname UC2231 SS.. SF.. MS0 ML0 MC5000 + -hub- HINF NIhubname DEcurrent\stopic VE.. HHexample.org:555 WShttp://example.org/ OWmyname UC2231 SS.. SF.. MS0 ML0 MC5000 -( disconnect ) ==== @@ -556,7 +557,6 @@ ==== === SUDP - Encrypting UDP traffic - This is an extension that allows UDP traffic to be encrypted. While assymetric encryption may be optimal in sense of security, a symmetric cipher will protect perfectly against outside adversaries given the hub-client connections is also running ADCS. New is that senders now create a random IV for their "request command" (e.g. searches) and send it along the "response command" (e.g. search result). @@ -585,4 +585,28 @@ Note that in a normal circumstance, the client will most likely be using relatively few active keys. +=== TYPE - Typing notification +This extension adds a typing similar to Jabber's http://www.xmpp.org/extensions/xep-0085.html["Chat state notifications"]. + +Signal TYPE in SUP and the INF's SU field. + +==== TPN + TPN code + +Contexts: F, T + +States: NORMAL + +Command should be sent to the Reply-To user (PM field in MSG, if present). All TPN messages are sent when the event occur. + +Code values: +[options="autowidth"] +|===== +|00 |Gone |Closed tab, minimized window, etc |Should be sent. +|01 |Inactive |Changed tab, window became unfocused (but not closed or minimized), etc |Should be sent. +|02 |Paused |Paused typing. |Should be sent. +|10 |Active |Now in this tab, reading message and is actively participating in the chat session. |Must be sent. +|11 |Composing |Currently typing a message. |Must be sent. +|===== + // vim: set syntax=asciidoc: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2010-10-15 23:34:55
|
Revision: 58 http://adc.svn.sourceforge.net/adc/?rev=58&view=rev Author: ullner Date: 2010-10-15 23:34:49 +0000 (Fri, 15 Oct 2010) Log Message: ----------- Added FEED for RSS feeds Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2010-10-15 23:23:48 UTC (rev 57) +++ trunk/ADC-EXT.txt 2010-10-15 23:34:49 UTC (rev 58) @@ -47,6 +47,7 @@ * Added note to signal DFAV in SUP. * Added 'SUDP' extension for encryption of UDP traffic. * Added 'TYPE' extension for chat state notifications. +* Added 'FEED' extension for RSS feeds. == Extensions @@ -609,4 +610,48 @@ |11 |Composing |Currently typing a message. |Must be sent. |===== +=== FEED - RSS feeds +The extension adds RSS feed support. See http://en.wikipedia.org/wiki/RSS for a description. + +Signal FEED in SUP and the INF's SU field. + +==== RSS + RSS url + +Context: F, T + +States: NORMAL + +url is the URL to the feed. + +Additional fields: + +[options="autowidth"] +|===== +|CR |Name of the author. +|TI |Name of post. +|DE |Content summary of post. +|LI |Direct link to post +|FN |Feed name +|FN |Feed description +|DT |Time of publish. Specified in seconds since UNIX epoch. +|RM |1 = Remove feed from aggregator. +|===== + +==== Examples +Publish a new feed called 'Example_feed' and with a description 'description_of_feed': +==== +RSS http://example.com/rss FNExample_feed FNdescription_of_feed +==== + +Remove a feed: +==== +RSS http://example.com/rss RM1 +==== + +Publish a new post 'New_post' from 'John_Doe': +==== +RSS http://example.com/rss TINew_post DEdescription_of_post LIhttp://example.com/entries/new_post DT1253628000 CRJohn_Doe +==== + // vim: set syntax=asciidoc: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2010-10-29 20:55:14
|
Revision: 59 http://adc.svn.sourceforge.net/adc/?rev=59&view=rev Author: ullner Date: 2010-10-29 20:55:08 +0000 (Fri, 29 Oct 2010) Log Message: ----------- Added grouping of file extensions in SCH Added failover hub addresses to the hub's INF Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2010-10-15 23:34:49 UTC (rev 58) +++ trunk/ADC-EXT.txt 2010-10-29 20:55:08 UTC (rev 59) @@ -37,17 +37,19 @@ * Added partial file sharing extension 'PFSR'. === Version 1.0.5 -* Added locale field to INF +* Added locale field to INF. * Modified user parameter 'line' in UCMD to handle multiple inputs. * Added hidden in enumeration of CT field in INF. * Added error code Invalid feature in STA. === Version 1.0.6 UNRELEASED * Added 'KEYP' extension for providing certificate substitution protection in ADCS. -* Added note to signal DFAV in SUP. +* Added note to signal DFAV. * Added 'SUDP' extension for encryption of UDP traffic. * Added 'TYPE' extension for chat state notifications. * Added 'FEED' extension for RSS feeds. +* Added grouping of file extensions to SCH. +* Added failover hub addresses to the hub's INF. == Extensions @@ -208,7 +210,7 @@ === DFAV - Distributed Favorites The idea behind this extension is to generate a public hublist from the users favorite hublist. Implementations should separate between public and private hubs in the favorite hublist of an user, in order not to distribute private hubs where one can not connect to anyway. -Signal DFAV in SUP. +Signal DFAV in SUP and the INF's SU field. ==== GFA GFA @@ -272,7 +274,7 @@ |userCID |User CID |userSID |User SID |userXX |One for each flag on the user sent; for example, userI4 and userNI -|line:info |Prompts the user for input where 'info' is the displayed text description for the user input. 'info' can be used for multiple values (combobox etc), and should be structured as "general info/default selection/value0/value1/.../valueN". The general info can be viewed as the caption of the user input dialog. Default selection is an integer k which signifies the default value to be used. Note that 0<=k<=N and N>=1. Note that values are 0-index based. Values are separated with a forward slash ('/'). If a forward slash is part of a value, it should be escaped by using an additional forward slash ('//'). +|line:info |Prompts the user for input where 'info' is the displayed text description for the user input. 'info' can be used for multiple values (combobox etc), and should be structured as "general info/default selection/value0/value1/.../valueN". The general info can be viewed as the caption of the user input dialog. Default selection is an integer k which signifies the default value to be used. Note that N >= k >= 0 and N >= 1. Note that values are 0-index based. Values are separated with a forward slash ('/'). If a forward slash is part of a value, it should be escaped by using an additional forward slash ('//'). |===== File parameters @@ -582,7 +584,7 @@ Client may otherwise verify if the message is a U-type message, followed by a known command (and a space). If that is not the case, the client takes the most recent key and decrypts. If that succeed, the message is valid. -There is a potential chance that decryption succeed with what is bad key. If that is the case, the client should verify that the data is not garbled. +There is a potential chance that decryption succeed with what is a bad key. If that is the case, the client should verify that the data is not garbled. Note that in a normal circumstance, the client will most likely be using relatively few active keys. @@ -654,4 +656,39 @@ RSS http://example.com/rss TINew_post DEdescription_of_post LIhttp://example.com/entries/new_post DT1253628000 CRJohn_Doe ==== +=== GR - Grouping of file extensions in SCH +In BASE, clients add EX fields to SCH to denote which extension files should have. This can lead to a situation where the large bulk of extensions are of similar "type", e.g. audio files or documents. This extension intend to add a field GR which groups multiple extensions. In addition, the field RX shall be used for group-exclusion; if all extensions in a group but one are desired, field RX will be used to exclude those group items. + +Field GR values, where multiple groups are specified by adding the numbers together: +[options="autowidth"] +|===== +|1 |Audio |AIFF, APE, AU, FLAC, M4A, MID, MP2, MP3, MPC, OGG, RA, WAV, WMA +|2 |Compressed |7Z, ACE, ARJ, BZ2, LHA, LZH, RAR, TAR, TZ, Z, ZIP +|4 |Document |DOC, DOCX, HTM, HTML, NFO, ODF, ODP, ODS, ODT, PDF, PPT, PPTX, RTF, TXT, XLS, XLSX, XML, XPS +|8 |Executable |APP, BAT, CMD, COM, DLL, EXE, JAR, MSI, PS1, VBS, WSF +|16 |Picture |AI, BMP, CDR, EPS, GIF, ICO, IMG, JPEG, JPG, PCT, PCX, PICT, PNG, PS, PSD, PSP, RLE, SFW, TGA, TIF +|32 |Video |3GP, ASF, ASX, AVI, DIVX, FLV, MKV, MOV, MP4, MPEG, MPG, OGM, PXP, QT, RM, RMVB, SWF, VOB, WEBM, WMV +|===== + +Field RX: +[options="autowidth"] +|===== +|RX |Extensions in a group that are not desired. E.g., "GR1 RXMP3 RXWAV" would include all extensions in the 'audio' group except 'MP3' or 'WAV'. +|===== + +=== FO - Failover hub addresses +If a hub goes down, the client's only option is to keep re-trying the last known hub address. This extension will add a list of failover hub addresses, field FO, that the client can try to connect to, if the main hub address fail. + +Clients should decide the frequency of connection attempts (for the main hub as well as the failover addresses). The client should try connecting in the specified order. The client may decide what to do after the FO-list is exhausted, but recommended is to try to connect to the main hub and continue with the list as before. + +The client should display an appropriate message to the user that it has connected to a failover address. + +This extension should be implemented, at a minimum, for favourite hubs. If clients have any concerns about where a hub may redirect users to, or about storing the extra state information, then it may avoid implementing this for non-favourite hubs. + +Field FO in the hub's INF: +[options="autowidth"] +|===== +|FO |Failover hub addresses. Specify well formed ADC or ADCS URI addresses, with multiple addresses separated with a comma. Example; FOadc://example.com:1234,adc://example.net:1234 +|===== + // vim: set syntax=asciidoc: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2010-11-27 23:00:54
|
Revision: 70 http://adc.svn.sourceforge.net/adc/?rev=70&view=rev Author: ullner Date: 2010-11-27 23:00:48 +0000 (Sat, 27 Nov 2010) Log Message: ----------- ADCS... Fixes and changes here and there... Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2010-11-23 22:55:47 UTC (rev 69) +++ trunk/ADC-EXT.txt 2010-11-27 23:00:48 UTC (rev 70) @@ -1,6 +1,6 @@ = ADC Extensions Fredrik Ullner <ul...@gm...> -1.0.6, October 2010 +1.0.6, November 2010 == Abstract These are the official extensions to ADC. This document is based on the @@ -15,21 +15,26 @@ This version corresponds to $Revision$. === Version 1.0 +Jacek Sieka <arn...@gm...>, 2008-05-02 * Initial release created from original ADC 1.0 text. * Added 'PING' extension for hub pingers. === Version 1.0.1 +Fredrik Ullner <ul...@gm...>, 2009-08-04 * Added timestamp field to MSG. * Added 'DFAV' extension for distributing hub addresses. === Version 1.0.2 +Fredrik Ullner <ul...@gm...>, 2010-04-04 * Added 'UCMD' extension for user commands. === Version 1.0.3 +Fredrik Ullner <ul...@gm...>, 2010-05-26 * Removed optional keywords from UCMD. * Added 'BLOM' extension for bloom filters. === Version 1.0.4 +Fredrik Ullner <ul...@gm...>, 2010-06-29 * Added magnet link extension to UCMD. * Added NAT traversal extension 'NATT'. * Added referral field to STA. @@ -37,6 +42,7 @@ * Added partial file sharing extension 'PFSR'. === Version 1.0.5 +Fredrik Ullner <ul...@gm...>, 2010-09-16 * Added locale field to INF. * Modified user parameter 'line' in UCMD to handle multiple inputs. * Added hidden in enumeration of CT field in INF. @@ -48,9 +54,10 @@ * Added 'SUDP' extension for encryption of UDP traffic. * Added 'TYPE' extension for chat state notifications. * Added 'FEED' extension for RSS feeds. -* Added grouping of file extensions to SCH. +* Added 'SEGA' extension for grouping of file extensions in SCH. * Added failover hub addresses to the hub's INF. * Added free slots to the client's INF. +* Added 'ADCS' extension for encryption in ADC. == Extensions @@ -376,7 +383,7 @@ === NATT - NAT traversal NAT traversal allow two passive clients to connect to each other. For more information about NAT traversal, see https://dcpp.wordpress.com/2010/02/13/passive-mode-c-c-connections-and-nat-traversal[Passive Mode C-C Connections and NAT Traversal]. -If a client does not support TCP4 or TCP6, it will send an RCM to the client it is trying to connect to. If the other client also doesn't support TCP4 (or TCP6 correspondingly), NAT traversal may instead be used. The feature should be signalled in SUP as NATT. +If a client does not support TCP4 or TCP6, it will send an RCM to the client it is trying to connect to. If the other client also doesn't support TCP4 (or TCP6 correspondingly), NAT traversal may instead be used. Signal NATT in the INF's SU field. Do note that the hub must forward I4 or I6 for respective clients' INF. @@ -503,7 +510,7 @@ |48 |Invalid feature. Flag "FC" is the FOURCC of the invalid feature(s). If multiple features are invalid, use comma between the features (i.e. FCQWER,ASDF,ZXCV). |===== -=== KEYP - Certificate substitution protection in ADCS (Secure ADC) +=== KEYP - Certificate substitution protection in conjunction with ADCS This extension adds a simple, but secure way to protect against man-in-the-middle attacks against ADC when wrapped with TLS (1.0 or later). It does not require setting up a CA or signing keys, but that is still possible if desired. The extension introduces a keyprint parameter to the ADCS URI. The keyprint parameter is a hash of the server certificate. @@ -657,17 +664,19 @@ RSS http://example.com/rss TINew_post DEdescription_of_post LIhttp://example.com/entries/new_post DT1253628000 CRJohn_Doe ==== -=== GR - Grouping of file extensions in SCH +=== SEGA - Grouping of file extensions in SCH In BASE, clients add EX fields to SCH to denote which extension files should have. This can lead to a situation where the large bulk of extensions are of similar "type", e.g. audio files or documents. This extension intend to add a field GR which groups multiple extensions. In addition, the field RX shall be used for group-exclusion; if all extensions in a group but two are desired, field RX will be used to exclude those group items. +Signal SEGA in the INF's SU field for support of this extension. + Field GR values, where multiple groups are specified by adding the numbers together: [options="autowidth"] |===== -|1 |Audio |AIFF, APE, AU, FLAC, M4A, MID, MP2, MP3, MPC, OGG, RA, WAV, WMA +|1 |Audio |APE, FLAC, M4A, MID, MP3, MPC, OGG, RA, WAV, WMA |2 |Compressed |7Z, ACE, ARJ, BZ2, LHA, LZH, RAR, TAR, TZ, Z, ZIP |4 |Document |DOC, DOCX, HTM, HTML, NFO, ODF, ODP, ODS, ODT, PDF, PPT, PPTX, RTF, TXT, XLS, XLSX, XML, XPS |8 |Executable |APP, BAT, CMD, COM, DLL, EXE, JAR, MSI, PS1, VBS, WSF -|16 |Picture |AI, BMP, CDR, EPS, GIF, ICO, IMG, JPEG, JPG, PCT, PCX, PICT, PNG, PS, PSD, PSP, RLE, SFW, TGA, TIF +|16 |Picture |BMP, CDR, EPS, GIF, ICO, IMG, JPEG, JPG, PNG, PS, PSD, SFW, TGA, TIF, WEBP |32 |Video |3GP, ASF, ASX, AVI, DIVX, FLV, MKV, MOV, MP4, MPEG, MPG, OGM, PXP, QT, RM, RMVB, SWF, VOB, WEBM, WMV |===== @@ -701,4 +710,15 @@ |FS |Free slots available. |===== +=== ADCS - Symmetrical Encryption in ADC +ADCS is an extension that has the goal of adding the TLS/SSL layer just over the TCP layer and beneath the application layer (where ADC runs). This way, the ADC protocol remains unchanged while the connections are encrypted. The connecting party performs a TLS handshake immediately after the TCP connection is established. The ADC handshake is performed and once the TLS connection is established the ADC handshake proceeds as usual. + +Encrypted ADC connections can be established using a TLS tunnel, both for hub and for client connections. Certificates can be used to authenticate both hub and user, for example by making the hub the root CA, and only allow clients signed by the hub to connect. Ephemeral keys should be use to ensure forward secrecy when possible. A future extension or revision of this extension will provide ways to handle certificate based logins, who creates which certificates and who signs what, and all that is not specified in this revision. + +==== Client-Hub encryption +TLS client-hub connections can be initiated either by negotiating the feature "ADCS" on connection or by using the protocol adcs:// when initiating the connection. + +==== Client-Client encryption +TLS client-client connections can be established either by negotiating the feature "ADCS" on connection or by specifying "ADCS/1.0" in the CTM protocol field. Clients supporting encrypted connections must indicate this in the INF SU field with "ADCS". + // vim: set syntax=asciidoc: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2010-11-29 19:11:51
|
Revision: 71 http://adc.svn.sourceforge.net/adc/?rev=71&view=rev Author: ullner Date: 2010-11-29 19:11:45 +0000 (Mon, 29 Nov 2010) Log Message: ----------- Pushing ADC-Ext 1.0.6 * Added 'KEYP' extension for providing certificate substitution protection in ADCS. * Added note to signal DFAV. * Added 'SUDP' extension for encryption of UDP traffic. * Added 'TYPE' extension for chat state notifications. * Added 'FEED' extension for RSS feeds. * Added 'SEGA' extension for grouping of file extensions in SCH. * Added failover hub addresses to the hub's INF. * Added free slots to the client's INF. * Added 'ADCS' extension for encryption in ADC. Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2010-11-27 23:00:48 UTC (rev 70) +++ trunk/ADC-EXT.txt 2010-11-29 19:11:45 UTC (rev 71) @@ -48,7 +48,8 @@ * Added hidden in enumeration of CT field in INF. * Added error code Invalid feature in STA. -=== Version 1.0.6 UNRELEASED +=== Version 1.0.6 +Fredrik Ullner <ul...@gm...>, 2010-09-29 * Added 'KEYP' extension for providing certificate substitution protection in ADCS. * Added note to signal DFAV. * Added 'SUDP' extension for encryption of UDP traffic. @@ -673,7 +674,7 @@ [options="autowidth"] |===== |1 |Audio |APE, FLAC, M4A, MID, MP3, MPC, OGG, RA, WAV, WMA -|2 |Compressed |7Z, ACE, ARJ, BZ2, LHA, LZH, RAR, TAR, TZ, Z, ZIP +|2 |Compressed |7Z, ACE, ARJ, BZ2, GZ, LHA, LZH, RAR, TAR, TZ, Z, ZIP |4 |Document |DOC, DOCX, HTM, HTML, NFO, ODF, ODP, ODS, ODT, PDF, PPT, PPTX, RTF, TXT, XLS, XLSX, XML, XPS |8 |Executable |APP, BAT, CMD, COM, DLL, EXE, JAR, MSI, PS1, VBS, WSF |16 |Picture |BMP, CDR, EPS, GIF, ICO, IMG, JPEG, JPG, PNG, PS, PSD, SFW, TGA, TIF, WEBP This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2010-11-29 19:18:23
|
Revision: 72 http://adc.svn.sourceforge.net/adc/?rev=72&view=rev Author: ullner Date: 2010-11-29 19:18:17 +0000 (Mon, 29 Nov 2010) Log Message: ----------- Fix bad lines in history. Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2010-11-29 19:11:45 UTC (rev 71) +++ trunk/ADC-EXT.txt 2010-11-29 19:18:17 UTC (rev 72) @@ -16,25 +16,30 @@ === Version 1.0 Jacek Sieka <arn...@gm...>, 2008-05-02 + * Initial release created from original ADC 1.0 text. * Added 'PING' extension for hub pingers. === Version 1.0.1 Fredrik Ullner <ul...@gm...>, 2009-08-04 + * Added timestamp field to MSG. * Added 'DFAV' extension for distributing hub addresses. === Version 1.0.2 Fredrik Ullner <ul...@gm...>, 2010-04-04 + * Added 'UCMD' extension for user commands. === Version 1.0.3 Fredrik Ullner <ul...@gm...>, 2010-05-26 + * Removed optional keywords from UCMD. * Added 'BLOM' extension for bloom filters. === Version 1.0.4 Fredrik Ullner <ul...@gm...>, 2010-06-29 + * Added magnet link extension to UCMD. * Added NAT traversal extension 'NATT'. * Added referral field to STA. @@ -43,6 +48,7 @@ === Version 1.0.5 Fredrik Ullner <ul...@gm...>, 2010-09-16 + * Added locale field to INF. * Modified user parameter 'line' in UCMD to handle multiple inputs. * Added hidden in enumeration of CT field in INF. @@ -50,6 +56,7 @@ === Version 1.0.6 Fredrik Ullner <ul...@gm...>, 2010-09-29 + * Added 'KEYP' extension for providing certificate substitution protection in ADCS. * Added note to signal DFAV. * Added 'SUDP' extension for encryption of UDP traffic. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2011-07-19 18:57:50
|
Revision: 82 http://adc.svn.sourceforge.net/adc/?rev=82&view=rev Author: ullner Date: 2011-07-19 18:57:44 +0000 (Tue, 19 Jul 2011) Log Message: ----------- Pushing: * Added application vs version INF field Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2011-05-01 16:48:20 UTC (rev 81) +++ trunk/ADC-EXT.txt 2011-07-19 18:57:44 UTC (rev 82) @@ -1,6 +1,6 @@ = ADC Extensions Fredrik Ullner <ul...@gm...> -1.0.6, November 2010 +1.0.7, UNRELASED == Abstract These are the official extensions to ADC. This document is based on the @@ -67,6 +67,11 @@ * Added free slots to the client's INF. * Added 'ADCS' extension for encryption in ADC. +=== Version 1.0.7 +Fredrik Ullner <ul...@gm...>, UNRELASED + +* Added application and version separation in INF + == Extensions === TIGR - Tiger tree hash support @@ -729,4 +734,12 @@ ==== Client-Client encryption TLS client-client connections can be established either by negotiating the feature "ADCS" on connection or by specifying "ADCS/1.0" in the CTM protocol field. Clients supporting encrypted connections must indicate this in the INF SU field with "ADCS". +=== Application and version separation in INF +This extension adds the parameter 'AP' to the INF to signal application. The current parameter in BASE, VE, will be used for version signalling. + +Example: +==== +BINF BBBB APDCPLUSPLUS VE0.782 +==== + // vim: set syntax=asciidoc: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2011-07-19 19:01:50
|
Revision: 83 http://adc.svn.sourceforge.net/adc/?rev=83&view=rev Author: ullner Date: 2011-07-19 19:01:44 +0000 (Tue, 19 Jul 2011) Log Message: ----------- Revised: * TIGR should now correctly reference SCH and RES Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2011-07-19 18:57:44 UTC (rev 82) +++ trunk/ADC-EXT.txt 2011-07-19 19:01:44 UTC (rev 83) @@ -71,6 +71,7 @@ Fredrik Ullner <ul...@gm...>, UNRELASED * Added application and version separation in INF +* TIGR should now correctly reference SCH and RES == Extensions @@ -117,7 +118,7 @@ In the GET/GFI namespace, files are identified by "TTH/<base32-encoded tree root>". -In SCH and GFI, the following attributes are added: +In SCH and RES, the following attributes are added: [options="autowidth"] |===== This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <co...@us...> - 2012-02-26 13:26:42
|
Revision: 84 http://adc.svn.sourceforge.net/adc/?rev=84&view=rev Author: cologic Date: 2012-02-26 13:26:36 +0000 (Sun, 26 Feb 2012) Log Message: ----------- update dead THEX reference Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2011-07-19 19:01:44 UTC (rev 83) +++ trunk/ADC-EXT.txt 2012-02-26 13:26:36 UTC (rev 84) @@ -86,7 +86,8 @@ ==== TIGR for shared files All files shared by TIGR supporting clients must have been hashed using Merkle Hash trees, as defined by -http://www.open-content.net/specs/draft-jchapweske-thex-02.html. The Tiger +http://web.archive.org/web/20080316033726/http://www.open-content.net/specs/draft-jchapweske-thex-02.html. +The Tiger algorithm, as specified by http://www.cs.technion.ac.il/~biham/Reports/Tiger/, functions as the hash algorithm. A base segment size of 1024 bytes must be used when generating the tree, but clients may then discard parts of the tree This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2012-11-22 21:01:13
|
Revision: 90 http://adc.svn.sourceforge.net/adc/?rev=90&view=rev Author: ullner Date: 2012-11-22 21:01:03 +0000 (Thu, 22 Nov 2012) Log Message: ----------- Pushing ADC-Ext to 1.0.7 Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2012-11-20 20:47:54 UTC (rev 89) +++ trunk/ADC-EXT.txt 2012-11-22 21:01:03 UTC (rev 90) @@ -1,6 +1,6 @@ = ADC Extensions Fredrik Ullner <ul...@gm...> -1.0.7, UNRELASED +1.0.7, November 2012 == Abstract These are the official extensions to ADC. This document is based on the @@ -68,7 +68,7 @@ * Added 'ADCS' extension for encryption in ADC. === Version 1.0.7 -Fredrik Ullner <ul...@gm...>, UNRELASED +Fredrik Ullner <ul...@gm...>, 2012-11-22 * Added application and version separation in INF * TIGR should now correctly reference SCH and RES This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2013-02-23 19:04:36
|
Revision: 99 http://adc.svn.sourceforge.net/adc/?rev=99&view=rev Author: ullner Date: 2013-02-23 19:04:25 +0000 (Sat, 23 Feb 2013) Log Message: ----------- Improved 'NATT' documentation, as according to the original paper. Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2013-02-23 18:53:59 UTC (rev 98) +++ trunk/ADC-EXT.txt 2013-02-23 19:04:25 UTC (rev 99) @@ -1,6 +1,5 @@ = ADC Extensions -Fredrik Ullner <ul...@gm...> -1.0.7, November 2012 +1.0.8, UNRELEASED == Abstract These are the official extensions to ADC. This document is based on the @@ -73,6 +72,10 @@ * Added application and version separation in INF * TIGR should now correctly reference SCH and RES +=== Version 1.0.8, UNRELEASED + +* Improved 'NATT' documentation, as according to the original paper. + == Extensions === TIGR - Tiger tree hash support @@ -396,14 +399,16 @@ For test vectors, see the http://www.adcportal.com/wiki/index.php/Talk:BLOM[ADC wiki talk page]. === NATT - NAT traversal -NAT traversal allow two passive clients to connect to each other. For more information about NAT traversal, see https://dcpp.wordpress.com/2010/02/13/passive-mode-c-c-connections-and-nat-traversal[Passive Mode C-C Connections and NAT Traversal]. +NAT traversal allow two passive clients to connect to each other. This specification is based on the TCP hole punching algorithm described in footnoteref:[Peer-to-Peer Communication Across Network Address Translators, B. Ford and P. Srisuresh and and D. Kegel. "Peer-to-Peer Communication Across Network Address Translators". In USENIX Technical Conference 2005 - pages 179–192. Online version: http://www.brynosaurus.com/pub/net/p2pnat/]. If a client does not support TCP4 or TCP6, it will send an RCM to the client it is trying to connect to. If the other client also doesn't support TCP4 (or TCP6 correspondingly), NAT traversal may instead be used. Signal NATT in the INF's SU field. Do note that the hub must forward I4 or I6 for respective clients' INF. +An endpoint is the tuple of IP and port. The "private endpoint port" refers to the outbound port to the connected hub, as seen by the client. Each client must listen for incoming connections on this port. Note that this protocol extension uses only this port for the TCP hole punching, the use of the "public endpoint port" as specified in footnoteref:[Peer-to-Peer Communication Across Network Address Translators] is not supported. + ==== BASE RCM updates -When receiving an RCM and the client does not support TCP4 or TCP6, and if NAT-T is supported in the remote client, a NAT command should be sent repeating the protocol and token. The port shall be the outbound port to the connected hub. +When receiving an RCM and the client does not support TCP4 or TCP6, and if NAT-T is supported in the remote client, a NAT command should be sent repeating the protocol and token. The port shall be the private endpoint port to the connected hub. ==== NAT NAT protocol port token @@ -412,7 +417,7 @@ States: NORMAL -Upon receiving this, try and connect to the specified port. An RNT command should be sent repeating the protocol and token. The port shall be the outbound port to the connected hub. Upon receiving this, try and connect to the specified port. +Upon receiving this, try and connect to the specified port. An RNT command should be sent repeating the protocol and token. The port shall be the private endpoint. Upon receiving this, try and connect to the specified port. ==== RNT RNT protocol port token @@ -424,7 +429,7 @@ Upon receiving this, try and connect to the specified port. ==== Example -Client A is connected to hub A with the outbound port 1000 and client B is connected to hub A with the outbound port 2000. Client A has the SID AAAA and client B has the SID BBBB. +Client A is connected to hub A with the private endpoint 1000 and client B is connected to hub A with the private endpoint 2000. Client A has the SID AAAA and client B has the SID BBBB. ==== Client A: DRCM AAAA BBBB ADC/1.0 foobar This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2013-02-23 19:08:57
|
Revision: 100 http://adc.svn.sourceforge.net/adc/?rev=100&view=rev Author: ullner Date: 2013-02-23 19:08:45 +0000 (Sat, 23 Feb 2013) Log Message: ----------- Changed the order of the version history to be newest to oldest, as in ADC.txt. Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2013-02-23 19:04:25 UTC (rev 99) +++ trunk/ADC-EXT.txt 2013-02-23 19:08:45 UTC (rev 100) @@ -13,28 +13,36 @@ This version corresponds to $Revision$. -=== Version 1.0 -Jacek Sieka <arn...@gm...>, 2008-05-02 +=== Version 1.0.8, UNRELEASED -* Initial release created from original ADC 1.0 text. -* Added 'PING' extension for hub pingers. +* Improved 'NATT' documentation, as according to the original paper. -=== Version 1.0.1 -Fredrik Ullner <ul...@gm...>, 2009-08-04 +=== Version 1.0.7 +Fredrik Ullner <ul...@gm...>, 2012-11-22 -* Added timestamp field to MSG. -* Added 'DFAV' extension for distributing hub addresses. +* Added application and version separation in INF +* TIGR should now correctly reference SCH and RES -=== Version 1.0.2 -Fredrik Ullner <ul...@gm...>, 2010-04-04 +=== Version 1.0.6 +Fredrik Ullner <ul...@gm...>, 2010-09-29 -* Added 'UCMD' extension for user commands. +* Added 'KEYP' extension for providing certificate substitution protection in ADCS. +* Added note to signal DFAV. +* Added 'SUDP' extension for encryption of UDP traffic. +* Added 'TYPE' extension for chat state notifications. +* Added 'FEED' extension for RSS feeds. +* Added 'SEGA' extension for grouping of file extensions in SCH. +* Added failover hub addresses to the hub's INF. +* Added free slots to the client's INF. +* Added 'ADCS' extension for encryption in ADC. -=== Version 1.0.3 -Fredrik Ullner <ul...@gm...>, 2010-05-26 +=== Version 1.0.5 +Fredrik Ullner <ul...@gm...>, 2010-09-16 -* Removed optional keywords from UCMD. -* Added 'BLOM' extension for bloom filters. +* Added locale field to INF. +* Modified user parameter 'line' in UCMD to handle multiple inputs. +* Added hidden in enumeration of CT field in INF. +* Added error code Invalid feature in STA. === Version 1.0.4 Fredrik Ullner <ul...@gm...>, 2010-06-29 @@ -45,36 +53,28 @@ * Added upload queue field to STA. * Added partial file sharing extension 'PFSR'. -=== Version 1.0.5 -Fredrik Ullner <ul...@gm...>, 2010-09-16 +=== Version 1.0.3 +Fredrik Ullner <ul...@gm...>, 2010-05-26 -* Added locale field to INF. -* Modified user parameter 'line' in UCMD to handle multiple inputs. -* Added hidden in enumeration of CT field in INF. -* Added error code Invalid feature in STA. +* Removed optional keywords from UCMD. +* Added 'BLOM' extension for bloom filters. -=== Version 1.0.6 -Fredrik Ullner <ul...@gm...>, 2010-09-29 +=== Version 1.0.2 +Fredrik Ullner <ul...@gm...>, 2010-04-04 -* Added 'KEYP' extension for providing certificate substitution protection in ADCS. -* Added note to signal DFAV. -* Added 'SUDP' extension for encryption of UDP traffic. -* Added 'TYPE' extension for chat state notifications. -* Added 'FEED' extension for RSS feeds. -* Added 'SEGA' extension for grouping of file extensions in SCH. -* Added failover hub addresses to the hub's INF. -* Added free slots to the client's INF. -* Added 'ADCS' extension for encryption in ADC. +* Added 'UCMD' extension for user commands. -=== Version 1.0.7 -Fredrik Ullner <ul...@gm...>, 2012-11-22 +=== Version 1.0.1 +Fredrik Ullner <ul...@gm...>, 2009-08-04 -* Added application and version separation in INF -* TIGR should now correctly reference SCH and RES +* Added timestamp field to MSG. +* Added 'DFAV' extension for distributing hub addresses. -=== Version 1.0.8, UNRELEASED +=== Version 1.0 +Jacek Sieka <arn...@gm...>, 2008-05-02 -* Improved 'NATT' documentation, as according to the original paper. +* Initial release created from original ADC 1.0 text. +* Added 'PING' extension for hub pingers. == Extensions This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2013-06-17 19:32:19
|
Revision: 105 http://sourceforge.net/p/adc/code/105 Author: ullner Date: 2013-06-17 19:32:16 +0000 (Mon, 17 Jun 2013) Log Message: ----------- Fixed examples in ONID Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2013-06-17 19:25:35 UTC (rev 104) +++ trunk/ADC-EXT.txt 2013-06-17 19:32:16 UTC (rev 105) @@ -790,10 +790,13 @@ Any party MAY at any time send an OIR response without any prior request. ==== Examples -[options="autowidth"] +[options="header, autowidth"] |===== -|BOID BBBB google EMe...@gm... -|BOID BBBB lol SUtest SEkr +|Command |Description +|BOID BBBB LoL SUtest SEkr |A notification of League of Legends service with the summoner name "test" in the region "Korea". +|BOID BBBB LoL SUtest2 |An updated notification of the League of Legends service with the new summoner name "test2". +|BOIR BBBB Google EMe...@gm... |A notification of the Google service with the e-mail "ex...@gm...". +|BOIR BBBB mslive EMe...@ho... |A notification of the Microsoft Live service with the e-mail "ex...@ho...". |===== // vim: set syntax=asciidoc: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2013-06-17 19:56:02
|
Revision: 106 http://sourceforge.net/p/adc/code/106 Author: ullner Date: 2013-06-17 19:55:59 +0000 (Mon, 17 Jun 2013) Log Message: ----------- Some more examples for ONID. Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2013-06-17 19:32:16 UTC (rev 105) +++ trunk/ADC-EXT.txt 2013-06-17 19:55:59 UTC (rev 106) @@ -797,6 +797,8 @@ |BOID BBBB LoL SUtest2 |An updated notification of the League of Legends service with the new summoner name "test2". |BOIR BBBB Google EMe...@gm... |A notification of the Google service with the e-mail "ex...@gm...". |BOIR BBBB mslive EMe...@ho... |A notification of the Microsoft Live service with the e-mail "ex...@ho...". +|BOIR BBBB mslive |A request for notifications of the Microsoft Live service. +|DOIR CCCC BBBB mslive EMe...@li... |A response for the notification request from BBBB. |===== // vim: set syntax=asciidoc: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2013-06-30 13:32:34
|
Revision: 108 http://sourceforge.net/p/adc/code/108 Author: ullner Date: 2013-06-30 13:32:30 +0000 (Sun, 30 Jun 2013) Log Message: ----------- Added XML schema information for TIGR. Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2013-06-30 13:08:29 UTC (rev 107) +++ trunk/ADC-EXT.txt 2013-06-30 13:32:30 UTC (rev 108) @@ -17,6 +17,7 @@ * Improved 'NATT' documentation, as according to the original paper. * Added 'ONID' extension to provide online service integration. +* TIGR now specifies the changes done to the file list. === Version 1.0.7 Fredrik Ullner <ul...@gm...>, 2012-11-22 @@ -131,6 +132,23 @@ |TD |Tree depth, index of the highest level of tree data available, root-only = 0, first level (2 leaves) = 1, second level = 2, etc... |===== +The following changes are done to the file list XML schema: + +A new type is defined with an appropriate attribute: +---- +<xs:simpleType name="tthType"> + <xs:restriction base="xs:string"> + <xs:pattern value="[A-Za-z2-7]{39}" /> + </xs:restriction> +</xs:simpleType> +<xs:attribute name="TTH" type="tthType" /> +---- + +The attribute is then referenced in the File element: +---- +<xs:attribute ref="TTH" use="required" /> +---- + === BZIP - File list compressed with bzip2 This extension adds a special file "files.xml.bz2" in the unnamed root of the share which contains "files.xml" compressed with bzip2 1.0.3+ (www.bzip.org). This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2013-06-30 13:54:33
|
Revision: 110 http://sourceforge.net/p/adc/code/110 Author: ullner Date: 2013-06-30 13:54:31 +0000 (Sun, 30 Jun 2013) Log Message: ----------- Added error code 'ADCS transfers are required' in STA. Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2013-06-30 13:47:09 UTC (rev 109) +++ trunk/ADC-EXT.txt 2013-06-30 13:54:31 UTC (rev 110) @@ -18,6 +18,7 @@ * Improved 'NATT' documentation, as according to the original paper. * Added 'ONID' extension to provide online service integration. * TIGR now specifies the changes done to the file list. +* Added error code 'ADCS transfers are required' in STA. === Version 1.0.7 Fredrik Ullner <ul...@gm...>, 2012-11-22 @@ -819,4 +820,12 @@ |DOIR CCCC BBBB mslive EMe...@li... |A response for the notification request from BBBB. |===== +=== "ADCS transfers are required" error code +This extension will add "ADCS transfers are required" as error code in STA. A client that has chosen to only allow encrypted transfers (with ADCS) should send this when a user without ADCS support tries to initiate a connection (via CTM/RCM etc). + +[options="autowidth"] +|===== +|62 |ADCS transfers are required. Flag "TO" is the token in the transfer request. +|===== + // vim: set syntax=asciidoc: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2013-07-01 20:53:54
|
Revision: 113 http://sourceforge.net/p/adc/code/113 Author: ullner Date: 2013-07-01 20:53:51 +0000 (Mon, 01 Jul 2013) Log Message: ----------- * Added 'ASCH' extension for extended searching capability. * Added 'Date' attribute in file list for files and directories. * Added 'Size' attribute in file list for directories. * Added 'Children' attribute in file list for directories. Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2013-06-30 14:41:43 UTC (rev 112) +++ trunk/ADC-EXT.txt 2013-07-01 20:53:51 UTC (rev 113) @@ -19,6 +19,10 @@ * Added 'ONID' extension to provide online service integration. * TIGR now specifies the changes done to the file list. * Added error code 'ADCS transfers are required' in STA. +* Added 'ASCH' extension for extended searching capability. +* Added 'Date' attribute in file list for files and directories. +* Added 'Size' attribute in file list for directories. +* Added 'Children' attribute in file list for directories. === Version 1.0.7 Fredrik Ullner <ul...@gm...>, 2012-11-22 @@ -828,4 +832,110 @@ |62 |ADCS transfers are required. Flag "TO" is the token in the transfer request. |===== +=== ASCH - Extended searching capability + +This extension will increase searching capability in BASE. The extension also imply that searching in partial file lists are now easier. + +Signal ASCH in the INF's SU field. + +The SCH command is extended to request a response (STA) indicating how many search results were sent. This will allow clients to indicate that all search results have been received (and can aptly indicate as such to the user). STA severity 0 and code 00 should be used. + +Additional SCH fields: +[options="autowidth"] +|===== +|MT |Matching options. Only applies to search terms (AD) and not excluded terms (EX). +|PP |Indicating whether the responding party should send the parent path of the matching item. For files the result should be for the containing files and for directories the result is for the parent directory. The responder should check that only one result is sent for each directory. This is useful when searching in a partial list, so the requester can then download the partial list from a correct path and locate the matching items in the directory by itself (less search results to send). +|OT |Older than. Newest possible (absolute) time for a responded item. Time specified is seconds since the Unix epoch. +|NT |Newer than. Oldest possible (absolute) time for a responded item. Time specified is seconds since the Unix epoch. +|MR |Maximum number of wanted results (implementations should be conservative in which message type). The responder may also choose to send less results if the requested count isn't reasonable. +|PA |Path in the share where to search from (relative to the unnamed root). This only makes sense for certain message types. +|RE |Require a STA reply. This only makes sense for certain message types. +|===== + +MT field: +[options="autowidth"] +|===== +|1 |Match full path (partial match). +|2 |Match file/directory name only (partial match). +|3 |Match file/directory name only (exact match). +|===== + +PP field: +[options="autowidth"] +|===== +|1 |Send parent path. +|===== + +RE field: +[options="autowidth"] +|===== +|1 |Require a reply. +|===== + +Additional RES fields: +[options="autowidth"] +|===== +|FI |Number of files in a directory (recursive, directory search results only). +|FO |Numbers of folders in a directory (recursive, directory search results only). +|DA |Modified date of a file or directory. Time specified is seconds since the Unix epoch. +|===== + +Additional STA fields: +[options="autowidth"] +|===== +|FC |The FCC of the search command (e.g. BSCH, DSCH). +|TO |Search token. +|RC |Number of results sent. The client receiving the search should still send the STA with a 0 here, in the event that there were not hits to the aformentioned search. +|===== + +=== 'Date' attribute in file list for files and directories +This extension adds a 'Date' attribute to files and directories in a file list. The attribute is the last modified date of the file or directory. Time specified is seconds since the Unix epoch. + +Implementations should be conservative when it includes the Date attribute. Only including the attribute in partial file lists can decrease overall network load requirements. + +The following changes are done to the file list XML schema: + +A new attribute is defined: +---- +<xs:attribute name="Date" type="xs:unsignedLong" /> +---- + +The attribute is then referenced in the File and Directory element: +---- +<xs:attribute ref="Date" use="optional" /> +---- + +=== 'Size' attribute in file list for directories +This extension adds a 'Size' attribute to directories in a file list. The attribute is the size of the directory as indicated in a RES. + +Implementations should be conservative when it includes the Size attribute. + +This attribute only makes sense in partial file lists (as it can be calculated in full lists). + +The following change is done to the file list XML schema: + +The Size attribute from BASE is referenced in the Directory element: +---- +<xs:attribute ref="Size" use="optional" /> +---- + +=== 'Children' attribute in file list for directories +This extension adds a 'Children' attribute to directories in a file list. The attribute indicates whether there are additional sub-directories. + +Value '1' indicate that there are children. + +This attribute only makes sense in partial file lists. + +The following changes are done to the file list XML schema: + +A new attribute is defined: +---- +<xs:attribute name="Children" type="zeroOne" /> +---- + +The attribute is then referenced in the Directory element: +---- +<xs:attribute ref="Children" use="optional" /> +---- + // vim: set syntax=asciidoc: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2013-12-20 16:05:17
|
Revision: 114 http://sourceforge.net/p/adc/code/114 Author: ullner Date: 2013-12-20 16:05:15 +0000 (Fri, 20 Dec 2013) Log Message: ----------- Added downloaded progress report for uploaders in GET. Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2013-07-01 20:53:51 UTC (rev 113) +++ trunk/ADC-EXT.txt 2013-12-20 16:05:15 UTC (rev 114) @@ -23,6 +23,7 @@ * Added 'Date' attribute in file list for files and directories. * Added 'Size' attribute in file list for directories. * Added 'Children' attribute in file list for directories. +* Added downloaded progress report for uploaders in GET. === Version 1.0.7 Fredrik Ullner <ul...@gm...>, 2012-11-22 @@ -938,4 +939,13 @@ <xs:attribute ref="Children" use="optional" /> ---- +=== Downloaded progress report for uploaders in GET +The info in the current GET command does not permit displaying relative upload progress for the uploading party (for the whole file). + +To address this, this extension will add an additional field to the GET command for current downloaded (and verified) bytes before the request has been sent. While still not entirely accurate with this information, the uploader can see how much of the file the requesting party actually has instead of either assuming that the requester has the file up to the start position of the request or being forced to only show the progress of the currently requested part of the file. There is potentially a slight delay in the reporting of this info in scenarios where more than one segment of a file is simultaneously requested (by the downloader) and the uploader still lacks information about how many other sources the file is being downloaded from. +[options="autowidth"] +|===== +|DB |Downloaded (and verified) bytes. +|===== + // vim: set syntax=asciidoc: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |