[要約] RFC 6868は、iCalendarとvCardでのパラメータ値のエンコーディングに関する仕様です。このRFCの目的は、特殊文字や非ASCII文字を正しくエンコードし、データの互換性と正確性を確保することです。

Internet Engineering Task Force (IETF)                          C. Daboo
Request for Comments: 6868                                         Apple
Updates: 5545, 6321, 6350, 6351                            February 2013
Category: Standards Track
ISSN: 2070-1721
        

Parameter Value Encoding in iCalendar and vCard

iCalendarおよびvCardでのパラメーター値のエンコード

Abstract

概要

This specification updates the data formats for iCalendar (RFC 5545) and vCard (RFC 6350) to allow parameter values to include certain characters forbidden by the existing specifications.

この仕様は、iCalendar(RFC 5545)およびvCard(RFC 6350)のデータ形式を更新して、パラメーター値に既存の仕様で禁止されている特定の文字を含めることができるようにします。

Status of This Memo

本文書の状態

This is an Internet Standards Track document.

これはInternet Standards Trackドキュメントです。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741.

このドキュメントは、IETF(Internet Engineering Task Force)の製品です。これは、IETFコミュニティのコンセンサスを表しています。公開レビューを受け、インターネットエンジニアリングステアリンググループ(IESG)による公開が承認されました。インターネット標準の詳細については、RFC 5741のセクション2をご覧ください。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc6868.

このドキュメントの現在のステータス、エラータ、およびフィードバックの提供方法に関する情報は、http://www.rfc-editor.org/info/rfc6868で入手できます。

Copyright Notice

著作権表示

Copyright (c) 2013 IETF Trust and the persons identified as the document authors. All rights reserved.

Copyright(c)2013 IETF Trustおよびドキュメントの作成者として識別された人物。全著作権所有。

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.

この文書は、BCP 78およびこの文書の発行日に有効なIETF文書に関するIETFトラストの法的規定(http://trustee.ietf.org/license-info)の対象となります。これらのドキュメントは、このドキュメントに関するあなたの権利と制限を説明しているため、注意深く確認してください。このドキュメントから抽出されたコードコンポーネントには、Trust Legal Provisionsのセクション4.eに記載されているSimplified BSD Licenseのテキストが含まれている必要があり、Simplified BSD Licenseに記載されているように保証なしで提供されます。

Table of Contents

目次

   1. Introduction ....................................................2
   2. Conventions Used in This Document ...............................2
   3. Parameter Value Encoding Scheme .................................3
      3.1. iCalendar Example ..........................................4
      3.2. vCard Example ..............................................4
   4. Security Considerations .........................................4
   5. Acknowledgments .................................................4
   6. Normative References ............................................5
   Appendix A. Choice of Quoting Mechanism ............................6
        
1. Introduction
1. はじめに

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 text-based data format. Each iCalendar and vCard data object can include "properties" that 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, though double-quote characters and some subset of control characters are allowed in the actual property values.

iCalendar [RFC5545]仕様は、カレンダーデータを記述する標準的な方法を定義しています。 vCard [RFC6350]仕様は、連絡先データを記述する標準的な方法を定義しています。これらはどちらも、同様のテキストベースのデータ形式を使用しています。各iCalendarおよびvCardデータオブジェクトには、「パラメータ」と「値」を持つ「プロパティ」を含めることができます。 「パラメータ」の値は通常、トークンまたはURI値ですが、「汎用」テキスト値も許可されます。ただし、iCalendarとvCardの両方の構文規則では、実際のプロパティ値で二重引用符と一部の制御文字のサブセットを使用できますが、そのような値では二重引用符または制御文字を使用できません。

As more and more extensions are being developed for these data formats, there is a need to allow at least double-quotes and line feeds 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. This specification defines a new character escaping mechanism, compatible with existing parsers and chosen to minimize any impact on existing data.

これらのデータ形式に対してますます多くの拡張機能が開発されているため、パラメーター値に少なくとも二重引用符と改行を含めることを許可する必要があります。プロパティテキスト値に使用される\-エスケープメカニズムは、パラメーター値で使用するために定義されておらず、下位互換性のある方法で簡単に使用することはできません。この仕様は、既存のパーサーと互換性があり、既存のデータへの影響を最小限に抑えるように選択された、新しい文字エスケープメカニズムを定義します。

2. Conventions Used in This Document
2. このドキュメントで使用される規則

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].

キーワード「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、「SHALL NOT」、「SHOULD」、「SHOULD NOT」、「RECOMMENDED」、「NOT RECOMMENDED」、「MAY」、「OPTIONALこの文書の "は、[RFC2119]で説明されているように解釈されます。

3. Parameter Value Encoding Scheme
3. パラメータ値のコード化スキーム

This specification defines the ^ character (U+005E -- Circumflex Accent) as an escape character in parameter values whose value type is defined using the "param-value" syntax element (Section 3.1 of iCalendar [RFC5545] and Section 3.3 of vCard [RFC6350]). 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).

