| rfc9598.original | rfc9598.txt | |||
|---|---|---|---|---|
| Network Working Group A. Melnikov | Internet Engineering Task Force (IETF) A. Melnikov | |||
| Internet-Draft Isode Ltd | Request for Comments: 9598 Isode Ltd | |||
| Obsoletes: 8398 (if approved) W. Chuang | Obsoletes: 8398 W. Chuang | |||
| Updates: 5280 (if approved) Google, Inc. | Updates: 5280 Google, Inc. | |||
| Intended status: Standards Track C. Bonnell | Category: Standards Track C. Bonnell | |||
| Expires: 16 August 2024 DigiCert | ISSN: 2070-1721 DigiCert | |||
| 13 February 2024 | May 2024 | |||
| Internationalized Email Addresses in X.509 Certificates | Internationalized Email Addresses in X.509 Certificates | |||
| draft-ietf-lamps-rfc8398bis-05 | ||||
| Abstract | Abstract | |||
| This document defines a new name form for inclusion in the otherName | This document defines a new name form for inclusion in the otherName | |||
| field of an X.509 Subject Alternative Name and Issuer Alternative | field of an X.509 Subject Alternative Name and Issuer Alternative | |||
| Name extension that allows a certificate subject to be associated | Name extension that allows a certificate subject to be associated | |||
| with an internationalized email address. | with an internationalized email address. | |||
| This document updates RFC 5280 and obsoletes RFC 8398. | This document updates RFC 5280 and obsoletes RFC 8398. | |||
| About This Document | ||||
| This note is to be removed before publishing as an RFC. | ||||
| The latest revision of this draft can be found at | ||||
| https://CBonnell.github.io/draft-lamps-rfc8398-bis/draft-bonnell- | ||||
| lamps-rfc8398bis.html. Status information for this document may be | ||||
| found at https://datatracker.ietf.org/doc/draft-ietf-lamps- | ||||
| rfc8398bis/. | ||||
| Discussion of this document takes place on the Limited Additional | ||||
| Mechanisms for PKIX and SMIME (lamps) Working Group mailing list | ||||
| (mailto:spasm@ietf.org), which is archived at | ||||
| https://mailarchive.ietf.org/arch/browse/spasm/. Subscribe at | ||||
| https://www.ietf.org/mailman/listinfo/spasm/. | ||||
| Source for this draft and an issue tracker can be found at | ||||
| https://github.com/CBonnell/draft-lamps-rfc8398-bis. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| 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 https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 16 August 2024. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9598. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2024 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
| 2. Conventions and Definitions . . . . . . . . . . . . . . . . . 3 | 2. Conventions Used in This Document | |||
| 3. Name Definitions . . . . . . . . . . . . . . . . . . . . . . 3 | 3. Name Definitions | |||
| 4. IDNA2008 . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 4. IDNA2008 | |||
| 5. Matching of Internationalized Email Addresses in X.509 | 5. Matching of Internationalized Email Addresses in X.509 | |||
| Certificates . . . . . . . . . . . . . . . . . . . . . . 5 | Certificates | |||
| 6. Name Constraints in Path Validation . . . . . . . . . . . . . 7 | 6. Name Constraints in Path Validation | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | 7. Security Considerations | |||
| 8. Differences from RFC 8398 . . . . . . . . . . . . . . . . . . 9 | 8. Differences from RFC 8398 | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | 9. IANA Considerations | |||
| 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 10. References | |||
| 10.1. Normative References . . . . . . . . . . . . . . . . . . 10 | 10.1. Normative References | |||
| 10.2. Informative References . . . . . . . . . . . . . . . . . 11 | 10.2. Informative References | |||
| Appendix A. ASN.1 Module . . . . . . . . . . . . . . . . . . . . 11 | Appendix A. ASN.1 Module | |||
| Appendix B. Example of SmtpUTF8Mailbox . . . . . . . . . . . . . 13 | Appendix B. Example of SmtpUTF8Mailbox | |||
| Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 13 | Acknowledgments | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13 | Authors' Addresses | |||
| 1. Introduction | 1. Introduction | |||
| [RFC5280] defines the rfc822Name subjectAltName name type for | [RFC5280] defines the rfc822Name subjectAltName name type for | |||
| representing email addresses as described in [RFC5321]. The syntax | representing email addresses as described in [RFC5321]. The syntax | |||
| of rfc822Name is restricted to a subset of US-ASCII characters and | of rfc822Name is restricted to a subset of US-ASCII characters and | |||
| thus can't be used to represent internationalized email addresses | thus can't be used to represent internationalized email addresses | |||
| [RFC6531]. This document defines a new otherName variant to | [RFC6531]. This document defines a new otherName variant to | |||
| represent internationalized email addresses. In addition this | represent internationalized email addresses. In addition, this | |||
| document requires all email address domains in X.509 certificates to | document requires all email address domains in X.509 certificates to | |||
| conform to IDNA2008 [RFC5890]. | conform to IDNA2008 [RFC5890]. | |||
| This document obsoletes [RFC8398]. The primary motivation for | This document obsoletes [RFC8398]. The primary motivation of this | |||
| publication of this document is to simplify the encoding of domain | document is to simplify the encoding of domain labels found in the | |||
| labels found in the domain part of internationalized email addresses. | domain part of internationalized email addresses. In particular, | |||
| In particular, [RFC8398] specifies that domain labels are | [RFC8398] specifies that domain labels are conditionally encoded | |||
| conditionally encoded using either A-labels or U-labels. This | using either A-labels or U-labels. This specification simplifies | |||
| specification simplifies encoding and processing of domain labels by | encoding and processing of domain labels by mandating that the | |||
| mandating that the A-label representation be used in all cases. | A-label representation be used in all cases. | |||
| 2. Conventions and Definitions | 2. Conventions Used in This Document | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
| BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 3. Name Definitions | 3. Name Definitions | |||
| The GeneralName structure is defined in [RFC5280] and supports many | The GeneralName structure [RFC5280] supports many different name | |||
| different name forms including otherName for extensibility. This | forms including otherName for extensibility. This section specifies | |||
| section specifies the SmtpUTF8Mailbox name form of otherName so that | the SmtpUTF8Mailbox name form of otherName so that internationalized | |||
| internationalized email addresses can appear in the subjectAltName of | email addresses can appear in the subjectAltName of a certificate, | |||
| a certificate, the issuerAltName of a certificate, or anywhere else | the issuerAltName of a certificate, or anywhere else that GeneralName | |||
| that GeneralName is used. | is used. | |||
| id-on-SmtpUTF8Mailbox OBJECT IDENTIFIER ::= { id-on 9 } | id-on-SmtpUTF8Mailbox OBJECT IDENTIFIER ::= { id-on 9 } | |||
| SmtpUTF8Mailbox ::= UTF8String (SIZE (1..MAX)) | SmtpUTF8Mailbox ::= UTF8String (SIZE (1..MAX)) | |||
| -- SmtpUTF8Mailbox conforms to Mailbox as specified | -- SmtpUTF8Mailbox conforms to Mailbox as specified | |||
| -- in Section 3.3 of RFC 6531. Additionally, all domain | -- in Section 3.3 of RFC 6531. Additionally, all domain | |||
| -- labels included in the SmtpUTF8Mailbox value are | -- labels included in the SmtpUTF8Mailbox value are | |||
| -- encoded as LDH-labels. In particular, domain labels | -- encoded as LDH labels. In particular, domain labels | |||
| -- are not encoded as U-labels and instead are encoded | -- are not encoded as U-labels and instead are encoded | |||
| -- using their A-label representation. | -- using their A-label representation. | |||
| When the subjectAltName (or issuerAltName) extension contains an | When the subjectAltName (or issuerAltName) extension contains an | |||
| internationalized email address with a non-ASCII Local-part, the | internationalized email address with a non-ASCII Local-part, the | |||
| address MUST be stored in the SmtpUTF8Mailbox name form of otherName. | address MUST be stored in the SmtpUTF8Mailbox name form of otherName. | |||
| The format of SmtpUTF8Mailbox is a modified version of the | The format of SmtpUTF8Mailbox is a modified version of the | |||
| internationalized Mailbox that was defined in Section 3.3 of | internationalized Mailbox that was defined in Section 3.3 of | |||
| [RFC6531], which was derived from Mailbox as defined in Section 4.1.2 | [RFC6531], which was derived from Mailbox as defined in Section 4.1.2 | |||
| of [RFC5321]. [RFC6531] defines the following ABNF rules for Mailbox | of [RFC5321]. [RFC6531] defines the following ABNF rules for Mailbox | |||
| skipping to change at page 4, line 29 ¶ | skipping to change at line 140 ¶ | |||
| described in [RFC6531] and calls this SmtpUTF8Mailbox. In | described in [RFC6531] and calls this SmtpUTF8Mailbox. In | |||
| SmtpUTF8Mailbox, labels that include non-ASCII characters MUST be | SmtpUTF8Mailbox, labels that include non-ASCII characters MUST be | |||
| stored in A-label (rather than U-label) form [RFC5890]. This | stored in A-label (rather than U-label) form [RFC5890]. This | |||
| restriction reduces complexity for implementations of the | restriction reduces complexity for implementations of the | |||
| certification path validation algorithm defined in Section 6 of | certification path validation algorithm defined in Section 6 of | |||
| [RFC5280]. In SmtpUTF8Mailbox, domain labels that solely use ASCII | [RFC5280]. In SmtpUTF8Mailbox, domain labels that solely use ASCII | |||
| characters (meaning neither A- nor U-labels) SHALL use NR-LDH | characters (meaning neither A- nor U-labels) SHALL use NR-LDH | |||
| restrictions as specified by Section 2.3.1 of [RFC5890]. NR-LDH | restrictions as specified by Section 2.3.1 of [RFC5890]. NR-LDH | |||
| stands for "Non-Reserved Letters Digits Hyphen" and is the set of LDH | stands for "Non-Reserved Letters Digits Hyphen" and is the set of LDH | |||
| labels that do not have "--" characters in the third and forth | labels that do not have "--" characters in the third and forth | |||
| character position, which excludes "tagged domain names" such as | character positions, which excludes "tagged domain names" such as | |||
| A-labels. To facilitate octet-for-octet comparisons of | A-labels. To facilitate octet-for-octet comparisons of | |||
| SmtpUTF8Mailbox values, all NR-LDH and A-label labels which | SmtpUTF8Mailbox values, all NR-LDH and A-label labels that constitute | |||
| constitute the domain part SHALL only be encoded with lowercase | the domain part SHALL only be encoded with lowercase letters. | |||
| letters. Consistent with the treatment of rfc822Name in [RFC5280], | Consistent with the treatment of rfc822Name in [RFC5280], | |||
| SmtpUTF8Mailbox is an envelope Mailbox and has no phrase (such as a | SmtpUTF8Mailbox is an envelope Mailbox and has no phrase (such as a | |||
| common name) before it, has no comment (text surrounded in | common name) before it, has no comment (text surrounded in | |||
| parentheses) after it, and is not surrounded by "<" and ">" | parentheses) after it, and is not surrounded by "<" and ">" | |||
| characters. | characters. | |||
| Due to name constraint compatibility reasons described in Section 6, | Due to name constraint compatibility reasons described in Section 6, | |||
| SmtpUTF8Mailbox subjectAltName MUST NOT be used unless the Local-part | SmtpUTF8Mailbox subjectAltName MUST NOT be used unless the Local-part | |||
| of the email address contains non-ASCII characters. When the Local- | of the email address contains non-ASCII characters. When the Local- | |||
| part is ASCII, rfc822Name subjectAltName MUST be used instead of | part is ASCII, rfc822Name subjectAltName MUST be used instead of | |||
| SmtpUTF8Mailbox. This is compatible with legacy software that | SmtpUTF8Mailbox. This is compatible with legacy software that | |||
| supports only rfc822Name (and not SmtpUTF8Mailbox). The appropriate | supports only rfc822Name (and not SmtpUTF8Mailbox). The appropriate | |||
| usage of rfc822Name and SmtpUTF8Mailbox is summarized in Table 1 | usage of rfc822Name and SmtpUTF8Mailbox is summarized in Table 1 | |||
| below. | below. | |||
| SmtpUTF8Mailbox is encoded as UTF8String. The UTF8String encoding | SmtpUTF8Mailbox is encoded as UTF8String. The UTF8String encoding | |||
| MUST NOT contain a Byte-Order-Mark (BOM) [RFC3629] to aid consistency | MUST NOT contain a Byte Order Mark (BOM) [RFC3629] to aid consistency | |||
| across implementations, particularly for comparison. | across implementations, particularly for comparison. | |||
| +=================+=================+ | +=================+=================+ | |||
| | Local-part char | subjectAltName | | | Local-part char | subjectAltName | | |||
| +=================+=================+ | +=================+=================+ | |||
| | ASCII-only | rfc822Name | | | ASCII-only | rfc822Name | | |||
| +-----------------+-----------------+ | +-----------------+-----------------+ | |||
| | non-ASCII | SmtpUTF8Mailbox | | | non-ASCII | SmtpUTF8Mailbox | | |||
| +-----------------+-----------------+ | +-----------------+-----------------+ | |||
| skipping to change at page 5, line 33 ¶ | skipping to change at line 191 ¶ | |||
| conforming email address domains introduces the possibility of | conforming email address domains introduces the possibility of | |||
| conversion errors between alternate forms. This applies to | conversion errors between alternate forms. This applies to | |||
| SmtpUTF8Mailbox and rfc822Name in subjectAltName, issuerAltName, and | SmtpUTF8Mailbox and rfc822Name in subjectAltName, issuerAltName, and | |||
| anywhere else that these are used. | anywhere else that these are used. | |||
| 5. Matching of Internationalized Email Addresses in X.509 Certificates | 5. Matching of Internationalized Email Addresses in X.509 Certificates | |||
| Equivalence comparisons with SmtpUTF8Mailbox consist of a domain part | Equivalence comparisons with SmtpUTF8Mailbox consist of a domain part | |||
| step and a Local-part step. The comparison form for Local-parts is | step and a Local-part step. The comparison form for Local-parts is | |||
| always UTF-8. The comparison form for domain parts is always | always UTF-8. The comparison form for domain parts is always | |||
| performed with the LDH-label ([RFC5890]) encoding of the relevant | performed with the LDH label ([RFC5890]) encoding of the relevant | |||
| domain labels. The comparison of LDH-labels in domain parts reduces | domain labels. The comparison of LDH labels in domain parts reduces | |||
| complexity for implementations of the certification path validation | complexity for implementations of the certification path validation | |||
| algorithm as defined in Section 6 of [RFC5280] by obviating the need | algorithm as defined in Section 6 of [RFC5280] by obviating the need | |||
| to convert domain labels to their Unicode representation. | to convert domain labels to their Unicode representation. | |||
| Comparison of two SmtpUTF8Mailboxes is straightforward with no setup | Comparison of two SmtpUTF8Mailboxes is straightforward with no setup | |||
| work needed. They are considered equivalent if there is an exact | work needed. They are considered equivalent if there is an exact | |||
| octet-for-octet match. | octet-for-octet match. | |||
| Comparison of a SmtpUTF8Mailbox and rfc822Name will always fail. | Comparison of an SmtpUTF8Mailbox and rfc822Name will always fail. | |||
| SmtpUTF8Mailbox values SHALL contain a Local-part which includes one | SmtpUTF8Mailbox values SHALL contain a Local-part that includes one | |||
| or more non-ASCII characters, while rfc822Names only include ASCII | or more non-ASCII characters, while rfc822Names only includes ASCII | |||
| characters (including the Local-part). Thus, a SmtpUTF8Mailbox and | characters (including the Local-part). Thus, an SmtpUTF8Mailbox and | |||
| rfc822Name will never match. | rfc822Name will never match. | |||
| Comparison of SmtpUTF8Mailbox values with internationalized email | Comparison of SmtpUTF8Mailbox values with internationalized email | |||
| addresses from other sources (such as received email messages, user | addresses from other sources (such as received email messages, user | |||
| input, etc.) requires additional setup steps for domain part and | input, etc.) requires additional setup steps for domain part and | |||
| Local-part. The initial preparation for the email address to compare | Local-part. The initial preparation for the email address to compare | |||
| with the SmtpUTF8Mailbox value is to remove any phrases, comments, | with the SmtpUTF8Mailbox value is to remove any phrases, comments, | |||
| and "<" or ">" characters. | and "<" or ">" characters. | |||
| For the setup of the domain part, the following conversions SHALL be | For the setup of the domain part, the following conversions SHALL be | |||
| performed: | performed: | |||
| 1. Convert all labels which constitute the domain part that include | 1. Convert all labels that constitute the domain part that include | |||
| non-ASCII characters to A-labels if not already in that form. | non-ASCII characters to A-labels, if not already in that form. | |||
| a. Detect all U-labels present within the domain part using | a. Detect all U-labels present within the domain part using | |||
| Section 5.1 of [RFC5891]. | Section 5.1 of [RFC5891]. | |||
| b. Transform all detected U-labels (Unicode) to A-labels (ASCII) | b. Transform all detected U-labels (Unicode) to A-labels (ASCII) | |||
| as specified in Section 5.5 of [RFC5891]. | as specified in Section 5.5 of [RFC5891]. | |||
| 2. Convert all uppercase letters found within the NR-LDH and A-label | 2. Convert all uppercase letters found within the NR-LDH and A-label | |||
| labels which constitute the domain part to lowercase letters. | labels that constitute the domain part to lowercase letters. | |||
| For the setup of the Local-part, the Local-part MUST be verified to | For the setup of the Local-part, the Local-part MUST be verified to | |||
| conform to the requirements of [RFC6530] and [RFC6531], including | conform to the requirements of [RFC6530] and [RFC6531], including | |||
| being a string in UTF-8 form. In particular, the Local- part MUST | being a string in UTF-8 form. In particular, the Local- part MUST | |||
| NOT be transformed in any way, such as by doing case folding or | NOT be transformed in any way, such as by doing case folding or | |||
| normalization of any kind. The Local-part part of an | normalization of any kind. The Local-part of an internationalized | |||
| internationalized email address is already in UTF-8. Once setup is | email address is already in UTF-8. Once setup is complete, they are | |||
| complete, they are again compared octet-for-octet. | again compared octet for octet. | |||
| To summarize non-normatively, the comparison steps, including setup, | To summarize non-normatively, the comparison steps, including setup, | |||
| are: | are: | |||
| 1. If the domain contains U-labels, transform them to A-labels. | 1. If the domain contains U-labels, transform them to A-labels. | |||
| 2. If any NR-LDH or A-label domain label in the domain part contains | 2. If any NR-LDH or A-label domain label in the domain part contains | |||
| uppercase letters, lowercase them. | uppercase letters, lowercase them. | |||
| 3. Compare strings octet-for-octet for equivalence. | 3. Compare strings octet for octet for equivalence. | |||
| This specification expressly does not define any wildcard characters, | This specification expressly does not define any wildcard characters, | |||
| and SmtpUTF8Mailbox comparison implementations MUST NOT interpret any | and SmtpUTF8Mailbox comparison implementations MUST NOT interpret any | |||
| characters as wildcards. Instead, to specify multiple email | characters as wildcards. Instead, to specify multiple email | |||
| addresses through SmtpUTF8Mailbox, the certificate MUST use multiple | addresses through SmtpUTF8Mailbox, the certificate MUST use multiple | |||
| subjectAltNames or issuerAltNames to explicitly carry any additional | subjectAltNames or issuerAltNames to explicitly carry any additional | |||
| email addresses. | email addresses. | |||
| 6. Name Constraints in Path Validation | 6. Name Constraints in Path Validation | |||
| This section updates Section 4.2.1.10 of [RFC5280] to extend | This section updates Section 4.2.1.10 of [RFC5280] to extend | |||
| rfc822Name name constraints to SmtpUTF8Mailbox subjectAltNames. | rfc822Name name constraints to SmtpUTF8Mailbox subjectAltNames. | |||
| SmtpUTF8Mailbox-aware path validators will apply name constraint | SmtpUTF8Mailbox-aware path validators will apply name constraint | |||
| comparison to the subject distinguished name and both forms of | comparison to the subject distinguished name and both forms of | |||
| subject alternative names rfc822Name and SmtpUTF8Mailbox. | subject alternative names, rfc822Name and SmtpUTF8Mailbox. | |||
| Both rfc822Name and SmtpUTF8Mailbox subject alternative names | Both rfc822Name and SmtpUTF8Mailbox subject alternative names | |||
| represent the same underlying email address namespace. Since legacy | represent the same underlying email address namespace. Since legacy | |||
| CAs constrained to issue certificates for a specific set of domains | Certification Authorities (CAs) constrained to issue certificates for | |||
| would lack corresponding UTF-8 constraints, [RFC8399BIS] updates, | a specific set of domains would lack corresponding UTF-8 constraints, | |||
| modifies, and extends rfc822Name name constraints defined in | [RFC9549] updates, modifies, and extends rfc822Name name constraints | |||
| [RFC5280] to cover SmtpUTF8Mailbox subject alternative names. This | defined in [RFC5280] to cover SmtpUTF8Mailbox subject alternative | |||
| ensures that the introduction of SmtpUTF8Mailbox does not violate | names. This ensures that the introduction of SmtpUTF8Mailbox does | |||
| existing name constraints. Since it is not valid to include non- | not violate existing name constraints. Since it is not valid to | |||
| ASCII UTF-8 characters in the Local-part of rfc822Name name | include non-ASCII UTF-8 characters in the Local-part of rfc822Name | |||
| constraints, and since name constraints that include a Local-part are | name constraints, and since name constraints that include a Local- | |||
| rarely, if at all, used in practice, name constraints updated in | part are rarely, if at all, used in practice, name constraints | |||
| [RFC8399BIS] allow the forms that represent all addresses at a host | updated in [RFC9549] allow the forms that represent all addresses at | |||
| or all mailboxes in a domain and deprecates rfc822Name name | a host, or all mailboxes in a domain and deprecates rfc822Name name | |||
| constraints that represent a particular mailbox. That is, rfc822Name | constraints that represent a particular mailbox. That is, rfc822Name | |||
| constraints with a Local-part SHOULD NOT be used. | constraints with a Local-part SHOULD NOT be used. | |||
| Constraint comparison with SmtpUTF8Mailbox subjectAltName starts with | Constraint comparison with SmtpUTF8Mailbox subjectAltName starts with | |||
| the setup steps defined by Section 5. Setup converts the inputs of | the setup steps defined in Section 5. Setup converts the inputs of | |||
| the comparison (which is one of a subject distinguished name, an | the comparison (which is one of a subject distinguished name, an | |||
| rfc822Name, or an SmtpUTF8Mailbox subjectAltName, and one of an | rfc822Name, or an SmtpUTF8Mailbox subjectAltName, and one of an | |||
| rfc822Name name constraint) to constraint comparison form. For both | rfc822Name name constraint) to constraint comparison form. For both | |||
| the name constraint and the subject, this will convert all A-labels | the name constraint and the subject, this will convert all A-labels | |||
| and NR-LDH labels to lowercase. Strip the Local-part and "@" | and NR-LDH labels to lowercase. Strip the Local-part and "@" | |||
| separator from each rfc822Name and SmtpUTF8Mailbox, leaving just the | separator from each rfc822Name and SmtpUTF8Mailbox, which leaves just | |||
| domain part. After setup, this follows the comparison steps defined | the domain part. After setup, follow the comparison steps defined in | |||
| in Section 4.2.1.10 of [RFC5280] as follows. If the resulting name | Section 4.2.1.10 of [RFC5280] as follows. If the resulting name | |||
| constraint domain starts with a "." character, then for the name | constraint domain starts with a "." character, then for the name | |||
| constraint to match, a suffix of the resulting subject alternative | constraint to match, a suffix of the resulting subject alternative | |||
| name domain MUST match the name constraint (including the leading | name domain MUST match the name constraint (including the leading | |||
| ".") octet-for-octet. If the resulting name constraint domain does | ".") octet for octet. If the resulting name constraint domain does | |||
| not start with a "." character, then for the name constraint to | not start with a "." character, then for the name constraint to | |||
| match, the entire resulting subject alternative name domain MUST | match, the entire resulting subject alternative name domain MUST | |||
| match the name constraint octet-for-octet. | match the name constraint octet for octet. | |||
| Certificate Authorities that wish to issue CA certificates with email | Certificate Authorities that wish to issue CA certificates with email | |||
| address name constraints MUST use rfc822Name subject alternative | address name constraints MUST use rfc822Name subject alternative | |||
| names only. These MUST be IDNA2008-conformant names with no mappings | names only. These MUST be IDNA2008-conformant names with no mappings | |||
| and with non-ASCII domains encoded in A-labels only. | and with non-ASCII domains encoded in A-labels only. | |||
| The name constraint requirement with SmtpUTF8Mailbox subject | The name constraint requirement with an SmtpUTF8Mailbox subject | |||
| alternative name is illustrated in the non-normative diagram in | alternative name is illustrated in the non-normative diagram in | |||
| Figure 1. The first example (1) illustrates a permitted rfc822Name | Figure 1. The first example (1) illustrates a permitted rfc822Name | |||
| ASCII-only host name name constraint and the corresponding valid | ASCII-only host name name constraint and the corresponding valid | |||
| rfc822Name subjectAltName and SmtpUTF8Mailbox subjectAltName email | rfc822Name subjectAltName and SmtpUTF8Mailbox subjectAltName email | |||
| addresses. The second example (2) illustrates a permitted rfc822Name | addresses. The second example (2) illustrates a permitted rfc822Name | |||
| host name name constraint with A-label, and the corresponding valid | host name name constraint with an A-label, and the corresponding | |||
| rfc822Name subjectAltName and SmtpUTF8Mailbox subjectAltName email | valid rfc822Name subjectAltName and SmtpUTF8Mailbox subjectAltName | |||
| addresses. Note that an email address with ASCII-only Local-part is | email addresses. Note that an email address with an ASCII-only | |||
| encoded as rfc822Name despite also having Unicode present in the | Local-part is encoded as rfc822Name despite also having Unicode | |||
| domain. | present in the domain. | |||
| +-------------------------------------------------------------------+ | +-------------------------------------------------------------------+ | |||
| | Root CA Cert | | | Root CA Cert | | |||
| +-------------------------------------------------------------------+ | +-------------------------------------------------------------------+ | |||
| | | | | |||
| v | v | |||
| +-------------------------------------------------------------------+ | +-------------------------------------------------------------------+ | |||
| | Intermediate CA Cert | | | Intermediate CA Cert | | |||
| | Permitted | | | Permitted | | |||
| | rfc822Name: elementary.school.example.com (1) | | | rfc822Name: elementary.school.example.com (1) | | |||
| | | | | | | |||
| | rfc822Name: xn--pss25c.example.com (2) | | | rfc822Name: xn--pss25c.example.com (2) | | |||
| | | | | | | |||
| +-------------------------------------------------------------------+ | +-------------------------------------------------------------------+ | |||
| | | | | |||
| v | v | |||
| +-------------------------------------------------------------------+ | +-------------------------------------------------------------------+ | |||
| | Entity Cert (w/explicitly permitted subjects) | | | Entity Cert (w/explicitly permitted subjects) | | |||
| | SubjectAltName Extension | | | SubjectAltName Extension | | |||
| | rfc822Name: student@elementary.school.example.com (1) | | | rfc822Name: student@elementary.school.example.com (1) | | |||
| | SmtpUTF8Mailbox: u+5B66u+751F@elementary.school.example.com | | | SmtpUTF8Mailbox: u+5B66u+751F@elementary.school.example.com | | |||
| | (1) | | | (1) | | |||
| | | | | | | |||
| | rfc822Name: student@xn--pss25c.example.com (2) | | | rfc822Name: student@xn--pss25c.example.com (2) | | |||
| | SmtpUTF8Mailbox: u+533Bu+751F@xn--pss25c.example.com (2) | | | SmtpUTF8Mailbox: u+533Bu+751F@xn--pss25c.example.com (2) | | |||
| | | | | | | |||
| +-------------------------------------------------------------------+ | +-------------------------------------------------------------------+ | |||
| Figure 1: Name Constraints with SmtpUTF8Name and rfc822Name | Figure 1: Name Constraints with SmtpUTF8Name and rfc822Name | |||
| 7. Security Considerations | 7. Security Considerations | |||
| Use of SmtpUTF8Mailbox for certificate subjectAltName (and | Use of SmtpUTF8Mailbox for certificate subjectAltName (and | |||
| issuerAltName) will incur many of the same security considerations as | issuerAltName) will incur many of the same security considerations | |||
| in Section 8 in [RFC5280], but it introduces a new issue by | described in Section 8 of [RFC5280], but it introduces a new issue by | |||
| permitting non-ASCII characters in the email address Local-part. | permitting non-ASCII characters in the email address Local-part. | |||
| This issue, as mentioned in Section 4.4 of [RFC5890] and in Section 4 | This issue, as mentioned in Section 4.4 of [RFC5890] and in Section 4 | |||
| of [RFC6532], is that use of Unicode introduces the risk of visually | of [RFC6532], is that use of Unicode introduces the risk of visually | |||
| similar and identical characters that can be exploited to deceive the | similar and identical characters that can be exploited to deceive the | |||
| recipient. The former document references some means to mitigate | recipient. The former document references some means to mitigate | |||
| against these attacks. See [WEBER] for more background on security | against these attacks. See [WEBER] for more background on security | |||
| issues with Unicode. | issues with Unicode. | |||
| Additionally, it is possible to encode a string of Unicode user- | Additionally, it is possible to encode a string of Unicode user- | |||
| perceived characters in multiple ways. While various Unicode | perceived characters in multiple ways. While various Unicode | |||
| normalization forms exist, [RFC6531] does not mandate the use of any | normalization forms exist, [RFC6531] does not mandate the use of any | |||
| such forms for the encoding of the Local-part. Thus, it may be | such forms for the encoding of the Local-part. Thus, it may be | |||
| possible to encode a Local-part value in multiple ways. To mitigate | possible to encode a Local-part value in multiple ways. To mitigate | |||
| against attacks where different encodings are used by the mail system | against attacks where different encodings are used by the mail system | |||
| and the Certification Authority issuing certificates containing | and the Certification Authority issues certificates containing | |||
| SmtpUTF8Mailbox values, this specification requires an octet-for- | SmtpUTF8Mailbox values, this specification requires an octet-for- | |||
| octet comparison of the Local-part. However, requiring the use of | octet comparison of the Local-part. However, requiring the use of | |||
| binary comparison may raise interoperability concerns where the mail | binary comparison may raise interoperability concerns where the mail | |||
| system employs one encoding and the Certification Authority employs | system employs one encoding and the Certification Authority employs | |||
| another. | another. | |||
| 8. Differences from RFC 8398 | 8. Differences from RFC 8398 | |||
| This document obsoletes [RFC8398]. There are three major changes | This document obsoletes [RFC8398]. There are three major changes | |||
| defined in this specification which deviate from [RFC8398]: | defined in this specification: | |||
| 1. In all cases, domain labels in mail addresses SHALL be encoded as | 1. In all cases, domain labels in mail addresses SHALL be encoded as | |||
| LDH-labels. In particular, domain names SHALL NOT be encoded | LDH labels. In particular, domain names SHALL NOT be encoded | |||
| using U-Labels and instead use A-Labels. | using U-Labels; instead, use A-Labels. | |||
| 2. To accommodate the first change listed above, the mail address | 2. To accommodate the first change listed above, the mail address | |||
| matching algorithm defined in Section 5 of [RFC8398] has been | matching algorithm defined in Section 5 of [RFC8398] has been | |||
| modified to only accept domain labels that are encoded using | modified to only accept domain labels that are encoded using | |||
| their A-label representation. | their A-label representation. | |||
| 3. Additionally, the name constraints processing algorithm defined | 3. Additionally, the procedure to process rfc822Name name | |||
| in Section 6 of [RFC8398] has been modified to only accept domain | constraints as defined in Section 6 of [RFC8398] has been | |||
| labels that are encoded using their A-label representation. | modified to only accept domain labels that are encoded using | |||
| their A-label representation. | ||||
| 9. IANA Considerations | 9. IANA Considerations | |||
| Update the document reference for the id-mod-lamps-eai-addresses-2016 | IANA has updated the reference for the id-mod-lamps-eai- | |||
| module in the "SMI Security for PKIX Module Identifier" | addresses-2016 module in the "SMI Security for PKIX Module | |||
| (1.3.6.1.5.5.7.0) registry from RFC 8398 to this document. | Identifier" (1.3.6.1.5.5.7.0) registry to refer to this document | |||
| instead of [RFC8398]. | ||||
| Update the document reference for the SmtpUTF8Mailbox otherName in | IANA has updated the reference for the SmtpUTF8Mailbox otherName in | |||
| the "SMI Security for PKIX Other Name Forms" (1.3.6.1.5.5.7.8) | the "SMI Security for PKIX Other Name Forms" (1.3.6.1.5.5.7.8) | |||
| registry from RFC 8398 to this document. | registry to refer to this document instead of [RFC8398]. | |||
| 10. References | 10. References | |||
| 10.1. Normative References | 10.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/rfc/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO | [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO | |||
| 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November | 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November | |||
| 2003, <https://www.rfc-editor.org/rfc/rfc3629>. | 2003, <https://www.rfc-editor.org/info/rfc3629>. | |||
| [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | |||
| Housley, R., and W. Polk, "Internet X.509 Public Key | Housley, R., and W. Polk, "Internet X.509 Public Key | |||
| Infrastructure Certificate and Certificate Revocation List | Infrastructure Certificate and Certificate Revocation List | |||
| (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | |||
| <https://www.rfc-editor.org/rfc/rfc5280>. | <https://www.rfc-editor.org/info/rfc5280>. | |||
| [RFC5321] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321, | [RFC5321] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321, | |||
| DOI 10.17487/RFC5321, October 2008, | DOI 10.17487/RFC5321, October 2008, | |||
| <https://www.rfc-editor.org/rfc/rfc5321>. | <https://www.rfc-editor.org/info/rfc5321>. | |||
| [RFC5890] Klensin, J., "Internationalized Domain Names for | [RFC5890] Klensin, J., "Internationalized Domain Names for | |||
| Applications (IDNA): Definitions and Document Framework", | Applications (IDNA): Definitions and Document Framework", | |||
| RFC 5890, DOI 10.17487/RFC5890, August 2010, | RFC 5890, DOI 10.17487/RFC5890, August 2010, | |||
| <https://www.rfc-editor.org/rfc/rfc5890>. | <https://www.rfc-editor.org/info/rfc5890>. | |||
| [RFC5891] Klensin, J., "Internationalized Domain Names in | [RFC5891] Klensin, J., "Internationalized Domain Names in | |||
| Applications (IDNA): Protocol", RFC 5891, | Applications (IDNA): Protocol", RFC 5891, | |||
| DOI 10.17487/RFC5891, August 2010, | DOI 10.17487/RFC5891, August 2010, | |||
| <https://www.rfc-editor.org/rfc/rfc5891>. | <https://www.rfc-editor.org/info/rfc5891>. | |||
| [RFC6530] Klensin, J. and Y. Ko, "Overview and Framework for | [RFC6530] Klensin, J. and Y. Ko, "Overview and Framework for | |||
| Internationalized Email", RFC 6530, DOI 10.17487/RFC6530, | Internationalized Email", RFC 6530, DOI 10.17487/RFC6530, | |||
| February 2012, <https://www.rfc-editor.org/rfc/rfc6530>. | February 2012, <https://www.rfc-editor.org/info/rfc6530>. | |||
| [RFC6531] Yao, J. and W. Mao, "SMTP Extension for Internationalized | [RFC6531] Yao, J. and W. Mao, "SMTP Extension for Internationalized | |||
| Email", RFC 6531, DOI 10.17487/RFC6531, February 2012, | Email", RFC 6531, DOI 10.17487/RFC6531, February 2012, | |||
| <https://www.rfc-editor.org/rfc/rfc6531>. | <https://www.rfc-editor.org/info/rfc6531>. | |||
| [RFC6532] Yang, A., Steele, S., and N. Freed, "Internationalized | [RFC6532] Yang, A., Steele, S., and N. Freed, "Internationalized | |||
| Email Headers", RFC 6532, DOI 10.17487/RFC6532, February | Email Headers", RFC 6532, DOI 10.17487/RFC6532, February | |||
| 2012, <https://www.rfc-editor.org/rfc/rfc6532>. | 2012, <https://www.rfc-editor.org/info/rfc6532>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/rfc/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [RFC8398] Melnikov, A., Ed. and W. Chuang, Ed., "Internationalized | [RFC8398] Melnikov, A., Ed. and W. Chuang, Ed., "Internationalized | |||
| Email Addresses in X.509 Certificates", RFC 8398, | Email Addresses in X.509 Certificates", RFC 8398, | |||
| DOI 10.17487/RFC8398, May 2018, | DOI 10.17487/RFC8398, May 2018, | |||
| <https://www.rfc-editor.org/rfc/rfc8398>. | <https://www.rfc-editor.org/info/rfc8398>. | |||
| [RFC8399BIS] | [RFC9549] Housley, R., "Internationalization Updates to RFC 5280", | |||
| Housley, R., "Internationalization Updates to RFC 5280", | RFC 9549, DOI 10.17487/RFC9549, March 2024, | |||
| n.d., <https://datatracker.ietf.org/doc/draft-housley- | <https://www.rfc-editor.org/info/rfc9549>. | |||
| lamps-rfc8399bis/>. | ||||
| 10.2. Informative References | 10.2. Informative References | |||
| [RFC5912] Hoffman, P. and J. Schaad, "New ASN.1 Modules for the | [RFC5912] Hoffman, P. and J. Schaad, "New ASN.1 Modules for the | |||
| Public Key Infrastructure Using X.509 (PKIX)", RFC 5912, | Public Key Infrastructure Using X.509 (PKIX)", RFC 5912, | |||
| DOI 10.17487/RFC5912, June 2010, | DOI 10.17487/RFC5912, June 2010, | |||
| <https://www.rfc-editor.org/rfc/rfc5912>. | <https://www.rfc-editor.org/info/rfc5912>. | |||
| [WEBER] Weber, C., "Attacking Software Globalization", March 2010, | [WEBER] Weber, C., "Unraveling Unicode: A Bag of Tricks for Bug | |||
| <https://www.lookout.net/files/ | Hunting", July 2009, <https://www.lookout.net/files/ | |||
| Chris_Weber_Character%20Transformations%20v1.7_IUC33.pdf>. | Chris_Weber_Character%20Transformations%20v1.7_IUC33.pdf>. | |||
| Appendix A. ASN.1 Module | Appendix A. ASN.1 Module | |||
| The following ASN.1 module normatively specifies the SmtpUTF8Mailbox | The following ASN.1 module normatively specifies the SmtpUTF8Mailbox | |||
| structure. This specification uses the ASN.1 definitions from | structure. This specification uses the ASN.1 definitions from | |||
| [RFC5912] with the 2002 ASN.1 notation used in that document. | [RFC5912] with the 2002 ASN.1 notation used in that document. | |||
| [RFC5912] updates normative documents using older ASN.1 notation. | [RFC5912] updates normative documents using older ASN.1 notation. | |||
| LAMPS-EaiAddresses-2016 | LAMPS-EaiAddresses-2016 | |||
| skipping to change at page 12, line 43 ¶ | skipping to change at line 512 ¶ | |||
| on-SmtpUTF8Mailbox OTHER-NAME ::= { | on-SmtpUTF8Mailbox OTHER-NAME ::= { | |||
| SmtpUTF8Mailbox IDENTIFIED BY id-on-SmtpUTF8Mailbox | SmtpUTF8Mailbox IDENTIFIED BY id-on-SmtpUTF8Mailbox | |||
| } | } | |||
| id-on-SmtpUTF8Mailbox OBJECT IDENTIFIER ::= { id-on 9 } | id-on-SmtpUTF8Mailbox OBJECT IDENTIFIER ::= { id-on 9 } | |||
| SmtpUTF8Mailbox ::= UTF8String (SIZE (1..MAX)) | SmtpUTF8Mailbox ::= UTF8String (SIZE (1..MAX)) | |||
| -- SmtpUTF8Mailbox conforms to Mailbox as specified | -- SmtpUTF8Mailbox conforms to Mailbox as specified | |||
| -- in Section 3.3 of RFC 6531. Additionally, all domain | -- in Section 3.3 of RFC 6531. Additionally, all domain | |||
| -- labels included in the SmtpUTF8Mailbox value are | -- labels included in the SmtpUTF8Mailbox value are | |||
| -- encoded as LDH-Labels. In particular, domain labels | -- encoded as LDH Labels. In particular, domain labels | |||
| -- are not encoded as U-Labels and instead are encoded | -- are not encoded as U-Labels and instead are encoded | |||
| -- using their A-label representation. | -- using their A-label representation. | |||
| END | END | |||
| Appendix B. Example of SmtpUTF8Mailbox | Appendix B. Example of SmtpUTF8Mailbox | |||
| This non-normative example demonstrates using SmtpUTF8Mailbox as an | This non-normative example demonstrates using SmtpUTF8Mailbox as an | |||
| otherName in GeneralName to encode the email address | otherName in GeneralName to encode the email address | |||
| "u+533Bu+751F@xn--pss25c.example.com". | "u+533Bu+751F@xn--pss25c.example.com". | |||
| skipping to change at page 13, line 34 ¶ | skipping to change at line 547 ¶ | |||
| The example was encoded using Google's "der-ascii" program and the | The example was encoded using Google's "der-ascii" program and the | |||
| above text decoding is an output of Peter Gutmann's "dumpasn1" | above text decoding is an output of Peter Gutmann's "dumpasn1" | |||
| program. | program. | |||
| Acknowledgments | Acknowledgments | |||
| The authors thank David Benjamin for providing the motivation for | The authors thank David Benjamin for providing the motivation for | |||
| this document. Additionally, the authors thank Éric Vyncke, John | this document. Additionally, the authors thank Éric Vyncke, John | |||
| Levine, Peter van Dijk, Rich Salz, Russ Housley, and Tim Hollebeek | Levine, Peter van Dijk, Rich Salz, Russ Housley, and Tim Hollebeek | |||
| for their reviews and feedback which meaningfully improved the | for their reviews and feedback, which meaningfully improved the | |||
| document. | document. | |||
| The authors also recognize and appreciate the following individuals | The authors also recognize and appreciate the following individuals | |||
| for their contributions to the previous version of this document: | for their contributions to [RFC8398]: | |||
| Thank you to Magnus Nystrom for motivating this document. Thanks to | | Thank you to Magnus Nystrom for motivating this document. Thanks | |||
| Russ Housley, Nicolas Lidzborski, Laetitia Baudoin, Ryan Sleevi, Sean | | to Russ Housley, Nicolas Lidzborski, Laetitia Baudoin, Ryan | |||
| Leonard, Sean Turner, John Levine, and Patrik Falstrom for their | | Sleevi, Sean Leonard, Sean Turner, John Levine, and Patrik | |||
| feedback. Also special thanks to John Klensin for his valuable input | | Falstrom for their feedback. Also special thanks to John Klensin | |||
| on internationalization, Unicode, and ABNF formatting; to Jim Schaad | | for his valuable input on internationalization, Unicode, and ABNF | |||
| for his help with the ASN.1 example and his helpful feedback; and | | formatting; to Jim Schaad for his help with the ASN.1 example and | |||
| especially to Viktor Dukhovni for helping us with name constraints | | his helpful feedback; and especially to Viktor Dukhovni for | |||
| and his many detailed document reviews. | | helping us with name constraints and his many detailed document | |||
| | reviews. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Alexey Melnikov | Alexey Melnikov | |||
| Isode Ltd | Isode Ltd | |||
| 14 Castle Mews | 14 Castle Mews | |||
| Hampton | Hampton, Middlesex | |||
| TW12 2NP | TW12 2NP | |||
| United Kingdom | United Kingdom | |||
| Email: Alexey.Melnikov@isode.com | Email: Alexey.Melnikov@isode.com | |||
| Wei Chuang | Wei Chuang | |||
| Google, Inc. | Google, Inc. | |||
| 1600 Amphitheater Parkway | 1600 Amphitheater Parkway | |||
| Mountain View, CA | Mountain View, CA | |||
| United States of America | United States of America | |||
| Email: weihaw@google.com | Email: weihaw@google.com | |||
| End of changes. 64 change blocks. | ||||
| 195 lines changed or deleted | 176 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||