<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-xie-dkim-sm2-sm3-00" category="std" consensus="true" submissionType="IETF" updates="6376" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="DKIM with SM2 and SM3">DomainKeys Identified Mail (DKIM) Signatures with SM2 and SM3 Cryptographic Algorithms</title>
    <seriesInfo name="Internet-Draft" value="draft-xie-dkim-sm2-sm3-00"/>
    <author initials="J." surname="Xie" fullname="Jieling Xie">
      <organization>CNNIC</organization>
      <address>
        <email>xiejieling@cnnic.cn</email>
      </address>
    </author>
    <author initials="A." surname="Hu" fullname="Anlei Hu">
      <organization>CNNIC</organization>
      <address>
        <email>huanlei@cnnic.cn</email>
      </address>
    </author>
    <author initials="W." surname="Wang" fullname="Wenyong Wang">
      <organization>University of Electronic Science and Technology of China</organization>
      <address>
        <email>wywang@uestc.edu.cn</email>
      </address>
    </author>
    <author initials="S." surname="Hu" fullname="Shuisong Hu">
      <organization>University of Electronic Science and Technology of China</organization>
      <address>
        <email>hi.shuisong@gmail.com</email>
      </address>
    </author>
    <author initials="J." surname="Wang" fullname="Jiushuang Wang">
      <organization>CNNIC</organization>
      <address>
        <email>wangjiushuang@cnnic.cn</email>
      </address>
    </author>
    <date year="2026" month="October" day="30"/>
    <area>Security</area>
    <workgroup>Network Working Group</workgroup>
    <keyword>DKIM</keyword>
    <keyword>SM2</keyword>
    <keyword>SM3</keyword>
    <keyword>email authentication</keyword>
    <abstract>
      <?line 75?>

<t>This document adds the SM2-SM3 signing algorithm to DomainKeys Identified
Mail (DKIM). It defines the signature and public key encodings and the
SM2 user identifier used with this algorithm. This document updates
RFC 6376.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Comments on this individual Internet-Draft are welcome. Please send
feedback to the authors using the contact information at the end of
this document.</t>
    </note>
  </front>
  <middle>
    <?line 82?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>DKIM <xref target="RFC6376"/> associates a signing domain with selected message header
fields and a body hash. A verifier obtains the public key from the DNS
using the domain and selector in the DKIM-Signature header field.</t>
      <t>This document adds SM2 with SM3 as a DKIM signing algorithm, following the
algorithm extension approach used for Ed25519 in <xref target="RFC8463"/>. It defines
the SM2 message input, user identifier, signature encoding, and key
encoding. The DKIM updates in <xref target="RFC8301"/>, <xref target="RFC8463"/>, <xref target="RFC8553"/>, and
<xref target="RFC8616"/> continue to apply, with the algorithm-specific tag
representation requirement in <xref target="user-id"/>.</t>
      <t>The extension adds algorithm choices to Section 3.3 and syntax to
Sections 3.5 and 3.6.1 of <xref target="RFC6376"/>. It defines the SM2 header hashing
and signing operation for Section 3.7 while retaining that section's
header-input construction. No SMTP extension is required. Appendix A
provides a test key, its DNS record, and a signed message.</t>
    </section>
    <section anchor="conventions-used-in-this-document">
      <name>Conventions Used in This Document</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>Syntax uses ABNF <xref target="RFC5234"/> and DKIM terminology from <xref target="RFC6376"/>.
<tt>||</tt> denotes octet-string concatenation. Base64 is the encoding in
Section 4 of <xref target="RFC4648"/>, with DKIM's folding whitespace rules.</t>
      <t><tt>ID</tt> is the SM2 user identifier; <tt>ZA</tt> is the identity digest derived from
ID, the curve parameters, and the public key. Neither value is the DKIM
Agent or User Identifier (AUID) in the <tt>i=</tt> tag.</t>
    </section>
    <section anchor="sm2-sm3-signing-algorithm">
      <name>SM2-SM3 Signing Algorithm</name>
      <t>SM2 is the digital signature algorithm in <xref target="GB-T-32918.2"/>. SM3 is the
256-bit hash algorithm in <xref target="GB-T-32905"/>. Implementations <bcp14>MUST</bcp14> use the
following curve over the prime field with modulus <tt>p</tt>, with equation
<tt>y^2 = x^3 + a*x + b (mod p)</tt>, base point <tt>G = (xG, yG)</tt>, and group order
<tt>n</tt>. Other curves <bcp14>MUST NOT</bcp14> be used with this algorithm.</t>
      <t>The parameter values are hexadecimal; spaces and line breaks are for
display only:</t>
      <sourcecode type="text"><![CDATA[
p  = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF
     FFFFFFFF 00000000 FFFFFFFF FFFFFFFF
a  = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF
     FFFFFFFF 00000000 FFFFFFFF FFFFFFFC
b  = 28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7
     F39789F5 15AB8F92 DDBCBD41 4D940E93
xG = 32C4AE2C 1F198119 5F990446 6A39C994
     8FE30BBF F2660BE1 715A4589 334C74C7
yG = BC3736A2 F4F6779C 59BDCEE3 6B692153
     D0A9877C C62A4740 02DF32E5 2139F0A0
n  = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF
     7203DF6B 21C6052B 53BBF409 39D54123
]]></sourcecode>
      <t>These are also the SM2 parameters listed in Section 3 of <xref target="RFC9563"/>,
which describes their use in DNSSEC. The encodings and identifier used
for DKIM are defined by this document.</t>
      <t>For <tt>a=sm2-sm3</tt>, the body hash is computed as specified in <xref target="RFC6376"/>,
using SM3. The Base64 encoding of the 32-octet digest is placed in <tt>bh=</tt>.
The body hash does not include <tt>ZA</tt>.</t>
      <section anchor="signature-input">
        <name>Header Signature Input</name>
        <t>Let <tt>M</tt> be the canonicalized header input constructed under Section 3.7
of <xref target="RFC6376"/>. The <tt>b=</tt> value and its surrounding folding whitespace
are removed from the DKIM-Signature field being signed or verified.
That field is last in <tt>M</tt> and <bcp14>MUST NOT</bcp14> contribute a trailing CRLF.</t>
        <t>SM2 <bcp14>MUST</bcp14> sign <tt>M</tt> as its message, using the identifier in <xref target="user-id"/>.
The digest used by the SM2 signature calculations is:</t>
        <sourcecode type="text"><![CDATA[
e = SM3(ZA || M)
]]></sourcecode>
        <t>An SM2 message-signing API that computes this digest internally <bcp14>MUST</bcp14>
receive <tt>M</tt>, not <tt>SM3(M)</tt>. Supplying <tt>SM3(M)</tt> would instead produce
<tt>SM3(ZA || SM3(M))</tt>, which is a different algorithm. A digest-signing API
can be used if it receives the correct <tt>e</tt> without hashing it again or
adding <tt>ZA</tt> again.</t>
        <t>The resulting signature is encoded as specified in <xref target="signature-encoding"/>
and placed in <tt>b=</tt>. Verification reconstructs the same <tt>M</tt>, checks <tt>bh=</tt>,
and verifies the SM2 signature with the public key in <xref target="public-key"/>.
The remaining signature and key checks, including failure handling,
follow <xref target="RFC6376"/>.</t>
      </section>
      <section anchor="user-id">
        <name>SM2 User Identifier and Identity Digest</name>
        <section anchor="context-aware-identifier">
          <name>Context-Aware Identifier</name>
          <t>The primary SM2 user identifier uses the parsed <tt>s=</tt> and <tt>d=</tt> values in