この仕様では、「param-value」構文要素(iCalendarのセクション3.1 [RFC5545]とvCardのセクション3.3を使用して定義されている値タイプのパラメーター値のエスケープ文字として、^文字(U + 005E-サーカムフレックスアクセント)を定義しています。 RFC6350])。 ^エスケープメカニズムは、値が引用符で囲まれていないか引用符で囲まれている場合に使用できます(つまり、値が二重引用符で囲まれているかどうかに関係なく)。

When generating iCalendar or vCard parameter values, the following apply:

iCalendarまたはvCardパラメーター値を生成する場合、以下が適用されます。

o formatted text line breaks are encoded into ^n (U+005E, U+006E)

o フォーマットされたテキストの改行は^ nにエンコードされます(U + 005E、U + 006E)

o the ^ character (U+005E) is encoded into ^^ (U+005E, U+005E)

o ^文字(U + 005E)は^^(U + 005E、U + 005E)にエンコードされます

o the " character (U+0022) is encoded into ^' (U+005E, U+0027)

o "文字(U + 0022)は^ 'にエンコードされます(U + 005E、U + 0027)

When parsing iCalendar or vCard parameter values, the following apply:

iCalendarまたはvCardパラメータ値を解析する場合、以下が適用されます。

o the character sequence ^n (U+005E, U+006E) is decoded into an appropriate formatted line break according to the type of system being used

o 文字シーケンス^ n(U + 005E、U + 006E)は、使用されているシステムのタイプに応じて、適切にフォーマットされた改行にデコードされます。

o the character sequence ^^ (U+005E, U+005E) is decoded into the ^ character (U+005E)

o 文字シーケンス^^(U + 005E、U + 005E)は^文字(U + 005E)にデコードされます

o the character sequence ^' (U+005E, U+0027) is decoded into the " character (U+0022)

o 文字シーケンス^ '(U + 005E、U + 0027)は「」文字(U + 0022)にデコードされます

o if a ^ (U+005E) character is followed by any character other than the ones above, parsers MUST leave both the ^ and the following character in place

o ^(U + 005E)文字の後に上記以外の文字が続いている場合、パーサーは^と次の文字の両方をそのままにしておく必要があります。

When converting between iCalendar and vCard text-based data formats and alternative data-format representations such as XML (as described in [RFC6321] and [RFC6351], respectively), implementations MUST ensure that parameter value escape sequences are generated correctly in the text-based format and are decoded when the parameter values appear in the alternate data formats.

iCalendarとvCardのテキストベースのデータ形式とXMLなどの代替データ形式表現([RFC6321]と[RFC6351]でそれぞれ説明されている)の間で変換する場合、実装では、パラメーター値のエスケープシーケンスがテキストで正しく生成されるようにする必要があります。ベースの形式であり、パラメーター値が代替データ形式で表示されるときにデコードされます。

3.1. iCalendar Example
3.1. iCalendarの例

The following example is 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.

次の例は、値が2つの二重引用符文字を含む「CN」パラメータを持つ「ATTENDEE」プロパティです。 iCalendarが必要とする引用をトリガーする文字が値にないため、パラメーター値は引用されません。

   ATTENDEE;CN=George Herman ^'Babe^' Ruth:mailto:babe@example.com
        

The unescaped parameter value is

エスケープされていないパラメーター値は

George Herman "Babe" Ruth

ジョージハーマン「ベイブ」ルース

3.2. vCard Example
3.2. vCardの例

The following example is a "GEO" property with an "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.

次の例は、値に複数の改行文字が含まれる「X-ADDRESS」パラメータを持つ「GEO」プロパティです。パラメータ値には、vCardの必要に応じて引用をトリガーするカンマが含まれているため、引用符で囲まれています。

   GEO;X-ADDRESS="Pittsburgh Pirates^n115 Federal St^nPitt
    sburgh, PA 15212":geo:40.446816,-80.00566
        

The unescaped parameter value (where each line is terminated by a line break character sequence) is

エスケープされていないパラメーター値(各行は改行文字シーケンスで終了します)は

Pittsburgh Pirates 115 Federal St Pittsburgh, PA 15212

ピッツバーグパイレーツ115 Federal Stピッツバーグ、ペンシルバニア州15212

4. Security Considerations
4. セキュリティに関する考慮事項

There are no additional security issues beyond those of iCalendar [RFC5545] and vCard [RFC6350].

iCalendar [RFC5545]およびvCard [RFC6350]以外のセキュリティ問題はありません。

5. Acknowledgments
5. 謝辞

Thanks to Michael Angstadt, Tim Bray, Mike Douglass, Barry Leiba, Simon Perreault, and Pete Resnick for feedback on this specification.

この仕様に関するフィードバックを提供してくれたMichael Angstadt、Tim Bray、Mike Douglass、Barry Leiba、Simon Perreault、およびPete Resnickに感謝します。

