diff --git a/xep-0136.xml b/xep-0136.xml index 4a9f79ef..015a8ac2 100644 --- a/xep-0136.xml +++ b/xep-0136.xml @@ -36,6 +36,12 @@ &stpeter; &infiniti; + + 0.10 + 2006-10-04 + ip +

Added auto-archiving warning for legacy clients; corrected examples

+
0.9 2006-10-02 @@ -105,16 +111,14 @@

A client discovers whether its server supports this protocol using &xep0030;.

+ ]]>

For each feature defined herein, if the server supports that feature it MUST return a <feature/> element with the 'var' attribute set to 'http://jabber.org/protocol/archive#name', where "name" is "auto" for the Automated Archiving feature, "encrypt" for the server-side encryption feature (see Automated Archiving), "manage" for the Archive Management feature, "manual" for the Manual Archiving feature, or "pref" for the Archiving Preferences feature.

+ ... @@ -142,7 +146,7 @@

In order to determine its user's current Save Mode(s) and OTR Mode(s), a client sends an empty <pref/> element to its server:

+ ]]> @@ -185,7 +189,7 @@

A client may set the default Modes:

+ @@ -218,7 +222,7 @@

A client may use a similar protocol to set the Modes for a particular contact or domain of contacts (bare JID, full JID or domain). Note: It is STRONGLY RECOMMENDED for the value of the 'jid' attribute to be a bare JID (&BAREJID;).

+ @@ -244,7 +248,7 @@
+ @@ -310,7 +314,7 @@

The collection of messages and notes to be uploaded are encapsulated in the <store/> element.

+

If the server cannot service a store request because the collection is too large then it MUST return a ¬acceptable; error:

+ @@ -339,7 +343,7 @@

The client MAY specify an absolute time for any message by providing a longer 'utc' attribute (which MUST be UTC and adhere to the DateTime format specified in Jabber Date and Time Profiles) instead of a 'secs' attribute. The absolute time MAY be before the start time of the collection:

+

A client MAY archive messages that it receives from &xep0045; rooms. The 'with' attribute MUST be the bare JID of the room. The client MUST include a 'name' attribute for each <from/> element to specify the room nickname of the message sender:

+ @@ -368,7 +372,7 @@

If the client specifies a new value for the 'subject' attribute of any existing collection then the server MUST update the existing value. Note: The client cannot specify new values for the 'with' or 'start' attributes. The only way to change these values is to delete the collection (see Removing a Collection) and then create a new one.

+ When appending <EncryptedData/> elements to a collection, the client MAY reuse a symmetric KEY that has already been uploaded to the collection. In this case the client SHOULD NOT resend <EncryptedKey/> elements.

Note: A collection that contains <EncryptedData/> or <EncryptedKey/> elements MUST NOT contain <to/> or <from/> or <note/> elements.

+ -

A client MAY enable or disable automatic archiving for messages sent over its stream. Automatic archiving MUST default to disabled for each new stream that is opened, unless administrator policies require that every message is logged automatically (see Security Considerations). Once automatic archiving is switched on then the server MUST automatically archive messages only according to the user's general Archiving Preferences.

-

Note: Both parties to an ESession (see &xep0116;) MUST either disable archiving or use an archiving method other than automatic, since ESession decryption keys are short-lived - making it impossible to decrypt automatically archived messages.

+

If server administration policies require that every message is logged automatically (see Security Considerations) then:

+
    +
  • The server MUST enable automatic archiving when each stream is opened.
  • +
  • Clients MUST NOT be allowed to disable automatic archiving.
  • +
  • Automatic archiving MUST NOT be subject to users' Archiving Preferences.
  • +
  • If the server has not received a request from a client for its user's archiving preferences (see Determining Preferences) within a few seconds of authenticating the client then the server MUST send a warning message to the client:
  • +
+ + WARNING: All messages that you send or + receive will be recorded by the server. + + ]]> +

Otherwise:

+
    +
  • Automatic archiving MUST default to disabled when each stream is opened.
  • +
  • A client MAY enable or disable automatic archiving for messages sent over its stream at any time. Note: If the client switches off all auto-archiving then the server MUST close and store all active collections.
  • +
  • Once automatic archiving is switched on then the server MUST automatically archive messages only according to the user's Archiving Preferences.
  • +
  • Note: Both parties to an ESession (see &xep0116;) SHOULD either disable archiving or use an archiving method other than automatic, since ESession decryption keys are short-lived - making it impossible to decrypt automatically archived messages.
  • +
]]>
-

If the client switches off all auto-archiving then the server MUST close and store all active collections.

Servers (and clients) SHOULD support the encryption (and decryption) of automatically-archived collections (although early implementations of this protocol MAY prefer to defer encryption and decryption to later versions).

@@ -480,7 +501,7 @@

If the 'with' attribute is omitted then collections with any JID are returned. If only 'start' is specified then all collections on or after that date should be returned. If only 'end' is specified then all collections prior to that date should be returned.

The client SHOULD use Result Set Management to limit the number of collections returned by the server in a single stanza, taking care not to request a page of collections that is so big it might exceed karma limits.

+ @@ -490,7 +511,7 @@ ]]> + ]]> + @@ -513,7 +534,7 @@ ]]>

The server MUST list the collections (empty <store/> elements including all attributes) in chronological order when responding to any request. If the collection contains <EncryptedData/> or <EncryptedKey/> elements then the 'crypt' attribute of the <store/> element MUST be set to 'true':