the DKIM-Signature header field:</t>
          <sourcecode type="text"><![CDATA[
ID = ASCII(selector) || 0x40 || ASCII(domain)
]]></sourcecode>
          <t>The <tt>0x40</tt> octet is the ASCII at sign. Implementations <bcp14>MUST</bcp14> use the ASCII
tag values after removing permitted syntactic folding whitespace. They
<bcp14>MUST NOT</bcp14> append a terminating NUL, add a trailing DNS root dot, change
letter case, or apply DNS name compression.</t>
          <t>For this algorithm, signers <bcp14>MUST</bcp14> represent internationalized names in
<tt>s=</tt> and <tt>d=</tt> using ASCII A-labels, including in messages with
internationalized header fields. A-labels remain valid under <xref target="RFC8616"/>.
A verifier <bcp14>MUST</bcp14> reject a signature containing a Unicode U-label in
either tag before attempting SM2 verification; it <bcp14>MUST NOT</bcp14> translate
those tag values into a different form and then retry. This restriction
keeps the identifier input in the exact ASCII form above and does not
change the processing of other header fields under <xref target="RFC8616"/>.</t>
          <t>For <tt>s=k1</tt> and <tt>d=example.com</tt>, ID is <tt>k1@example.com</tt>. The <tt>i=</tt> tag does
not participate in this construction.</t>
          <t>ID's bit length <bcp14>MUST</bcp14> fit the 16-bit SM2 ENTL field. An octet-aligned ID
therefore permits at most 8191 octets. Longer identifiers <bcp14>MUST</bcp14> be rejected.</t>
        </section>
        <section anchor="compatibility-identifier">
          <name>Compatibility Identifier</name>
          <t>A signer <bcp14>SHOULD</bcp14> use the context-aware identifier. A signer whose
cryptographic provider cannot accept that identifier <bcp14>MAY</bcp14> use these
16 ASCII octets as a compatibility identifier:</t>
          <sourcecode type="text"><![CDATA[
1234567812345678
]]></sourcecode>
          <t>A verifier <bcp14>MUST</bcp14> first attempt SM2 verification with the context-aware
identifier. If that cryptographic verification fails, it <bcp14>MUST</bcp14> make one
further attempt with the compatibility identifier before reporting a
signature mismatch. It <bcp14>MUST NOT</bcp14> try arbitrary locally configured
identifiers. Syntax errors, unusable keys, and body hash mismatches <bcp14>MUST
NOT</bcp14> trigger an identifier retry.</t>
          <t>This behavior accommodates fixed-identifier providers, but successful
verification does not prove that the signer used the context-aware
identifier. See <xref target="identifier-security"/> for the tradeoff.</t>
        </section>
        <section anchor="identity-digest">
          <name>Identity Digest</name>
          <t>The SM2 identity digest <bcp14>MUST</bcp14> be computed as specified in
<xref target="GB-T-32918.2"/>:</t>
          <sourcecode type="text"><![CDATA[
ZA = SM3(ENTL || ID || a || b || xG || yG || xA || yA)
]]></sourcecode>
          <t>ENTL is ID's length in bits as a two-octet unsigned big-endian integer.
The curve coefficients <tt>a</tt> and <tt>b</tt>, base-point coordinates <tt>xG</tt> and <tt>yG</tt>,
and public key coordinates <tt>xA</tt> and <tt>yA</tt> each occupy 32 octets as unsigned
big-endian integers. These are field elements, not hexadecimal text or
ASN.1 encodings. The full public key coordinates are used even when the
point was transported in compressed form.</t>
        </section>
      </section>
    </section>
    <section anchor="signature-and-key-syntax">
      <name>Signature and Key Syntax</name>
      <section anchor="signature-syntax">
        <name>Signature Syntax</name>
        <t>The algorithm syntax in Section 3.5 of <xref target="RFC6376"/> is extended as follows:</t>
        <sourcecode type="abnf"><![CDATA[
sig-a-tag-k =/ "sm2"
sig-a-tag-h =/ "sm3"
]]></sourcecode>
        <t>The combination defined here is <tt>a=sm2-sm3</tt>. Other combinations using
these new tokens are not defined by this document.</t>
      </section>
      <section anchor="public-key">
        <name>Key Syntax</name>
        <t>The key syntax in Section 3.6.1 of <xref target="RFC6376"/> is extended as follows:</t>
        <sourcecode type="abnf"><![CDATA[
key-k-tag-type =/ "sm2"
key-h-tag-alg  =/ "sm3"
]]></sourcecode>
        <t>A key for <tt>a=sm2-sm3</tt> <bcp14>MUST</bcp14> have an explicit <tt>k=sm2</tt> tag. If the key
record has an <tt>h=</tt> restriction, its list <bcp14>MUST</bcp14> include <tt>sm3</tt>.</t>
        <t>For <tt>k=sm2</tt>, a nonempty <tt>p=</tt> value <bcp14>MUST</bcp14> contain the Base64 encoding of
one DER-encoded SubjectPublicKeyInfo structure using the structure and
EC point representation described in <xref target="RFC5480"/>, with these choices:</t>
        <ul spacing="normal">
          <li>
            <t>The algorithm object identifier is <tt>id-ecPublicKey</tt>
(<tt>1.2.840.10045.2.1</tt>).</t>
          </li>
          <li>
            <t>The parameters field contains the named curve object identifier
<tt>1.2.156.10197.1.301</tt> for the SM2 curve.</t>
          </li>
          <li>
            <t>The subjectPublicKey BIT STRING has zero unused bits and contains a
compressed EC point of exactly 33 octets.</t>
          </li>
        </ul>
        <t>The point encoding is <tt>0x02</tt> when Y is even or <tt>0x03</tt> when Y is odd,
followed by the 32-octet, unsigned, big-endian X coordinate. Leading zero
octets in X <bcp14>MUST</bcp14> be retained. Compressed-point support is required for
this DKIM profile even when a provider's other applications use
uncompressed points.</t>
        <t>Signers <bcp14>MUST</bcp14> publish compressed points. Verifiers <bcp14>MUST</bcp14> support compressed
points and <bcp14>MAY</bcp14> reject uncompressed points for this key type. If accepted,
an uncompressed point <bcp14>MUST</bcp14> use <tt>0x04 || X || Y</tt>, with 32 octets per
coordinate and the same algorithm and curve identifiers. Hybrid points
and the point at infinity <bcp14>MUST NOT</bcp14> be accepted.</t>
        <t>Verifiers <bcp14>MUST</bcp14> reject malformed DER, unexpected object identifiers,
trailing data, and invalid public points. Point decompression and public
key validation <bcp14>MUST</bcp14> establish that the result is a nonidentity member of
the specified group before using it for verification.</t>
        <t>An empty <tt>p=</tt> revokes the key under <xref target="RFC6376"/>. It <bcp14>MUST NOT</bcp14> be interpreted
as an empty encoded public key.</t>
        <t>The required compressed SubjectPublicKeyInfo occupies 59 DER octets and
80 Base64 characters. This reduces key size relative to an uncompressed
point, but does not guarantee that every DNS response will fit a
particular transport size limit.</t>
      </section>
      <section anchor="signature-encoding">
        <name>Signature Encoding</name>
        <t>An SM2 signature consists of integers <tt>r</tt> and <tt>s</tt>. The <tt>b=</tt> tag <bcp14>MUST</bcp14>
