[ticker-dev] Ticker group format document
Phillips, Matthew
Matthew.Phillips at dsto.defence.gov.au
Fri Sep 24 01:18:39 CDT 2004
Hi all,
I've put together a short technical note describing the proposed ticker group exchange format I was meandering on about earlier.
Comments, etc welcome. Although posting this on a Friday afternoon may not be the best plan if I want anyone to actually read it ;)
Matthew.
-------------- next part --------------
----------------------------------------------------------------------
Elvin Ticker Group Subscription Format
----------------------------------------------------------------------
Purpose of This Document
----------------------------------------------------------------------
This document provides a brief description of the proposed format
for exchanging ticker group subscriptions between tickertape
messaging clients.
The format is designed to allow interchange of group subscriptions
amongst clients, either via ticker attachments or other textual
means such as clipboard copy and paste. The format encodes not only
instructions for subscribing to the content, but also any required
security constraints.
Overview
----------------------------------------------------------------------
A ticker group subscription is described by a "group" XML
element. Three sub-types of group are defined: "chat", "news" and
"custom". The first two correspond to the two major ticker message
formats: inter-person chat (ticker v1.0/v3.0) and news (NNTP or web
news).
The "custom" type can select from news and/or chat channels and is
specified via an Elvin subscription expression. The subscription
will be appended with (using "&&") a expression that ensures
selection of valid chat or news messages (from the client's point of
view), so the subscription may be thought of as a sub-selection from
all news and/or chat messages.
MIME type
----------------------------------------------------------------------
The proposed MIME type for ticker groups is:
application/x-elvin-tickergroup
Examples
----------------------------------------------------------------------
A "chat" format group named "Babble"
<group version="1.0" name="Babble" type="chat" />
--------------------------------------------------------------------
A "news" format group named "CNN"
<group version="1.0" name="CNN" type="news" />
--------------------------------------------------------------------
A "chat" format group called "Private Chat" with security attributes
<group version="1.0" name="Private Chat" type="chat"
defaultSecure="true" allowInsecure="false">
<keys>
<key version="1.0" name="Private Chat" access="shared">
65445e420820795b54700d6158772f0650401854
</key>
</keys>
</group>
--------------------------------------------------------------------
A custom group
<group version="1.0" name="foobar" type="custom">
contains (Message, "foobar") ||
equals (From, "frodo")
</group>
Details
----------------------------------------------------------------------
A group element has three required attributes:
version: The group format version. Currently must equal "1.0".
name: The group's channel name.
type: One of "chat", "news" or "custom".
Optional security attributes:
defaultSecure: Boolean ("true" or "false"). If true, the client
should default to sending securely.
allowInsecure: Allow send/receipt of insecure messages. If false,
the client should never accept or display a message
that wasn't received securely.
Security keys:
A group may have an optional "keys" element containing one or more
XML "key" elements. These specify security keys to be associated
with the group and used to restrict receivership of messages.
While there is already an agreed specification for exchanging
Elvin security keys, this format is not amenable to nesting within
XML. However, the XML key format proposed here is a straighforward
translation of existing format into XML representation.
For example, a key in the current format might look like:
Version: 1.0
Name: Shhhh
Access: Private
Key: 65445e420820795b54700d6158772f0650401854
The XML representation of this is:
<key version="1.0" name="Shhhh" access="private">
65445e420820795b54700d6158772f0650401854
</key>
An example group using this key:
<group version="1.0" name="test"
allowInsecure="false" defaultSecure="true" type="chat">
<keys>
<key version="1.0" name="Shhhh" access="private">
65445e420820795b54700d6158772f0650401854
</key>
</keys>
</group>
Notes
----------------------------------------------------------------------
* Extended attributes. Clients should attach any client-specific
extended information they wish to add using the "x-" naming
scheme commonly used in other formats of this type.
For example:
<group version="1.0" name="CNN" type="news" x-icon="news.gif" />
* Embedded key security. This format allows private keys to be
embedded in group subscriptions, which is something that the user
may not realise. Clients should take steps to warn the user before
sending a group with embedded private keys across an insecure
channel.
* Character encoding. If the character encoding differs from the
assumed default of UTF-8, it should be specified using an XML
header plus an explicit encoding, eg:
<?xml version="1.0" encoding="ISO-8859-1"?>
* User interface terminology. It is suggested that clients sending
ticker group subscriptions encoded in this way present the action
to the user as "Send an invitation to the group". Importing the
attachment would be likewise termed "Accepting the invitation".
Author
----------------------------------------------------------------------
This document was written by Matthew Phillips
<matthew.phillips at dsto.defence.gov.au>.
Last modified on 24 Sep 2004.
More information about the ticker-dev
mailing list