+ Note: In accordance with Result Set Management, the client MUST assume the unique IDs it receives in the <first/> and <last/> elements are opaque. Servers MAY adopt a unique ID format other than the one suggested in the example above.

If no collections correspond to the request the server MUST return an empty <list/> element:

+ ]]> + @@ -556,7 +577,7 @@

To request a page of messages from a collection the client sends a <retrieve/> element. The 'with' and 'start' attributes specify the participating full JID and the start time (see Jabber Date and Time Profiles). Both attributes MUST be included to uniquely identify a collection:

The client SHOULD use Result Set Management to limit the number of messages returned by the server in a single stanza, taking care not to request a page of messages that is so big it might exceed karma limits.

+ @@ -567,7 +588,7 @@ ]]> + Note: In accordance with Result Set Management, the client MUST assume the unique IDs it receives in the <first/> and <last/> elements are opaque. Servers MAY adopt a unique ID format other than the one suggested in the example above.

If the specified collection does not exist then the server MUST return an ¬found; error:

+ + + + 100 + + @@ -597,7 +625,7 @@ ]]>

If the requested collection is empty the server MUST return an empty <store/> element:

+ ]]> + @@ -618,7 +646,7 @@ ]]>

The items in encrypted collections are typically larger - since each <EncryptedData/> element typically contains many messages. So the client SHOULD take even more care not to request a page of <EncryptedData/> elements that is so big it might exceed karma limits.

+

In addition to the requested <EncryptedData/> elements, the server MUST return all the <EncryptedKey/> elements that it possesses for the user whose symmetric key name (wrapped in its <CarriedKeyName/> child) is referenced by the <KeyName/> child of the <KeyInfo/> child of any of the <EncryptedData/> elements in the returned page.

+

The client MAY limit the number of <EncryptedKey/> elements that it receives by specifying the name of one or more public keys for which it holds the associated private keys. The name of each public key MUST be wrapped in a <KeyName/> element.

+ @@ -713,7 +741,7 @@

To request the removal of a single collection the client sends an empty <remove/> element. The 'with' (full JID) and 'start' attributes MUST be included to uniquely identify the collection.

+ @@ -721,7 +749,7 @@ ]]>

The client may remove several collections at once. The 'start' and 'end' elements MAY be specified to indicate a date range. The 'with' attribute MAY be a full JID, bare JID or domain.

+ If the 'with' attribute is omitted then collections with any JID are removed.

If the end date is in the future then then all collections after the start date are removed.

+ @@ -739,34 +767,37 @@ ]]>

If the start date is before all the collections in the archive then all collections prior to the end date are removed.

+ ]]> + ]]>

If the value of the optional 'open' attribute is set to 'true' then only collections that are currently being recorded automatically by the server (see Automated Archiving) are removed.

+ ]]> + ]]>

If the specified collection (or collections) do not exist then the server MUST return an ¬found; error:

+ + @@ -778,7 +809,7 @@

If a private key becomes obsolete or compromised then it may be necessary for a client to replace all <EncryptedKey/> elements that contain symmetric keys encrypted with the public key that is associated with the obsolete private key.

The client first requests a list of the affected <EncryptedKey/> elements from all collections by sending a <keys/> element to the server:

+ romeoPublicKey1fingerprint @@ -789,7 +820,7 @@ ]]>

The server MUST return only <EncryptedKey/> elements whose symmetric encryption key is encrypted with the obsolete public key specified in the <KeyName/> child of the request:

+ @@ -823,7 +854,7 @@ ]]>

The client decrypts each symmetric key with the obsolete private key and encrypts it again with the new public key. The client then wraps each symmetric key in an <EncryptedKey/> element and asks the server to store it in its associated collection on the server (see Encryption):

+ @@ -850,8 +881,8 @@ . ]]>

Finally, the client asks the server to delete from each collection all <EncryptedKey/> elements whose symmetric encryption key is encrypted with the obsolete public key:

- + @@ -869,7 +900,7 @@

The client MUST request each page of the list using the Result Set Management protocol embeded in a <modified/> element. The content of the <after/> element SHOULD be a UTC time (see Jabber Date and Time Profiles) that it has previously received from the server (see below). When synchronizing for the first time, the client MAY choose a suitable time for the first page request (e.g. 1970-01-01T00:00:00Z).

+ 50 @@ -880,7 +911,7 @@ ]]>

The server MUST return the changed collections in the chronological order that they were changed (most recent last). If a collection has been modified, created or removed after the time specified by the <after/> element then the server MUST include it in the returned result set page of collections (unless the specified maximum page size would be exceeded). Each <changed/> or <removed/> collection element (for modified/created, or removed collections respectively) in the returned list MUST include only 'with' and 'start' attribues. The server MUST set the content of the <last/> element to the UTC time (see Jabber Date and Time Profiles) that the last collection on the page was modified.

+ @@ -997,7 +1028,7 @@ - + @@ -1048,7 +1079,7 @@ - + @@ -1089,7 +1120,7 @@ - + @@ -1098,7 +1129,7 @@ - + @@ -1130,7 +1161,7 @@ - + @@ -1183,7 +1214,7 @@ - + @@ -1196,7 +1227,7 @@ - + @@ -1208,7 +1239,7 @@ - +