contain the Base64 encoding of the DER encoding of this ASN.1 structure:</t>
        <sourcecode type="asn.1"><![CDATA[
SM2Signature ::= SEQUENCE {
    r INTEGER,
    s INTEGER
}
]]></sourcecode>
        <t>Both integers <bcp14>MUST</bcp14> be in the range <tt>1</tt> through <tt>n - 1</tt>, where <tt>n</tt> is the
SM2 group order. DER INTEGER values use the minimal signed encoding;
a leading zero octet is required when needed to represent a positive
integer. Verifiers <bcp14>MUST</bcp14> reject negative, zero, out-of-range, or
nonminimally encoded values, extra sequence members, and trailing data.</t>
        <t>This differs from DNSSEC's fixed-length, 64-octet <tt>r || s</tt> format in
Section 4.2 of <xref target="RFC9563"/>. Verifiers <bcp14>MUST NOT</bcp14> accept that raw format as
an alternative encoding for <tt>b=</tt>.</t>
      </section>
    </section>
    <section anchor="choice-and-strength-of-keys-and-algorithms">
      <name>Choice and Strength of Keys and Algorithms</name>
      <t>Support for SM2-SM3 is <bcp14>OPTIONAL</bcp14>. An implementation claiming support for
signing or verifying it <bcp14>MUST</bcp14> implement the corresponding procedures and
encodings in this document. This extension does not replace existing
DKIM algorithm requirements, including the updates in <xref target="RFC8301"/> and
<xref target="RFC8463"/>.</t>
      <t>The curve has 256-bit field elements, and SM3 produces a 256-bit digest.
These sizes do not establish equivalence or superiority to other DKIM
algorithms. Algorithm choice remains a deployment policy decision.</t>
    </section>
    <section anchor="transition-considerations">
      <name>Transition Considerations</name>
      <t>Signers can attach an SM2-SM3 signature alongside a signature using an
existing DKIM algorithm. Each algorithm uses a different selector and
key record; the signatures can use the same <tt>d=</tt> and <tt>i=</tt> identities.
Each signature is verified independently under <xref target="RFC6376"/>.</t>
      <t>During key rollover, old and new selectors can coexist so that messages
signed before the change remain verifiable. Operators need to account
for message delivery time and DNS caching when retiring an old key.</t>
      <t>Providers need to use the specified SM2 identifier for each signing
context. The compatibility procedure in <xref target="user-id"/> accommodates
providers restricted to the fixed identifier; it does not remove other
DKIM verification requirements.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of <xref target="RFC6376"/> continue to apply. SM2
signers <bcp14>MUST</bcp14> generate the secret per-signature scalar with a
cryptographically secure random source and follow the generation and
retry rules in <xref target="GB-T-32918.2"/>. Reuse or predictability can expose the
private key. Implementations <bcp14>MUST</bcp14> protect private keys and secret
intermediates and <bcp14>SHOULD</bcp14> use providers that resist side-channel attacks.</t>
      <section anchor="identifier-security">
        <name>Identifier Binding and Compatibility</name>
        <t>The context-aware ID binds <tt>ZA</tt> to a selector and domain, but does not
contain an explicit protocol label. Accepting the compatibility ID means
that not every successful signature used the context-aware ID. Neither
choice establishes complete cross-protocol isolation. Operators <bcp14>SHOULD</bcp14>
use dedicated DKIM keys instead of reusing an SM2 private key across
unrelated protocols.</t>
        <t>The <tt>d=</tt> and <tt>s=</tt> tags remain in the signed header input even when the
compatibility ID is used. A retry <bcp14>MUST NOT</bcp14> alter them, omit the signature
field, or bypass a failed body hash or key check.</t>
      </section>
      <section anchor="validation-and-operational-limits">
        <name>Validation and Operational Limits</name>
        <t>Public point validation and strict DER parsing are required as specified
in Section 4. Implementations <bcp14>SHOULD</bcp14> bound message processing, DNS
processing, signature count, and verification work. This profile permits
at most two SM2 verification attempts per otherwise usable signature.</t>
        <t>Compressed keys reduce record size; they do not authenticate DNS answers
or guarantee that a DNS response fits a particular transport limit.
The risks associated with DKIM's <tt>l=</tt> tag and unauthenticated appended
content also continue to apply. If weaknesses are found in SM2 or SM3,
operators need to migrate keys and algorithms.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to add these entries within "DomainKeys Identified
Mail (DKIM) Parameters" <xref target="IANA-DKIM"/>.</t>
      <t>The existing <tt>_domainkey</tt> DNS node is reused. No additional underscored
node registration is requested under <xref target="RFC8553"/>.</t>
      <section anchor="dkim-key-type">
        <name>DKIM Key Type</name>
        <table>
          <thead>
            <tr>
              <th align="left">Type</th>
              <th align="left">Reference</th>
              <th align="left">Status</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">sm2</td>
              <td align="left">This document, <xref target="public-key"/></td>
              <td align="left">active</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="dkim-hash-algorithms">
        <name>DKIM Hash Algorithms</name>
        <table>
          <thead>
            <tr>
              <th align="left">Type</th>
              <th align="left">Reference</th>
              <th align="left">Status</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">sm3</td>
              <td align="left">This document</td>
              <td align="left">active</td>
            </tr>
          </tbody>
        </table>
        <t>The combined identifier <tt>sm2-sm3</tt> is defined by this document's signature
