Network Working Group C. Daboo Internet-Draft Apple Updates: 5545,6350 (if approved) July 7, 2012 Intended status: Standards Track Expires: January 8, 2013 Parameter Value Encoding in iCalendar and vCard draft-daboo-ical-vcard-parameter-encoding-00 Abstract This specification defines an extension to iCalendar and vCard data formats to allow parameter values to include certain characters forbidden by the existing specifications. Status of this Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on January 8, 2013. Copyright Notice Copyright (c) 2012 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Daboo Expires January 8, 2013 [Page 1] Internet-Draft Parameter Encoding July 2012 Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Conventions Used in This Document . . . . . . . . . . . . . . . 3 3. Parameter Value Encoding Scheme . . . . . . . . . . . . . . . . 3 3.1. iCalendar Example . . . . . . . . . . . . . . . . . . . . . 4 3.2. vCard Examples . . . . . . . . . . . . . . . . . . . . . . 4 4. Security Considerations . . . . . . . . . . . . . . . . . . . . 5 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 5 6. Normative References . . . . . . . . . . . . . . . . . . . . . 5 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 5 Daboo Expires January 8, 2013 [Page 2] Internet-Draft Parameter Encoding July 2012 1. Introduction The iCalendar [RFC5545] specification defines a standard way to describe calendar data. The vCard [RFC6350] specification defines a standard way to describe contact data. Both of these use a similar textual data format. Each iCalendar and vCard data object can include "properties" which have "parameters" and a "value". The value of a "parameter" is typically a token or URI value, but a "generic" text value is also allowed. However, the syntax rules for both iCalendar and vCard prevent the use of a double-quote character or control characters in such values. As more and more extensions are being developed for these data formats, there is a need to allow at least double-quotes, line feeds and tabs to be included in parameter values. The \-escaping mechanism used for property text values is not defined for use with parameter values and cannot be easily used in a backwards compatible manner. Thus this specification defines a new character escaping mechanism that is compatible with existing parsers and chosen to minimise any impact on existing data. 2. Conventions Used in This Document The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. 3. Parameter Value Encoding Scheme This specification defines the ^ character (U+005E - Circumflex Accent) as an escape character in parameter values whose value type is defined as "text". The ^-escaping mechanism can be used when the value is either unquoted or quoted (i.e., whether or not the value is surrounded by double-quotes). When used, the combination of ^ plus one other character is interpreted as a single character as per the table below: +---------------------+-------------------------------+ | Escape Sequence | Character | +---------------------+-------------------------------+ | ^' (U+005E, U+0027) | U+0022 (Quotation Mark) | | ^n (U+005E, U+006E) | U+000A (Line Feed) | | ^t (U+005E, U+0074) | U+0009 (Character Tabulation) | | ^^ (U+005E, U+005E) | U+005E (Circumflex Accent) | +---------------------+-------------------------------+ Daboo Expires January 8, 2013 [Page 3] Internet-Draft Parameter Encoding July 2012 When generating iCalendar or vCard parameter values, the characters in the second column above MUST be escaped using the sequence from the first column. When parsing iCalendar or vCard parameter values, the two character sequence from the first column MUST be replaced by the single character from the second column. If a ^ (U+005E) character is followed by any other character than the ones above, parsers SHOULD leave the ^ character in place. In addition to the escaping procedure outlined above, text parameter values MUST also have line break character sequences canonicalized into a single line feed (U+000A) character when the parameter value is generated. Specifically, any single carriage return character (U+000D) or the two character combination of carriage return followed by line feed (U+000D, U+000A) MUST be mapped to ^n in the generated parameter value. When parsing a parameter value with ^n, clients can replace that with the appropriate line break character sequence for the system they are running on. 3.1. iCalendar Example An "ATTENDEE" property with a "CN" parameter whose value includes two double-quote characters. The parameter value is not quoted as there are no characters in the value that would trigger quoting as required by iCalendar. ATTENDEE;CN=George Herman ^'Babe^' Ruth:mailto:babe@example.com The unescaped parameter value is George Herman "Babe" Ruth 3.2. vCard Examples A "GEO" property with a "X-ADDRESS" parameter whose value includes several line feed characters. The parameter value is also quoted since it contains a comma which triggers quoting as required by vCard. GEO;X-ADDRESS="Pittsburgh Pirates^n115 Federal St^nPittsburgh, PA 15212":geo:40.446816,-80.00566 The unescaped parameter value is (where each line terminated by a line break character sequence) Pittsburgh Pirates 115 Federal St Pittsburgh, PA 15212 Daboo Expires January 8, 2013 [Page 4] Internet-Draft Parameter Encoding July 2012 4. Security Considerations There are no additional security issues beyond those of iCalendar [RFC5545] and vCard [RFC6350]. 5. IANA Considerations There are none. 6. Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC5545] Desruisseaux, B., "Internet Calendaring and Scheduling Core Object Specification (iCalendar)", RFC 5545, September 2009. [RFC6350] Perreault, S., "vCard Format Specification", RFC 6350, August 2011. Author's Address Cyrus Daboo Apple Inc. 1 Infinite Loop Cupertino, CA 95014 USA Email: cyrus@daboo.name URI: http://www.apple.com/ Daboo Expires January 8, 2013 [Page 5]