6. Normative References
6. 引用文献

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2119] Bradner、S。、「要件レベルを示すためにRFCで使用するキーワード」、BCP 14、RFC 2119、1997年3月。

[RFC5545] Desruisseaux, B., "Internet Calendaring and Scheduling Core Object Specification (iCalendar)", RFC 5545, September 2009.

[RFC5545] Desruisseaux、B。、「Internet Calendaring and Scheduling Core Object Specification(iCalendar)」、RFC 5545、2009年9月。

[RFC6321] Daboo, C., Douglass, M., and S. Lees, "xCal: The XML Format for iCalendar", RFC 6321, August 2011.

[RFC6321] Daboo、C.、Douglass、M。、およびS. Lees、「xCal:The XML Format for iCalendar」、RFC 6321、2011年8月。

[RFC6350] Perreault, S., "vCard Format Specification", RFC 6350, August 2011.

[RFC6350] Perreault、S。、「vCard Format Specification」、RFC 6350、2011年8月。

[RFC6351] Perreault, S., "xCard: vCard XML Representation", RFC 6351, August 2011.

[RFC6351] Perreault、S。、「xCard:vCard XML表現」、RFC 6351、2011年8月。

Appendix A. Choice of Quoting Mechanism
付録A.引用メカニズムの選択

Having recognized the need for escaping parameter values, the question is what mechanism to use? One obvious choice would be to adopt the \-escaping used for property values. However, that could not be used as-is, because it escapes a double-quote as the sequence of \ followed by double-quote. Consider what the example in Section 3.1 might look like using \-escaping:

パラメータ値をエスケープする必要性を認識した後、問題はどのメカニズムを使用するかです。 1つの明白な選択は、プロパティ値に使用される\-エスケープを採用することです。ただし、\とそれに続く二重引用符のシーケンスとして二重引用符をエスケープするため、そのままでは使用できません。セクション3.1の例が\ -escapingを使用してどのように見えるかを検討してください。

   ATTENDEE;CN="George Herman \"Babe\" Ruth":mailto:babe@example.com
        

Existing iCalendar/vCard parsers know nothing about escape sequences in parameters. So they would parse the parameter value as:

既存のiCalendar / vCardパーサーは、パラメーターのエスケープシーケンスについて何も知りません。したがって、次のようにパラメーター値を解析します。

George Herman \

ジョージハーマン\

i.e., the text between the first and second occurrence of a double-quote. However, the text after the second double-quote ought to be either a : or a ; (to delimit the parameter value from the following parameter or property) but is not, so the parser could legitimately throw an error at that point because the data is syntactically invalid. Thus, for backwards-compatibility reasons, a double-quote cannot be escaped using a sequence that itself includes a double-quote, and hence the choice of using a single-quote in this specification.

つまり、二重引用符の最初と2番目の出現の間のテキスト。ただし、2番目の二重引用符の後のテキストは、:または;のいずれかである必要があります。 (次のパラメーターまたはプロパティからパラメーター値を区切るため)がそうではないため、データが構文的に無効であるため、パーサーはその時点で正当にエラーをスローする可能性があります。したがって、下位互換性の理由から、二重引用符自体を含むシーケンスを使用して二重引用符をエスケープすることはできないため、この仕様では単一引用符を使用することを選択します。

Another option would be to use a form of \-escaping modified for use in parameter values only. However, some incorrect, non-interoperable use of \ in parameter values has been observed, and thus it is best to steer clear of that to achieve guaranteed, reliable interoperability. Also, given that double-quote gets changed to single-quote in the escape sequence for a parameter, but not for a value, it is better to not give the impression that the same escape mechanism (and thus code) can be used for both (which could lead to other issues, such as an implementation incorrectly escaping a ; as \; as opposed to quoting the parameter value).

別のオプションは、パラメーター値のみで使用するために変更された形式の\ -escapingを使用することです。ただし、パラメータ値での\の誤った、相互運用不可能な使用が確認されているため、保証された信頼性の高い相互運用性を実現するには、それを回避するのが最善です。また、パラメーターのエスケープシーケンスで二重引用符が単一引用符に変更されるが、値は変更されない場合、同じエスケープメカニズム(およびコード)を両方に使用できるという印象を与えない方がよい(これは、パラメーター値の引用とは対照的に、実装が; as \;を誤ってエスケープするなど、他の問題につながる可能性があります)。

The choice of ^ as the escape character was made based on the requirement that an ASCII symbol (non-alphanumeric character) be used, and it ought to be one least likely to be found in existing data.

エスケープ文字としての^の選択は、ASCII記号(英数字以外の文字)を使用するという要件に基づいて行われたものであり、既存のデータで検出される可能性が最も低いはずです。

Author's Address

著者のアドレス

Cyrus Daboo Apple Inc. 1 Infinite Loop Cupertino, CA 95014 USA

Cyrus Daboo Apple Inc.1 Infinite Loop Cupertino、CA 95014 USA

   EMail: cyrus@daboo.name
   URI:   http://www.apple.com/