syntax. There is no separate "DKIM Signature Algorithms" registry in
the existing registry group; this document requests no new registry.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC6376">
          <front>
            <title>DomainKeys Identified Mail (DKIM) Signatures</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="T. Hansen" initials="T." role="editor" surname="Hansen"/>
            <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
            <date month="September" year="2011"/>
            <abstract>
              <t>DomainKeys Identified Mail (DKIM) permits a person, role, or organization that owns the signing domain to claim some responsibility for a message by associating the domain with the message. This can be an author's organization, an operational relay, or one of their agents. DKIM separates the question of the identity of the Signer of the message from the purported author of the message. Assertion of responsibility is validated through a cryptographic signature and by querying the Signer's domain directly to retrieve the appropriate public key. Message transit from author to recipient is through relays that typically make no substantive change to the message content and thus preserve the DKIM signature.</t>
              <t>This memo obsoletes RFC 4871 and RFC 5672. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="76"/>
          <seriesInfo name="RFC" value="6376"/>
          <seriesInfo name="DOI" value="10.17487/RFC6376"/>
        </reference>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC5480">
          <front>
            <title>Elliptic Curve Cryptography Subject Public Key Information</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="D. Brown" initials="D." surname="Brown"/>
            <author fullname="K. Yiu" initials="K." surname="Yiu"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="T. Polk" initials="T." surname="Polk"/>
            <date month="March" year="2009"/>
            <abstract>
              <t>This document specifies the syntax and semantics for the Subject Public Key Information field in certificates that support Elliptic Curve Cryptography. This document updates Sections 2.3.5 and 5, and the ASN.1 module of "Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 3279. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5480"/>
          <seriesInfo name="DOI" value="10.17487/RFC5480"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC8463">
          <front>
            <title>A New Cryptographic Signature Method for DomainKeys Identified Mail (DKIM)</title>
            <author fullname="J. Levine" initials="J." surname="Levine"/>
            <date month="September" year="2018"/>
            <abstract>
              <t>This document adds a new signing algorithm, Ed25519-SHA256, to "DomainKeys Identified Mail (DKIM) Signatures" (RFC 6376). DKIM verifiers are required to implement this algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8463"/>
          <seriesInfo name="DOI" value="10.17487/RFC8463"/>
        </reference>
        <reference anchor="RFC8301">
          <front>
            <title>Cryptographic Algorithm and Key Usage Update to DomainKeys Identified Mail (DKIM)</title>
            <author fullname="S. Kitterman" initials="S." surname="Kitterman"/>
            <date month="January" year="2018"/>
            <abstract>
              <t>The cryptographic algorithm and key size requirements included when DomainKeys Identified Mail (DKIM) was designed a decade ago are functionally obsolete and in need of immediate revision. This document updates DKIM requirements to those minimally suitable for operation with currently specified algorithms.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8301"/>
          <seriesInfo name="DOI" value="10.17487/RFC8301"/>
        </reference>
        <reference anchor="RFC8553">
          <front>
            <title>DNS Attrleaf Changes: Fixing Specifications That Use Underscored Node Names</title>
            <author fullname="D. Crocker" initials="D." surname="Crocker"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>Using an underscore for a prefix creates a space for constrained interoperation of resource records. Original uses of an underscore character as a domain node name prefix were specified without the benefit of an IANA registry. This produced an entirely uncoordinated set of name-creation activities, all drawing from the same namespace. A registry for these names has now been defined by RFC 8552. However, the existing specifications that use underscored naming need to be modified in order to be in line with the new registry. This document specifies those changes. The changes preserve existing software and operational practice, while adapting the specifications for those practices to the newer underscore registry model.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="222"/>
          <seriesInfo name="RFC" value="8553"/>
          <seriesInfo name="DOI" value="10.17487/RFC8553"/>
        </reference>
        <reference anchor="RFC8616">
          <front>
            <title>Email Authentication for Internationalized Mail</title>
            <author fullname="J. Levine" initials="J." surname="Levine"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>Sender Policy Framework (SPF) (RFC 7208), DomainKeys Identified Mail (DKIM) (RFC 6376), and Domain-based Message Authentication, Reporting, and Conformance (DMARC) (RFC 7489) enable a domain owner to publish email authentication and policy information in the DNS. In internationalized email, domain names can occur both as U-labels and A-labels. This specification updates the SPF, DKIM, and DMARC specifications to clarify which form of internationalized domain names to use in those specifications.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8616"/>
          <seriesInfo name="DOI" value="10.17487/RFC8616"/>
        </reference>
        <reference anchor="GB-T-32918.2" target="https://std.samr.gov.cn/gb/search/gbDetailed?id=pRGWJWHKqAM%3D&amp;mode=p">
          <front>
            <title>Information security technology -- Public key cryptographic algorithm SM2 based on elliptic curves -- Part 2: Digital signature algorithm</title>
            <author>
              <organization>Standardization Administration of China</organization>
            </author>
            <date year="2016" month="August" day="29"/>
          </front>
          <seriesInfo name="GB/T" value="32918.2-2016"/>
        </reference>
        <reference anchor="GB-T-32905" target="https://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=45B1A67F20F3BF339211C391E9278F5E">
          <front>
            <title>Information security techniques -- SM3 cryptographic hash algorithm</title>
            <author>
              <organization>Standardization Administration of China</organization>
            </author>
            <date year="2016" month="August" day="29"/>
          </front>
          <seriesInfo name="GB/T" value="32905-2016"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9563">
          <front>
            <title>SM2 Digital Signature Algorithm for DNSSEC</title>
            <author fullname="C. Zhang" initials="C." surname="Zhang"/>
            <author fullname="Y. Liu" initials="Y." surname="Liu"/>
            <author fullname="F. Leng" initials="F." surname="Leng"/>
            <author fullname="Q. Zhao" initials="Q." surname="Zhao"/>
            <author fullname="Z. He" initials="Z." surname="He"/>
            <date month="December" year="2024"/>
            <abstract>
              <t>This document specifies the use of the SM2 digital signature algorithm and SM3 hash algorithm for DNS Security (DNSSEC).</t>
              <t>This document is an Independent Submission to the RFC series and does not have consensus of the IETF community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9563"/>
          <seriesInfo name="DOI" value="10.17487/RFC9563"/>
        </reference>
        <reference anchor="IANA-DKIM" target="https://www.iana.org/assignments/dkim-parameters/">
          <front>
            <title>DomainKeys Identified Mail (DKIM) Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 432?>

<section anchor="example">
      <name>Example of a Signed Message</name>
      <t>This appendix provides a public verification example. The key is for
testing only and <bcp14>MUST NOT</bcp14> authenticate production messages. SM2
signatures are randomized; signing the same input can produce another
valid signature. The displayed <tt>t=</tt> is historical test data, not a claim
about when this document was prepared.</t>
      <section anchor="example-key">
        <name>Secret Key</name>
        <t>The following PKCS #8 PEM key is intentionally published for this test
example. It corresponds to the public key in <xref target="example-dns"/> and <bcp14>MUST NOT</bcp14>
be used to authenticate production messages.</t>
        <sourcecode type="pem"><![CDATA[
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBG0wawIBAQQgtXPjROYO6eJ0xpIv
Q2pF4FFMQPAGFg+E2LiGtC4oDeOhRANCAARMb4fKF0X2wu6E5/M5xVFoMG9Q9IE4
KLZUbbAreZuaD3CbjMvCLaa7rlwOSMUJvg1qBgEYj572RcdWr6L+9dkV
-----END PRIVATE KEY-----
]]></sourcecode>
      </section>
      <section anchor="example-dns">
        <name>Public Key DNS Record</name>
        <t>The quoted strings form one TXT record and are concatenated without
inserting whitespace:</t>
        <sourcecode type="dns"><![CDATA[
sm2._domainkey.football.example.com. 3600 IN TXT (
  "v=DKIM1; k=sm2; p="
  "MDkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DIgADTG+HyhdF9sLuhOfz"
  "OcVRaDBvUPSBOCi2VG2wK3mbmg8="
)
]]></sourcecode>
      </section>
      <section anchor="signed-message">
        <name>Signed Message</name>
        <t>Each displayed line ends with CRLF, including the last body line.
DKIM-Signature continuation lines begin with one space.</t>
        <sourcecode type="message/rfc822"><![CDATA[
DKIM-Signature: v=1; a=sm2-sm3; c=relaxed/relaxed;
 d=football.example.com; i=@football.example.com;
 q=dns/txt; s=sm2; t=1528637909;
 h=from:to:subject:date:message-id;
 bh=CjilxR9ltODIjw8xJGWrdn3kjU6qds8AgqPeu3REZ9U=;
 b=MEUCIBc6Q5FyKBrnAHeL9q+9RIioEFc3SCFzy7lNeYTGUbMcAiEAolrdqTdZ+sWY
 IWnwsBXYElu6NovZEOfQpfVsJTZIx80=
From: Joe SixPack <joe@football.example.com>
To: Suzie Q <suzie@shopping.example.net>
Subject: Is dinner ready?
Date: Fri, 11 Jul 2003 21:00:37 -0700 (PDT)
Message-ID: <20030712040037.46341.5F8J@football.example.com>

Hi.
We lost the game.
Are you hungry yet?
Joe.
]]></sourcecode>
      </section>
      <section anchor="verification-inputs">
        <name>Verification Inputs</name>
        <t>ID is <tt>sm2@football.example.com</tt>, 24 octets long; ENTL is <tt>00c0</tt> in
hexadecimal. The relaxed body input is 51 octets. Its Base64 SM3 digest
is:</t>
        <sourcecode type="text"><![CDATA[
CjilxR9ltODIjw8xJGWrdn3kjU6qds8AgqPeu3REZ9U=
]]></sourcecode>
        <t>The canonicalized header input <tt>M</tt> is 434 octets. Its Base64
encoding follows; concatenate the lines before decoding:</t>
        <sourcecode type="text"><![CDATA[
ZnJvbTpKb2UgU2l4UGFjayA8am9lQGZvb3RiYWxsLmV4YW1wbGUuY29tPg0KdG86
U3V6aWUgUSA8c3V6aWVAc2hvcHBpbmcuZXhhbXBsZS5uZXQ+DQpzdWJqZWN0Oklz
IGRpbm5lciByZWFkeT8NCmRhdGU6RnJpLCAxMSBKdWwgMjAwMyAyMTowMDozNyAt
MDcwMCAoUERUKQ0KbWVzc2FnZS1pZDo8MjAwMzA3MTIwNDAwMzcuNDYzNDEuNUY4
SkBmb290YmFsbC5leGFtcGxlLmNvbT4NCmRraW0tc2lnbmF0dXJlOnY9MTsgYT1z
bTItc20zOyBjPXJlbGF4ZWQvcmVsYXhlZDsgZD1mb290YmFsbC5leGFtcGxlLmNv
bTsgaT1AZm9vdGJhbGwuZXhhbXBsZS5jb207IHE9ZG5zL3R4dDsgcz1zbTI7IHQ9
MTUyODYzNzkwOTsgaD1mcm9tOnRvOnN1YmplY3Q6ZGF0ZTptZXNzYWdlLWlkOyBi
aD1DamlseFI5bHRPRElqdzh4SkdXcmRuM2tqVTZxZHM4QWdxUGV1M1JFWjlVPTsg
Yj0=
]]></sourcecode>
        <t>Decoded <tt>M</tt> has no CRLF after its final <tt>b=</tt>. For this public key and ID,
<tt>ZA</tt> and <tt>e = SM3(ZA || M)</tt> are, in hexadecimal:</t>
        <sourcecode type="text"><![CDATA[
ZA = 2940ad2fb8df156eb21183807ecc1c1dc808e0bb93d15dae0a15783573a7e940
e  = 2dc20ac757e01992d7241f93c8e89210e00051703235f0d087629c292ff30de7
]]></sourcecode>
        <t>Decode <tt>p=</tt> to <tt>public-key.der</tt>, <tt>b=</tt> to <tt>signature.der</tt>, and the header
input above to <tt>header-input.bin</tt>. An example invocation with an
SM2-capable OpenSSL provider is:</t>
        <sourcecode type="shell"><![CDATA[
openssl pkeyutl -verify -pubin -inkey public-key.der \
  -keyform DER -in header-input.bin -sigfile signature.der \
  -rawin -digest sm3 \
  -pkeyopt distid:sm2@football.example.com
]]></sourcecode>
        <t>This checks the SM2 signature only. Full DKIM verification also requires
the message, body hash, DNS record, and tag checks specified above.</t>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA8Vc6XLbSJL+X09R647dsadJGgRvuTXdvE1b1ElZlvYY4iiS
sECABkBRVNvzLPss+2SbmVWFg5J7ZmM3YjtmbBIEqrKyMr/8MivhcrnMEi/x
xRF/NQjXlhd8FPuYT1wRJN7CEy6fWp7PXw8+TqZv+JW3DKxkG4mY77xkxa+m
JrcCF/6u8X603yThMrI2K8/hXX8ZRnDLOn7FLNuOxANOAIM8e/AVc0MnsNYg
gRtZi6T86Imye++ty/HahP/XyobBHCsRMOD+iMeJy7YbF77HR7xZazUZfj7i
pmE2y1WjXDNYvLXXXhx7YZDsN/DTZDgbMeZtoiOeRNs4MQ2jY5jMioR1xK+E
swVB92wXRvfLKNxujvipSPAbv4E/vGDJx3iZ3Ys9XHWP+L/iOkq4BvyjVuJi
jTqytskKtQaywtT/zlicwBL/avlhAELsRczitRUlf/26DUn4IGQbD0ZLQqfE
4zBKIrGI4dN+jR/geRwwjI4YLzMO/0kdvfrgCR+F+uyJV3Q9jJZW4D3RrPB7
//R00pe/kFxwCTT6RT71mxMEnlNxglcHo3YDX3j8/fYfHXK1tfCJH453I4J9
CFLeWMHyxTGvA+9BRDFonocLPvSFk0QhjMWvHE8EjiDzmAlnFYR+uKSb+isv
sIpi7PY7mOC3rYgTpyLc7QuSXK22Xoyi/GBx/zeCrLxKrCb6bYnXKk64PhTl
g7eNUXF/oJYXVI0r/KKfzCmcBWG0huceBJgIvxz10RvUx4ZZq+uP9bahPtab
9bb62K43a/pjzajqj41GerVZpcHGvfKsXDM71XbFPCK5NFxMgoUUIAx4rLyI
J5miymV+vrV90CR4DncK8GBpeCAksK0YgAaGEb7vbcCDOIz2ACCDQ4DLcPOI
D7yll1g+jzUEZWNIdaXeQv+VUbHg3eiCVuQqBfOuu/YCL04i+VXvJT2kcaTa
LBvtstmhi7GIPBF7sFQ98rj3dnbElUbKeLvUihUtRXLEV0myiY/evgWcqsTW
OqoswwfYrrdL+20srMhZwaeBSGBrhfur5x5vLsc3H27ef/zanf5zbfAv69AV
x5uc3o3GP6p17+tWqgzRuKjulRWv/t/1ZTR+rK1wI4JDjdlPy3tUWyB2YxuX
/evKCcLjeqNX7TZbI9MY1XqjWq1jVqv9Wqc67Jit9qgxBKTXKko9o9OQ1j7p
nnbLiN5Fnf79wAdWCC6cAE78gfJw9BdXt9vtKp4VWBW47a0VowmvYZr4LYW5
TTr2W8bKsH+WjQp3EsZmKy/mEB63eDu3XDfmEGPQZ8q4yTgQhoLMm5KQv7gY
lltMhU8S7oqFFwg5XM6lAOo2mc8C/IUuTBDTD3ArQ2/dwh5zTw8d4XdXRvUE
xU2FqfCi+CpqM9gPCtwVudq157q+YOwnPgkAed2tg6bGGJGF339XuPb9OwfF
hY6HQ3ArXbpLq5XTxwLBG4RZizi2loKvhOWKiIGUvivXYHE7dPfkDxXe5QD8
cg2hDR4ZSHXkFLCIwjVdG5xesW2ME+I3NSkOKOcMQSGBvBGkLqc0SUnASYLK
i/uJGlWUqAZLBAlp4c+2tsQXoe+HOyUDy/ZcPCbgPOie1mYThZazklsCTsCH
rtloVDsoHakSYf/797wFMGVQqdK8YLNNSoe7XMpZiTaLEmkA9MT0FdxyqQO9
29nMEGW+fy/lxdBfIOjgFxiMyQsQemC/HeBvXrAVaNSwMn9f0laWw/5yvBEO
SOiA0y1ZJDbATUFmCVeR+Lr1IkHKJjlwUWXPBQ3gXoi86nAvMp06q9Bz0D1C
JIg0WK1Skzu+h+Ef4Remfonhpwb9VKs0K1UEyZzZPvM21LUyCzRD0BqjYdWG
AxIqsMX9yyZv8d0KYgasCS1VWoGVYAjAG/4UMzlmmbYPdQcYIl2pwk9hFdPZ
eW65YIZKOS74wQbQ1/UeeZeB/TzApqMZwuYluLkl7iUxOgA84QD/LSlHQoEz
X6ugA/fD4AENBnVyjSYISieTHyiTl1pHz0ImHfNX0+ur2auS/JufntHny+HF
9eRyOMDPV++7JyfpB6buuHp/dn0yyD5lT/bPptPh6UA+DFd54RJ7Ne3evpIL
eHV2PpucnXZPXknXLThmREZnozMALoNNIapYMQPNOJFny5X1+uf/9Z/VOmz2
P8FuQxTqgNHKL+1qqw5fdpAPyNnCwN+rr2ADewb2DGQAR7F8nzvWBrkNkH8A
gHgV7gKwkAh1+ud/Rc38+xH/xXY21fpf1AVccOGi1lnhIuns+ZVnD0slvnDp
hWlSbRauH2i6KG/3tvBd6z138ZdfITcRvFxt//oXxtiV9DBw1ph3e6cj6U5I
aTEKgDYJYGBjgJtIqkk4nXc6Nv/2bQ5uF2CqxUOICkkZHALdBlwDs8nAkr7R
A+7ZrKNDoHNqIIOd0e7N66lHI39GpCIYQiH+FCMq0wPgnTDVxoKEIdr6IobN
m08Gcz3wC4HzHZ/fddMb5HXgcq63RM8DXwb+4tLS2GRAdiNpMc8IQ0kH5lzQ
AncXIB9M9WD5gJ5qfBSXdZdo3oAr1yjKJIvhr7vXk8EbHcTm3vEc8ZScWpON
KwVQaWbPiA2o4d0f03MJvfk8AlERh5TPMrPRLNtecsBSi48ZDYLS9cYnOLck
yJAvgFppmCw+SjWFEN2lbiJvLWQMllsHJHvrb2M+38zVZgIW0pBsvv8Pkx/z
x/+o8Z+59edH+NPmr+EBvnkDN2OmwjchwAKfj+G+14/jEt+P8SfcCaofgH6R
dcyDeYWf0UaobEZ7LgLLD0mThMh0i+UmxgRJK/EIEO94a8t/x8nUJKkh57Ej
Yd3L+yBwMNeLN761J+A5Yuxvf/sbOMxjwjYcpB7J/4b6w+j5B8ls08uG+u+F
G63/4xH7zMYRzfawM+p2hrwz6ACrr9V5fdCA7/Ue74+aDaPTbakRa51WG27h
1Ua31x51TD4Y9Pq9Qb0KT3TqxrBTY4+4VzWzX+8OzT6vjqqdNsA1b4w6HaNe
b/Jmt9bpdzp1OWJ7NKwZvR5IZDabRm9Y5S0Yu95od3itVu+34H9sjyP2+rVW
rdk1+ag+arZanT5vdHqD/nBY481eExKTRk2OODC6nXar1ef9ptmtt+oGN8zB
qGYOG9ys1jojo2uw4H+kx5Zp1AajZg+e7zeNhtnjjRqIXDdAxs6gUa+aNdx0
siYwWYscMg5TLMowBMwnTmRES9lGiniYOAHiMUA3oJU6/JHbesT88THgBlfD
vuR+xZThIEtgSGkIvFEeSYpcbu+L4RdcYAT3za1jVQCcS/BLmTvihhOugedQ
VOaKAso15KJASVF2gBopnML6FORhlThwzSxThNDQC8OD7zhyvLm9Op5XyCkz
AdwQdACxBW5w/K0rCMkRLX/i7yW1y1KACRGy339KkVFStO+MncCU8+kc4YDA
3Qqw7mT53hNMrSjiAZ2DH7YBjZ8RQ3ZIOFHWuQ0QLgMAbQRQuHgbATwFtPLn
UQvLocDw1qEOOi+lMxJDbYGPKv4HO6WyKBe1BJRU3gRK9K2YeDeuEYVI8Q+Z
PdgR7B/yzAhSUxywf3kyqsigQnfiBPLZmORXTBNTE52I5ezrkN/PZFDC/SSs
JSuTtp/FKFC2s/VVMPHiPFAK8EYwnNd3Xf7tG5++kd7UDfK5UlmT9u75RNJx
ZZaxsmhlT0giAyB6e1oYZCmOgNiOayuRFc1xoukbiBdXW0x0cEh9DZjyFtUJ
BgAWAbEMM2TB5pls8kYMQdJLMZzA1IsFUEgks1k+3lUS5eVmYHZpQPIWoGmu
5JOBHSg/fAcZxZziVbhNdN6C91pLzIQh4EACRWIjpaGLKpJBPrb1E20wUu0g
Ifngi+6b+Yn20+/fKUPK+yS4JP9EZufoVC/1EVXUAHiTGnZWwoHISI5copGU
wcYvWESaYeaqACSW/F6G79q6IizQBsWVqYRYzVlS+EAeB1ZOFQG4Bc29pPhK
kbYigqBAh/wMx51ohjiQZvX7T9rc8THKvtByy90dunL2sGIUQIKsaP8SEZVM
O5G0A81gHh9Lj527GkUwkWd/p8CRd5/JAPyne9WfTF7rEskbNFbjEYIf/C1/
koWUN2mk4nP8fS4Ju6aWdCvHXBdm/WMOKO9lQF1T3rRAEkW4hruwwaQhQRil
NN7BWvNzLCQI3bMUryxKkCknxpzDInM+vT4pYdkgD2GUJYfg0W6YoOFZwVIw
XyQogwPBp4RwSbUMuhWPBQgywEkwLVeRr8gIZeUFAzXJk5Y4NKygFlTMwPFo
o4obKPFSqrFb9i1b+AXTBPtWgCaP9djzkfPbHFfSUZQPoLI9HZlyJZwKy5XY
lPRfEEysPAaD2So/svg1BEDABX4tJ8C1qGQG99QWQCDAyUCf600iQ7upZpA4
8A4xKd032JcgBngXYLkhWkhmF7DEsACTWDLW2RTCSRLtVQET1A3RSlYl74XY
xM9DD8ZolTsBR4cFSmXLMW0IqTSyZg1MGobKTUIHN1+ykZCWWlD2S1qV/Cg+
vq+muwzTol/gqRNAHngfCD6/r/6Wv66YgUruSByG4Qe8HvzA24Ci0lpIoYDE
wJ0h1cUczRfBEhCSVLyA77iGqkzfcC+Gp7MTVe3kECtl4g3GQVRhMkAEieQm
Sk+M0a/XIaBZu9qpyvvBvk5C0E8eopTx20JZEJINBXprkNuzwf8AGfOg11V+
w1UtQ0OEo2DSIpjMpsDwqJ7YobWw4hGKqoyhHweoNMtxxCaRUT9nC9PurZ4J
hqg2lSXIhcn6rlMQOXs2D59A3+uNZqut/1bs48CbFl4EmlPu8MwXslhWWDLL
L3myULylsNbCKBi4EC6UX62te0itA0i3txFZq54+N9vL69PuCwgWRuS9Fstg
YO3FaytxVlQvzXnwHnIFsK4IY5cfOsSiYD0LbwlPubnFgNmowpEAnou1kW2w
jS3bp4KjKpVkFF7Pp/JyJmfzlkuKtnmxJRao4r0tVtaDhyjuwDrXoSxyL7xH
4ZZzz2hrgWmB5gL1dtDLF1ufFXSb5hF4v5BboU9k9MnKH2/glRCADdmVsj4T
/P6dCsj4NCjPFeFioVzmgEfIwEulnIMSlHa5H+Va7LCqk7dg4KaSQBMkQMQH
TII/LfzDxj8gJ4c/9/TnIxHZfVcxAXoElE2ooxAHgMn2tAslu1ClbNtA5SG2
tyxjFRv3DpQF2yhZmqwFOaFYgNY9PHWDzFLBpq0qOmVZ0XHCMHIxvMOmzB/H
6qb9WLHGHCMs3tnVd8IHgccvoeNsN3vIK3N+rwVlzwWNCZhVli6zJyEpTizz
g1zhh5SLfLt7dVqpZum2xHYwMP9HcuLgZFDiAQIc1qKpaiaXvgMJKVqia0qS
rXmJPElay1pggeh+hBmky0nemv6oL87yJzX64CRfZ6g0Dk5LKDXAUwqVG0iO
rBMzyw4WCBllqwwBrHzPj9/yV/HafJW7uFIXa68yVglLsb1AuZyqOmAgoiCZ
lRnScl12eyzJEyM454HY8SS8F4HUJm7NHxQxQCWZhoCt5zKI7BzkJaU8P0T6
B9QCg5XvSQPY9JRpBq+v6DrsBD9QTleecharLdLvAeZwl2HaDUgN6D+/xztk
XVjGDVoBk6dCCKp4+xySrDxjkqdHWGKSw6YFE1K4YjJyZEBoUGmAwWTP55u0
fkHPKZZIsz4v4zB4jA+Gl2WdVl5tbaQJsv8EdgHbB7gkNFvyA11ByK7h8eOw
r4q7BweJhXMfeRpRbxvpUYC0DnVmCJvyZ160/JCEKVBGMDzPLQsnlXDOOH89
r1bMSrtuVKqGUW/A5+r8TUUNl6vYSYxQKpF0FKm/qwvfh9PB0DRytQGmZVQ7
rUq1UjOAPOoIgehPz+rJ4gP98d5kxq9ml5PTMe30k4hCiq+EvIms9qUCYX9I
Dj5SrYJREz2GEF6rabKn0lO6ITt+iTEVNMDcCKhuyQEQt9Bc4Ida/ofQdXU2
nRV6dFGvlCJvKR8jPuewEfgmMG6cFpfFFGZ7eFPGOnFleFjaT9eloka83SBo
5o9UqQJPcEDFTgjuCzy6zYDXSgkCBDhJ+jErVLQAQUewbZBTIU2FurrK54KE
KMBlnt+oiiPpnVrI7E4J/HLjkLSqzOyFWZWVwGoQLBBdyP8lAQa1QnB84bEs
L8f9qmN8/4x/3Oojlyw6QirAst1Ij7SogpM5EVkY2XeB873f25GnRWXpcRiJ
gNQcmGKAnCZ/+KJFB30e6ElpAQItxjxYC4AKWhCgoGwteeZbcYml6T+QQUvy
TC+QKbGKxXpXzkksCOVZzp/ruUGslqm0RB2SCKDUkrucskNZUpN1PiwZa9q2
Fmsbe1kWVKjJmJo8lVLsW0KfRwlvgehXqLqZQ99IPECsizXQ5xPRXGtDXq+5
03Imw4EcTqNy7pBSFweVw+Ss50XoJkaFFbtGB7ck5VWA2W1DBwRIq7FtShEq
8keslUq7jb0nnM+ntjBqKSlarfQHSddTWr7cwoiwKEXNwYGjvWqFAKYUxFgv
BMaFibDFZBq99a0oo1JyWt+DVLdyQJKGGuvyRwNpyTMtNRcKJTHE0RhhVDNH
Po8U+YznucI/pveU1fxx2JQlflBn8RpoTrLLNDhqohEHlSoW6LNVHB0Byx9e
XA9P+0P+O51NRXxyOhuOwXFkR6D+yr5L0tELic6rBWiEVUJGVBmZQ2xKVmC2
yxWfB7zMq1TdRso2D/SROZ0U5E5cK7QUNZmu8+isH9sY1+p8GjmwWvA7ZkGC
kYF/VnlMTZMAOxACDRjMJqu/AYiHsYfmxHTGcQi7Ck4CsSSzK9EcJR5uk3K4
KNNasSTIwIuVgH7mLXIFJSR+kcVjkIfakaWX66P/PPSkDWZU1IrlKY48nPuT
zlFlNlXizbpKoOYRonJMXGBNgJk1PlTMg4PAZwuk6miuEhJZOz2QhWgM+K1K
iQ+55goinFjDp6Yhok3ybYAkkskezEoNjHgxe5MAop8KY9QapfoSYMG6pYRq
Tl6hPswd3wLvwyJ99ixLm60UBO4VJkqKqgfIzj/Q2UlyKte59AIEYk922nnY
Q6QQKOu4SjEFDAgPMuAncGbMLeSBaBrnck1rhSotCvNyU12uc06297Fc5ots
TTdYHOaW+tUNdaiE8UTfKksAFXV8jCiGa6MFZBEJJQUrJbMEVYKGQZmh7EgO
Fa+hvpN0dVg7PmiyUzVkOrQC1YR7Uv0mBPTfY6j0VGX8Jz5DVPVoV/uIha7q
lIszWoSHWVaSYBJuBYU+Wd2UEsJuwZOFErSMiVbA9J7w4p5U+JBGTCWnA5N8
9ThtA8WtwHAjs6J3xf5aKZ+GJHlC5epKPZZlVSj3sH2IpiycmelzVth+0BQm
gwFS6edxmbHBlnqdSBIkxg/YwRnC5uNUmMZqgaVITkgr59QggBVZdRzAdHFF
cgfyB1m71oV/EgmLbJA8U+ciDoloSSHWccJtkNCxv24vdYXvURhNsCmHurkg
njqwWHkGI4vvXiR3hGSWfOFcl9TS4VNFpkwnq2JRloXzCq1GdDVVR5ORslin
TD374CS5UOhjaV0vzXGlKCgGAWyhv8tL8m6PR+vSKaTLPxTPLzOvl6UW3dt/
aOqUnukfncKPh1WDZx202HZlssJ50lIE+LjSpHBA+UjIy5nlxY6FnIZIu1Ws
ilO8ImEocrsQb+JwGyk4VwecOLCaRfFdRiVV2Sf3cnfYpcDNDbGQKlzQsqV2
yZEViVC1fG0iwJ9EyLa3Fw8GYcMSDMG5O2PVuI1LlUddQPRVXzkCYnZckO22
DG4iJieBS2V0g0D4EmzuY0nucge2PU8GDByxeEbx+08vVWt1oSp/NjEZQMYa
uLE8VKfzqjzOqDb0ImVNGV++dINKCJ3Q53SoBhBMEVsHlaIfwKRrATjLaMmE
9+SuWQm7AJwvFahhjLQJkSmQT4OGkL07PiQJ3InCOC6n0nlx6KuuzAxL5HYw
3A4XTcFCjyP/oa3UfRFg+ZHQOC47nLIdBx/GmSClpgRAuKlGdPkhg+FY0uf0
aFPxUgWEha6cYiH1mRo9Yp94ECaPEHKMCUkRPrQGUF57STFKyPcV6KjY3m+s
GCPNgt4Xyh1fwI9pn4E0vk9Z4ogLOdN95EB6TzD/AOg4z2Wj+UST/IHQjCg0
dgGQIqNchpav/bNcubL+3PGUB9nYbJTifnbQWaK3KfLf8znOFpOwrElDH2WF
0b2iVLqaog4QmT5ATHbh8yMwdThFNQaJvTsvRrulc6F0XtBgVteRhiVzRxXH
iQBRMN9rFpR725NeDwGZ4x1ABYOdOUgbrWLKuKB6GX8xXVSZIuXGXoz9nPql
F7fQdTz3VZaHmtoGeWFc1a4A20ReSS1AENhfCAaTBd8J6z7AZevW0W0gWwFB
k0SyayUWPgvsa28ZFdA0R/DoTZ7uafdZ4KKLKrMSsQqc2EAhy6cCe8JUBwII
8PJLWewHL2VBCEnf7cq93aHY3PyvEipB3LlsvMAeAxJFeugpCeIpdyFCFcO+
w3x0ZySW2TtwhRXkD+fpNRbpi4RPWDad7TeCsW/0N/8GYY34ooOfr8BdtjH/
xr4dlfE/9VfxM/zK47UJtxdeHSodNCTB79jLAvziWzb/e8SJfPb0vxWjdihG
YdrsoKXAgrDSr84V8MkfHJeASWf4J89EiKRJ4huEEPiw/g0mJ18izwoQuRfN
9T7tda9SagDpD1QueHfwuofaTpoHubG+W72gZkOAR6MeylYKDDUWCYDvCCp0
+/0n1WjxXeXgln6nJvdGjSp/FQBK92dwfSDkxbJ6LKTk9OJIoXmyADyb9IW5
lLNnHE/lHFZKzrCV5136plGag6geU4ibKhGECSVPlUXMDCa57Kqk1nLsE0uO
aVdhwQAPSAflW0OyDkooKfNvZtnYN6hiZV73ePAIuAubq1o6MLAgB0XvSbWa
OzTLuvzPP/av+E9tfj6cas15hHfkxaA2VR5Xr8LRvCgeS3U+SXLpfax5/GHn
n5bBDWL1/oneC6b7JhHI/t62yBLaRqwZuVRvOJ6c8vPLyafubMg/Dm/pKptO
xu+7y2F32puOe/uv46tpvQPfx/3+1977aedT93aS9MbGztpNet2Li2Xy+fzL
5dntWVN8MB43kwd2YW5G9dFoenHeHY+WPw/NE2+c9OvhQJytLrun/W73cmrX
Fx9Hxmdzt20OG2+njcdPo3A67lx0JsM6+3hyd23b3Ujcba1BrW9/mT70Tyyr
Ffm7s6vp9YeHZfVrbzm8/dJomZeOexM1T37uuPef5LKGp4Pni6KyH2yt4h+4
tYjClzK2ZruMGpa7TP9GgiQlWF2hRio845t9numQTGFHlkXV+zwqRoKlAUGB
/C0pdvWpIiZMwgCSKllMqCzCMLHBZCq5bqkKrzUNg8Me4ZyvGeevHo4Re6rv
OJ1XvuObY3wZ+NV0cL8b7m7ffwzvJk9fjH734nbyMRw6T9Xr3tIzBpNldzAb
//x+v3JHnfhkuzpbPNGDZ86nS2vQe7g+v+qd9T3z09jcfayt7fWyDSO/SdVW
xBomKwOZF9LrHwINmBgCtlEf1o2oE5vII95cYQdNnIoaSETy6U1FGzBQdRCh
3mVbpFSgsui30cJpm+bBWEf84Rg0lJ4mv+POMZJuSI3fqr/fMe4ev6RySJiP
f3vxB8a/HsO+vU0eE8Avqf3kuNow25DpdowO3LA6xnLnURIeqbPLI3o/XXdq
ezitvTruf/H8x8uOn5wNJl927ccP45vIDWr3X66bX9243V1+PRfb2uXwrnN9
jE8cT4fX/UnPaV40RvuPvSjovhcnna8/dy4nXjgcObWr/uhp3/JPxe1sfG1P
na437IZ+5H6duXc/xze3jE9ugl3c+3w79LfN0/Dhbni2uNgsPsUfZneTx7Zx
zEYoOP8QCtjpx3OINvyXL6F4URN/YbPwiF9tnzzBL/gvMX74LV6Fmw2+fatv
DETyF6bOUY74BCvCQUCdTJa7/5UN6MX9UeSVeLXKP0BGZxpGjZvVI8M4qrV4
2WiB5b8+H8zeMGV05cngiP+CtxmtqmnU4UOrUm/W6tVKY9T+8ANZ2Xuvwm7A
/IifYxkAwk2FAbbwfbjlq22whJi8F8mvDFZfSQ2+0NlN708gfZQ9jbD3L842
L3Gzrs+FsMr3jus2orlhOMYcSUGukUbGMmWS0jdUH2fMG1kn4gRGUwcnWEmU
ZVFWfFXgf2JTuaaUH7/ugS89gBj1Wv0FOViujE5dIO/yECjdXbkwFe3wtBFv
LzRnBR8e7Nnmo21eL69Nv349Hn2x9t22te74F+O7B7t26d3ePMYn60/125vq
zh5fb2/NTnK+ND6643aTXdc+Na0bePiq23bo86euY64enPe9jb12tnefVyv7
cy++u2rA54ufBxebJ/fmw9e7m1Pj7N5/YpPxJdzY8B2vt7+7Gd2LWfu0v75c
uePr5mXwYXPS7z5Or3of3Zvdcvqlu5vuu/vpLNxNB+HT6b6bsOnA2U373fB6
eHn98cL4aN98enLMUXB3Vd3cDcI2PfTUrU1nk93pAD8729PB7dPpYLg9vb6t
s6v73to2O8btehTb/YYvxqPEGT/6J+tT0E0dpYmsGyNxTD+w1yPD/fzBPwtu
O9NZvLydVZ+YPZvAj8bT2b735Rx+tMej+t3NxYOz/hTffl75d4N4eTeo/nAS
GCBeWrNq927deXDHH1b2eJdX3BfbNFqT98PO3bjxdFK7rLswIESVJ5gYrl90
2HR2vT/DNT3d785wMJjNWXeSs+Dy4Sw4rd6Cc9zWLpp345FxN9skd59Pn25v
XP/kxr8HqT0GDwystR+L0aRhv788vxz6X92nVf3q3v3srC+3UzP5+ml293j3
flq/uHEfr8efqtPqh9HNF//TOUzIbr8YyqQHQp5aoe3imQNwaYxEqgEfU15g
/kAQ5bsbaZt7jmzROw6DEpOvkGAt5vAdnDkGfIxt+Y64Z02HZqduWK65sNvu
otpoCtusVtu1ttESjlN1qq7TNtrCsO1Oza02XEsYVrXRatcarZrVEvAsE/T+
oQt7azmtRksY1U7HdFtmvbro1Jy2aHfMqiEMw2hUW0bNrDUWhmu0W02z45gd
c7GoGa5o5bUiz9OBJM6zpK0C7g6YJY9r4ZeMZMsfdCeD+jcsJDDIXnK8Pf+2
fwVyrjmdfSk8xPaDMN8EbAV4WFp2rA3VPc4gN7m6Osl6mlM8A7bs+4z+NZbY
5xuQc5v4vCwPyXgZxAfll4k18eJa+L8BpcEvxNWwjFSmfSqKybGuTOWbwnrl
w5G1wztU9ynmm3QZpQg3eCQFKZF79KMAoJEVm9flGz/P3+7BbAqMD7skn5fg
qUqi6l3yn8VI3zhL626lZ/8QAhZh1HzZOQTtU4X9Nwh6w29dTQAA

-->

</rfc>
